Author: pkluegl
Date: Sat May  4 15:36:46 2013
New Revision: 1479130

URL: http://svn.apache.org/r1479130
Log:
UIMA-2823
- added method for creating an analysis engine description
- added test

Modified:
    
uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java
    
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java

Modified: 
uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java?rev=1479130&r1=1479129&r2=1479130&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java
 Sat May  4 15:36:46 2013
@@ -25,15 +25,23 @@ import java.io.InputStream;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
+import org.apache.uima.analysis_engine.AnalysisEngineDescription;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
+import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.resource.ResourceConfigurationException;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceSpecifier;
+import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
+import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.util.CasCreationUtils;
 import org.apache.uima.util.FileUtils;
 import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
@@ -46,15 +54,15 @@ public class Ruta {
     String viewName = cas.getViewName();
     URL aedesc = RutaEngine.class.getResource("BasicEngine.xml");
     AnalysisEngine ae = wrapAnalysisEngine(aedesc, viewName);
-    
+
     File scriptFile = File.createTempFile("Ruta", 
RutaEngine.SCRIPT_FILE_EXTENSION);
     scriptFile.deleteOnExit();
     if (!script.startsWith("PACKAGE")) {
       script = "PACKAGE org.apache.uima.ruta;\n" + script;
     }
     FileUtils.saveString2File(script, scriptFile);
-    ae.setConfigParameterValue(RutaEngine.SCRIPT_PATHS, new String[] { 
scriptFile
-            .getParentFile().getAbsolutePath() });
+    ae.setConfigParameterValue(RutaEngine.SCRIPT_PATHS, new String[] { 
scriptFile.getParentFile()
+            .getAbsolutePath() });
     String name = scriptFile.getName().substring(0, 
scriptFile.getName().length() - 5);
     ae.setConfigParameterValue(RutaEngine.MAIN_SCRIPT, name);
     ae.reconfigure();
@@ -69,9 +77,9 @@ public class Ruta {
     return wrapAnalysisEngine(descriptorUrl, viewName, false, 
Charset.defaultCharset().name());
   }
 
-  public static AnalysisEngine wrapAnalysisEngine(URL descriptorUrl, String 
viewName, boolean rutaEngine, 
-          String encoding) throws ResourceInitializationException, 
ResourceConfigurationException,
-          InvalidXMLException, IOException, URISyntaxException {
+  public static AnalysisEngine wrapAnalysisEngine(URL descriptorUrl, String 
viewName,
+          boolean rutaEngine, String encoding) throws 
ResourceInitializationException,
+          ResourceConfigurationException, InvalidXMLException, IOException, 
URISyntaxException {
     if (viewName.equals(CAS.NAME_DEFAULT_SOFA)) {
       XMLInputSource in = new XMLInputSource(descriptorUrl);
       ResourceSpecifier specifier = 
UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -79,7 +87,7 @@ public class Ruta {
       return ae;
     } else {
       InputStream inputStream = null;
-      if(rutaEngine) {
+      if (rutaEngine) {
         inputStream = Ruta.class.getResourceAsStream("AAEDBasicEngine.xml");
       } else {
         inputStream = Ruta.class.getResourceAsStream("AAED.xml");
@@ -98,4 +106,38 @@ public class Ruta {
     }
   }
 
+  public static AnalysisEngineDescription 
createAnalysisEngineDescription(String script)
+          throws IOException, InvalidXMLException, 
ResourceInitializationException {
+    return createAnalysisEngineDescription(script, (TypeSystemDescription[]) 
null);
+  }
+
+  public static AnalysisEngineDescription 
createAnalysisEngineDescription(String script,
+          TypeSystemDescription... tsds) throws IOException, 
InvalidXMLException,
+          ResourceInitializationException {
+    File scriptFile = File.createTempFile("Ruta", 
RutaEngine.SCRIPT_FILE_EXTENSION);
+    scriptFile.deleteOnExit();
+    if (!script.startsWith("PACKAGE")) {
+      script = "PACKAGE org.apache.uima.ruta;\n" + script;
+    }
+    FileUtils.saveString2File(script, scriptFile);
+    URL url = RutaEngine.class.getResource("BasicEngine.xml");
+    XMLInputSource in = new XMLInputSource(url);
+    AnalysisEngineDescription aed = (AnalysisEngineDescription) 
UIMAFramework.getXMLParser()
+            .parseResourceSpecifier(in);
+    AnalysisEngineMetaData metaData = aed.getAnalysisEngineMetaData();
+    ConfigurationParameterSettings settings = 
metaData.getConfigurationParameterSettings();
+    settings.setParameterValue(RutaEngine.SCRIPT_PATHS, new String[] { 
scriptFile.getParentFile()
+            .getAbsolutePath() });
+    String name = scriptFile.getName().substring(0, 
scriptFile.getName().length() - 5);
+    settings.setParameterValue(RutaEngine.MAIN_SCRIPT, name);
+    if (tsds != null) {
+      List<TypeSystemDescription> tsdList = new 
ArrayList<TypeSystemDescription>();
+      tsdList.add(metaData.getTypeSystem());
+      tsdList.addAll(Arrays.asList(tsds));
+      TypeSystemDescription typeSystemDescription = 
CasCreationUtils.mergeTypeSystems(tsdList);
+      metaData.setTypeSystem(typeSystemDescription);
+    }
+    return aed;
+  }
+
 }

Modified: 
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java?rev=1479130&r1=1479129&r2=1479130&view=diff
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java
 (original)
+++ 
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java
 Sat May  4 15:36:46 2013
@@ -24,13 +24,19 @@ import static org.junit.Assert.assertEqu
 import java.net.URL;
 
 import org.apache.uima.UIMAFramework;
+import org.apache.uima.analysis_engine.AnalysisEngine;
+import org.apache.uima.analysis_engine.AnalysisEngineDescription;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIterator;
+import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.cas.text.AnnotationIndex;
 import org.apache.uima.resource.metadata.FsIndexDescription;
+import org.apache.uima.resource.metadata.TypeDescription;
 import org.apache.uima.resource.metadata.TypePriorities;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.resource.metadata.impl.TypeDescription_impl;
+import org.apache.uima.resource.metadata.impl.TypeSystemDescription_impl;
 import org.apache.uima.ruta.RutaTestUtils;
 import org.apache.uima.util.CasCreationUtils;
 import org.apache.uima.util.XMLInputSource;
@@ -39,7 +45,7 @@ import org.junit.Test;
 public class RutaTest {
 
   @Test
-  public void test() throws Exception {
+  public void testApply() throws Exception {
     URL typePrioritiesUrl = 
RutaTestUtils.class.getResource("TypePriorities.xml");
     URL tsUrl = RutaTestUtils.class.getResource("BasicTypeSystem.xml");
     Object descriptor = UIMAFramework.getXMLParser().parse(new 
XMLInputSource(tsUrl));
@@ -73,7 +79,35 @@ public class RutaTest {
     assertEquals(1, ai.size());
     assertEquals("Some document.", iterator.next().getCoveredText());
     
-    
     cas.release();
   }
+  
+  @Test
+  public void testCreateAnalysisEngineDescription() throws Exception {
+    TypeSystemDescription_impl tsdi = new TypeSystemDescription_impl();
+    String t1 = "some.type.Test1";
+    String t2 = "some.type.Test2";
+    TypeDescription_impl ti1 = new TypeDescription_impl(t1, "", 
"uima.tcas.Annotation");
+    TypeDescription_impl ti2 = new TypeDescription_impl(t2, "", 
"uima.tcas.Annotation");
+    tsdi.setTypes(new TypeDescription[] {ti1, ti2});
+    
+    String script = "CW SW{-> MARK(Test1)};\n Test1 SW{-> MARK(Test2)};";
+    AnalysisEngineDescription aed = 
Ruta.createAnalysisEngineDescription(script, tsdi);
+    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(aed);
+    CAS cas = ae.newCAS();
+    cas.setDocumentText("Only some text.");
+    ae.process(cas);
+
+    Type type1 = cas.getTypeSystem().getType(t1);
+    AnnotationIndex<AnnotationFS> ai1 = cas.getAnnotationIndex(type1);
+    assertEquals(1, ai1.size());
+    assertEquals("some", ai1.iterator().get().getCoveredText());
+    
+    Type type2 = cas.getTypeSystem().getType(t2);
+    AnnotationIndex<AnnotationFS> ai2 = cas.getAnnotationIndex(type2);
+    assertEquals(1, ai2.size());
+    assertEquals("text", ai2.iterator().get().getCoveredText());
+  }
+  
+  
 }


Reply via email to