You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2016/07/18 15:55:43 UTC

svn commit: r1753252 - in /uima/ruta/trunk: ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/ ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/ ruta-ep-ide-ui/src/main/resources/org/apache/uima/ruta/ide/ui/preferences...

Author: pkluegl
Date: Mon Jul 18 15:55:43 2016
New Revision: 1753252

URL: http://svn.apache.org/viewvc?rev=1753252&view=rev
Log:
UIMA-5017
- enable different CAS formats with preferences

Modified:
    uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConfigurationDelegate.java
    uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConstants.java
    uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLauncher.java
    uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.java
    uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaProjectPreferencePage.java
    uima/ruta/trunk/ruta-ep-ide-ui/src/main/resources/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.properties
    uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaCorePreferences.java
    uima/ruta/trunk/ruta-parent/pom.xml

Modified: uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConfigurationDelegate.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConfigurationDelegate.java?rev=1753252&r1=1753251&r2=1753252&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConfigurationDelegate.java (original)
+++ uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConfigurationDelegate.java Mon Jul 18 15:55:43 2016
@@ -37,6 +37,7 @@ import org.apache.uima.ruta.ide.RutaIdeC
 import org.apache.uima.ruta.ide.RutaIdeUIPlugin;
 import org.apache.uima.ruta.ide.core.RutaCorePreferences;
 import org.apache.uima.ruta.ide.core.builder.RutaProjectUtils;
+import org.apache.uima.util.SerializationFormat;
 import org.eclipse.core.internal.resources.Folder;
 import org.eclipse.core.resources.IProjectNature;
 import org.eclipse.core.resources.IResource;
@@ -44,7 +45,6 @@ import org.eclipse.core.resources.Resour
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.ILog;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -80,13 +80,18 @@ public class RutaLaunchConfigurationDele
 
     IPreferenceStore preferenceStore = RutaIdeUIPlugin.getDefault().getPreferenceStore();
     boolean addSDI = preferenceStore.getBoolean(RutaCorePreferences.ADD_SDI);
+    String defaultFormat = preferenceStore
+            .getString(RutaCorePreferences.DEFAULT_CAS_SERIALIZATION_FORMAT);
+    if (defaultFormat == null) {
+      defaultFormat = SerializationFormat.XMI.name();
+    }
 
     IResource member = proj.getProject().findMember(mainScriptAttribute);
     IPath projectPath = proj.getResource().getLocation();
     IPath inputDirPath = projectPath.append(RutaProjectUtils.getDefaultInputLocation());
     IPath outputDirPath = projectPath.append(RutaProjectUtils.getDefaultOutputLocation());
-    IPath analysisEngineDescriptorPath = RutaProjectUtils.getAnalysisEngineDescriptorPath(
-            member.getLocation(), proj.getProject());
+    IPath analysisEngineDescriptorPath = RutaProjectUtils
+            .getAnalysisEngineDescriptorPath(member.getLocation(), proj.getProject());
     String engineDefaultMethod = "";
     if (analysisEngineDescriptorPath != null) {
       engineDefaultMethod = analysisEngineDescriptorPath.toPortableString();
@@ -112,16 +117,18 @@ public class RutaLaunchConfigurationDele
       cmdline.append(URLEncoder.encode(engine, RutaLauncher.URL_ENCODING) + " ");
 
       cmdline.append(RutaLaunchConstants.ARG_INPUT_FOLDER + " ");
-      cmdline.append(URLEncoder.encode(makeAbsolute(input, configuration),
-              RutaLauncher.URL_ENCODING) + " ");
+      cmdline.append(
+              URLEncoder.encode(makeAbsolute(input, configuration), RutaLauncher.URL_ENCODING)
+                      + " ");
 
       cmdline.append(RutaLaunchConstants.ARG_OUTPUT_FOLDER + " ");
-      cmdline.append(URLEncoder.encode(makeAbsolute(output, configuration),
-              RutaLauncher.URL_ENCODING) + " ");
+      cmdline.append(
+              URLEncoder.encode(makeAbsolute(output, configuration), RutaLauncher.URL_ENCODING)
+                      + " ");
 
     } catch (UnsupportedEncodingException e) {
-      throw new CoreException(new Status(IStatus.ERROR, RutaIdeUIPlugin.PLUGIN_ID,
-              "Unsupported Encoding"));
+      throw new CoreException(
+              new Status(IStatus.ERROR, RutaIdeUIPlugin.PLUGIN_ID, "Unsupported Encoding"));
     }
     cmdline.append(RutaLaunchConstants.ARG_MODE + " ");
     cmdline.append(mode + " ");
