Author: seanfinan
Date: Sun Apr 23 19:48:17 2017
New Revision: 1792386

URL: http://svn.apache.org/viewvc?rev=1792386&view=rev
Log:
ctakes - 424 : load secondary pipers with user packages

Modified:
    
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
    
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java

Modified: 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
URL: 
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java?rev=1792386&r1=1792385&r2=1792386&view=diff
==============================================================================
--- 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
 (original)
+++ 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
 Sun Apr 23 19:48:17 2017
@@ -133,6 +133,14 @@ final public class PiperFileReader {
    }
 
    /**
+    * Add some user package or directory to the known path
+    * @param packagePath user package or directory
+    */
+   public void addUserPackage( final String packagePath ) {
+      _userPackages.add( packagePath );
+   }
+
+   /**
     * Load a file with command parameter pairs for building a pipeline
     *
     * @param filePath path to the pipeline command file
@@ -182,7 +190,7 @@ final public class PiperFileReader {
          case "load":
             return loadPipelineFile( parameter );
          case "package":
-            _userPackages.add( parameter );
+            addUserPackage( parameter );
             return true;
          case "set":
             _builder.set( splitParameters( parameter ) );
@@ -325,7 +333,7 @@ final public class PiperFileReader {
     * @param filePath fully-specified or simple path of a piper file
     * @return discovered path for the piper file
     */
-   private String getPiperPath( final String filePath ) throws 
FileNotFoundException {
+   public String getPiperPath( final String filePath ) throws 
FileNotFoundException {
       String fullPath = FileLocator.getFullPathQuiet( filePath );
       if ( fullPath != null && !fullPath.isEmpty() ) {
          return fullPath;

Modified: 
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java
URL: 
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java?rev=1792386&r1=1792385&r2=1792386&view=diff
==============================================================================
--- 
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java
 (original)
+++ 
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java
 Sun Apr 23 19:48:17 2017
@@ -1,6 +1,7 @@
 package org.apache.ctakes.gui.pipeline;
 
 
+import org.apache.ctakes.core.pipeline.PiperFileReader;
 import org.apache.ctakes.core.pipeline.PiperFileRunner;
 import org.apache.ctakes.gui.component.*;
 import org.apache.ctakes.gui.pipeline.bit.parameter.ParameterCellRenderer;
@@ -254,8 +255,9 @@ public class PiperRunnerPanel extends JP
          if ( option != JFileChooser.APPROVE_OPTION ) {
             return;
          }
+         final PiperFileReader reader = new PiperFileReader();
          final File file = _piperChooser.getSelectedFile();
-         String text = loadPiperText( file.getPath() );
+         String text = loadPiperText( reader, file.getPath() );
           try {
             _piperDocument.remove( 0, _piperDocument.getLength() );
             _piperDocument.insertString( 0, text, null );
@@ -265,7 +267,7 @@ public class PiperRunnerPanel extends JP
          _cliNames.clear();
          _cliChars.clear();
          _cliValues.clear();
-         if ( !loadPiperCli( text ) ) {
+         if ( !loadPiperCli( reader, text ) ) {
             error( "Could not load Piper File: " + file.getPath() );
             return;
          }
@@ -274,40 +276,44 @@ public class PiperRunnerPanel extends JP
          _cliTable.revalidate();
          _cliTable.repaint();
       }
-      private String loadPiperText( final String filePath ) {
+      private String loadPiperText( final PiperFileReader reader, final String 
filePath ) {
          LOGGER.info( "Loading Piper File: " + filePath);
          try {
-            return  Files.lines( Paths.get( filePath ) ).collect( 
Collectors.joining( "\n" ) );
+            final String loadPath = reader.getPiperPath( filePath );
+            return  Files.lines( Paths.get( loadPath ) ).collect( 
Collectors.joining( "\n" ) );
          } catch ( IOException ioE ) {
             error( ioE.getMessage() );
             return "";
          }
       }
-      private boolean loadPiperCli( final String text ) {
+      private boolean loadPiperCli( final PiperFileReader reader, final String 
text ) {
          for ( String line : text.split( "\\n" ) ) {
             if ( line.startsWith( "cli " ) && line.length() > 5 ) {
                final String[] allValues = line.substring( 4 ).split( "\\s+" );
                for ( String allValue : allValues ) {
                   final String[] values = allValue.split( "=" );
-                  if ( values.length != 2 || values[1].length() != 1 ) {
+                  if ( values.length != 2 || values[ 1 ].length() != 1 ) {
                      error( "Illegal cli values: " + line );
                      return false;
                   }
-                  final String name = values[ 0 ] + " (-" + values[1] + ")";
-                  if ( _cliChars.put( name, values[1].charAt( 0 ) ) != null ) {
+                  final String name = values[ 0 ] + " (-" + values[ 1 ] + ")";
+                  if ( _cliChars.put( name, values[ 1 ].charAt( 0 ) ) != null 
) {
                      error( "Repeated cli value: " + line );
                      return false;
                   }
                   _cliNames.add( name );
                }
+            } else if ( line.startsWith( "package " ) && line.length() > 9 ) {
+               final String packagePath = line.substring( 8 );
+               reader.addUserPackage( packagePath );
             } else if ( line.startsWith( "load " ) && line.length() > 6 ) {
-               final String filePath = line.substring( 6 ).trim();
-               final String subText = loadPiperText( filePath );
+               final String filePath = line.substring( 5 ).trim();
+               final String subText = loadPiperText( reader, filePath );
                if ( subText.isEmpty() ) {
                   error( "Piper File not found: " + filePath );
                   return false;
                }
-               if ( !loadPiperCli( subText ) ) {
+               if ( !loadPiperCli( reader, subText ) ) {
                   error( "Could not load Piper File: " + filePath );
                   return false;
                }


Reply via email to