Author: tommaso
Date: Mon Aug 22 10:16:18 2011
New Revision: 1160186

URL: http://svn.apache.org/viewvc?rev=1160186&view=rev
Log:
[CLEREZZA-627] - enable definition of different CAS mapping strategies

Added:
    
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java
    
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java
    
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java
    
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java
    
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java
Modified:
    incubator/clerezza/trunk/parent/uima/uima.casconsumer/   (props changed)
    incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml
    
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java
    
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml
    
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml

Propchange: incubator/clerezza/trunk/parent/uima/uima.casconsumer/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Aug 22 10:16:18 2011
@@ -1,2 +1,6 @@
 target
 *.iml
+
+.settings
+
+.project

Modified: incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml?rev=1160186&r1=1160185&r2=1160186&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml (original)
+++ incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml Mon Aug 22 
10:16:18 2011
@@ -6,7 +6,6 @@
   <version>0.1-incubating-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <name>Clerezza - Apache UIMA CAS Consumer for Graph objects</name>
-  <description>Clerezza - Apache UIMA CAS Consumer for Graph 
objects</description>
   <parent>
     <groupId>org.apache.clerezza</groupId>
     <artifactId>uima</artifactId>

Added: 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java?rev=1160186&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java
 (added)
+++ 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java
 Mon Aug 22 10:16:18 2011
@@ -0,0 +1,10 @@
+package org.apache.clerezza.uima.casconsumer;
+
+/**
+ * An {@link Exception} thrown when mapping a CAS model to RDF
+ */
+public class CASMappingException extends Exception {
+  public CASMappingException(Throwable cause) {
+    super(cause);
+  }
+}

Added: 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java?rev=1160186&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java
 (added)
+++ 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java
 Mon Aug 22 10:16:18 2011
