Author: pkluegl
Date: Wed Nov  5 15:00:27 2014
New Revision: 1636886

URL: http://svn.apache.org/r1636886
Log:
UIMA-4079
- added parameter for experienced users, won't be added to documentation for now
- fixed skipping whitespaces in trie
- hotfix for table lookup
- added tests

Added:
    
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java
   (with props)
    
uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/WSDictionaryTestList.txt
   (with props)
    uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/table2.csv
Modified:
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/CSVTable.java
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/RutaTable.java
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java
    
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFastTest.java
    
uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/utils/twl/TWLConverterHandler.java

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java?rev=1636886&r1=1636885&r2=1636886&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
 Wed Nov  5 15:00:27 2014
@@ -47,6 +47,7 @@ import org.apache.uima.resource.metadata
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.ruta.action.AbstractRutaAction;
 import org.apache.uima.ruta.condition.AbstractRutaCondition;
+import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.list.ListExpression;
 import org.apache.uima.ruta.expression.list.SimpleBooleanListExpression;
@@ -146,7 +147,7 @@ public class RutaEnvironment {
   private Map<String, Object> initializedVariables;
 
   private ResourceManager resourceManager;
-
+  
   public RutaEnvironment(RutaBlock owner) {
     super();
     this.owner = owner;
@@ -562,6 +563,10 @@ public class RutaEnvironment {
 
   public RutaWordList getWordList(String list) {
     RutaWordList result = wordLists.get(list);
+    Boolean dictRemoveWS = (Boolean) 
owner.getContext().getConfigParameterValue(RutaEngine.PARAM_DICT_REMOVE_WS);
+    if(dictRemoveWS == null) {
+      dictRemoveWS = false;
+    }
     if (result == null) {
       if (list.endsWith("txt") || list.endsWith("mtwl")) {
         ResourceLoader resourceLoader = new 
RutaResourceLoader(getResourcePaths());
@@ -571,7 +576,7 @@ public class RutaEnvironment {
             if (list.endsWith("mtwl")) {
               wordLists.put(list, new MultiTreeWordList(resource));
             } else {
-              wordLists.put(list, new TreeWordList(resource));
+              wordLists.put(list, new TreeWordList(resource, dictRemoveWS));
             }
           } catch (IOException e) {
             Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,
@@ -774,7 +779,7 @@ public class RutaEnvironment {
         RutaWordList wordList = getWordList(path);
         return wordList;
       } else if (clazz.equals(RutaWordList.class) && value instanceof String) {
-     // TODO: ExtenralWordTableExpression will be ignored
+     // TODO: ExtenralWordListExpression will be ignored
         RutaWordList list = getWordList((String) value);
         return list;
       } else if (clazz.equals(RutaTable.class) && value instanceof 
LiteralWordTableExpression) {
@@ -878,4 +883,5 @@ public class RutaEnvironment {
   public void setResourceManager(ResourceManager resourceManager) {
     this.resourceManager = resourceManager;
   }
+
 }

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java?rev=1636886&r1=1636885&r2=1636886&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java
 Wed Nov  5 15:00:27 2014
@@ -80,7 +80,7 @@ public class MarkFastAction extends Abst
       if (list != null) {
         wl = list.getList(parent);
       } else if (stringList != null) {
-        wl = new TreeWordList(stringList.getList(parent, stream));
+        wl = new TreeWordList(stringList.getList(parent, stream), false);
       }
       if (wl instanceof TreeWordList) {
         Collection<AnnotationFS> found = wl.find(windowStream,

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java?rev=1636886&r1=1636885&r2=1636886&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
 Wed Nov  5 15:00:27 2014
@@ -98,7 +98,7 @@ public class MarkTableAction extends Abs
     int maxIgnoreCharValue = maxIgnoreChar != null ? 
maxIgnoreChar.getIntegerValue(
             element.getParent(), null, stream) : 0;
 
-    RutaWordList wordList = table.getWordList(index);
+    RutaWordList wordList = table.getWordList(index, element.getParent());
     Collection<AnnotationFS> found = wordList.find(stream, ignoreCaseValue, 
ignoreLengthValue,
             ignoreCharValue.toCharArray(), maxIgnoreCharValue, true);
     for (AnnotationFS annotationFS : found) {

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java?rev=1636886&r1=1636885&r2=1636886&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
 Wed Nov  5 15:00:27 2014
@@ -358,6 +358,14 @@ public class RutaEngine extends JCasAnno
 
   @ConfigurationParameter(name = PARAM_STRICT_IMPORTS, mandatory = false, 
defaultValue = "false")
   private Boolean strictImports = false;
+  
+  /**
+   * If this parameter is set to true, then whitespaces are removed when 
dictionaries are loaded
+   */
+  public static final String PARAM_DICT_REMOVE_WS = "dictRemoveWS";
+
+  @ConfigurationParameter(name = PARAM_DICT_REMOVE_WS, mandatory = false, 
defaultValue = "false")
+  private Boolean dictRemoveWS = false;
 
   private UimaContext context;
 

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/CSVTable.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/CSVTable.java?rev=1636886&r1=1636885&r2=1636886&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/CSVTable.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/CSVTable.java
 Wed Nov  5 15:00:27 2014
@@ -30,6 +30,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Scanner;
 
+import org.apache.uima.ruta.RutaBlock;
+import org.apache.uima.ruta.engine.RutaEngine;
 import org.springframework.core.io.FileSystemResource;
 import org.springframework.core.io.Resource;
 
@@ -80,11 +82,16 @@ public class CSVTable implements RutaTab
     sc.close();
   }
 
-  public RutaWordList getWordList(int index) {
+  public RutaWordList getWordList(int index, RutaBlock parent) {
     RutaWordList list = columnWordLists.get(index);
     if (list == null) {
       if (index > 0 && index <= tableData.get(0).size()) {
-        list = new TreeWordList(getColumnData(index - 1));
+        Boolean dictRemoveWS = (Boolean) 
parent.getContext().getConfigParameterValue(
+                RutaEngine.PARAM_DICT_REMOVE_WS);
+        if (dictRemoveWS == null) {
+          dictRemoveWS = false;
+        }
+        list = new TreeWordList(getColumnData(index - 1), dictRemoveWS);
         columnWordLists.put(index, list);
       }
     }
@@ -116,6 +123,13 @@ public class CSVTable implements RutaTab
       }
       i++;
     }
+    i = 0;
+    for (String string : columnData) {
+      if (string.toLowerCase().replaceAll("\\s", 
"").equals(value.toLowerCase())) {
+        return tableData.get(i);
+      }
+      i++;
+    }
     return new ArrayList<String>();
   }
 }

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/RutaTable.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/RutaTable.java?rev=1636886&r1=1636885&r2=1636886&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/RutaTable.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/RutaTable.java
 Wed Nov  5 15:00:27 2014
@@ -21,9 +21,11 @@ package org.apache.uima.ruta.resource;
 
 import java.util.List;
 
+import org.apache.uima.ruta.RutaBlock;
+
 public interface RutaTable {
 
-  RutaWordList getWordList(int index);
+  RutaWordList getWordList(int index, RutaBlock parent);
 
   String getEntry(int row, int column);
 

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java?rev=1636886&r1=1636885&r2=1636886&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java
 Wed Nov  5 15:00:27 2014
@@ -37,7 +37,6 @@ import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
 import org.apache.uima.cas.FSIterator;
-import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.jcas.tcas.Annotation;
 import org.apache.uima.ruta.RutaStream;
@@ -54,6 +53,8 @@ public class TreeWordList implements Rut
 
   private String name;
 
+  private boolean dictRemoveWS = false;
+
   /**
    * Default constructor
    */
@@ -69,7 +70,8 @@ public class TreeWordList implements Rut
    * @throws IllegalArgumentException
    *           When {@code resource.getFileName()} is null or does not end 
with .txt or .twl.
    */
-  public TreeWordList(Resource resource) throws IOException {
+  public TreeWordList(Resource resource, boolean dictRemoveWS) throws 
IOException {
+    this.dictRemoveWS = dictRemoveWS;
     final String name = resource.getFilename();
     InputStream stream = null;
     try {
@@ -98,8 +100,8 @@ public class TreeWordList implements Rut
    * @param pathname
    *          path of the file to create a TextWordList from
    */
-  public TreeWordList(String pathname) throws IOException {
-    this(new FileSystemResource(pathname));
+  public TreeWordList(String pathname, boolean dictRemoveWS) throws 
IOException {
+    this(new FileSystemResource(pathname), dictRemoveWS);
   }
 
   /**
@@ -108,7 +110,8 @@ public class TreeWordList implements Rut
    * @param stream
    *          path of the file to create a TextWordList from
    */
-  public TreeWordList(InputStream stream, String name) throws IOException {
+  public TreeWordList(InputStream stream, String name, boolean dictRemoveWS) 
throws IOException {
+    this.dictRemoveWS = dictRemoveWS;
     if (name.endsWith(".twl")) {
       readXML(stream, "UTF-8");
     }
@@ -118,9 +121,10 @@ public class TreeWordList implements Rut
     this.name = new File(name).getName();
   }
 
-  public TreeWordList(List<String> data) {
+  public TreeWordList(List<String> data, boolean dictRemoveWS) {
     buildNewTree(data);
     name = "local";
+    this.dictRemoveWS = dictRemoveWS;
   }
 
   public void buildNewTree(List<String> data) {
@@ -172,6 +176,9 @@ public class TreeWordList implements Rut
     // Create Nodes from all chars of the strings besides the last one
     TextNode pointer = root;
     for (Character each : s.toCharArray()) {
+      if(dictRemoveWS && Character.isWhitespace(each)) {
+        continue;
+      }
       TextNode childNode = pointer.getChildNode(each);
       if (childNode == null) {
         childNode = new TextNode(each, false);
@@ -227,9 +234,18 @@ public class TreeWordList implements Rut
     }
     int next = ++index;
 
+    boolean result = false;
+    
     if (ignoreCase) {
       TextNode childNodeL = 
pointer.getChildNode(Character.toLowerCase(charAt));
       TextNode childNodeU = 
pointer.getChildNode(Character.toUpperCase(charAt));
+      
+      TextNode wsNode = pointer.getChildNode(' ');
+      if(ignoreWS && wsNode != null) {
+          result |= recursiveContains(wsNode, text, --next, ignoreCase, 
fragment, ignoreChars,
+                  maxIgnoreChars, ignoreWS);
+      }
+      
       if (childNodeL == null && ignoreWS) {
         childNodeL = skipWS(pointer, charAt);
       }
@@ -237,27 +253,34 @@ public class TreeWordList implements Rut
         childNodeU = skipWS(pointer, charAt);
       }
       if (charAtIgnored && childNodeL == null && childNodeU == null) {
-        return recursiveContains(pointer, text, next, ignoreCase, fragment, 
ignoreChars,
+        result |= recursiveContains(pointer, text, next, ignoreCase, fragment, 
ignoreChars,
                 maxIgnoreChars, ignoreWS);
       } else {
-        return recursiveContains(childNodeL, text, next, ignoreCase, fragment, 
ignoreChars,
+        result |= recursiveContains(childNodeL, text, next, ignoreCase, 
fragment, ignoreChars,
                 maxIgnoreChars, ignoreWS)
                 | recursiveContains(childNodeU, text, next, ignoreCase, 
fragment, ignoreChars,
                         maxIgnoreChars, ignoreWS);
       }
     } else {
+      TextNode wsNode = pointer.getChildNode(' ');
+      if(ignoreWS && wsNode != null) {
+          result |= recursiveContains(wsNode, text, --next, ignoreCase, 
fragment, ignoreChars,
+                  maxIgnoreChars, ignoreWS);
+      }
+      
       TextNode childNode = pointer.getChildNode(charAt);
       if (childNode == null && ignoreWS) {
         childNode = skipWS(pointer, charAt);
       }
       if (charAtIgnored && childNode == null) {
-        return recursiveContains(pointer, text, next, ignoreCase, fragment, 
ignoreChars,
+        result |= recursiveContains(pointer, text, next, ignoreCase, fragment, 
ignoreChars,
                 maxIgnoreChars, ignoreWS);
       } else {
-        return recursiveContains(childNode, text, next, ignoreCase, fragment, 
ignoreChars,
+        result |= recursiveContains(childNode, text, next, ignoreCase, 
fragment, ignoreChars,
                 maxIgnoreChars, ignoreWS);
       }
     }
+    return result;
   }
 
   private TextNode skipWS(TextNode pointer, char charAt) {

Added: 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java?rev=1636886&view=auto
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java
 (added)
+++ 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java
 Wed Nov  5 15:00:27 2014
@@ -0,0 +1,223 @@
+/*
+ * 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;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.FSIterator;
+import org.apache.uima.cas.Feature;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
+import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.ruta.engine.RutaEngine;
+import org.apache.uima.ruta.engine.RutaTestUtils;
+import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
+import org.junit.Test;
+
+public class WSDictionaryTest {
+
+  @Test
+  public void test() {
+    String document = "Peter Kluegl, Marshall Schor, Joern Kottmann\n";
+    document += "PeterKluegl, MarshallSchor, JoernKottmann\n";
+    document += "Peter<x>Kluegl, Marshall<x>Schor, Joern<x>Kottmann\n";
+    String script = "WORDLIST list = 
'org/apache/uima/ruta/WSDictionaryTestList.txt';";
+    script += "Document{-> MARKFAST(T1,list)};";
+    CAS cas = null;
+    try {
+      cas = RutaTestUtils.getCAS(document);
+      Ruta.apply(cas, script);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    Type t = null;
+    AnnotationIndex<AnnotationFS> ai = null;
+    FSIterator<AnnotationFS> iterator = null;
+
+    t = RutaTestUtils.getTestType(cas, 1);
+    ai = cas.getAnnotationIndex(t);
+    assertEquals(9, ai.size());
+    iterator = ai.iterator();
+    assertEquals("Peter Kluegl", iterator.next().getCoveredText());
+    assertEquals("Marshall Schor", iterator.next().getCoveredText());
+    assertEquals("Joern Kottmann", iterator.next().getCoveredText());
+    assertEquals("PeterKluegl", iterator.next().getCoveredText());
+    assertEquals("MarshallSchor", iterator.next().getCoveredText());
+    assertEquals("JoernKottmann", iterator.next().getCoveredText());
+    assertEquals("Peter<x>Kluegl", iterator.next().getCoveredText());
+    assertEquals("Marshall<x>Schor", iterator.next().getCoveredText());
+    assertEquals("Joern<x>Kottmann", iterator.next().getCoveredText());
+    if (cas != null) {
+      cas.release();
+    }
+
+  }
+  
+  @Test
+  public void testDictRemoveWS() {
+    String document = "Peter Kluegl, Marshall Schor, Joern Kottmann\n";
+    document += "PeterKluegl, MarshallSchor, JoernKottmann\n";
+    document += "Peter<x>Kluegl, Marshall<x>Schor, Joern<x>Kottmann\n";
+    String script = "WORDLIST list = 
'org/apache/uima/ruta/WSDictionaryTestList.txt';";
+    script += "Document{-> MARKFAST(T1,list, true, 0, false)};";
+    CAS cas = null;
+    Map<String,Object> map = new HashMap<String, Object>();
+    map.put(RutaEngine.PARAM_DICT_REMOVE_WS, true);
+    try {
+      cas = RutaTestUtils.getCAS(document);
+      Ruta.apply(cas, script, map);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    Type t = null;
+    AnnotationIndex<AnnotationFS> ai = null;
+    FSIterator<AnnotationFS> iterator = null;
+
+    t = RutaTestUtils.getTestType(cas, 1);
+    ai = cas.getAnnotationIndex(t);
+    assertEquals(9, ai.size());
+    iterator = ai.iterator();
+    assertEquals("Peter Kluegl", iterator.next().getCoveredText());
+    assertEquals("Marshall Schor", iterator.next().getCoveredText());
+    assertEquals("Joern Kottmann", iterator.next().getCoveredText());
+    assertEquals("PeterKluegl", iterator.next().getCoveredText());
+    assertEquals("MarshallSchor", iterator.next().getCoveredText());
+    assertEquals("JoernKottmann", iterator.next().getCoveredText());
+    assertEquals("Peter<x>Kluegl", iterator.next().getCoveredText());
+    assertEquals("Marshall<x>Schor", iterator.next().getCoveredText());
+    assertEquals("Joern<x>Kottmann", iterator.next().getCoveredText());
+    if (cas != null) {
+      cas.release();
+    }
+
+  }
+  
+  @Test
+  public void testTableWithWS() {
+    String document = "Peter Kluegl, Marshall Schor, Joern Kottmann\n";
+    document += "PeterKluegl, MarshallSchor, JoernKottmann\n";
+    document += "Peter<x>Kluegl, Marshall<x>Schor, Joern<x>Kottmann\n";
+    String script = "WORDTABLE table = 'org/apache/uima/ruta/table2.csv';";
+    script += "Document{-> MARKTABLE(Struct, 1, table, true, 0, \"-.,\", 10, 
\"name\" = 1, \"system\" = 2)};";
+    
+    Map<String, String> complexTypes = new TreeMap<String, String>();
+    String typeName = "org.apache.uima.Struct";
+    complexTypes.put(typeName, "uima.tcas.Annotation");
+    
+    Map<String, List<TestFeature>> features = new TreeMap<String, 
List<TestFeature>>();
+    List<TestFeature> list = new ArrayList<RutaTestUtils.TestFeature>();
+    features.put(typeName, list);
+    String fn1 = "name";
+    list.add(new TestFeature(fn1, "", "uima.cas.String"));
+    String fn2 = "system";
+    list.add(new TestFeature(fn2, "", "uima.cas.String"));
+    CAS cas = null;
+    try {
+      cas = RutaTestUtils.getCAS(document, complexTypes, features);
+      Ruta.apply(cas, script);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    Type t = null;
+    AnnotationIndex<AnnotationFS> ai = null;
+    FSIterator<AnnotationFS> iterator = null;
+    AnnotationFS next = null;
+    String v1 = null;
+    String v2 = null;
+    t = cas.getTypeSystem().getType(typeName);
+    Feature f1 = t.getFeatureByBaseName(fn1);
+    Feature f2 = t.getFeatureByBaseName(fn2);
+    ai = cas.getAnnotationIndex(t);
+    
+    assertEquals(9, ai.size());
+    iterator = ai.iterator();
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Peter Kluegl", v1);
+    assertEquals("UIMA Ruta", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Marshall Schor", v1);
+    assertEquals("UIMA Core", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Joern Kottmann", v1);
+    assertEquals("CAS Editor", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Peter Kluegl", v1);
+    assertEquals("UIMA Ruta", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Marshall Schor", v1);
+    assertEquals("UIMA Core", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Joern Kottmann", v1);
+    assertEquals("CAS Editor", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Peter Kluegl", v1);
+    assertEquals("UIMA Ruta", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Marshall Schor", v1);
+    assertEquals("UIMA Core", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Joern Kottmann", v1);
+    assertEquals("CAS Editor", v2);
+    
+    if (cas != null) {
+      cas.release();
+    }
+
+  }
+  
+}

Propchange: 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFastTest.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFastTest.java?rev=1636886&r1=1636885&r2=1636886&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFastTest.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkFastTest.java
 Wed Nov  5 15:00:27 2014
@@ -63,11 +63,9 @@ public class MarkFastTest {
 
     t = RutaTestUtils.getTestType(cas, 3);
     ai = cas.getAnnotationIndex(t);
-    assertEquals(3, ai.size());
     iterator = ai.iterator();
-    assertEquals("1 0 0", iterator.next().getCoveredText());
+    assertEquals(1, ai.size());
     assertEquals("100", iterator.next().getCoveredText());
-    assertEquals("2 0 0", iterator.next().getCoveredText());
 
     t = RutaTestUtils.getTestType(cas, 4);
     ai = cas.getAnnotationIndex(t);

Added: 
uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/WSDictionaryTestList.txt
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/WSDictionaryTestList.txt?rev=1636886&view=auto
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/WSDictionaryTestList.txt
 (added)
+++ 
uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/WSDictionaryTestList.txt
 Wed Nov  5 15:00:27 2014
@@ -0,0 +1,6 @@
+Peter Kluegl
+Marshall Schor
+Joern Kottmann
+PeterKottmann
+MarshallSchmidt
+JoernKluegl
\ No newline at end of file

Propchange: 
uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/WSDictionaryTestList.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/table2.csv
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/table2.csv?rev=1636886&view=auto
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/table2.csv 
(added)
+++ 
uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/table2.csv 
Wed Nov  5 15:00:27 2014
@@ -0,0 +1,3 @@
+Peter Kluegl;UIMA Ruta
+Marshall Schor;UIMA Core
+Joern Kottmann;CAS Editor
\ No newline at end of file

Modified: 
uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/utils/twl/TWLConverterHandler.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/utils/twl/TWLConverterHandler.java?rev=1636886&r1=1636885&r2=1636886&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/utils/twl/TWLConverterHandler.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/utils/twl/TWLConverterHandler.java
 Wed Nov  5 15:00:27 2014
@@ -76,7 +76,7 @@ public class TWLConverterHandler impleme
         String path = file.getRawLocation().toString();
         TreeWordList list;
         try {
-          list = new TreeWordList(path);
+          list = new TreeWordList(path, false);
         } catch (IOException e) {
           RutaAddonsPlugin.error(e);
           return Status.CANCEL_STATUS;


Reply via email to