Mercurial > hg > mpdl-group
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(); + } + +}