Author: pkluegl
Date: Mon Sep  2 12:31:43 2013
New Revision: 1519416

URL: http://svn.apache.org/r1519416
Log:
UIMA-3240
- fixed set of annotations

Added:
    
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java
Modified:
    
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java
    
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java
    
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java
    
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java
    
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java
    
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java
    
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java
    
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java

Added: 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java?rev=1519416&view=auto
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java
 (added)
+++ 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/AbstractCasEvaluator.java
 Mon Sep  2 12:31:43 2013
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+
+package org.apache.uima.ruta.testing.evaluator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.TypeSystem;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
+
+public abstract class AbstractCasEvaluator implements ICasEvaluator {
+
+  protected List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
+    List<AnnotationFS> result = new ArrayList<AnnotationFS>();
+    TypeSystem typeSystem = cas.getTypeSystem();
+    AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex();
+    for (AnnotationFS each : annotationIndex) {
+      Type type = each.getType();
+      for (Type eachType : types) {
+        if(typeSystem.subsumes(eachType, type)) {
+          result.add(each);
+          break;
+        }
+      }
+    }
+    return result;
+  }
+
+  protected boolean match(AnnotationFS a1, AnnotationFS a2) {
+    if (a1 != null && a2 != null) {
+      if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd()
+              && a1.getType().getName().equals(a2.getType().getName()))
+        return true;
+    }
+    return false;
+  }
+
+}

Modified: 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/CoreMatchCasEvaluator.java
 Mon Sep  2 12:31:43 2013
