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 2017/08/08 21:08:38 UTC
svn commit: r1804473 -
/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java
Author: seanfinan
Date: Tue Aug 8 21:08:38 2017
New Revision: 1804473
URL: http://svn.apache.org/viewvc?rev=1804473&view=rev
Log:
supply all available parameters to collection readers
Modified:
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/util/PropertyAeFactory.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java?rev=1804473&r1=1804472&r2=1804473&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 Tue Aug 8 21:08:38 2017
@@ -5,7 +5,10 @@ import org.apache.log4j.Logger;
import org.apache.uima.analysis_component.AnalysisComponent;
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
+import org.apache.uima.collection.CollectionReader;
+import org.apache.uima.collection.CollectionReaderDescription;
import org.apache.uima.fit.factory.AnalysisEngineFactory;
+import org.apache.uima.fit.factory.CollectionReaderFactory;
import org.apache.uima.resource.ResourceInitializationException;
import java.util.HashMap;
@@ -47,14 +50,7 @@ public enum PropertyAeFactory {
LOGGER.error( "Odd number of parameters provided. Should be key value pairs." );
return;
}
- for ( int i = 0; i < parameters.length; i += 2 ) {
- if ( parameters[ i ] instanceof String ) {
- _properties.put( (String)parameters[ i ], parameters[ i + 1 ] );
- } else {
- LOGGER.warn( "Parameter " + i + " not a String, using " + parameters[ i ].toString() );
- _properties.put( parameters[ i ].toString(), parameters[ i + 1 ] );
- }
- }
+ addToMap( _properties, parameters );
}
/**
@@ -119,17 +115,22 @@ public enum PropertyAeFactory {
return parameters;
}
final Map<String, Object> parameterMap = new HashMap<>( _properties );
- for ( int i = 0; i < parameters.length; i += 2 ) {
- if ( parameters[ i ] instanceof String ) {
- parameterMap.put( (String)parameters[ i ], parameters[ i + 1 ] );
- } else {
- LOGGER.warn( "Parameter " + i + " not a String, using " + parameters[ i ].toString() );
- parameterMap.put( parameters[ i ].toString(), parameters[ i + 1 ] );
- }
- }
+ addToMap( parameterMap, parameters );
return createParameters( parameterMap );
}
+ /**
+ * @param readerClass Collection Reader class
+ * @param parameters parameters for the main component
+ * @return Description with specified parameters plus those loaded from properties
+ * @throws ResourceInitializationException if UimaFit has a problem
+ */
+ public CollectionReaderDescription createReaderDescription( final Class<? extends CollectionReader> readerClass,
+ final Object... parameters )
+ throws ResourceInitializationException {
+ final Object[] allParameters = getAllParameters( parameters );
+ return CollectionReaderFactory.createReaderDescription( readerClass, allParameters );
+ }
/**
* This method should be avoided. See the bottom of https://uima.apache.org/d/uimafit-current/api/index.html
@@ -198,5 +199,19 @@ public enum PropertyAeFactory {
return StartFinishLogger.createLoggedDescription( mainDescription );
}
+ /**
+ * @param map map to hold parameters.
+ * @param parameters Any values already present in map will be overwritten by parameters with same key.
+ */
+ static private void addToMap( final Map<String, Object> map, final Object... parameters ) {
+ for ( int i = 0; i < parameters.length; i += 2 ) {
+ if ( parameters[ i ] instanceof String ) {
+ map.put( (String) parameters[ i ], parameters[ i + 1 ] );
+ } else {
+ LOGGER.warn( "Parameter " + i + " not a String, using " + parameters[ i ].toString() );
+ map.put( parameters[ i ].toString(), parameters[ i + 1 ] );
+ }
+ }
+ }
}