package edu.isistan.uima.unified.analysisengines.domain;
import java.util.ArrayList;
import java.util.List;
import org.apache.uima.UimaContext;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.cas.text.AnnotationIndex;
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.tcas.Annotation;
import org.apache.uima.resource.ResourceInitializationException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.uimafit.component.JCasAnnotator_ImplBase;
import org.uimafit.descriptor.ExternalResource;
import edu.isistan.uima.unified.sharedresources.ProgressMonitorResource;
import edu.isistan.uima.unified.typesystems.domain.DomainAction;
public class DomainActionCleaningAnnotator extends JCasAnnotator_ImplBase {
@ExternalResource(key="monitor")
private ProgressMonitorResource monitorResource;
private IProgressMonitor subMonitor;
@Override
public void initialize(UimaContext context) throws ResourceInitializationException {
super.initialize(context);
}
@Override
public void process(JCas aJCas) throws AnalysisEngineProcessException {
//
subMonitor = new SubProgressMonitor(monitorResource.getMonitor(), 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
subMonitor.subTask("Cleaning existing domain actions annotations");
//
AnnotationIndex<Annotation> daAnnotations = aJCas.getAnnotationIndex(DomainAction.type);
List<DomainAction> toRemove = new ArrayList<DomainAction>();
//
subMonitor.beginTask(this.getClass().getSimpleName(), daAnnotations.size());
//
for(Annotation daAnnotation : daAnnotations) {
DomainAction domainAction = (DomainAction) daAnnotation;
toRemove.add(domainAction);
//
subMonitor.worked(1);
}
for(DomainAction domainAction : toRemove)
aJCas.removeFsFromIndexes(domainAction);
//
subMonitor.done();
}
@Override
public void destroy() {
super.destroy();
}
}