/* * RemoteXUpdateQueryService.java - May 2, 2003 * * @author wolf */ package org.exist.xmldb; import java.io.UnsupportedEncodingException; import java.util.Vector; import org.apache.log4j.Logger; import org.apache.xmlrpc.XmlRpcException; import org.xmldb.api.base.Collection; import org.xmldb.api.base.ErrorCodes; import org.xmldb.api.base.XMLDBException; import org.xmldb.api.modules.XUpdateQueryService; public class RemoteXUpdateQueryService implements XUpdateQueryService { private final static Logger LOG = Logger.getLogger(RemoteXUpdateQueryService.class); private RemoteCollection parent; /** * */ public RemoteXUpdateQueryService(RemoteCollection parent) { this.parent = parent; } /* (non-Javadoc) * @see org.xmldb.api.modules.XUpdateQueryService#update(java.lang.String) */ public long update(String commands) throws XMLDBException { LOG.debug("processing xupdate:\n" + commands); Vector params = new Vector(); byte[] xupdateData; try { xupdateData = commands.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { LOG.warn(e); xupdateData = commands.getBytes(); } params.addElement(parent.getPath()); params.addElement(xupdateData); try { Integer mods = (Integer) parent.getClient().execute("xupdate", params); LOG.debug("processed " + mods + " modifications"); return mods.intValue(); } catch (XmlRpcException e) { throw new XMLDBException(ErrorCodes.VENDOR_ERROR, e.getMessage(), e); } } /* (non-Javadoc) * @see org.xmldb.api.modules.XUpdateQueryService#updateResource(java.lang.String, java.lang.String) */ public long updateResource(String id, String commands) throws XMLDBException { LOG.debug("processing xupdate:\n" + commands); Vector params = new Vector(); byte[] xupdateData; try { xupdateData = commands.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { LOG.warn(e); xupdateData = commands.getBytes(); } //TODO : use dedicated function in XmldbURI params.addElement(parent.getPath() + "/" + id); params.addElement(xupdateData); try { Integer mods = (Integer) parent.getClient().execute("xupdateResource", params); LOG.debug("processed " + mods + " modifications"); return mods.intValue(); } catch (XmlRpcException e) { throw new XMLDBException(ErrorCodes.VENDOR_ERROR, e.getMessage(), e); } } /* (non-Javadoc) * @see org.xmldb.api.base.Service#getName() */ public String getName() throws XMLDBException { return "XUpdateQueryService"; } /* (non-Javadoc) * @see org.xmldb.api.base.Service#getVersion() */ public String getVersion() throws XMLDBException { return "1.0"; } /* (non-Javadoc) * @see org.xmldb.api.base.Service#setCollection(org.xmldb.api.base.Collection) */ public void setCollection(Collection col) throws XMLDBException { parent = (RemoteCollection)col; } /* (non-Javadoc) * @see org.xmldb.api.base.Configurable#getProperty(java.lang.String) */ public String getProperty(String name) throws XMLDBException { return null; } /* (non-Javadoc) * @see org.xmldb.api.base.Configurable#setProperty(java.lang.String, java.lang.String) */ public void setProperty(String name, String value) throws XMLDBException { } }