Mercurial > hg > mpdl-group
view software/mpdl-services/mpiwg-mpdl-lt/src/de/mpg/mpiwg/berlin/mpdl/lt/morph/app/Lemma.java @ 19:4a3641ae14d2
Erstellung
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Wed, 09 Nov 2011 15:32:05 +0100 |
parents | |
children |
line wrap: on
line source
package de.mpg.mpiwg.berlin.mpdl.lt.morph.app; import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; public class Lemma implements Comparable<Lemma> { private String provider; private String language; private String lemmaName; private Hashtable<String, Form> forms; public Lemma() { } public Lemma(String provider, String language, String lemmaName) { this.provider = provider; this.language = language; this.lemmaName = lemmaName; this.forms = new Hashtable<String, Form>(); // always contains the form with the same lemma name Form form = new Form(provider, language, lemmaName); addForm(form); } public String getProvider() { return provider; } public void setProvider(String provider) { this.provider = provider; } public void addProvider(String newProvider) { if (provider == null) this.provider = newProvider; else provider += newProvider; } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public void addLanguage(String newLanguage) { if (language == null) this.language = newLanguage; else language += newLanguage; } public String getLemmaName() { return lemmaName; } public void setLemmaName(String lemmaName) { this.lemmaName = lemmaName; } public void addLemmaName(String newLemmaName) { if (lemmaName == null) this.lemmaName = newLemmaName; else lemmaName += newLemmaName; } public Hashtable<String, Form> getForms() { return forms; } public ArrayList<Form> getForms(String provider) { ArrayList<Form> result = new ArrayList<Form>(); Enumeration<String> keys = forms.keys(); while (keys.hasMoreElements()) { String key = keys.nextElement(); Form form = forms.get(key); String prov = form.getProvider(); if (prov.equals(provider)) result.add(form); } return result; } public ArrayList<Form> getFormsList() { ArrayList<Form> result = new ArrayList<Form>(); if(forms != null) { Enumeration<String> keys = forms.keys(); while (keys.hasMoreElements()) { String key = keys.nextElement(); Form form = forms.get(key); result.add(form); } } return result; } public void setForms(ArrayList<Form> forms) { for (int i=0; i<forms.size(); i++) { Form f = forms.get(i); addForm(f); } } public void addForm(Form newForm) { String formKey = newForm.getLanguage() + "###" + newForm.getFormName(); if (forms == null) forms = new Hashtable<String, Form>(); Form f = forms.get(formKey); if (f == null) { forms.put(formKey, newForm); } else { if(newForm.isRicherThan(f)) forms.put(formKey, newForm); } } public Form getForm(String formKey) { return forms.get(formKey); } public String getXmlString() { String xmlString = "<lemma>\n"; xmlString += " <provider>" + provider + "</provider>\n"; xmlString += " <language>" + language + "</language>\n"; xmlString += " <lemma-name>" + lemmaName + "</lemma-name>\n"; xmlString += "</lemma>"; return xmlString; } public String toString() { return getXmlString(); } public int compareTo(Lemma l) { if (l.getLemmaName() == null && this.getLemmaName() == null) { return 0; } if (this.getLemmaName() == null) { return 1; } if (l.getLemmaName() == null) { return -1; } return this.getLemmaName().compareTo(l.getLemmaName()); } }