Mercurial > hg > mpdl-group
view software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/donatus/xmlrpc/DonatusXmlRpcClient.java @ 0:408254cf2f1d
Erstellung
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Wed, 24 Nov 2010 17:24:23 +0100 |
parents | |
children |
line wrap: on
line source
package de.mpg.mpiwg.berlin.mpdl.donatus.xmlrpc; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import java.util.Vector; import org.apache.xmlrpc.XmlRpcException; import org.apache.xmlrpc.client.XmlRpcClient; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import com.sun.org.apache.xerces.internal.parsers.SAXParser; public class DonatusXmlRpcClient { private String serverName = DonatusConstants.SERVER_NAME; private int port = DonatusConstants.PORT; private String uriRpcCall = DonatusConstants.URI_RPC_CALL; private String xmlRpcUri = "http://" + serverName + ":" + port + uriRpcCall; private XmlRpcClient xmlClient = null; public DonatusXmlRpcClient() { this.xmlRpcUri = "http://" + serverName + uriRpcCall; init(); } public DonatusXmlRpcClient(String serverName) { this.serverName = serverName; this.xmlRpcUri = "http://" + serverName + uriRpcCall; init(); } public DonatusXmlRpcClient(String serverName, int port) { this.serverName = serverName; this.port = port; this.xmlRpcUri = "http://" + serverName + ":" + port + uriRpcCall; init(); } private void init() { try { XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(new URL(xmlRpcUri)); xmlClient = new XmlRpcClient(); xmlClient.setConfig(config); } catch (MalformedURLException e) { e.printStackTrace(); } } public DonatusMorphologyDocument analyze(DonatusWtagDocument donatusWtagDocument) { DonatusMorphologyDocument morphologyDoc = null; try { String language = donatusWtagDocument.getLanguage(); String wtagString = donatusWtagDocument.getXmlString(); Vector params = new Vector(); byte[] wtagBytes = wtagString.getBytes("UTF-8"); params.add(wtagBytes); HashMap donatusReturn = (HashMap) xmlClient.execute("donatus.analyze", params); Object morphologyDocTypeObject = donatusReturn.get("morphData"); byte[] bytesMorphologyDocTypeObject = (byte[]) morphologyDocTypeObject; String morphologyDocTypeString = new String(bytesMorphologyDocTypeObject, "UTF-8"); XMLReader xmlParser = new SAXParser(); String docUri = donatusWtagDocument.getLocator(); DonatusMorphologyDocumentContentHandler donatusMorphContentHandler = new DonatusMorphologyDocumentContentHandler(docUri, language); xmlParser.setContentHandler(donatusMorphContentHandler); Reader reader = new StringReader(morphologyDocTypeString); InputSource input = new InputSource(reader); xmlParser.parse(input); morphologyDoc = donatusMorphContentHandler.getResult(); morphologyDoc.setWtagBytes(wtagBytes); } catch (SAXException e) { e.printStackTrace(); } catch (XmlRpcException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return morphologyDoc; } public String analyze(String locator, String language, String documentString) { String morphologyDocTypeString = null; try { String wtagStart = "<wtag locator=\"" + locator + "\"><section lang=\"" + language + "\">"; String wtagEnd = "</section></wtag>"; String wtagString = wtagStart + documentString + wtagEnd; Vector params = new Vector(); params.add(wtagString.getBytes("UTF8")); HashMap donatusReturn = (HashMap) xmlClient.execute("donatus.analyze", params); Object morphologyDocTypeObject = donatusReturn.get("morphData"); morphologyDocTypeString = new String((byte[])morphologyDocTypeObject); } catch (XmlRpcException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return morphologyDocTypeString; } }