view software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/donatus/xmlrpc/DonatusLemma.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.util.ArrayList;

public class DonatusLemma {
  private DonatusMorphologyDocument morphDocument;
  private String language;
  private String type = DonatusConstants.TYPE_DONATUS;
  private String form;
  private String definition = "";
  private ArrayList<DonatusVariant> variants;

  public DonatusLemma(DonatusMorphologyDocument morphDoc, String language, String type, String form) {
    this.morphDocument = morphDoc;
    this.language = language;
    this.type = type;
    this.form = form;
    this.variants = new ArrayList<DonatusVariant>();
    // always the Lemma form is variant itself
    DonatusVariant variant = new DonatusVariant(this, type, form);
    variants.add(variant);
  }
  
  public String getLanguage() {
    return language;
  }

  public String getForm() {
    return form;
  }

  public ArrayList<DonatusVariant> getVariants() {
    return variants;
  }
  
  public ArrayList<DonatusVariant> getVariants(String type) {
    ArrayList<DonatusVariant> result = new ArrayList<DonatusVariant>();
    for (int i=0; i<variants.size(); i++) {
      DonatusVariant variant = variants.get(i);
      String vType = variant.getType();
      if (vType.equals(type))
        result.add(variant);
    }
    return result;
  }
  
  public void setDefinition(String def) {
    this.definition = def;  
  }
  
  public void addVariant(DonatusVariant variant) {
    morphDocument.putVariant(variant);
    if (! variants.contains(variant) && ! variantsContainsForm(variant.getForm()))
      variants.add(variant);  
  }
  
  public String getXmlString() {
    String xmlString = "<lemma form=\"" + form + "\" lang=\"" + language + "\">";
    xmlString += "<definition>" + definition + "</definition>";
    for (int i=0; i<variants.size(); i++) {
      DonatusVariant variant = variants.get(i); 
      String variantXmlString = variant.getXmlString();
      xmlString += variantXmlString;
    }
    xmlString += "</lemma>\n";
    return xmlString;
  }
  
  public String toString() {
    return getXmlString();
  }
  
  private boolean variantsContainsForm(String variantForm) {
    boolean contains = false;
    for (int i=0; i<variants.size(); i++) {
      DonatusVariant v = variants.get(i); 
      String vForm = v.getForm();
      if (vForm.equals(variantForm))
        contains = true;
    }
    return contains;
  }
}