@@ -138,6 +145,9 @@ public class RutaLaunchConfigurationDele
     cmdline.append(RutaLaunchConstants.ARG_ADD_SDI + " ");
     cmdline.append(addSDI + " ");
 
+    cmdline.append(RutaLaunchConstants.ARG_FORMAT + " ");
+    cmdline.append(defaultFormat + " ");
+
     return cmdline.toString();
   }
 
@@ -164,10 +174,11 @@ public class RutaLaunchConfigurationDele
             .getScriptProject(configuration);
     extendedClasspath.addAll(getClassPath(scriptProject));
     String[] result = extendedClasspath.toArray(new String[extendedClasspath.size()]);
-    
-//    ILog log = RutaIdeUIPlugin.getDefault().getLog();
-//    log.log(new Status(IStatus.INFO, RutaIdeUIPlugin.PLUGIN_ID, "Classpath of "+ configuration.getName()+": " + StringUtils.join(result, ";")));
-    
+
+    // ILog log = RutaIdeUIPlugin.getDefault().getLog();
+    // log.log(new Status(IStatus.INFO, RutaIdeUIPlugin.PLUGIN_ID, "Classpath of "+
+    // configuration.getName()+": " + StringUtils.join(result, ";")));
+
     return result;
   }
 

Modified: uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConstants.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConstants.java?rev=1753252&r1=1753251&r2=1753252&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConstants.java (original)
+++ uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLaunchConstants.java Mon Jul 18 15:55:43 2016
@@ -43,6 +43,8 @@ public class RutaLaunchConstants {
 
   public static final String VIEW = "org.apache.uima.ruta.ide.launching.view";
 
-  public static final String ARG_ADD_SDI = "org.apache.uima.ruta.ide.launching.addsdi";;
+  public static final String ARG_ADD_SDI = "org.apache.uima.ruta.ide.launching.addsdi";
+
+  public static final String ARG_FORMAT = "org.apache.uima.ruta.ide.launching.defaultFormat";
 
 }

Modified: uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLauncher.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLauncher.java?rev=1753252&r1=1753251&r2=1753252&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLauncher.java (original)
+++ uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/launching/RutaLauncher.java Mon Jul 18 15:55:43 2016
@@ -20,31 +20,34 @@
 package org.apache.uima.ruta.ide.launching;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.net.URLDecoder;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.impl.XmiCasDeserializer;
-import org.apache.uima.cas.impl.XmiCasSerializer;
 import org.apache.uima.resource.ResourceConfigurationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaEngine;
+import org.apache.uima.util.CasIOUtils;
 import org.apache.uima.util.FileUtils;
-import org.apache.uima.util.XMLSerializer;
+import org.apache.uima.util.SerializationFormat;
 import org.apache.uima.util.impl.ProcessTrace_impl;
 import org.xml.sax.SAXException;
 
 public class RutaLauncher {
 
+  public static final List<String> COMMON_PLAIN_TEXT_FILE_EXTENSIONS = Arrays.asList(new String[] {".txt", ".csv", "html", "xhtml"});
+  
   public static final String URL_ENCODING = "UTF-8";
 
   private static File descriptor;
@@ -62,6 +65,8 @@ public class RutaLauncher {
   private static String launchMode = "run";
 
   private static String view = null;
+  
+  private static String defaultFormat = null;
 
   private static boolean parseCmdLineArgs(String[] args) throws UnsupportedEncodingException {
     int index = 0;
@@ -110,6 +115,11 @@ public class RutaLauncher {
           return false;
         }
         view = args[index++];
+      } else if (RutaLaunchConstants.ARG_FORMAT.equals(each)) {
+        if (index >= args.length) {
+          return false;
+        }
+        defaultFormat = args[index++];
       }
     }
     return count == 2;
@@ -155,21 +165,32 @@ public class RutaLauncher {
       }
 
     }
