You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2022/07/28 20:47:01 UTC
svn commit: r1903085 - in /ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core: ae/CommandRunner.java ae/CtakesRunner.java util/external/SystemUtil.java
Author: seanfinan
Date: Thu Jul 28 20:47:01 2022
New Revision: 1903085
URL: http://svn.apache.org/viewvc?rev=1903085&view=rev
Log:
Add ability to use $parameterName substitution on CommandRunner and CtakesRunner.
This allows things like:
cli ExternalOption=e
add CommandRunner Command="someExternalCommand --option $ExternalOption"
And then you can start ctakes with ""-e myExternalOptionValue" on the command line.
Modified:
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CommandRunner.java
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CtakesRunner.java
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java
Modified: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CommandRunner.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CommandRunner.java?rev=1903085&r1=1903084&r2=1903085&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CommandRunner.java (original)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CommandRunner.java Thu Jul 28 20:47:01 2022
@@ -110,6 +110,9 @@ public class CommandRunner extends JCasA
@Override
public void initialize( final UimaContext context ) throws ResourceInitializationException {
super.initialize( context );
+ _cmdDir = SystemUtil.subVariableParameters( _cmdDir, context );
+ _dir = SystemUtil.subVariableParameters( _dir, context );
+ _cmd = SystemUtil.subVariableParameters( _cmd, context );
if ( _cmdDir != null && !_cmdDir.isEmpty() && !new File( _cmdDir ).exists() ) {
LOGGER.warn( "Cannot find Command Directory " + _cmdDir );
}
Modified: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CtakesRunner.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CtakesRunner.java?rev=1903085&r1=1903084&r2=1903085&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CtakesRunner.java (original)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/ae/CtakesRunner.java Thu Jul 28 20:47:01 2022
@@ -62,6 +62,7 @@ public class CtakesRunner extends JCasAn
@Override
public void initialize( final UimaContext context ) throws ResourceInitializationException {
super.initialize( context );
+ _cli = SystemUtil.subVariableParameters( _cli, context );
try {
final String piper = getPiper();
if ( _logFile == null || _logFile.isEmpty() ) {
Modified: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java?rev=1903085&r1=1903084&r2=1903085&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java (original)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java Thu Jul 28 20:47:01 2022
@@ -2,6 +2,7 @@ package org.apache.ctakes.core.util.exte
import org.apache.ctakes.core.resource.FileLocator;
import org.apache.log4j.Logger;
+import org.apache.uima.UimaContext;
import java.io.*;
import java.net.URL;
@@ -33,6 +34,44 @@ final public class SystemUtil {
static public final String FILE_NOT_FOUND = "FILE_NOT_FOUND";
+ static public String subVariableParameters( final String command, final UimaContext context ) {
+ if ( context == null || command == null || !command.contains( "$" ) ) {
+ return command;
+ }
+ final StringBuilder sb = new StringBuilder();
+ int previousVarEnd = 0;
+ int varBegin = command.indexOf( '$', previousVarEnd );
+ while ( varBegin > -1 ) {
+ // copy everything from the command from the end of the previous variable to the begin of this variable.
+ sb.append( command, previousVarEnd, varBegin );
+ // get the end of the current variable name.
+ int varEnd = command.indexOf( ' ', varBegin );
+ varEnd = varEnd < 0 ? command.length() : varEnd;
+ // get the name of the variable (without $).
+ final String varName = command.substring( varBegin + 1, varEnd );
+ // get the value from the uima context.
+ final Object value = context.getConfigParameterValue( varName );
+ if ( value == null ) {
+ LOGGER.error( "No value for $" + varName + " in known parameter values." );
+ sb.append( "$" )
+ .append( varName );
+ } else {
+ LOGGER.info( "Substituting Parameter Value " + value + " for $" + varName );
+ sb.append( value );
+ }
+ if ( varEnd == command.length() ) {
+ break;
+ }
+ previousVarEnd = varEnd + 1;
+ varBegin = command.indexOf( '$', varEnd );
+ if ( varBegin < 0 ) {
+ sb.append( command, varEnd, command.length() );
+ }
+ }
+ return sb.toString();
+ }
+
+
/**
* Add key value pairs to a set of environment variables for use in external processes.
*