Package grammar.input.refdata

Source Code of grammar.input.refdata.VerbHandler

package grammar.input.refdata;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.xml.sax.Attributes;
import grammar.model.factory.ModelVerbFactory;
import grammar.model.verbs.VerbTag;
import grammar.model.verbs.ModelVerb.ConjugatedVerb;

/**
* Loads a verb 'instance', rather than a model verb.
*
* @author Duncan Roberts
*/
public class VerbHandler extends DataHandler<List<ConjugatedVerb>> {
  private List<ConjugatedVerb> verbs = new ArrayList<ConjugatedVerb>();
 
  private String infinitive;
  private Set<VerbTag> classifications;
 
  public void startElement(String uri, String localName, String qName, Attributes attributes) {
    if (qName.equals("infinitive")) {
      enableParsing(ParseMode.NAME);
    }
    else if (qName.equals("verb")) {
      infinitive = null;
      classifications = new HashSet<VerbTag>();
      classifications.add(VerbTag.ALL);
    }
    else if (qName.equals("class")) {
      enableParsing(ParseMode.CLASSIFICATION);
    }
  }
 
  public void endElement(String uri, String localName, String qName) {
    String str = getParsedString();
    ParseMode mode = getParseMode();
    if (mode.equals(ParseMode.NAME)) {
      infinitive = str;
      disableParsing();
    }
    else if (qName.equals("verb")) {
      if (infinitive == null)
        throw new IllegalStateException("No name defined for this verb!");
      ModelVerbFactory mvf = ModelVerbFactory.getInstance(getLanguage());
      verbs.add(mvf.getModelVerb(infinitive, getLanguage())
          .getConjugatedVerb(infinitive, classifications));
    }
    else if (mode.equals(ParseMode.CLASSIFICATION)) {
      classifications.add(VerbTag.valueOf(str.toUpperCase().replace(' ', '_')));
    }
    disableParsing();
  }
 
  public void endDocument() {
    for (ConjugatedVerb cv : verbs)
      for (VerbTag tc : cv.getClassifications())
        tc.addMember(cv);
  }

  public List<ConjugatedVerb> getParsedData() {
    return verbs;
  }
}
TOP

Related Classes of grammar.input.refdata.VerbHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.