public List<TextRulerExample> createSlotInstancesForCAS(CAS aCas, TextRulerTarget target,
boolean createFromRawTypeName) {
List<TextRulerExample> result = new ArrayList<TextRulerExample>();
if (target.isMultiSlot()) {
TypeSystem ts = aCas.getTypeSystem();
int currentSlotIndex = 0;
TextRulerAnnotation[] currentAnnotations = new TextRulerAnnotation[target.slotNames.length];
List<Type> slotTypes = new ArrayList<Type>();
for (String s : target.slotNames)
slotTypes.add(ts.getType(s));
for (FSIterator<AnnotationFS> it = aCas.getAnnotationIndex().iterator(true); it.isValid(); it
.moveToNext()) {
AnnotationFS fs = (AnnotationFS) it.get();
Type theType = fs.getType();
if (slotTypes.contains(theType)) {
int idx = slotTypes.indexOf(theType);
if (idx < currentSlotIndex) // the previous example was not
// complete, so we have to write
// it down:
{
result.add(new TextRulerExample(this, currentAnnotations, true, target));
currentAnnotations = new TextRulerAnnotation[target.slotNames.length];
}
currentAnnotations[idx] = new TextRulerAnnotation(fs, this);
if (idx >= target.slotNames.length - 1) {
result.add(new TextRulerExample(this, currentAnnotations, true, target));
currentAnnotations = new TextRulerAnnotation[target.slotNames.length];
currentSlotIndex = 0;
} else
currentSlotIndex = idx + 1;
}
}
if (currentSlotIndex > 0) {
result.add(new TextRulerExample(this, currentAnnotations, true, target));
}
} else if (target.isLeftCorrection() || target.isRightCorrection()) {
// TODO
TextRulerBasicLearner learner = target.getLearner();
Set<String> filterSet = learner.getFilterSet();
CAS testCAS = learner.getTestCAS();
TextRulerStatisticsCollector c = new TextRulerStatisticsCollector();
resetAndFillTestCAS(testCAS, target);
CAS docCAS = getCAS();
TypeSystem ts = docCAS.getTypeSystem();
Type tokensRootType = ts.getType(TextRulerToolkit.RUTA_ANY_TYPE_NAME);
AnalysisEngine analysisEngine = learner.getAnalysisEngine();
try {
analysisEngine.process(testCAS);
} catch (AnalysisEngineProcessException e) {
// TODO add log here