diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/software/mpdl-services/mpiwg-mpdl-lt/src/de/mpg/mpiwg/berlin/mpdl/lt/morph/app/Lemma.java	Wed Nov 09 15:32:05 2011 +0100
@@ -0,0 +1,152 @@
+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());
+  }
+
+}