Author: tommaso
Date: Thu Feb 25 08:56:12 2010
New Revision: 916188

URL: http://svn.apache.org/viewvc?rev=916188&view=rev
Log:
[CLEREZZA-124] - refactoring and adding some functionalities exposed using 
AlchemyAPI Annotator

Added:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
   (with props)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
   (with props)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
   (with props)
Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java
 Thu Feb 25 08:56:12 2010
@@ -1,6 +1,5 @@
 package org.apache.clerezza.uima.utils;
 
-
 import java.net.URL;
 
 import org.apache.uima.UIMAFramework;
@@ -12,22 +11,43 @@
 /**
  * provide the AnalysisEngine using the default descriptor or using a custom 
descriptor (absolute)
  * path
- *
+ * 
  * @author tommaso
- *
+ * 
  */
 public class AEProvider {
 
-  private static final String defaultXMLPath = "ExtServicesAE.xml";
+  private static String defaultXMLPath;
+
+  public AEProvider() {
+    defaultXMLPath = "ExtServicesAE.xml";
+  }
+
+  public AEProvider(String xmlDescriptorPath) {
+    defaultXMLPath = xmlDescriptorPath;
+  }
 
   public String getDefaultXMLPath() {
     return defaultXMLPath;
   }
 
+  /**
+   * get an Analysis Engine using the default path (specified in constructor)
+   * 
+   * @return
+   * @throws ResourceInitializationException
+   */
   public AnalysisEngine getDefaultAE() throws ResourceInitializationException {
-    return getAE(defaultXMLPath);    
+    return getAE(defaultXMLPath);
   }
 
+  /**
+   * get an Analysis Engine from a different descriptor path
+   * 
+   * @param filePath
+   * @return
+   * @throws ResourceInitializationException
+   */
   public AnalysisEngine getAE(String filePath) throws 
ResourceInitializationException {
     AnalysisEngine ae = null;
     // get Resource Specifier from XML file

Added: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java?rev=916188&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
 (added)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
 Thu Feb 25 08:56:12 2010
@@ -0,0 +1,76 @@
+package org.apache.clerezza.uima.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.UIMAException;
+import org.apache.uima.alchemy.ts.keywords.KeywordFS;
+import org.apache.uima.alchemy.ts.language.LanguageFS;
+import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.jcas.JCas;
+
+/**
+ * Facade for querying UIMA external services
+ * 
+ * @author tommaso
+ * 
+ */
+public class ExternalServicesFacade {
+
+  private UIMAExecutor uimaExecutor;
+
+  public ExternalServicesFacade() {
+    this.uimaExecutor = new UIMAExecutor("ExtServicesAE.xml").withResults();
+  }
+
+  public List<String> getTags(String document) throws UIMAException {
+
+    List<String> tags = null;
+
+    try {
+      // analyze the document
+      uimaExecutor.analyzeDocument(document);
+
+      tags = new ArrayList<String>();
+
+      // get execution results
+      JCas jcas = uimaExecutor.getResults();
+
+      // get AlchemyAPI keywords extracted using UIMA
+      List<FeatureStructure> keywords = 
UIMAUtils.getAllFSofType(KeywordFS.type, jcas);
+
+      for (FeatureStructure keywordFS : keywords) {
+        
tags.add(keywordFS.getStringValue(keywordFS.getType().getFeatureByBaseName("text")));
+      }
+    } catch (Exception e) {
+      throw new UIMAException(e);
+    }
+
+    return tags;
+  }
+
+  public String getLanguage(String document) throws UIMAException {
+
+    String language = null;
+
+    try {
+
+      // analyze the document
+      uimaExecutor.analyzeDocument(document);
+
+      // get execution results
+      JCas jcas = uimaExecutor.getResults();
+
+      // extract language Feature Structure using AlchemyAPI Annotator
+      FeatureStructure languageFS = 
UIMAUtils.getSingletonFeatureStructure(LanguageFS.type, jcas);
+
+      language = 
languageFS.getStringValue(languageFS.getType().getFeatureByBaseName("text"));
+
+    } catch (Exception e) {
+      throw new UIMAException(e);
+    }
+
+    return language;
+  }
+
+}

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java
 Thu Feb 25 08:56:12 2010
@@ -14,14 +14,21 @@
  */
 public class UIMAExecutor {
 
-  private transient final AEProvider aeProvider = new AEProvider();
+  private transient final AEProvider aeProvider;
 
   private boolean withResults;
 
   private JCas results;
 
-  public UIMAExecutor() {
+  @SuppressWarnings("unused")
+  private UIMAExecutor() {
+    // cannot instantiate without arguments
+    aeProvider = null;
+  }
+
+  public UIMAExecutor(String xmlDescriptorPath) {
     withResults = false;
+    aeProvider = new AEProvider(xmlDescriptorPath);
   }
 
   public UIMAExecutor withResults() {
@@ -29,10 +36,23 @@
     return this;
   }
 
+  /**
+   * analyze a text document using with this executor
+   * 
+   * @param doc
+   * @throws AnalysisEngineProcessException
+   */
   public void analyzeDocument(String doc) throws 
AnalysisEngineProcessException {
     analyzeDocument(doc, aeProvider.getDefaultXMLPath());
   }
 
+  /**
+   * analyze a text document specifying a different Analysis Engine descriptor 
path
+   * 
+   * @param doc
+   * @param xmlPath
+   * @throws AnalysisEngineProcessException
+   */
   public void analyzeDocument(String doc, String xmlPath) throws 
AnalysisEngineProcessException {
     try {
       this.executeAE(aeProvider.getAE(xmlPath), doc);
@@ -66,7 +86,7 @@
       throw new ExecutionWithoutResultsException();
     return results;
   }
-  
+
   private void setResults(JCas jcas) {
     this.results = jcas;
 

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java
 Thu Feb 25 08:56:12 2010
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import 
org.apache.clerezza.uima.utils.exception.FeatureStructureNotFoundException;
 import 
org.apache.clerezza.uima.utils.exception.NotSingletonFeatureStructureException;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.FeatureStructure;
@@ -10,26 +11,38 @@
 
 /**
  * Utilities for managing UIMA data and features
+ * 
  * @author tommaso
- *
+ * 
  */
 public class UIMAUtils {
-  
-  public static List<FeatureStructure> getAllFSofType(int type,JCas cas) {
+
+  public static List<FeatureStructure> getAllFSofType(int type, JCas cas)
+          throws FeatureStructureNotFoundException {
     List<FeatureStructure> featureStructures = new 
ArrayList<FeatureStructure>();
-    for (FSIterator<FeatureStructure> it = 
cas.getFSIndexRepository().getAllIndexedFS(cas.getCasType(type)); 
it.hasNext();) {
+    for (FSIterator<FeatureStructure> it = 
cas.getFSIndexRepository().getAllIndexedFS(
+            cas.getCasType(type)); it.hasNext();) {
       featureStructures.add(it.next());
     }
+
+    if (featureStructures.isEmpty())
+      throw new FeatureStructureNotFoundException();
     return featureStructures;
   }
 
-  public static FeatureStructure getSingletonFeatureStructure(int type, JCas 
cas) throws NotSingletonFeatureStructureException {
+  public static FeatureStructure getSingletonFeatureStructure(int type, JCas 
cas)
+          throws NotSingletonFeatureStructureException, 
FeatureStructureNotFoundException {
     FeatureStructure featureStructure = null;
-    for (FSIterator<FeatureStructure> it = 
cas.getFSIndexRepository().getAllIndexedFS(cas.getCasType(type)); 
it.hasNext();) {
+    for (FSIterator<FeatureStructure> it = 
cas.getFSIndexRepository().getAllIndexedFS(
+            cas.getCasType(type)); it.hasNext();) {
       featureStructure = it.next();
       if (it.hasNext())
         throw new NotSingletonFeatureStructureException();
     }
+
+    if (featureStructure == null)
+      throw new FeatureStructureNotFoundException();
+
     return featureStructure;
   }
 

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java
 Thu Feb 25 08:56:12 2010
@@ -6,7 +6,7 @@
    * 
    */
   private static final long serialVersionUID = -3001462019532255319L;
-  
+
   public ExecutionWithoutResultsException() {
     super();
   }

Added: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java?rev=916188&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
 (added)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
 Thu Feb 25 08:56:12 2010
@@ -0,0 +1,19 @@
+package org.apache.clerezza.uima.utils.exception;
+
+/**
+ * 
+ * @author tommaso
+ * 
+ */
+public class FeatureStructureNotFoundException extends Exception {
+
+  /**
+   * 
+   */
+  private static final long serialVersionUID = -11488382420562373L;
+
+  public FeatureStructureNotFoundException() {
+    super();
+  }
+
+}

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java
 Thu Feb 25 08:56:12 2010
@@ -6,7 +6,7 @@
    * 
    */
   private static final long serialVersionUID = -5226914034672596670L;
-  
+
   public NotSingletonFeatureStructureException() {
     super();
   }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java
 Thu Feb 25 08:56:12 2010
@@ -15,7 +15,7 @@
   @Test
   public void testDefaultConstructor() {
     try {
-      UIMAExecutor uimaExecutor = new UIMAExecutor();
+      UIMAExecutor uimaExecutor = new UIMAExecutor("ExtServicesAE.xml");
       assertTrue(uimaExecutor != null);
     } catch (Throwable e) {
       fail(e.getLocalizedMessage());
@@ -25,7 +25,7 @@
   @Test
   public void testWithResultsConstructor() {
     try {
-      UIMAExecutor uimaExecutor = new UIMAExecutor().withResults();
+      UIMAExecutor uimaExecutor = new 
UIMAExecutor("ExtServicesAE.xml").withResults();
       assertTrue(uimaExecutor != null);
     } catch (Throwable e) {
       fail(e.getLocalizedMessage());

Added: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java?rev=916188&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
 (added)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
 Thu Feb 25 08:56:12 2010
@@ -0,0 +1,25 @@
+package org.apache.clerezza.uima.utils;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Testcase for {...@link UIMAUtils}
+ * 
+ * @author tommaso
+ * 
+ */
+...@ignore
+public class UIMAUtilsTest {
+
+  @Test
+  public void testGetAllFSofAType() {
+
+  }
+
+  @Test
+  public void testGetSingletonFeatureStructure() {
+
+  }
+
+}

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to