diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/donatus/xmlrpc/DonatusXmlRpcClient.java	Wed Nov 24 17:24:23 2010 +0100
@@ -0,0 +1,106 @@
+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;
+  }
+  
+}