Mercurial > hg > mpdl-group
view software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/donatus/example/TestDonatus.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.example; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Hashtable; 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 java.util.Vector; import com.sun.org.apache.xerces.internal.parsers.SAXParser; import de.mpg.mpiwg.berlin.mpdl.donatus.xmlrpc.DonatusMorphologyDocument; import de.mpg.mpiwg.berlin.mpdl.donatus.xmlrpc.DonatusMorphologyDocumentContentHandler; import de.mpg.mpiwg.berlin.mpdl.donatus.xmlrpc.DonatusWtagContainer; import de.mpg.mpiwg.berlin.mpdl.donatus.xmlrpc.DonatusWtagDocument; import de.mpg.mpiwg.berlin.mpdl.donatus.xmlrpc.DonatusWtagSection; import de.mpg.mpiwg.berlin.mpdl.donatus.xmlrpc.DonatusXmlRpcClient; public class TestDonatus { private DonatusXmlRpcClient donatusXmlRpcClient= null; public static void main(String[] args) { TestDonatus testDonatus = new TestDonatus(); // testDonatus.lineInputAnalyzer(); DonatusMorphologyDocument result = testDonatus.analyzeMonte037(); } public TestDonatus() { init(); } private void init() { donatusXmlRpcClient = new DonatusXmlRpcClient(); } private DonatusMorphologyDocument analyze(DonatusWtagDocument doc) { DonatusMorphologyDocument resultDoc = donatusXmlRpcClient.analyze(doc); return resultDoc; } private DonatusMorphologyDocument analyzeMonte037() { String locator = "http://archimedes/037.xml"; int docId = 4711; String languageIt = "it"; ArrayList<String> s1It = new ArrayList<String>(); s1It.add("LE"); s1It.add("MECHANICHE"); s1It.add("DELL"); s1It.add("ILLVSTRISS"); s1It.add("SIG"); s1It.add("GVIDO"); s1It.add("VBALDO"); s1It.add("DE"); s1It.add("MARCHESI"); s1It.add("DEL"); s1It.add("MONTE"); s1It.add("LE"); ArrayList<String> s2It = new ArrayList<String>(); s2It.add("TRADOTTE"); s2It.add("IN"); s2It.add("VOLGARE"); s2It.add("DAL"); s2It.add("SIG"); s2It.add("FILIPPO"); s2It.add("PIGAFETTA"); s2It.add("Nellequali"); s2It.add("ſi"); s2It.add("contiene"); s2It.add("la"); DonatusWtagContainer sIt1 = new DonatusWtagContainer("s", "1", s1It); DonatusWtagContainer sIt2 = new DonatusWtagContainer("s", "2", s2It); DonatusWtagSection sectionIt = new DonatusWtagSection(languageIt); sectionIt.addContainer(sIt1); sectionIt.addContainer(sIt2); String languageLa = "la"; ArrayList<String> s1La = new ArrayList<String>(); s1La.add("GVIDIVBALDI"); s1La.add("E"); s1La.add("MARCHIONIBVS"); s1La.add("MONTIS"); s1La.add("MECHANICORVM"); s1La.add("LIBER"); DonatusWtagContainer sLa1 = new DonatusWtagContainer("s", "1", s1La); DonatusWtagSection sectionLa = new DonatusWtagSection(languageLa); sectionLa.addContainer(sLa1); DonatusWtagDocument donatusWtagDocument = new DonatusWtagDocument(locator); donatusWtagDocument.addSection(sectionIt); donatusWtagDocument.addSection(sectionLa); DonatusMorphologyDocument donatusXmlMorphologyDoc = analyze(donatusWtagDocument); return donatusXmlMorphologyDoc; } private String analyze(String locator, String language, String documentString) { String resultDoc = donatusXmlRpcClient.analyze(locator, language, documentString); return resultDoc; } private String askDonatus(String term) throws XmlRpcException, IOException { String WTAG_START="<wtag locator=\"xxx\"><section lang=\"de\"><s id=\"3.2\"><w>"; String WTAG_END="</w></s></section></wtag>"; ParseDonatusResult ch = new ParseDonatusResult(); try { URL url = new URL("http://archimedes.fas.harvard.edu/cgi-bin/donatus-rpc"); XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(url); XmlRpcClient xmlClient = new XmlRpcClient(); xmlClient.setConfig(config); String wtag = WTAG_START + term + WTAG_END; Vector params = new Vector(); params.add(wtag.getBytes("UTF8")); Hashtable donatusReturn = (Hashtable) xmlClient.execute("donatus.analyze", params); Object s = donatusReturn.get("morphData"); String st = new String((byte[])s); XMLReader parser = new SAXParser(); parser.setContentHandler(ch); Reader reader = new StringReader(st); InputSource input = new InputSource(reader); parser.parse(input); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } return ch.value; } private void lineInputAnalyzer() { BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(System.in, "UTF8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } while(true) { // prompt the user System.out.println("Enter query: "); String line = null; try { line = in.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (line == null || line.length() == -1) break; line = line.trim(); if (line.length() == 0) break; try { String donatusResponse = askDonatus(line); System.out.println(donatusResponse); } catch (XmlRpcException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }