diff software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/donatus/xmlrpc/DonatusMorphologyDocument.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/DonatusMorphologyDocument.java	Wed Nov 24 17:24:23 2010 +0100
@@ -0,0 +1,141 @@
+package de.mpg.mpiwg.berlin.mpdl.donatus.xmlrpc;
+
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException;
+
+public class DonatusMorphologyDocument {
+  private String docUri;
+  private String language = DonatusConstants.DEFAULT_LANGUAGE;
+  private HashMap<String, DonatusVariant> variants; // hold this variable for performance reasons: a key on each lemma variant
+  private HashMap<String, DonatusLemma> lemmas;
+  private ArrayList<DonatusContextForm> contextForms;
+  private byte[] documentBytes;
+  private byte[] wtagBytes;
+
+  public DonatusMorphologyDocument(String docUri) {
+    this.docUri = docUri;
+    this.variants = new HashMap<String, DonatusVariant>();
+    this.lemmas = new HashMap<String, DonatusLemma>();
+    this.contextForms = new ArrayList<DonatusContextForm>();
+  }
+
+  public ArrayList<DonatusLemma> getLemmas() {
+    Collection<DonatusLemma> values = lemmas.values();
+    ArrayList<DonatusLemma> retArrayList = new ArrayList<DonatusLemma>();
+    Iterator<DonatusLemma> iter = values.iterator(); 
+    while(iter.hasNext()) {
+      DonatusLemma lemma = iter.next();
+      retArrayList.add(lemma);
+    } 
+    return retArrayList;
+  }
+  
+  public String getDocUri() {
+    return docUri;
+  }
+  
+  public ArrayList<DonatusContextForm> getContextForms() {
+    return contextForms;
+  }
+  
+  public void setWtagBytes(byte[] wtagBytes) {
+    this.wtagBytes = wtagBytes;
+  }
+  
+  public byte[] getWtagBytes() {
+    return wtagBytes;  
+  }
+  
+  public byte[] getDocumentBytes() throws ApplicationException {
+    String contentXml = getXmlString();
+    try {
+      documentBytes = contentXml.getBytes("UTF-8");
+    } catch (UnsupportedEncodingException e) {
+      throw new ApplicationException(e);
+    }
+    return documentBytes;  
+  }
+  
+  public String getLemmaFormsString() {
+    String result = "";
+    ArrayList<DonatusLemma> lemmas = getLemmas();
+    for (int i=0; i<lemmas.size(); i++) {
+      DonatusLemma lemma = lemmas.get(i);
+      String lemmaFormString = lemma.getForm();
+      result += lemmaFormString + " ";
+    }
+    return result.trim();
+  }
+  
+  public ArrayList<DonatusVariant> getVariants() {
+    ArrayList<DonatusVariant> result = new ArrayList<DonatusVariant>();
+    ArrayList<DonatusLemma> lemmas = getLemmas();
+    for (int i=0; i<lemmas.size(); i++) {
+      DonatusLemma lemma = lemmas.get(i);
+      ArrayList<DonatusVariant> lemmaVariants = lemma.getVariants();
+      result.addAll(lemmaVariants);
+    }
+    return result;
+  }
+  
+  public String getLanguage() {
+    return language;  
+  }
+  
+  public void setLanguage(String language) {
+    this.language = language;  
+  }
+  
+  public DonatusVariant getVariant(String variantForm) {
+    String hashKey = language + "###" + variantForm;
+    DonatusVariant variant = variants.get(hashKey);
+    return variant;
+  }
+  
+  public DonatusVariant putVariant(DonatusVariant variant) {
+    String variantForm = variant.getForm();
+    String hashKey = language + "###" + variantForm;
+    DonatusVariant putReturn = this.variants.put(hashKey, variant);
+    return putReturn;
+  }
+  
+  public DonatusLemma getLemma(String lemmaForm) {
+    String hashKey = language + "###" + lemmaForm;
+    DonatusLemma lemma = lemmas.get(hashKey);
+    return lemma;
+  }
+  
+  public void putLemma(DonatusLemma lemma) { 
+    String lemmaForm = lemma.getForm();
+    String lang = lemma.getLanguage();
+    String hashKey = lang + "###" + lemmaForm;
+    lemmas.put(hashKey, lemma);
+  }
+  
+  public void addContextForm(DonatusContextForm form) {
+    contextForms.add(form);  
+  }
+  
+  public String getXmlString() {
+    StringBuffer xmlString = new StringBuffer("<morphology>");
+    ArrayList<DonatusLemma> lemmas = getLemmas();
+    for (int i=0; i<lemmas.size(); i++) {
+      DonatusLemma lemma = lemmas.get(i);
+      String lemmaXmlString = lemma.getXmlString();
+      xmlString.append(lemmaXmlString);
+    }
+    for (int i=0; i<contextForms.size(); i++) {
+      DonatusContextForm contextForm = contextForms.get(i);
+      String contextFormXmlString = contextForm.getXmlString();
+      xmlString.append(contextFormXmlString);
+    }
+    xmlString.append("</morphology>");
+    return xmlString.toString();
+  }
+  
+}