Log in Help
Print
Homereleasesgate-5.1-beta2-build3402-ALLpluginsAlignmentsrcgatecompositeimpl 〉 CombineFromAnnotID.java
 
package gate.composite.impl;

import java.util.Map;
import gate.Annotation;
import gate.AnnotationSet;
import gate.Document;
import gate.composite.CombiningMethodException;
import gate.composite.CompositeDocument;
import gate.compound.CompoundDocument;

/**
 * User can specify which of the annotation should be copied to the
 * Compsite document.
 * 
 * @author niraj
 */
public class CombineFromAnnotID extends AbstractCombiningMethod {

  private static final long serialVersionUID = 4050197561715800118L;

  public static final String ANNOTATION_ID_FEATURE_NAME = "annotationID";

  public static final String INPUT_AS_NAME_FEATURE_NAME = "inputASName";

  public static final String DOCUMENT_ID_FEATURE_NAME = "documentID";

  /**
   * The parameters must contain four parameters as illustrated below:
   * <p>
   * map.put(ANNOTATION_ID_FEATURE_NAME,annotation.getId());
   * <p>
   * map.put(INPUT_AS_NAME_FEATURE_NAME,"Key");
   * <p>
   * map.put(DOCUMENT_ID_FEATURE_NAME,document.getName());
   * <p>
   * Provide null value to copy all the annotations. Provide empty set
   * to copy none - otherwise the listed annotation types will be
   * copied.
   */
  @SuppressWarnings("unchecked")
  public CompositeDocument combine(CompoundDocument compoundDocument,
          Map<String, Object> parameters) throws CombiningMethodException {

    // params
    Integer annotationID = (Integer)parameters.get(ANNOTATION_ID_FEATURE_NAME);
    String inputASName = (String)parameters.get(INPUT_AS_NAME_FEATURE_NAME);
    String documentID = (String)parameters.get(DOCUMENT_ID_FEATURE_NAME);

    // start a document
    startDocument(compoundDocument, annotationTypesToCopy);

    Document adoc = compoundDocument.getDocument(documentID);
    AnnotationSet inputAS = inputASName == null
            || inputASName.trim().length() == 0 ? adoc.getAnnotations() : adoc
            .getAnnotations(inputASName);
    Annotation annot = inputAS.get(annotationID);
    if(annot == null)
      throw new CombiningMethodException("annotation with id :" + annotationID
              + " could not be found");
    // add content
    addContent(adoc, annot);

    // finalize document
    return finalizeDocument();
  }
}