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