Author: seanfinan
Date: Thu Apr 27 18:25:28 2017
New Revision: 1792936

URL: http://svn.apache.org/viewvc?rev=1792936&view=rev
Log:
Favor previously "set" parameters over following cli

Modified:
    
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipelineBuilder.java
    
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
    
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java

Modified: 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipelineBuilder.java
URL: 
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipelineBuilder.java?rev=1792936&r1=1792935&r2=1792936&view=diff
==============================================================================
--- 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipelineBuilder.java
 (original)
+++ 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PipelineBuilder.java
 Thu Apr 27 18:25:28 2017
@@ -73,6 +73,19 @@ final public class PipelineBuilder {
    }
 
    /**
+    * Use of this method is order-specific.  If any given parameter is already 
set it is ignored.
+    *
+    * @param parameters add ae parameter name value pairs
+    * @return this PipelineBuilder
+    */
+   public PipelineBuilder setIfEmpty( final Object... parameters ) {
+      PropertyAeFactory.getInstance().addIfEmptyParameters( parameters );
+      _pipelineChanged = true;
+      return this;
+   }
+
+
+   /**
     * Use of this method is not order-specific
     *
     * @param description Collection Reader Description to place at the 
beginning of the pipeline

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=1792936&r1=1792935&r2=1792936&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
 Thu Apr 27 18:25:28 2017
@@ -196,7 +196,7 @@ final public class PiperFileReader {
             _builder.set( splitParameters( parameter ) );
             return true;
          case "cli":
-            _builder.set( getCliParameters( parameter ) );
+            _builder.setIfEmpty( getCliParameters( parameter ) );
             return true;
          case "reader":
             if ( hasParameters( parameter ) ) {

Modified: 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java
URL: 
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java?rev=1792936&r1=1792935&r2=1792936&view=diff
==============================================================================
--- 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java
 (original)
+++ 
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java
 Thu Apr 27 18:25:28 2017
@@ -58,6 +58,37 @@ public enum PropertyAeFactory {
    }
 
    /**
+    * Add key value pairs to the stored properties
+    *
+    * @param parameters ket value pairs
+    */
+   synchronized public void addIfEmptyParameters( final Object... parameters ) 
{
+      if ( parameters.length == 0 ) {
+         LOGGER.warn( "No parameters specified." );
+         return;
+      }
+      if ( parameters.length % 2 != 0 ) {
+         LOGGER.error( "Odd number of parameters provided.  Should be key 
value pairs." );
+         return;
+      }
+      for ( int i = 0; i < parameters.length; i += 2 ) {
+         String name;
+         if ( parameters[ i ] instanceof String ) {
+            name = (String) parameters[ i ];
+         } else {
+            LOGGER.warn( "Parameter " + i + " not a String, using " + 
parameters[ i ].toString() );
+            name = parameters[ i ].toString();
+         }
+         if ( _properties.containsKey( name ) && parameters[ i + 1 
].toString().isEmpty() ) {
+            LOGGER.info( "Parameter " + name + " has value " + 
_properties.get( name )
+                  + " ; ignoring empty value" );
+            continue;
+         }
+         _properties.put( name, parameters[ i + 1 ] );
+      }
+   }
+
+   /**
     * @param parameterMap map of parameter names and values
     * @return array of Objects representing name value pairs
     */


Reply via email to