@@ -0,0 +1,38 @@
+package org.apache.clerezza.uima.casconsumer;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A repository for {@link CASMappingStrategy} implementations
+ */
+public class CASMappingStrategiesRepository {
+  private static CASMappingStrategiesRepository instance = new 
CASMappingStrategiesRepository();
+
+  private Map<String, CASMappingStrategy> strategies;
+
+  public static CASMappingStrategiesRepository getInstance() {
+    return instance;
+  }
+
+  private CASMappingStrategiesRepository() {
+    initialize();
+  }
+
+  private void initialize() {
+    strategies = new HashMap<String, CASMappingStrategy>();
+    strategies.put("default", new DefaultCASMappingStrategy());
+  }
+
+  public void register(CASMappingStrategy casMappingStrategy, String name) {
+    strategies.put(name, casMappingStrategy);
+  }
+
+  public CASMappingStrategy getStrategy(String name) throws 
UnknownStrategyException {
+    if (strategies.get(name) != null)
+      return strategies.get(name);
+    else
+      throw new UnknownStrategyException(new StringBuilder("Could not find a 
strategy with name '").append(name).
+              append("'").toString());
+  }
+}

Added: 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java?rev=1160186&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java
 (added)
+++ 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java
 Mon Aug 22 10:16:18 2011
@@ -0,0 +1,17 @@
+package org.apache.clerezza.uima.casconsumer;
+
+import org.apache.uima.cas.CAS;
+
+/**
+ * a {@link CASMappingStrategy} defines a strategy for mapping a CAS object to 
an RDF model/file/object/store
+ */
+public interface CASMappingStrategy {
+
+  /**
+   * Converts a {@link CAS} object to an RDF object
+   * @param cas the {@link CAS} object to convert
+   * @param graphName the name of the graph to be created
+   * @throws CASMappingException
+   */
+  void map(CAS cas, String graphName) throws CASMappingException;
+}

Modified: 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java?rev=1160186&r1=1160185&r2=1160186&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java
 (original)
+++ 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java
 Mon Aug 22 10:16:18 2011
@@ -18,20 +18,11 @@
  */
 package org.apache.clerezza.uima.casconsumer;
 
-import org.apache.clerezza.rdf.core.BNode;
-import org.apache.clerezza.rdf.core.MGraph;
 import org.apache.clerezza.rdf.core.TripleCollection;
-import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.clerezza.rdf.core.access.TcManager;
-import org.apache.clerezza.rdf.utils.GraphNode;
-import org.apache.clerezza.uima.utils.UIMAUtils;
-import 
org.apache.clerezza.uima.utils.exception.FeatureStructureNotFoundException;
 import org.apache.uima.UimaContext;
 import org.apache.uima.analysis_component.CasAnnotator_ImplBase;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
-import org.apache.uima.jcas.cas.TOP;
 import org.apache.uima.resource.ResourceInitializationException;
 
 /**
@@ -40,14 +31,19 @@ import org.apache.uima.resource.Resource
 public class ClerezzaCASConsumer extends CasAnnotator_ImplBase {
 
   private String graphName;
-  private String casModelFilePath;
+  private CASMappingStrategy mappingStrategy;
 
   @Override
   public void initialize(UimaContext context) throws 
ResourceInitializationException {
     super.initialize(context);
 
-    // get the RDF model
-    casModelFilePath = 
String.valueOf(context.getConfigParameterValue("casModelFile"));
+    // get the CAS mapping strategy
+    try {
+      mappingStrategy = 
CASMappingStrategiesRepository.getInstance().getStrategy(String.valueOf(context.
+              getConfigParameterValue("mappingStrategy")));
+    } catch (UnknownStrategyException e) {
+      throw new ResourceInitializationException(e);
+    }
 
     // get the output graph name
     graphName = String.valueOf(context.getConfigParameterValue("graphName"));
@@ -55,29 +51,11 @@ public class ClerezzaCASConsumer extends
 
   @Override
   public void process(CAS cas) throws AnalysisEngineProcessException {
-    // create the output graph
-    MGraph outputGraph = createGraph();
-
-    // create the root node
-    GraphNode sample = new GraphNode(new BNode(), outputGraph);
-
-    // if no casModel was specified use the default mapping
-    if (casModelFilePath==null || casModelFilePath.length()==0) {
-      try {
-        UIMAUtils.enhanceNode(sample, UIMAUtils.getAllFSofType(TOP.type, 
cas.getJCas()));
-      } catch (FeatureStructureNotFoundException e) {
-        throw new AnalysisEngineProcessException(e);
-      } catch (CASException e) {
-        throw new AnalysisEngineProcessException(e);
-      }
+    try {
+      mappingStrategy.map(cas, graphName);
+    } catch (CASMappingException e) {
+      throw new AnalysisEngineProcessException(e);
     }
-    // TODO otherwise map UIMA FeatureStructures to Triples using the given 
casModel
-
   }
 
-  private MGraph createGraph() {
-    final TcManager tcManager = TcManager.getInstance();
-    final UriRef mGraphName = new UriRef(graphName);
-    return tcManager.createMGraph(mGraphName);
-  }
 }

Added: 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java?rev=1160186&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java
 (added)
+++ 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java
 Mon Aug 22 10:16:18 2011
@@ -0,0 +1,31 @@
+package org.apache.clerezza.uima.casconsumer;
+
+import org.apache.clerezza.rdf.core.BNode;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.TcManager;
+import org.apache.clerezza.rdf.utils.GraphNode;
+import org.apache.clerezza.uima.utils.UIMAUtils;
+import org.apache.uima.cas.CAS;
+import org.apache.uima.jcas.cas.TOP;
+
+/**
+ * the default implementation for {@link CASMappingStrategy}
+ */
+public class DefaultCASMappingStrategy implements CASMappingStrategy {
+
+  @Override
+  public void map(CAS cas, String graphName) throws CASMappingException {
+    try {
+      GraphNode node = createNode(graphName);
+      UIMAUtils.enhanceNode(node, UIMAUtils.getAllFSofType(TOP.type, 
cas.getJCas()));
+    } catch (Exception e) {
+      throw new CASMappingException(e);
+    }
+  }
+
+  private GraphNode createNode(String graphName) {
+    final TcManager tcManager = TcManager.getInstance();
+    final UriRef mGraphName = new UriRef(graphName);
+    return new GraphNode(new BNode(), tcManager.createMGraph(mGraphName));
+  }
+}

Added: 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java?rev=1160186&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java
 (added)
+++ 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java
 Mon Aug 22 10:16:18 2011
@@ -0,0 +1,11 @@
+package org.apache.clerezza.uima.casconsumer;
+
+/**
+ * Exception raised when an unrecognized (unknown or registered with wrong 
name) {@link CASMappingStrategy} is requested
+ * to the {@link CASMappingStrategiesRepository}
+ */
+public class UnknownStrategyException extends Throwable {
+  public UnknownStrategyException(String message) {
+    super(message);
+  }
+}

Modified: 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml?rev=1160186&r1=1160185&r2=1160186&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml
 (original)
+++ 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml
 Mon Aug 22 10:16:18 2011
@@ -36,7 +36,7 @@
         <mandatory>true</mandatory>
       </configurationParameter>
       <configurationParameter>
-        <name>casModelFile</name>
+        <name>mappingStrategy</name>
         <type>String</type>
         <multiValued>false</multiValued>
         <mandatory>true</mandatory>
@@ -50,9 +50,9 @@
         </value>
       </nameValuePair>
       <nameValuePair>
-        <name>casModelFile</name>
+        <name>mappingStrategy</name>
         <value>
-          <string></string>
+          <string>default</string>
         </value>
       </nameValuePair>
     </configurationParameterSettings>

Modified: 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml?rev=1160186&r1=1160185&r2=1160186&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml
 (original)
+++ 
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml
 Mon Aug 22 10:16:18 2011
@@ -36,7 +36,7 @@
         <mandatory>true</mandatory>
       </configurationParameter>
       <configurationParameter>
-        <name>casModelFile</name>
+        <name>mappingStrategy</name>
         <type>String</type>
         <multiValued>false</multiValued>
         <mandatory>true</mandatory>
@@ -50,9 +50,9 @@
         </value>
       </nameValuePair>
       <nameValuePair>
-        <name>casModelFile</name>
+        <name>mappingStrategy</name>
         <value>
-          <string></string>
+          <string>default</string>
         </value>
       </nameValuePair>
     </configurationParameterSettings>


Reply via email to