/*
* FakeSentenceSplitter.java
*
* Copyright (c) 1998-2008, The University of Sheffield.
*
* This file is part of GATE (see http://gate.ac.uk/), and is free
* software, licenced under the GNU Library General Public License,
* Version 2, June 1991 (in the distribution as file licence.html,
* and also available at http://gate.ac.uk/gate/licence.html).
*/
package gate.clone.ql;
import gate.AnnotationSet;
import gate.Factory;
import gate.Resource;
import gate.creole.AbstractLanguageAnalyser;
import gate.creole.ExecutionException;
import gate.creole.ResourceInstantiationException;
import gate.util.GateRuntimeException;
import gate.util.InvalidOffsetException;
/**
* This class serves to simulate running of default SentenceSplitter: it will
* always create one sentence out of any document. It is created so that in
* cases when processing one sentence always, we don't need to run regular
* Sentence Splitter, in order to run a POS Tagger.
*
* @author Danica Damljanovic
*
*/
public class FakeSentenceSplitter extends AbstractLanguageAnalyser {
private static final long serialVersionUID = 9202556754479248757L;
public static final String SPLIT_DOCUMENT_PARAMETER_NAME = "document";
public static final String SPLIT_INPUT_AS_PARAMETER_NAME = "inputASName";
public static final String SPLIT_OUTPUT_AS_PARAMETER_NAME = "outputASName";
public static final String SPLIT_ENCODING_PARAMETER_NAME = "encoding";
public static final String SPLIT_GAZ_URL_PARAMETER_NAME = "gazetteerListsURL";
public static final String SPLIT_TRANSD_URL_PARAMETER_NAME = "transducerURL";
public Resource init() throws ResourceInstantiationException {
return this;
}
public void execute() throws ExecutionException {
interrupted = false;
// set the runtime parameters
if(inputASName != null && inputASName.equals("")) inputASName = null;
if(outputASName != null && outputASName.equals("")) outputASName = null;
// get pointers to the annotation sets
AnnotationSet inputAS =
(inputASName == null) ? document.getAnnotations() : document
.getAnnotations(inputASName);
AnnotationSet outputAS =
(outputASName == null) ? document.getAnnotations() : document
.getAnnotations(outputASName);
// copy the results to the output set if they are different
if(inputAS != outputAS) {
outputAS.addAll(inputAS.get(SENTENCE_ANNOTATION_TYPE));
}
// create one big sentence if none were found
AnnotationSet sentences = outputAS.get(SENTENCE_ANNOTATION_TYPE);
if(sentences == null || sentences.isEmpty()) {
// create an annotation covering the entire content
try {
outputAS.add(new Long(0), document.getContent().size(),
SENTENCE_ANNOTATION_TYPE, Factory.newFeatureMap());
}
catch(InvalidOffsetException ioe) {
throw new GateRuntimeException(ioe);
}
}
}// execute()
/**
* Notifies all the PRs in this controller that they should stop their
* execution as soon as possible.
*/
public synchronized void interrupt() {
interrupted = true;
}
private String encoding;
public void setEncoding(String newEncoding) {
encoding = newEncoding;
}
public String getEncoding() {
return encoding;
}
public void setInputASName(String newInputASName) {
inputASName = newInputASName;
}
public String getInputASName() {
return inputASName;
}
public void setOutputASName(String newOutputASName) {
outputASName = newOutputASName;
}
public String getOutputASName() {
return outputASName;
}
private String inputASName;
private String outputASName;
}