view software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/lt/morph/app/Lemma.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.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());
  }

}