-    if (file.getName().endsWith(".xmi")) {
-      XmiCasDeserializer.deserialize(new FileInputStream(file), cas, true);
-    } else {
+    
+    SerializationFormat format = SerializationFormat.valueOf(defaultFormat);
+    String extension = FilenameUtils.getExtension(file.getName());
+    if(COMMON_PLAIN_TEXT_FILE_EXTENSIONS.contains(extension)) {
       String document = FileUtils.file2String(file, inputEncoding);
       cas.setDocumentText(document);
+    } else {
+      try {
+        format = CasIOUtils.load(file, null, cas, true);
+      } catch (Exception e) {
+        // no format? maybe really a plain text format?
+        String document = FileUtils.file2String(file, inputEncoding);
+        cas.setDocumentText(document);
+      }
     }
-
+    
     if (addSDI) {
       RutaEngine.removeSourceDocumentInformation(cas);
       RutaEngine.addSourceDocumentInformation(cas, file);
     }
     ae.process(cas);
     if (outputFolder != null) {
-      File outputFile = getOutputFile(file, inputFolder, outputFolder);
-      writeXmi(cas, outputFile);
+      File outputFile = getOutputFile(file, inputFolder, outputFolder, format);
+      FileOutputStream os = new FileOutputStream(outputFile);
+      CasIOUtils.save(cas, os, format);
+      IOUtils.closeQuietly(os);
     }
     cas.reset();
   }
@@ -205,25 +226,13 @@ public class RutaLauncher {
     return result;
   }
 
-  private static void writeXmi(CAS cas, File file) throws IOException, SAXException {
-    FileOutputStream out = null;
-    try {
-      out = new FileOutputStream(file);
-      XmiCasSerializer ser = new XmiCasSerializer(cas.getTypeSystem());
-      XMLSerializer xmlSer = new XMLSerializer(out, false);
-      ser.serialize(cas, xmlSer.getContentHandler());
-    } finally {
-      if (out != null) {
-        out.close();
-      }
-    }
-  }
 