@@ -28,13 +28,11 @@ import java.util.StringTokenizer;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Feature;
-import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 
-public class CoreMatchCasEvaluator implements ICasEvaluator {
+public class CoreMatchCasEvaluator extends AbstractCasEvaluator {
 
   public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
           throws CASRuntimeException, CASException {
@@ -112,21 +110,6 @@ public class CoreMatchCasEvaluator imple
     return run;
   }
 
-  private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
-    List<AnnotationFS> result = new ArrayList<AnnotationFS>();
-    for (Type type : types) {
-      FSIterator iterator = cas.getAnnotationIndex(type).iterator();
-      while (iterator.isValid()) {
-        FeatureStructure fs = iterator.get();
-        if (fs instanceof AnnotationFS) {
-          result.add((AnnotationFS) fs);
-        }
-        iterator.moveToNext();
-      }
-    }
-    return result;
-  }
-
   private boolean matchCore(AnnotationFS a1, AnnotationFS a2) {
 
     String coreTerm = null;

Modified: 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/ExactCasEvaluator.java
 Mon Sep  2 12:31:43 2013
@@ -27,13 +27,11 @@ import java.util.List;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Feature;
-import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 
-public class ExactCasEvaluator implements ICasEvaluator {
+public class ExactCasEvaluator extends AbstractCasEvaluator {
 
   public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
           throws CASRuntimeException, CASException {
@@ -111,28 +109,5 @@ public class ExactCasEvaluator implement
     return run;
   }
 
-  private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
-    List<AnnotationFS> result = new ArrayList<AnnotationFS>();
-    for (Type type : types) {
-      FSIterator iterator = cas.getAnnotationIndex(type).iterator();
-      while (iterator.isValid()) {
-        FeatureStructure fs = iterator.get();
-        if (fs instanceof AnnotationFS) {
-          result.add((AnnotationFS) fs);
-        }
-        iterator.moveToNext();
-      }
-    }
-    return result;
-  }
-
-  private boolean match(AnnotationFS a1, AnnotationFS a2) {
-    if (a1 != null && a2 != null) {
-      if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd()
-              && a1.getType().getName().equals(a2.getType().getName()))
-        return true;
-    }
-    return false;
-  }
 
 }

Modified: 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/FeatureCasEvaluator.java
 Mon Sep  2 12:31:43 2013
@@ -38,7 +38,7 @@ import org.apache.uima.jcas.tcas.Annotat
 import org.apache.uima.ruta.UIMAConstants;
 import org.apache.uima.ruta.engine.RutaEngine;
 
-public class FeatureCasEvaluator implements ICasEvaluator {
+public class FeatureCasEvaluator extends AbstractCasEvaluator {
 
   public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
           throws CASRuntimeException, CASException {
@@ -225,7 +225,7 @@ public class FeatureCasEvaluator impleme
   private Collection<FeatureStructure> getFeatureStructures(List<Type> types, 
CAS cas) {
     TypeSystem typeSystem = cas.getTypeSystem();
     Type annotationType = cas.getAnnotationType();
-    Type annotationBaseType = typeSystem.getType("uima.cas.AnnotationBase");
+//    Type annotationBaseType = typeSystem.getType("uima.cas.AnnotationBase");
     Collection<FeatureStructure> result = new HashSet<FeatureStructure>();
     for (Type type : types) {
       // if ((type != null) && !typeSystem.subsumes(cas.getAnnotationType(), 
type) &&

Modified: 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/PartialMatchCasEvaluator.java
 Mon Sep  2 12:31:43 2013
@@ -27,13 +27,11 @@ import java.util.List;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Feature;
-import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 
-public class PartialMatchCasEvaluator implements ICasEvaluator {
+public class PartialMatchCasEvaluator extends AbstractCasEvaluator {
 
   public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
           throws CASRuntimeException, CASException {
@@ -111,21 +109,6 @@ public class PartialMatchCasEvaluator im
     return run;
   }
 
-  private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
-    List<AnnotationFS> result = new ArrayList<AnnotationFS>();
-    for (Type type : types) {
-      FSIterator iterator = cas.getAnnotationIndex(type).iterator();
-      while (iterator.isValid()) {
-        FeatureStructure fs = iterator.get();
-        if (fs instanceof AnnotationFS) {
-          result.add((AnnotationFS) fs);
-        }
-        iterator.moveToNext();
-      }
-    }
-    return result;
-  }
-
   private boolean overlap(AnnotationFS a1, AnnotationFS a2) {
     if (a1 != null && a2 != null) {
       if ((a1.getBegin() <= a2.getBegin() && a1.getEnd() >= a2.getBegin())

Modified: 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/StringFeatureCasEvaluator.java
 Mon Sep  2 12:31:43 2013
@@ -27,17 +27,18 @@ import java.util.List;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
 import org.apache.uima.jcas.tcas.Annotation;
 import org.apache.uima.ruta.UIMAConstants;
 import org.apache.uima.ruta.engine.RutaEngine;
 
-public class StringFeatureCasEvaluator implements ICasEvaluator {
+public class StringFeatureCasEvaluator extends AbstractCasEvaluator {
+  
   public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
           throws CASRuntimeException, CASException {
     Type falsePositiveType = 
run.getTypeSystem().getType(ICasEvaluator.FALSE_POSITIVE);
@@ -137,9 +138,9 @@ public class StringFeatureCasEvaluator i
     }
     if (withFeatures) {
       CAS testCas = fs.getCAS();
-      CAS runCas = newFS.getCAS();
+//      CAS runCas = newFS.getCAS();
       TypeSystem testTS = testCas.getTypeSystem();
-      TypeSystem runTS = runCas.getTypeSystem();
+//      TypeSystem runTS = runCas.getTypeSystem();
       Type stringType = testTS.getType(UIMAConstants.TYPE_STRING);
       List<Feature> features = fs.getType().getFeatures();
       for (Feature feature : features) {
@@ -157,24 +158,26 @@ public class StringFeatureCasEvaluator i
     TypeSystem typeSystem = cas.getTypeSystem();
     Type stringType = typeSystem.getType(UIMAConstants.TYPE_STRING);
     Collection<FeatureStructure> result = new HashSet<FeatureStructure>();
-    for (Type type : types) {
-      FSIterator<FeatureStructure> iterator = 
cas.getIndexRepository().getAllIndexedFS(type);
-      while (iterator.isValid()) {
-        FeatureStructure fs = iterator.get();
-        List<Feature> features = fs.getType().getFeatures();
-        for (Feature feature : features) {
-          Type range = feature.getRange();
-          if (typeSystem.subsumes(stringType, range)) {
-            result.add(fs);
-            break;
+    AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex();
+    for (AnnotationFS each : annotationIndex) {
+      Type type = each.getType();
+      for (Type eachType : types) {
+        if(typeSystem.subsumes(eachType, type)) {
+          List<Feature> features = each.getType().getFeatures();
+          for (Feature feature : features) {
+            Type range = feature.getRange();
+            if (typeSystem.subsumes(stringType, range)) {
+              result.add(each);
+              break;
+            }
           }
         }
-        iterator.moveToNext();
       }
     }
     return result;
   }
 
+  
   private boolean match(FeatureStructure a1, FeatureStructure a2) {
     Type type1 = a1.getType();
     Type type2 = a2.getType();

Modified: 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/TemplateCasEvaluator.java
 Mon Sep  2 12:31:43 2013
@@ -27,12 +27,12 @@ import java.util.List;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.CASRuntimeException;
-import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
 import org.apache.uima.jcas.tcas.Annotation;
 
 public class TemplateCasEvaluator implements ICasEvaluator {
@@ -156,28 +156,31 @@ public class TemplateCasEvaluator implem
     }
   }
 
+  
   private Collection<FeatureStructure> getFeatureStructures(List<Type> types, 
CAS cas) {
     TypeSystem typeSystem = cas.getTypeSystem();
     Type annotationType = cas.getAnnotationType();
     Collection<FeatureStructure> result = new HashSet<FeatureStructure>();
-    for (Type type : types) {
-      FSIterator<FeatureStructure> iterator = 
cas.getIndexRepository().getAllIndexedFS(type);
-      while (iterator.isValid()) {
-        FeatureStructure fs = iterator.get();
-        List<Feature> features = fs.getType().getFeatures();
-        for (Feature feature : features) {
-          Type range = feature.getRange();
-          if (typeSystem.subsumes(annotationType, range)) {
-            result.add(fs);
-            break;
+    AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex();
+    for (AnnotationFS each : annotationIndex) {
+      Type type = each.getType();
+      for (Type eachType : types) {
+        if(typeSystem.subsumes(eachType, type)) {
+          List<Feature> features = each.getType().getFeatures();
+          for (Feature feature : features) {
+            Type range = feature.getRange();
+            if (typeSystem.subsumes(annotationType, range)) {
+              result.add(each);
+              break;
+            }
           }
         }
-        iterator.moveToNext();
       }
     }
     return result;
   }
-
+  
+  
   private boolean match(FeatureStructure a1, FeatureStructure a2) {
     Type type1 = a1.getType();
     Type type2 = a2.getType();

Modified: 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordAccuracyCasEvaluator.java
 Mon Sep  2 12:31:43 2013
@@ -30,12 +30,11 @@ import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.CASRuntimeException;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Feature;
-import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.seed.DefaultSeeder;
 
-public class WordAccuracyCasEvaluator implements ICasEvaluator {
+public class WordAccuracyCasEvaluator extends AbstractCasEvaluator {
 
   public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
           throws CASRuntimeException, CASException {
@@ -143,29 +142,5 @@ public class WordAccuracyCasEvaluator im
     }
     return result;
   }
-
-  private List<AnnotationFS> getAnnotations(List<Type> types, CAS cas) {
-    List<AnnotationFS> result = new ArrayList<AnnotationFS>();
-    for (Type type : types) {
-      FSIterator<AnnotationFS> iterator = 
cas.getAnnotationIndex(type).iterator();
-      while (iterator.isValid()) {
-        FeatureStructure fs = iterator.get();
-        if (fs instanceof AnnotationFS) {
-          result.add((AnnotationFS) fs);
-        }
-        iterator.moveToNext();
-      }
-    }
-    return result;
-  }
-
-  private boolean match(AnnotationFS a1, AnnotationFS a2) {
-    if (a1 != null && a2 != null) {
-      if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd()
-              && a1.getType().getName().equals(a2.getType().getName()))
-        return true;
-    }
-    return false;
-  }
-
+  
 }

Modified: 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java?rev=1519416&r1=1519415&r2=1519416&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/evaluator/WordTemplateCasEvaluator.java
 Mon Sep  2 12:31:43 2013
@@ -34,10 +34,11 @@ import org.apache.uima.cas.FeatureStruct
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
 import org.apache.uima.jcas.tcas.Annotation;
 import org.apache.uima.ruta.seed.DefaultSeeder;
 
-public class WordTemplateCasEvaluator implements ICasEvaluator {
+public class WordTemplateCasEvaluator extends AbstractCasEvaluator {
 
   public CAS evaluate(CAS test, CAS run, Collection<String> excludedTypes)
           throws CASRuntimeException, CASException {
@@ -67,8 +68,8 @@ public class WordTemplateCasEvaluator im
     }
 
     List<Type> wordTypes = getWordTypes(run);
-    Collection<FeatureStructure> testFSs = getFeatureStructures(types, test, 
wordTypes);
-    Collection<FeatureStructure> runFSs = getFeatureStructures(types, run, 
wordTypes);
+    Collection<FeatureStructure> testFSs = getFeatureStructures(types, test);
+    Collection<FeatureStructure> runFSs = getFeatureStructures(types, run);
 
     Collection<FeatureStructure> matched = new HashSet<FeatureStructure>();
     List<FeatureStructure> fp = new ArrayList<FeatureStructure>();
@@ -171,29 +172,30 @@ public class WordTemplateCasEvaluator im
       }
     }
   }
-
-  private Collection<FeatureStructure> getFeatureStructures(List<Type> types, 
CAS cas,
-          List<Type> basicTypes) {
+  
+  private Collection<FeatureStructure> getFeatureStructures(List<Type> types, 
CAS cas) {
     TypeSystem typeSystem = cas.getTypeSystem();
     Type annotationType = cas.getAnnotationType();
     Collection<FeatureStructure> result = new HashSet<FeatureStructure>();
-    for (Type type : types) {
-      FSIterator<FeatureStructure> iterator = 
cas.getIndexRepository().getAllIndexedFS(type);
-      while (iterator.isValid()) {
-        FeatureStructure fs = iterator.get();
-        List<Feature> features = fs.getType().getFeatures();
-        for (Feature feature : features) {
-          Type range = feature.getRange();
-          if (typeSystem.subsumes(annotationType, range)) {
-            result.add(fs);
-            break;
+    AnnotationIndex<AnnotationFS> annotationIndex = cas.getAnnotationIndex();
+    for (AnnotationFS each : annotationIndex) {
+      Type type = each.getType();
+      for (Type eachType : types) {
+        if(typeSystem.subsumes(eachType, type)) {
+          List<Feature> features = each.getType().getFeatures();
+          for (Feature feature : features) {
+            Type range = feature.getRange();
+            if (typeSystem.subsumes(annotationType, range)) {
+              result.add(each);
+              break;
+            }
           }
         }
-        iterator.moveToNext();
       }
     }
     return result;
   }
+  
 
   private List<AnnotationFS> expand(AnnotationFS a, CAS cas, List<Type> 
basicTypes) {
     List<AnnotationFS> result = new LinkedList<AnnotationFS>();
@@ -263,7 +265,7 @@ public class WordTemplateCasEvaluator im
     for (AnnotationFS each1 : w1) {
       if (w2.size() > i) {
         AnnotationFS each2 = w2.get(i);
-        result &= matchWord(each1, each2);
+        result &= match(each1, each2);
       } else {
         return false;
       }
@@ -272,14 +274,5 @@ public class WordTemplateCasEvaluator im
     return result;
   }
 
-  private boolean matchWord(AnnotationFS a1, AnnotationFS a2) {
-    if (a1 != null && a2 != null) {
-      if (a1.getBegin() == a2.getBegin() && a1.getEnd() == a2.getEnd()
-              && a1.getType().getName().equals(a2.getType().getName())) {
-        return true;
-      }
-    }
-    return false;
-  }
-
+  
 }


Reply via email to