-  private static File getOutputFile(File inputFile, File inputFolder, File outputFolder) {
+  private static File getOutputFile(File inputFile, File inputFolder, File outputFolder, SerializationFormat format) {
     URI relativize = inputFolder.toURI().relativize(inputFile.toURI());
     String path = relativize.getPath();
-    if (!path.endsWith(".xmi")) {
-      path += ".xmi";
+    String ext = "." + format.getDefaultFileExtension();
+    if (!path.endsWith(ext)) {
+      path += "ext";
     }
     File result = new File(outputFolder, path);
     result.getParentFile().mkdirs();

Modified: uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.java?rev=1753252&r1=1753251&r2=1753252&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.java (original)
+++ uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.java Mon Jul 18 15:55:43 2016
@@ -24,7 +24,6 @@ import org.eclipse.osgi.util.NLS;
 public class RutaPreferencesMessages extends NLS {
   private static final String BUNDLE_NAME = "org.apache.uima.ruta.ide.ui.preferences.RutaPreferencesMessages";//$NON-NLS-1$	
 
-  
 
   private RutaPreferencesMessages() {
     // Do not instantiate
@@ -83,4 +82,8 @@ public class RutaPreferencesMessages ext
   public static String AddSDI;
   
   public static String CompressWordLists;
+  
+  public static String DefaultCasSerializationFormat;
+
+  
 }

Modified: uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaProjectPreferencePage.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaProjectPreferencePage.java?rev=1753252&r1=1753251&r2=1753252&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaProjectPreferencePage.java (original)
+++ uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/preferences/RutaProjectPreferencePage.java Mon Jul 18 15:55:43 2016
@@ -21,7 +21,9 @@ package org.apache.uima.ruta.ide.ui.pref
 
 import org.apache.uima.ruta.ide.RutaIdeUIPlugin;
 import org.apache.uima.ruta.ide.core.RutaCorePreferences;
+import org.apache.uima.util.SerializationFormat;
 import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.ComboFieldEditor;
 import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
@@ -38,6 +40,8 @@ public class RutaProjectPreferencePage e
 
   private BooleanFieldEditor addSDI;
 
+  private ComboFieldEditor defaultCasSerializationFormat;
+  
   public RutaProjectPreferencePage() {
     setPreferenceStore(RutaIdeUIPlugin.getDefault().getPreferenceStore());
     setDescription("Project Management");
@@ -56,6 +60,16 @@ public class RutaProjectPreferencePage e
     addSDI = new BooleanFieldEditor(RutaCorePreferences.ADD_SDI,
             RutaPreferencesMessages.AddSDI, getFieldEditorParent());
     addField(addSDI);
+    
+    SerializationFormat[] formats = SerializationFormat.values();
+    String[][] values = new String[formats.length][];
+    for (int i = 0; i < formats.length; i++) {
+      values[i] = new String[] {formats[i].toString(),formats[i].toString()};
+    }
+    
+    defaultCasSerializationFormat = new ComboFieldEditor(RutaCorePreferences.DEFAULT_CAS_SERIALIZATION_FORMAT,
+            RutaPreferencesMessages.DefaultCasSerializationFormat, values, getFieldEditorParent());
+    addField(defaultCasSerializationFormat);
 
   }
 

Modified: uima/ruta/trunk/ruta-ep-ide-ui/src/main/resources/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.properties
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide-ui/src/main/resources/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.properties?rev=1753252&r1=1753251&r2=1753252&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide-ui/src/main/resources/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.properties (original)
+++ uima/ruta/trunk/ruta-ep-ide-ui/src/main/resources/org/apache/uima/ruta/ide/ui/preferences/RutaPreferencesMessages.properties Mon Jul 18 15:55:43 2016
@@ -43,4 +43,5 @@ BuilderIgnoreDuplicateShortnames = Hide
 ProjectClearOutput = Clear output folder before running a script.
 NoVMInDevMode = Do not start a VM in development mode.
 AddSDI = Update Source Document Information when launching a script.
-CompressWordLists = Compress generated twl/mtwl word lists.
\ No newline at end of file
+CompressWordLists = Compress generated twl/mtwl word lists.
+DefaultCasSerializationFormat = Default CAS serialization format:

Modified: uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaCorePreferences.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaCorePreferences.java?rev=1753252&r1=1753251&r2=1753252&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaCorePreferences.java (original)
+++ uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaCorePreferences.java Mon Jul 18 15:55:43 2016
@@ -33,4 +33,6 @@ public class RutaCorePreferences {
   public static final String ADD_SDI = "AddSDI";
 
   public static final String COMPRESS_WORDLISTS = "CompressWordLists";
+
+  public static final String DEFAULT_CAS_SERIALIZATION_FORMAT = "DefaultCasSerializationFormat";
 }

Modified: uima/ruta/trunk/ruta-parent/pom.xml
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-parent/pom.xml?rev=1753252&r1=1753251&r2=1753252&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-parent/pom.xml (original)
+++ uima/ruta/trunk/ruta-parent/pom.xml Mon Jul 18 15:55:43 2016
@@ -127,7 +127,7 @@ This product contains icons developed by
 (http://www.famfamfam.com/lab/icons/silk/), licensed under the 
 Creative Commons Attribution 3.0 License.
     </postNoticeText>
-    <uimaVersion>2.8.1</uimaVersion>
+    <uimaVersion>2.8.2-SNAPSHOT</uimaVersion>
     <uimafit-version>2.2.0</uimafit-version>
         <!-- 
      BACKWARD_COMPATIBLE_IMPLEMENTER - patch version (=.=.+)