You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by re...@apache.org on 2013/01/11 00:12:37 UTC
svn commit: r1431721 [6/19] - in /uima/sandbox/uimafit/trunk:
uimafit-examples/src/main/java/org/apache/uima/fit/examples/experiment/pos/
uimafit-examples/src/main/java/org/apache/uima/fit/examples/getstarted/
uimafit-examples/src/main/java/org/apache/...
Modified: uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java?rev=1431721&r1=1431720&r2=1431721&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java Thu Jan 10 23:12:33 2013
@@ -72,570 +72,559 @@ import org.apache.uima.util.FileUtils;
/**
*/
public final class AnalysisEngineFactory {
- private AnalysisEngineFactory() {
- // This class is not meant to be instantiated
- }
-
- /**
- * Get an AnalysisEngine from the name (Java-style, dotted) of an XML descriptor file, and a set
- * of configuration parameters.
- *
- * @param descriptorName
- * The fully qualified, Java-style, dotted name of the XML descriptor file.
- * @param configurationData
- * Any additional configuration parameters to be set. These should be supplied as
- * (name, value) pairs, so there should always be an even number of parameters.
- * @return The AnalysisEngine created from the XML descriptor and the configuration parameters.
- */
- public static AnalysisEngine createAnalysisEngine(String descriptorName,
- Object... configurationData) throws UIMAException, IOException {
- AnalysisEngineDescription aed = createAnalysisEngineDescription(descriptorName,
- configurationData);
- return UIMAFramework.produceAnalysisEngine(aed);
- }
-
- /**
- * Provides a way to create an AnalysisEngineDescription using a descriptor file referenced by
- * name
- *
- * @param configurationData
- * should consist of name value pairs. Will override configuration parameter settings
- * in the descriptor file
- */
- public static AnalysisEngineDescription createAnalysisEngineDescription(String descriptorName,
- Object... configurationData) throws UIMAException, IOException {
- Import_impl imprt = new Import_impl();
- imprt.setName(descriptorName);
- URL url = imprt.findAbsoluteUrl(UIMAFramework.newDefaultResourceManager());
- ResourceSpecifier specifier = ResourceCreationSpecifierFactory
- .createResourceCreationSpecifier(url, configurationData);
- return (AnalysisEngineDescription) specifier;
- }
-
- /**
- * This method provides a convenient way to instantiate an AnalysisEngine where the default view
- * is mapped to the view name passed into the method.
- *
- * @param viewName
- * the view name to map the default view to
- * @return an aggregate analysis engine consisting of a single component whose default view is
- * mapped to the the view named by viewName.
- */
- public static AnalysisEngine createAnalysisEngine(
- AnalysisEngineDescription analysisEngineDescription, String viewName)
- throws ResourceInitializationException {
- AggregateBuilder builder = new AggregateBuilder();
- builder.add(analysisEngineDescription, CAS.NAME_DEFAULT_SOFA, viewName);
- return builder.createAggregate();
- }
-
- /**
- * Get an AnalysisEngine from an XML descriptor file and a set of configuration parameters.
- *
- * @param descriptorPath
- * The path to the XML descriptor file.
- * @param configurationData
- * Any additional configuration parameters to be set. These should be supplied as
- * (name, value) pairs, so there should always be an even number of parameters.
- * @return The AnalysisEngine created from the XML descriptor and the configuration parameters.
- */
- public static AnalysisEngine createAnalysisEngineFromPath(String descriptorPath,
- Object... configurationData) throws UIMAException, IOException {
- ResourceSpecifier specifier;
- specifier = ResourceCreationSpecifierFactory.createResourceCreationSpecifier(
- descriptorPath, configurationData);
- return UIMAFramework.produceAnalysisEngine(specifier);
- }
-
- /**
- * Get an AnalysisEngine from an OperationalProperties class, a type system and a set of
- * configuration parameters. The type system is detected automatically using
- * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}.
- *
- * @param componentClass
- * The class of the OperationalProperties to be created as an AnalysisEngine.
- * @param configurationData
- * Any additional configuration parameters to be set. These should be supplied as
- * (name, value) pairs, so there should always be an even number of parameters.
- * @return The AnalysisEngine created from the OperationalProperties class and initialized with
- * the type system and the configuration parameters.
- */
- public static AnalysisEngine createPrimitive(Class<? extends AnalysisComponent> componentClass,
- Object... configurationData) throws ResourceInitializationException {
- TypeSystemDescription tsd = createTypeSystemDescription();
- return createPrimitive(componentClass, tsd, (TypePriorities) null, configurationData);
- }
-
- /**
- * Get an AnalysisEngine from an OperationalProperties class, a type system and a set of
- * configuration parameters.
- *
- * @param componentClass
- * The class of the OperationalProperties to be created as an AnalysisEngine.
- * @param typeSystem
- * A description of the types used by the OperationalProperties (may be null).
- * @param configurationData
- * Any additional configuration parameters to be set. These should be supplied as
- * (name, value) pairs, so there should always be an even number of parameters.
- * @return The AnalysisEngine created from the OperationalProperties class and initialized with
- * the type system and the configuration parameters.
- */
- public static AnalysisEngine createPrimitive(Class<? extends AnalysisComponent> componentClass,
- TypeSystemDescription typeSystem, Object... configurationData)
- throws ResourceInitializationException {
- return createPrimitive(componentClass, typeSystem, (TypePriorities) null, configurationData);
- }
-
- public static AnalysisEngine createPrimitive(Class<? extends AnalysisComponent> componentClass,
- TypeSystemDescription typeSystem, String[] prioritizedTypeNames,
- Object... configurationData) throws ResourceInitializationException {
- TypePriorities typePriorities = TypePrioritiesFactory
- .createTypePriorities(prioritizedTypeNames);
- return createPrimitive(componentClass, typeSystem, typePriorities, configurationData);
-
- }
-
- /**
- * A simple factory method for creating a primitive AnalysisEngineDescription for a given class,
- * type system, and configuration parameter data
- *
- * @param componentClass
- * a class that extends AnalysisComponent e.g.
- * org.uimafit.component.JCasAnnotator_ImplBase
- */
- public static AnalysisEngineDescription createPrimitiveDescription(
- Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
- Object... configurationData) throws ResourceInitializationException {
- return createPrimitiveDescription(componentClass, typeSystem, (TypePriorities) null,
- configurationData);
- }
-
- /**
- * A simple factory method for creating a primitive AnalysisEngineDescription for a given class,
- * type system, and configuration parameter data The type system is detected automatically using
- * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}.
- *
- * @param componentClass
- * a class that extends AnalysisComponent e.g.
- * org.uimafit.component.JCasAnnotator_ImplBase
- */
- public static AnalysisEngineDescription createPrimitiveDescription(
- Class<? extends AnalysisComponent> componentClass, Object... configurationData)
- throws ResourceInitializationException {
- TypeSystemDescription tsd = createTypeSystemDescription();
- return createPrimitiveDescription(componentClass, tsd, (TypePriorities) null,
- configurationData);
- }
-
- public static AnalysisEngineDescription createPrimitiveDescription(
- Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, Object... configurationData)
- throws ResourceInitializationException {
- return createPrimitiveDescription(componentClass, typeSystem, typePriorities,
- (FsIndexCollection) null, (Capability[]) null, configurationData);
- }
-
- /**
- * The factory methods for creating an AnalysisEngineDescription
- */
- public static AnalysisEngineDescription createPrimitiveDescription(
- Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
- Object... configurationData) throws ResourceInitializationException {
-
- ensureParametersComeInPairs(configurationData);
-
- // Extract ExternalResourceDescriptions from configurationData
- // <ParamterName, ExternalResourceDescription> will be stored in this map
- Map<String, ExternalResourceDescription> externalResources =
- ExternalResourceFactory.extractExternalResourceParameters(configurationData);
-
- // Create primitive description normally
- ConfigurationData cdata = createConfigurationData(configurationData);
- return createPrimitiveDescription(componentClass, typeSystem,
- typePriorities, indexes, capabilities, cdata.configurationParameters,
- cdata.configurationValues, externalResources);
- }
-
- public static AnalysisEngineDescription createPrimitiveDescription(
- Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
- ConfigurationParameter[] configurationParameters, Object[] configurationValues)
- throws ResourceInitializationException {
- return createPrimitiveDescription(componentClass, typeSystem, typePriorities, indexes,
- capabilities, configurationParameters, configurationValues, null);
- }
-
- public static AnalysisEngineDescription createPrimitiveDescription(
- Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
- ConfigurationParameter[] configurationParameters, Object[] configurationValues,
- Map<String, ExternalResourceDescription> externalResources)
- throws ResourceInitializationException {
-
- // create the descriptor and set configuration parameters
- AnalysisEngineDescription desc = UIMAFramework.getResourceSpecifierFactory()
- .createAnalysisEngineDescription();
- desc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
- desc.setPrimitive(true);
- desc.setAnnotatorImplementationName(componentClass.getName());
- org.apache.uima.fit.descriptor.OperationalProperties componentAnno = ReflectionUtil
- .getInheritableAnnotation(org.apache.uima.fit.descriptor.OperationalProperties.class,
- componentClass);
- if (componentAnno != null) {
- OperationalProperties op = desc.getAnalysisEngineMetaData().getOperationalProperties();
- op.setMultipleDeploymentAllowed(componentAnno.multipleDeploymentAllowed());
- op.setModifiesCas(componentAnno.modifiesCas());
- op.setOutputsNewCASes(componentAnno.outputsNewCases());
- }
- else {
- OperationalProperties op = desc.getAnalysisEngineMetaData().getOperationalProperties();
- op.setMultipleDeploymentAllowed(MULTIPLE_DEPLOYMENT_ALLOWED_DEFAULT);
- op.setModifiesCas(MODIFIES_CAS_DEFAULT);
- op.setOutputsNewCASes(OUTPUTS_NEW_CASES_DEFAULT);
- }
-
- AnalysisEngineMetaData meta = desc.getAnalysisEngineMetaData();
- meta.setName(componentClass.getName());
-
- if(componentClass.getPackage() != null){
- meta.setVendor(componentClass.getPackage().getName());
- }
- meta.setDescription("Descriptor automatically generated by uimaFIT");
- meta.setVersion("unknown");
-
- ConfigurationData reflectedConfigurationData = createConfigurationData(componentClass);
- ResourceCreationSpecifierFactory.setConfigurationParameters(desc,
- reflectedConfigurationData.configurationParameters,
- reflectedConfigurationData.configurationValues);
- if (configurationParameters != null) {
- ResourceCreationSpecifierFactory.setConfigurationParameters(desc,
- configurationParameters, configurationValues);
- }
-
- // set the type system
- if (typeSystem != null) {
- desc.getAnalysisEngineMetaData().setTypeSystem(typeSystem);
- }
-
- if (typePriorities != null) {
- desc.getAnalysisEngineMetaData().setTypePriorities(typePriorities);
- }
-
- // set indexes from the argument to this call or from the annotation present in the
- // component if the argument is null
- if (indexes != null) {
- desc.getAnalysisEngineMetaData().setFsIndexCollection(indexes);
- }
- else {
- desc.getAnalysisEngineMetaData().setFsIndexCollection(
- FsIndexFactory.createFsIndexCollection(componentClass));
- }
-
- // set capabilities from the argument to this call or from the annotation present in the
- // component if the argument is null
- if (capabilities != null) {
- desc.getAnalysisEngineMetaData().setCapabilities(capabilities);
- }
- else {
- Capability capability = CapabilityFactory.createCapability(componentClass);
- if (capability != null) {
- desc.getAnalysisEngineMetaData().setCapabilities(new Capability[] { capability });
- }
- }
-
- // Extract external resource dependencies
- Collection<ExternalResourceDependency> deps = ExternalResourceInitializer
- .getResourceDeclarations(componentClass).values();
- desc.setExternalResourceDependencies(deps.toArray(new ExternalResourceDependency[deps
- .size()]));
-
- // Bind External Resources
- if (externalResources != null) {
- for (Entry<String, ExternalResourceDescription> e : externalResources.entrySet()) {
- bindExternalResource(desc, e.getKey(), e.getValue());
- }
- }
-
- return desc;
- }
-
- /**
- * Provides a way to override configuration parameter settings with new values in an
- * AnalysisEngineDescription
- *
- * @deprecated use {@link ResourceCreationSpecifierFactory#setConfigurationParameters}
- */
- @Deprecated
- public static void setConfigurationParameters(
- AnalysisEngineDescription analysisEngineDescription, Object... configurationData)
- throws ResourceInitializationException {
- ResourceCreationSpecifierFactory.setConfigurationParameters(analysisEngineDescription,
- configurationData);
- }
-
- public static AnalysisEngine createPrimitive(Class<? extends AnalysisComponent> componentClass,
- TypeSystemDescription typeSystem, TypePriorities typePriorities,
- Object... configurationParameters) throws ResourceInitializationException {
-
- AnalysisEngineDescription desc = createPrimitiveDescription(componentClass, typeSystem,
- typePriorities, configurationParameters);
-
- // create the AnalysisEngine, initialize it and return it
- return createPrimitive(desc);
- }
-
- public static AnalysisEngine createPrimitive(AnalysisEngineDescription desc,
- Object... configurationData) throws ResourceInitializationException {
- AnalysisEngineDescription descClone = (AnalysisEngineDescription) desc.clone();
- ResourceCreationSpecifierFactory.setConfigurationParameters(descClone, configurationData);
- return UIMAFramework.produceAnalysisEngine(descClone);
- }
-
- public static AnalysisEngine createAggregate(
- List<Class<? extends AnalysisComponent>> componentClasses,
- TypeSystemDescription typeSystem, TypePriorities typePriorities,
- SofaMapping[] sofaMappings, Object... configurationParameters)
- throws ResourceInitializationException {
- AnalysisEngineDescription desc = createAggregateDescription(componentClasses, typeSystem,
- typePriorities, sofaMappings, configurationParameters);
- // create the AnalysisEngine, initialize it and return it
- AnalysisEngine engine = new AggregateAnalysisEngine_impl();
- engine.initialize(desc, null);
- return engine;
- }
-
- public static AnalysisEngine createAggregate(
- List<Class<? extends AnalysisComponent>> componentClasses,
- TypeSystemDescription typeSystem, TypePriorities typePriorities,
- SofaMapping[] sofaMappings, FlowControllerDescription flowControllerDescription,
- Object... configurationParameters) throws ResourceInitializationException {
- AnalysisEngineDescription desc = createAggregateDescription(componentClasses, typeSystem,
- typePriorities, sofaMappings, configurationParameters, flowControllerDescription);
- // create the AnalysisEngine, initialize it and return it
- AnalysisEngine engine = new AggregateAnalysisEngine_impl();
- engine.initialize(desc, null);
- return engine;
- }
-
- public static AnalysisEngine createAggregate(AnalysisEngineDescription desc)
- throws ResourceInitializationException {
- // create the AnalysisEngine, initialize it and return it
- return UIMAFramework.produceAnalysisEngine(desc, null, null);
- }
-
- public static AnalysisEngineDescription createAggregateDescription(
- List<Class<? extends AnalysisComponent>> componentClasses,
- TypeSystemDescription typeSystem, TypePriorities typePriorities,
- SofaMapping[] sofaMappings, Object... configurationParameters)
- throws ResourceInitializationException {
-
- List<AnalysisEngineDescription> primitiveEngineDescriptions = new ArrayList<AnalysisEngineDescription>();
- List<String> componentNames = new ArrayList<String>();
-
- for (Class<? extends AnalysisComponent> componentClass : componentClasses) {
- AnalysisEngineDescription primitiveDescription = createPrimitiveDescription(
- componentClass, typeSystem, typePriorities, configurationParameters);
- primitiveEngineDescriptions.add(primitiveDescription);
- componentNames.add(componentClass.getName());
- }
- return createAggregateDescription(primitiveEngineDescriptions, componentNames, typeSystem,
- typePriorities, sofaMappings, null);
- }
-
- public static AnalysisEngine createAggregate(
- List<AnalysisEngineDescription> analysisEngineDescriptions,
- List<String> componentNames, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, SofaMapping[] sofaMappings)
- throws ResourceInitializationException {
-
- AnalysisEngineDescription desc = createAggregateDescription(analysisEngineDescriptions,
- componentNames, typeSystem, typePriorities, sofaMappings, null);
- // create the AnalysisEngine, initialize it and return it
- AnalysisEngine engine = new AggregateAnalysisEngine_impl();
- engine.initialize(desc, null);
- return engine;
-
- }
-
- public static AnalysisEngineDescription createAggregateDescription(
- AnalysisEngineDescription... analysisEngineDescriptions)
- throws ResourceInitializationException {
- String[] names = new String[analysisEngineDescriptions.length];
- int i = 0;
- for (AnalysisEngineDescription aed : analysisEngineDescriptions) {
- names[i] = aed.getImplementationName() + "-" + i;
- i++;
- }
-
- return createAggregateDescription(asList(analysisEngineDescriptions), asList(names), null,
- null, null, null);
- }
-
- public static AnalysisEngineDescription createAggregateDescription(
- List<Class<? extends AnalysisComponent>> componentClasses,
- TypeSystemDescription typeSystem, TypePriorities typePriorities,
- SofaMapping[] sofaMappings, FlowControllerDescription flowControllerDescription,
- Object... configurationParameters) throws ResourceInitializationException {
-
- List<AnalysisEngineDescription> primitiveEngineDescriptions = new ArrayList<AnalysisEngineDescription>();
- List<String> componentNames = new ArrayList<String>();
-
- for (Class<? extends AnalysisComponent> componentClass : componentClasses) {
- AnalysisEngineDescription primitiveDescription = createPrimitiveDescription(
- componentClass, typeSystem, typePriorities, configurationParameters);
- primitiveEngineDescriptions.add(primitiveDescription);
- componentNames.add(componentClass.getName());
- }
- return createAggregateDescription(primitiveEngineDescriptions, componentNames, typeSystem,
- typePriorities, sofaMappings, flowControllerDescription);
- }
-
- public static AnalysisEngine createAggregate(
- List<AnalysisEngineDescription> analysisEngineDescriptions,
- List<String> componentNames, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, SofaMapping[] sofaMappings,
- FlowControllerDescription flowControllerDescription)
- throws ResourceInitializationException {
-
- AnalysisEngineDescription desc = createAggregateDescription(analysisEngineDescriptions,
- componentNames, typeSystem, typePriorities, sofaMappings, flowControllerDescription);
- // create the AnalysisEngine, initialize it and return it
- AnalysisEngine engine = new AggregateAnalysisEngine_impl();
- engine.initialize(desc, null);
- return engine;
-
- }
-
- /**
- * A simplified factory method for creating an aggregate description for a given flow controller
- * and a sequence of analysis engine descriptions
- */
- public static AnalysisEngineDescription createAggregateDescription(
- FlowControllerDescription flowControllerDescription,
- AnalysisEngineDescription... analysisEngineDescriptions)
- throws ResourceInitializationException {
- String[] names = new String[analysisEngineDescriptions.length];
- int i = 0;
- for (AnalysisEngineDescription aed : analysisEngineDescriptions) {
- names[i] = aed.getImplementationName() + "-" + i;
- i++;
- }
-
- return createAggregateDescription(asList(analysisEngineDescriptions), asList(names), null,
- null, null, flowControllerDescription);
- }
-
- /**
- * A factory method for creating an aggregate description.
- */
- public static AnalysisEngineDescription createAggregateDescription(
- List<AnalysisEngineDescription> analysisEngineDescriptions,
- List<String> componentNames, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, SofaMapping[] sofaMappings,
- FlowControllerDescription flowControllerDescription)
- throws ResourceInitializationException {
-
- // create the descriptor and set configuration parameters
- AnalysisEngineDescription desc = new AnalysisEngineDescription_impl();
- desc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
- desc.setPrimitive(false);
-
- // if any of the aggregated analysis engines does not allow multiple
- // deployment, then the
- // aggregate engine may also not be multiply deployed
- boolean allowMultipleDeploy = true;
- for (AnalysisEngineDescription d : analysisEngineDescriptions) {
- allowMultipleDeploy &= d.getAnalysisEngineMetaData().getOperationalProperties()
- .isMultipleDeploymentAllowed();
- }
- desc.getAnalysisEngineMetaData().getOperationalProperties()
- .setMultipleDeploymentAllowed(allowMultipleDeploy);
-
- List<String> flowNames = new ArrayList<String>();
-
- for (int i = 0; i < analysisEngineDescriptions.size(); i++) {
- AnalysisEngineDescription aed = analysisEngineDescriptions.get(i);
- String componentName = componentNames.get(i);
- desc.getDelegateAnalysisEngineSpecifiersWithImports().put(componentName, aed);
- flowNames.add(componentName);
- }
-
- if (flowControllerDescription != null) {
- FlowControllerDeclaration flowControllerDeclaration = new FlowControllerDeclaration_impl();
- flowControllerDeclaration.setSpecifier(flowControllerDescription);
- desc.setFlowControllerDeclaration(flowControllerDeclaration);
- }
-
- FixedFlow fixedFlow = new FixedFlow_impl();
- fixedFlow.setFixedFlow(flowNames.toArray(new String[flowNames.size()]));
- desc.getAnalysisEngineMetaData().setFlowConstraints(fixedFlow);
-
- if (typePriorities != null) {
- desc.getAnalysisEngineMetaData().setTypePriorities(typePriorities);
- }
-
- if (sofaMappings != null) {
- desc.setSofaMappings(sofaMappings);
- }
-
- return desc;
- }
-
- /**
- * Creates an AnalysisEngine from the given descriptor, and uses the engine to process the file
- * or text.
- *
- * @param descriptorFileName
- * The fully qualified, Java-style, dotted name of the XML descriptor file.
- * @param fileNameOrText
- * Either the path of a file to be loaded, or a string to use as the text. If the
- * string given is not a valid path in the file system, it will be assumed to be
- * text.
- * @return A JCas object containing the processed document.
- */
- public static JCas process(String descriptorFileName, String fileNameOrText)
- throws IOException, UIMAException {
- AnalysisEngine engine = createAnalysisEngine(descriptorFileName);
- JCas jCas = process(engine, fileNameOrText);
- engine.collectionProcessComplete();
- return jCas;
- }
-
- /**
- * Processes the file or text with the given AnalysisEngine.
- *
- * @param analysisEngine
- * The AnalysisEngine object to process the text.
- * @param fileNameOrText
- * Either the path of a file to be loaded, or a string to use as the text. If the
- * string given is not a valid path in the file system, it will be assumed to be
- * text.
- * @return A JCas object containing the processed document.
- */
- public static JCas process(AnalysisEngine analysisEngine, String fileNameOrText)
- throws IOException, UIMAException {
- JCas jCas = analysisEngine.newJCas();
- process(jCas, analysisEngine, fileNameOrText);
- return jCas;
- }
-
- /**
- * Provides a convenience method for running an AnalysisEngine over some text with a given JCas.
- */
- public static void process(JCas jCas, AnalysisEngine analysisEngine, String fileNameOrText)
- throws IOException, UIMAException {
- File textFile = new File(fileNameOrText);
- String text;
- if (textFile.exists()) {
- text = FileUtils.file2String(textFile);
- }
- else {
- text = fileNameOrText;
- }
-
- jCas.setDocumentText(text);
- analysisEngine.process(jCas);
- }
+ private AnalysisEngineFactory() {
+ // This class is not meant to be instantiated
+ }
+
+ /**
+ * Get an AnalysisEngine from the name (Java-style, dotted) of an XML descriptor file, and a set
+ * of configuration parameters.
+ *
+ * @param descriptorName
+ * The fully qualified, Java-style, dotted name of the XML descriptor file.
+ * @param configurationData
+ * Any additional configuration parameters to be set. These should be supplied as (name,
+ * value) pairs, so there should always be an even number of parameters.
+ * @return The AnalysisEngine created from the XML descriptor and the configuration parameters.
+ */
+ public static AnalysisEngine createAnalysisEngine(String descriptorName,
+ Object... configurationData) throws UIMAException, IOException {
+ AnalysisEngineDescription aed = createAnalysisEngineDescription(descriptorName,
+ configurationData);
+ return UIMAFramework.produceAnalysisEngine(aed);
+ }
+
+ /**
+ * Provides a way to create an AnalysisEngineDescription using a descriptor file referenced by
+ * name
+ *
+ * @param configurationData
+ * should consist of name value pairs. Will override configuration parameter settings in
+ * the descriptor file
+ */
+ public static AnalysisEngineDescription createAnalysisEngineDescription(String descriptorName,
+ Object... configurationData) throws UIMAException, IOException {
+ Import_impl imprt = new Import_impl();
+ imprt.setName(descriptorName);
+ URL url = imprt.findAbsoluteUrl(UIMAFramework.newDefaultResourceManager());
+ ResourceSpecifier specifier = ResourceCreationSpecifierFactory.createResourceCreationSpecifier(
+ url, configurationData);
+ return (AnalysisEngineDescription) specifier;
+ }
+
+ /**
+ * This method provides a convenient way to instantiate an AnalysisEngine where the default view
+ * is mapped to the view name passed into the method.
+ *
+ * @param viewName
+ * the view name to map the default view to
+ * @return an aggregate analysis engine consisting of a single component whose default view is
+ * mapped to the the view named by viewName.
+ */
+ public static AnalysisEngine createAnalysisEngine(
+ AnalysisEngineDescription analysisEngineDescription, String viewName)
+ throws ResourceInitializationException {
+ AggregateBuilder builder = new AggregateBuilder();
+ builder.add(analysisEngineDescription, CAS.NAME_DEFAULT_SOFA, viewName);
+ return builder.createAggregate();
+ }
+
+ /**
+ * Get an AnalysisEngine from an XML descriptor file and a set of configuration parameters.
+ *
+ * @param descriptorPath
+ * The path to the XML descriptor file.
+ * @param configurationData
+ * Any additional configuration parameters to be set. These should be supplied as (name,
+ * value) pairs, so there should always be an even number of parameters.
+ * @return The AnalysisEngine created from the XML descriptor and the configuration parameters.
+ */
+ public static AnalysisEngine createAnalysisEngineFromPath(String descriptorPath,
+ Object... configurationData) throws UIMAException, IOException {
+ ResourceSpecifier specifier;
+ specifier = ResourceCreationSpecifierFactory.createResourceCreationSpecifier(descriptorPath,
+ configurationData);
+ return UIMAFramework.produceAnalysisEngine(specifier);
+ }
+
+ /**
+ * Get an AnalysisEngine from an OperationalProperties class, a type system and a set of
+ * configuration parameters. The type system is detected automatically using
+ * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}.
+ *
+ * @param componentClass
+ * The class of the OperationalProperties to be created as an AnalysisEngine.
+ * @param configurationData
+ * Any additional configuration parameters to be set. These should be supplied as (name,
+ * value) pairs, so there should always be an even number of parameters.
+ * @return The AnalysisEngine created from the OperationalProperties class and initialized with
+ * the type system and the configuration parameters.
+ */
+ public static AnalysisEngine createPrimitive(Class<? extends AnalysisComponent> componentClass,
+ Object... configurationData) throws ResourceInitializationException {
+ TypeSystemDescription tsd = createTypeSystemDescription();
+ return createPrimitive(componentClass, tsd, (TypePriorities) null, configurationData);
+ }
+
+ /**
+ * Get an AnalysisEngine from an OperationalProperties class, a type system and a set of
+ * configuration parameters.
+ *
+ * @param componentClass
+ * The class of the OperationalProperties to be created as an AnalysisEngine.
+ * @param typeSystem
+ * A description of the types used by the OperationalProperties (may be null).
+ * @param configurationData
+ * Any additional configuration parameters to be set. These should be supplied as (name,
+ * value) pairs, so there should always be an even number of parameters.
+ * @return The AnalysisEngine created from the OperationalProperties class and initialized with
+ * the type system and the configuration parameters.
+ */
+ public static AnalysisEngine createPrimitive(Class<? extends AnalysisComponent> componentClass,
+ TypeSystemDescription typeSystem, Object... configurationData)
+ throws ResourceInitializationException {
+ return createPrimitive(componentClass, typeSystem, (TypePriorities) null, configurationData);
+ }
+
+ public static AnalysisEngine createPrimitive(Class<? extends AnalysisComponent> componentClass,
+ TypeSystemDescription typeSystem, String[] prioritizedTypeNames,
+ Object... configurationData) throws ResourceInitializationException {
+ TypePriorities typePriorities = TypePrioritiesFactory
+ .createTypePriorities(prioritizedTypeNames);
+ return createPrimitive(componentClass, typeSystem, typePriorities, configurationData);
+
+ }
+
+ /**
+ * A simple factory method for creating a primitive AnalysisEngineDescription for a given class,
+ * type system, and configuration parameter data
+ *
+ * @param componentClass
+ * a class that extends AnalysisComponent e.g.
+ * org.uimafit.component.JCasAnnotator_ImplBase
+ */
+ public static AnalysisEngineDescription createPrimitiveDescription(
+ Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
+ Object... configurationData) throws ResourceInitializationException {
+ return createPrimitiveDescription(componentClass, typeSystem, (TypePriorities) null,
+ configurationData);
+ }
+
+ /**
+ * A simple factory method for creating a primitive AnalysisEngineDescription for a given class,
+ * type system, and configuration parameter data The type system is detected automatically using
+ * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}.
+ *
+ * @param componentClass
+ * a class that extends AnalysisComponent e.g.
+ * org.uimafit.component.JCasAnnotator_ImplBase
+ */
+ public static AnalysisEngineDescription createPrimitiveDescription(
+ Class<? extends AnalysisComponent> componentClass, Object... configurationData)
+ throws ResourceInitializationException {
+ TypeSystemDescription tsd = createTypeSystemDescription();
+ return createPrimitiveDescription(componentClass, tsd, (TypePriorities) null, configurationData);
+ }
+
+ public static AnalysisEngineDescription createPrimitiveDescription(
+ Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
+ TypePriorities typePriorities, Object... configurationData)
+ throws ResourceInitializationException {
+ return createPrimitiveDescription(componentClass, typeSystem, typePriorities,
+ (FsIndexCollection) null, (Capability[]) null, configurationData);
+ }
+
+ /**
+ * The factory methods for creating an AnalysisEngineDescription
+ */
+ public static AnalysisEngineDescription createPrimitiveDescription(
+ Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
+ TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
+ Object... configurationData) throws ResourceInitializationException {
+
+ ensureParametersComeInPairs(configurationData);
+
+ // Extract ExternalResourceDescriptions from configurationData
+ // <ParamterName, ExternalResourceDescription> will be stored in this map
+ Map<String, ExternalResourceDescription> externalResources = ExternalResourceFactory
+ .extractExternalResourceParameters(configurationData);
+
+ // Create primitive description normally
+ ConfigurationData cdata = createConfigurationData(configurationData);
+ return createPrimitiveDescription(componentClass, typeSystem, typePriorities, indexes,
+ capabilities, cdata.configurationParameters, cdata.configurationValues,
+ externalResources);
+ }
+
+ public static AnalysisEngineDescription createPrimitiveDescription(
+ Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
+ TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
+ ConfigurationParameter[] configurationParameters, Object[] configurationValues)
+ throws ResourceInitializationException {
+ return createPrimitiveDescription(componentClass, typeSystem, typePriorities, indexes,
+ capabilities, configurationParameters, configurationValues, null);
+ }
+
+ public static AnalysisEngineDescription createPrimitiveDescription(
+ Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
+ TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
+ ConfigurationParameter[] configurationParameters, Object[] configurationValues,
+ Map<String, ExternalResourceDescription> externalResources)
+ throws ResourceInitializationException {
+
+ // create the descriptor and set configuration parameters
+ AnalysisEngineDescription desc = UIMAFramework.getResourceSpecifierFactory()
+ .createAnalysisEngineDescription();
+ desc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
+ desc.setPrimitive(true);
+ desc.setAnnotatorImplementationName(componentClass.getName());
+ org.apache.uima.fit.descriptor.OperationalProperties componentAnno = ReflectionUtil
+ .getInheritableAnnotation(org.apache.uima.fit.descriptor.OperationalProperties.class,
+ componentClass);
+ if (componentAnno != null) {
+ OperationalProperties op = desc.getAnalysisEngineMetaData().getOperationalProperties();
+ op.setMultipleDeploymentAllowed(componentAnno.multipleDeploymentAllowed());
+ op.setModifiesCas(componentAnno.modifiesCas());
+ op.setOutputsNewCASes(componentAnno.outputsNewCases());
+ } else {
+ OperationalProperties op = desc.getAnalysisEngineMetaData().getOperationalProperties();
+ op.setMultipleDeploymentAllowed(MULTIPLE_DEPLOYMENT_ALLOWED_DEFAULT);
+ op.setModifiesCas(MODIFIES_CAS_DEFAULT);
+ op.setOutputsNewCASes(OUTPUTS_NEW_CASES_DEFAULT);
+ }
+
+ AnalysisEngineMetaData meta = desc.getAnalysisEngineMetaData();
+ meta.setName(componentClass.getName());
+
+ if (componentClass.getPackage() != null) {
+ meta.setVendor(componentClass.getPackage().getName());
+ }
+ meta.setDescription("Descriptor automatically generated by uimaFIT");
+ meta.setVersion("unknown");
+
+ ConfigurationData reflectedConfigurationData = createConfigurationData(componentClass);
+ ResourceCreationSpecifierFactory.setConfigurationParameters(desc,
+ reflectedConfigurationData.configurationParameters,
+ reflectedConfigurationData.configurationValues);
+ if (configurationParameters != null) {
+ ResourceCreationSpecifierFactory.setConfigurationParameters(desc, configurationParameters,
+ configurationValues);
+ }
+
+ // set the type system
+ if (typeSystem != null) {
+ desc.getAnalysisEngineMetaData().setTypeSystem(typeSystem);
+ }
+
+ if (typePriorities != null) {
+ desc.getAnalysisEngineMetaData().setTypePriorities(typePriorities);
+ }
+
+ // set indexes from the argument to this call or from the annotation present in the
+ // component if the argument is null
+ if (indexes != null) {
+ desc.getAnalysisEngineMetaData().setFsIndexCollection(indexes);
+ } else {
+ desc.getAnalysisEngineMetaData().setFsIndexCollection(
+ FsIndexFactory.createFsIndexCollection(componentClass));
+ }
+
+ // set capabilities from the argument to this call or from the annotation present in the
+ // component if the argument is null
+ if (capabilities != null) {
+ desc.getAnalysisEngineMetaData().setCapabilities(capabilities);
+ } else {
+ Capability capability = CapabilityFactory.createCapability(componentClass);
+ if (capability != null) {
+ desc.getAnalysisEngineMetaData().setCapabilities(new Capability[] { capability });
+ }
+ }
+
+ // Extract external resource dependencies
+ Collection<ExternalResourceDependency> deps = ExternalResourceInitializer
+ .getResourceDeclarations(componentClass).values();
+ desc.setExternalResourceDependencies(deps.toArray(new ExternalResourceDependency[deps.size()]));
+
+ // Bind External Resources
+ if (externalResources != null) {
+ for (Entry<String, ExternalResourceDescription> e : externalResources.entrySet()) {
+ bindExternalResource(desc, e.getKey(), e.getValue());
+ }
+ }
+
+ return desc;
+ }
+
+ /**
+ * Provides a way to override configuration parameter settings with new values in an
+ * AnalysisEngineDescription
+ *
+ * @deprecated use {@link ResourceCreationSpecifierFactory#setConfigurationParameters}
+ */
+ @Deprecated
+ public static void setConfigurationParameters(
+ AnalysisEngineDescription analysisEngineDescription, Object... configurationData)
+ throws ResourceInitializationException {
+ ResourceCreationSpecifierFactory.setConfigurationParameters(analysisEngineDescription,
+ configurationData);
+ }
+
+ public static AnalysisEngine createPrimitive(Class<? extends AnalysisComponent> componentClass,
+ TypeSystemDescription typeSystem, TypePriorities typePriorities,
+ Object... configurationParameters) throws ResourceInitializationException {
+
+ AnalysisEngineDescription desc = createPrimitiveDescription(componentClass, typeSystem,
+ typePriorities, configurationParameters);
+
+ // create the AnalysisEngine, initialize it and return it
+ return createPrimitive(desc);
+ }
+
+ public static AnalysisEngine createPrimitive(AnalysisEngineDescription desc,
+ Object... configurationData) throws ResourceInitializationException {
+ AnalysisEngineDescription descClone = (AnalysisEngineDescription) desc.clone();
+ ResourceCreationSpecifierFactory.setConfigurationParameters(descClone, configurationData);
+ return UIMAFramework.produceAnalysisEngine(descClone);
+ }
+
+ public static AnalysisEngine createAggregate(
+ List<Class<? extends AnalysisComponent>> componentClasses,
+ TypeSystemDescription typeSystem, TypePriorities typePriorities,
+ SofaMapping[] sofaMappings, Object... configurationParameters)
+ throws ResourceInitializationException {
+ AnalysisEngineDescription desc = createAggregateDescription(componentClasses, typeSystem,
+ typePriorities, sofaMappings, configurationParameters);
+ // create the AnalysisEngine, initialize it and return it
+ AnalysisEngine engine = new AggregateAnalysisEngine_impl();
+ engine.initialize(desc, null);
+ return engine;
+ }
+
+ public static AnalysisEngine createAggregate(
+ List<Class<? extends AnalysisComponent>> componentClasses,
+ TypeSystemDescription typeSystem, TypePriorities typePriorities,
+ SofaMapping[] sofaMappings, FlowControllerDescription flowControllerDescription,
+ Object... configurationParameters) throws ResourceInitializationException {
+ AnalysisEngineDescription desc = createAggregateDescription(componentClasses, typeSystem,
+ typePriorities, sofaMappings, configurationParameters, flowControllerDescription);
+ // create the AnalysisEngine, initialize it and return it
+ AnalysisEngine engine = new AggregateAnalysisEngine_impl();
+ engine.initialize(desc, null);
+ return engine;
+ }
+
+ public static AnalysisEngine createAggregate(AnalysisEngineDescription desc)
+ throws ResourceInitializationException {
+ // create the AnalysisEngine, initialize it and return it
+ return UIMAFramework.produceAnalysisEngine(desc, null, null);
+ }
+
+ public static AnalysisEngineDescription createAggregateDescription(
+ List<Class<? extends AnalysisComponent>> componentClasses,
+ TypeSystemDescription typeSystem, TypePriorities typePriorities,
+ SofaMapping[] sofaMappings, Object... configurationParameters)
+ throws ResourceInitializationException {
+
+ List<AnalysisEngineDescription> primitiveEngineDescriptions = new ArrayList<AnalysisEngineDescription>();
+ List<String> componentNames = new ArrayList<String>();
+
+ for (Class<? extends AnalysisComponent> componentClass : componentClasses) {
+ AnalysisEngineDescription primitiveDescription = createPrimitiveDescription(componentClass,
+ typeSystem, typePriorities, configurationParameters);
+ primitiveEngineDescriptions.add(primitiveDescription);
+ componentNames.add(componentClass.getName());
+ }
+ return createAggregateDescription(primitiveEngineDescriptions, componentNames, typeSystem,
+ typePriorities, sofaMappings, null);
+ }
+
+ public static AnalysisEngine createAggregate(
+ List<AnalysisEngineDescription> analysisEngineDescriptions, List<String> componentNames,
+ TypeSystemDescription typeSystem, TypePriorities typePriorities,
+ SofaMapping[] sofaMappings) throws ResourceInitializationException {
+
+ AnalysisEngineDescription desc = createAggregateDescription(analysisEngineDescriptions,
+ componentNames, typeSystem, typePriorities, sofaMappings, null);
+ // create the AnalysisEngine, initialize it and return it
+ AnalysisEngine engine = new AggregateAnalysisEngine_impl();
+ engine.initialize(desc, null);
+ return engine;
+
+ }
+
+ public static AnalysisEngineDescription createAggregateDescription(
+ AnalysisEngineDescription... analysisEngineDescriptions)
+ throws ResourceInitializationException {
+ String[] names = new String[analysisEngineDescriptions.length];
+ int i = 0;
+ for (AnalysisEngineDescription aed : analysisEngineDescriptions) {
+ names[i] = aed.getImplementationName() + "-" + i;
+ i++;
+ }
+
+ return createAggregateDescription(asList(analysisEngineDescriptions), asList(names), null,
+ null, null, null);
+ }
+
+ public static AnalysisEngineDescription createAggregateDescription(
+ List<Class<? extends AnalysisComponent>> componentClasses,
+ TypeSystemDescription typeSystem, TypePriorities typePriorities,
+ SofaMapping[] sofaMappings, FlowControllerDescription flowControllerDescription,
+ Object... configurationParameters) throws ResourceInitializationException {
+
+ List<AnalysisEngineDescription> primitiveEngineDescriptions = new ArrayList<AnalysisEngineDescription>();
+ List<String> componentNames = new ArrayList<String>();
+
+ for (Class<? extends AnalysisComponent> componentClass : componentClasses) {
+ AnalysisEngineDescription primitiveDescription = createPrimitiveDescription(componentClass,
+ typeSystem, typePriorities, configurationParameters);
+ primitiveEngineDescriptions.add(primitiveDescription);
+ componentNames.add(componentClass.getName());
+ }
+ return createAggregateDescription(primitiveEngineDescriptions, componentNames, typeSystem,
+ typePriorities, sofaMappings, flowControllerDescription);
+ }
+
+ public static AnalysisEngine createAggregate(
+ List<AnalysisEngineDescription> analysisEngineDescriptions, List<String> componentNames,
+ TypeSystemDescription typeSystem, TypePriorities typePriorities,
+ SofaMapping[] sofaMappings, FlowControllerDescription flowControllerDescription)
+ throws ResourceInitializationException {
+
+ AnalysisEngineDescription desc = createAggregateDescription(analysisEngineDescriptions,
+ componentNames, typeSystem, typePriorities, sofaMappings, flowControllerDescription);
+ // create the AnalysisEngine, initialize it and return it
+ AnalysisEngine engine = new AggregateAnalysisEngine_impl();
+ engine.initialize(desc, null);
+ return engine;
+
+ }
+
+ /**
+ * A simplified factory method for creating an aggregate description for a given flow controller
+ * and a sequence of analysis engine descriptions
+ */
+ public static AnalysisEngineDescription createAggregateDescription(
+ FlowControllerDescription flowControllerDescription,
+ AnalysisEngineDescription... analysisEngineDescriptions)
+ throws ResourceInitializationException {
+ String[] names = new String[analysisEngineDescriptions.length];
+ int i = 0;
+ for (AnalysisEngineDescription aed : analysisEngineDescriptions) {
+ names[i] = aed.getImplementationName() + "-" + i;
+ i++;
+ }
+
+ return createAggregateDescription(asList(analysisEngineDescriptions), asList(names), null,
+ null, null, flowControllerDescription);
+ }
+
+ /**
+ * A factory method for creating an aggregate description.
+ */
+ public static AnalysisEngineDescription createAggregateDescription(
+ List<AnalysisEngineDescription> analysisEngineDescriptions, List<String> componentNames,
+ TypeSystemDescription typeSystem, TypePriorities typePriorities,
+ SofaMapping[] sofaMappings, FlowControllerDescription flowControllerDescription)
+ throws ResourceInitializationException {
+
+ // create the descriptor and set configuration parameters
+ AnalysisEngineDescription desc = new AnalysisEngineDescription_impl();
+ desc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
+ desc.setPrimitive(false);
+
+ // if any of the aggregated analysis engines does not allow multiple
+ // deployment, then the
+ // aggregate engine may also not be multiply deployed
+ boolean allowMultipleDeploy = true;
+ for (AnalysisEngineDescription d : analysisEngineDescriptions) {
+ allowMultipleDeploy &= d.getAnalysisEngineMetaData().getOperationalProperties()
+ .isMultipleDeploymentAllowed();
+ }
+ desc.getAnalysisEngineMetaData().getOperationalProperties()
+ .setMultipleDeploymentAllowed(allowMultipleDeploy);
+
+ List<String> flowNames = new ArrayList<String>();
+
+ for (int i = 0; i < analysisEngineDescriptions.size(); i++) {
+ AnalysisEngineDescription aed = analysisEngineDescriptions.get(i);
+ String componentName = componentNames.get(i);
+ desc.getDelegateAnalysisEngineSpecifiersWithImports().put(componentName, aed);
+ flowNames.add(componentName);
+ }
+
+ if (flowControllerDescription != null) {
+ FlowControllerDeclaration flowControllerDeclaration = new FlowControllerDeclaration_impl();
+ flowControllerDeclaration.setSpecifier(flowControllerDescription);
+ desc.setFlowControllerDeclaration(flowControllerDeclaration);
+ }
+
+ FixedFlow fixedFlow = new FixedFlow_impl();
+ fixedFlow.setFixedFlow(flowNames.toArray(new String[flowNames.size()]));
+ desc.getAnalysisEngineMetaData().setFlowConstraints(fixedFlow);
+
+ if (typePriorities != null) {
+ desc.getAnalysisEngineMetaData().setTypePriorities(typePriorities);
+ }
+
+ if (sofaMappings != null) {
+ desc.setSofaMappings(sofaMappings);
+ }
+
+ return desc;
+ }
+
+ /**
+ * Creates an AnalysisEngine from the given descriptor, and uses the engine to process the file or
+ * text.
+ *
+ * @param descriptorFileName
+ * The fully qualified, Java-style, dotted name of the XML descriptor file.
+ * @param fileNameOrText
+ * Either the path of a file to be loaded, or a string to use as the text. If the string
+ * given is not a valid path in the file system, it will be assumed to be text.
+ * @return A JCas object containing the processed document.
+ */
+ public static JCas process(String descriptorFileName, String fileNameOrText) throws IOException,
+ UIMAException {
+ AnalysisEngine engine = createAnalysisEngine(descriptorFileName);
+ JCas jCas = process(engine, fileNameOrText);
+ engine.collectionProcessComplete();
+ return jCas;
+ }
+
+ /**
+ * Processes the file or text with the given AnalysisEngine.
+ *
+ * @param analysisEngine
+ * The AnalysisEngine object to process the text.
+ * @param fileNameOrText
+ * Either the path of a file to be loaded, or a string to use as the text. If the string
+ * given is not a valid path in the file system, it will be assumed to be text.
+ * @return A JCas object containing the processed document.
+ */
+ public static JCas process(AnalysisEngine analysisEngine, String fileNameOrText)
+ throws IOException, UIMAException {
+ JCas jCas = analysisEngine.newJCas();
+ process(jCas, analysisEngine, fileNameOrText);
+ return jCas;
+ }
+
+ /**
+ * Provides a convenience method for running an AnalysisEngine over some text with a given JCas.
+ */
+ public static void process(JCas jCas, AnalysisEngine analysisEngine, String fileNameOrText)
+ throws IOException, UIMAException {
+ File textFile = new File(fileNameOrText);
+ String text;
+ if (textFile.exists()) {
+ text = FileUtils.file2String(textFile);
+ } else {
+ text = fileNameOrText;
+ }
+
+ jCas.setDocumentText(text);
+ analysisEngine.process(jCas);
+ }
}
Modified: uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/AnnotationFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/AnnotationFactory.java?rev=1431721&r1=1431720&r2=1431721&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/AnnotationFactory.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/AnnotationFactory.java Thu Jan 10 23:12:33 2013
@@ -27,25 +27,24 @@ import org.apache.uima.jcas.tcas.Annotat
*
*/
public final class AnnotationFactory {
- private AnnotationFactory() {
- // This class is not meant to be instantiated
- }
+ private AnnotationFactory() {
+ // This class is not meant to be instantiated
+ }
- /**
- * Provides a convenient way to create an annotation and addToIndexes in a single line.
- */
- public static <T extends Annotation> T createAnnotation(JCas jCas, int begin, int end,
- Class<T> cls) throws UIMAException {
- T annotation;
- try {
- annotation = cls.getConstructor(JCas.class, Integer.TYPE, Integer.TYPE).newInstance(
- jCas, begin, end);
- }
- catch (Exception e) {
- throw new UIMAException(e);
- }
- annotation.addToIndexes();
- return annotation;
- }
+ /**
+ * Provides a convenient way to create an annotation and addToIndexes in a single line.
+ */
+ public static <T extends Annotation> T createAnnotation(JCas jCas, int begin, int end,
+ Class<T> cls) throws UIMAException {
+ T annotation;
+ try {
+ annotation = cls.getConstructor(JCas.class, Integer.TYPE, Integer.TYPE).newInstance(jCas,
+ begin, end);
+ } catch (Exception e) {
+ throw new UIMAException(e);
+ }
+ annotation.addToIndexes();
+ return annotation;
+ }
}
Modified: uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java?rev=1431721&r1=1431720&r2=1431721&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java Thu Jan 10 23:12:33 2013
@@ -32,68 +32,66 @@ import org.apache.uima.resource.metadata
*/
public final class CapabilityFactory {
- private CapabilityFactory() {
- // This class is not meant to be instantiated
- }
-
- /**
- * Creates a single capability consisting of the information in the {@link SofaCapability} and
- * {@link TypeCapability} annotations for the class.
- */
- public static Capability createCapability(Class<?> componentClass) {
- if (!componentClass.isAnnotationPresent(SofaCapability.class)
- && !componentClass.isAnnotationPresent(TypeCapability.class)) {
- return null;
- }
-
- Capability capability = new Capability_impl();
-
- if (componentClass.isAnnotationPresent(SofaCapability.class)) {
- SofaCapability annotation = componentClass.getAnnotation(SofaCapability.class);
- String[] inputSofas = annotation.inputSofas();
- if (inputSofas.length == 1 && inputSofas[0].equals(SofaCapability.NO_DEFAULT_VALUE)) {
- inputSofas = new String[0];
- }
- capability.setInputSofas(inputSofas);
-
- String[] outputSofas = annotation.outputSofas();
- if (outputSofas.length == 1 && outputSofas[0].equals(SofaCapability.NO_DEFAULT_VALUE)) {
- outputSofas = new String[0];
- }
- capability.setOutputSofas(outputSofas);
- }
-
- if (componentClass.isAnnotationPresent(TypeCapability.class)) {
- TypeCapability annotation = componentClass.getAnnotation(TypeCapability.class);
- String[] inputTypesOrFeatureNames = annotation.inputs();
- capability.setInputs(createTypesOrFeatures(inputTypesOrFeatureNames));
- String[] outputTypesOrFeatureNames = annotation.outputs();
- capability.setOutputs(createTypesOrFeatures(outputTypesOrFeatureNames));
- }
-
- return capability;
- }
-
- private static TypeOrFeature[] createTypesOrFeatures(String[] typesOrFeatureNames) {
- if (typesOrFeatureNames.length == 1
- && typesOrFeatureNames[0].equals(TypeCapability.NO_DEFAULT_VALUE)) {
- return new TypeOrFeature[0];
- }
- else {
- List<TypeOrFeature> typesOrFeatures = new ArrayList<TypeOrFeature>();
- for (String name : typesOrFeatureNames) {
- TypeOrFeature tof = new TypeOrFeature_impl();
- tof.setName(name);
- if (name.indexOf(":") == -1) {
- tof.setType(true);
- }
- else {
- tof.setType(false);
- }
- typesOrFeatures.add(tof);
- }
- return typesOrFeatures.toArray(new TypeOrFeature[typesOrFeatures.size()]);
- }
+ private CapabilityFactory() {
+ // This class is not meant to be instantiated
+ }
+
+ /**
+ * Creates a single capability consisting of the information in the {@link SofaCapability} and
+ * {@link TypeCapability} annotations for the class.
+ */
+ public static Capability createCapability(Class<?> componentClass) {
+ if (!componentClass.isAnnotationPresent(SofaCapability.class)
+ && !componentClass.isAnnotationPresent(TypeCapability.class)) {
+ return null;
+ }
+
+ Capability capability = new Capability_impl();
+
+ if (componentClass.isAnnotationPresent(SofaCapability.class)) {
+ SofaCapability annotation = componentClass.getAnnotation(SofaCapability.class);
+ String[] inputSofas = annotation.inputSofas();
+ if (inputSofas.length == 1 && inputSofas[0].equals(SofaCapability.NO_DEFAULT_VALUE)) {
+ inputSofas = new String[0];
+ }
+ capability.setInputSofas(inputSofas);
+
+ String[] outputSofas = annotation.outputSofas();
+ if (outputSofas.length == 1 && outputSofas[0].equals(SofaCapability.NO_DEFAULT_VALUE)) {
+ outputSofas = new String[0];
+ }
+ capability.setOutputSofas(outputSofas);
+ }
+
+ if (componentClass.isAnnotationPresent(TypeCapability.class)) {
+ TypeCapability annotation = componentClass.getAnnotation(TypeCapability.class);
+ String[] inputTypesOrFeatureNames = annotation.inputs();
+ capability.setInputs(createTypesOrFeatures(inputTypesOrFeatureNames));
+ String[] outputTypesOrFeatureNames = annotation.outputs();
+ capability.setOutputs(createTypesOrFeatures(outputTypesOrFeatureNames));
+ }
+
+ return capability;
+ }
+
+ private static TypeOrFeature[] createTypesOrFeatures(String[] typesOrFeatureNames) {
+ if (typesOrFeatureNames.length == 1
+ && typesOrFeatureNames[0].equals(TypeCapability.NO_DEFAULT_VALUE)) {
+ return new TypeOrFeature[0];
+ } else {
+ List<TypeOrFeature> typesOrFeatures = new ArrayList<TypeOrFeature>();
+ for (String name : typesOrFeatureNames) {
+ TypeOrFeature tof = new TypeOrFeature_impl();
+ tof.setName(name);
+ if (name.indexOf(":") == -1) {
+ tof.setType(true);
+ } else {
+ tof.setType(false);
+ }
+ typesOrFeatures.add(tof);
+ }
+ return typesOrFeatures.toArray(new TypeOrFeature[typesOrFeatures.size()]);
+ }
- }
+ }
}
Modified: uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java?rev=1431721&r1=1431720&r2=1431721&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java Thu Jan 10 23:12:33 2013
@@ -55,271 +55,265 @@ import org.apache.uima.resource.metadata
*/
public final class CollectionReaderFactory {
- private CollectionReaderFactory() {
- // This class is not meant to be instantiated
- }
-
- /**
- * Create a CollectionReader from an XML descriptor file and a set of configuration parameters.
- *
- * @param descriptorPath
- * The path to the XML descriptor file.
- * @param configurationData
- * Any additional configuration parameters to be set. These should be supplied as
- * (name, value) pairs, so there should always be an even number of parameters.
- * @return The CollectionReader created from the XML descriptor and the configuration
- * parameters.
- */
- public static CollectionReader createCollectionReaderFromPath(String descriptorPath,
- Object... configurationData) throws UIMAException, IOException {
- ResourceCreationSpecifier specifier = createResourceCreationSpecifier(descriptorPath,
- configurationData);
- return UIMAFramework.produceCollectionReader(specifier);
- }
-
- /**
- * Get a CollectionReader from the name (Java-style, dotted) of an XML descriptor file, and a
- * set of configuration parameters.
- *
- * @param descriptorName
- * The fully qualified, Java-style, dotted name of the XML descriptor file.
- * @param configurationData
- * Any additional configuration parameters to be set. These should be supplied as
- * (name, value) pairs, so there should always be an even number of parameters.
- * @return The AnalysisEngine created from the XML descriptor and the configuration parameters.
- */
-
- public static CollectionReader createCollectionReader(String descriptorName,
- Object... configurationData) throws UIMAException, IOException {
- Import imp = UIMAFramework.getResourceSpecifierFactory().createImport();
- imp.setName(descriptorName);
- URL url = imp.findAbsoluteUrl(UIMAFramework.newDefaultResourceManager());
- ResourceSpecifier specifier = createResourceCreationSpecifier(url, configurationData);
- return UIMAFramework.produceCollectionReader(specifier);
- }
-
- /**
- * Get a CollectionReader from a CollectionReader class, a type system, and a set of
- * configuration parameters. The type system is detected automatically using
- * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}.
- *
- * @param readerClass
- * The class of the CollectionReader to be created.
- * @param configurationData
- * Any additional configuration parameters to be set. These should be supplied as
- * (name, value) pairs, so there should always be an even number of parameters.
- * @return The CollectionReader created and initialized with the type system and configuration
- * parameters.
- */
- public static CollectionReader createCollectionReader(
- Class<? extends CollectionReader> readerClass, Object... configurationData)
- throws ResourceInitializationException {
- TypeSystemDescription tsd = createTypeSystemDescription();
- return createCollectionReader(readerClass, tsd, (TypePriorities) null, configurationData);
- }
-
- /**
- * Get a CollectionReader from a CollectionReader class, a type system, and a set of
- * configuration parameters.
- *
- * @param readerClass
- * The class of the CollectionReader to be created.
- * @param typeSystem
- * A description of the types used by the CollectionReader (may be null).
- * @param configurationData
- * Any additional configuration parameters to be set. These should be supplied as
- * (name, value) pairs, so there should always be an even number of parameters.
- * @return The CollectionReader created and initialized with the type system and configuration
- * parameters.
- */
- public static CollectionReader createCollectionReader(
- Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
- Object... configurationData) throws ResourceInitializationException {
- return createCollectionReader(readerClass, typeSystem, (TypePriorities) null,
- configurationData);
- }
-
- public static CollectionReader createCollectionReader(
- Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
- String[] prioritizedTypeNames, Object... configurationData)
- throws ResourceInitializationException {
- TypePriorities typePriorities = createTypePriorities(prioritizedTypeNames);
- return createCollectionReader(readerClass, typeSystem, typePriorities, configurationData);
- }
-
- public static CollectionReader createCollectionReader(
- Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, Object... configurationData)
- throws ResourceInitializationException {
- CollectionReaderDescription desc = createDescription(readerClass, typeSystem,
- typePriorities, configurationData);
- return createCollectionReader(desc);
- }
-
- /**
- * This method creates a CollectionReader from a CollectionReaderDescription adding additional
- * configuration parameter data as desired
- *
- * @param configurationData
- * configuration parameter data as name value pairs. Will override values already set
- * in the description.
- */
- public static CollectionReader createCollectionReader(CollectionReaderDescription desc,
- Object... configurationData) throws ResourceInitializationException {
- CollectionReaderDescription descClone = (CollectionReaderDescription) desc.clone();
- ResourceCreationSpecifierFactory.setConfigurationParameters(descClone, configurationData);
- return UIMAFramework.produceCollectionReader(descClone);
- }
-
- /**
- * A simple factory method for creating a CollectionReaderDescription with a given class, type
- * system description, and configuration data The type system is detected automatically using
- * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}.
- */
- public static CollectionReaderDescription createDescription(
- Class<? extends CollectionReader> readerClass, Object... configurationData)
- throws ResourceInitializationException {
- TypeSystemDescription tsd = createTypeSystemDescription();
- return createDescription(readerClass, tsd, (TypePriorities) null, configurationData);
- }
-
- /**
- * A simple factory method for creating a CollectionReaderDescription with a given class, type
- * system description, and configuration data
- */
- public static CollectionReaderDescription createDescription(
- Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
- Object... configurationData) throws ResourceInitializationException {
- return createDescription(readerClass, typeSystem, (TypePriorities) null, configurationData);
- }
-
- public static CollectionReaderDescription createDescription(
- Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
- String[] prioritizedTypeNames, Object... configurationData)
- throws ResourceInitializationException {
- TypePriorities typePriorities = createTypePriorities(prioritizedTypeNames);
- return createDescription(readerClass, typeSystem, typePriorities, configurationData);
- }
-
- public static CollectionReaderDescription createDescription(
- Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, Object... configurationData)
- throws ResourceInitializationException {
- return createDescription(readerClass, typeSystem, typePriorities, (FsIndexCollection) null,
- (Capability[]) null, configurationData);
- }
-
- public static CollectionReaderDescription createDescription(
- Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
- Object... configurationData) throws ResourceInitializationException {
-
- ensureParametersComeInPairs(configurationData);
-
- // Extract ExternalResourceDescriptions from configurationData
- // <ParamterName, ExternalResourceDescription> will be stored in this map
- Map<String, ExternalResourceDescription> externalResources =
- ExternalResourceFactory.extractExternalResourceParameters(configurationData);
-
- // Create description normally
- ConfigurationData cdata = createConfigurationData(configurationData);
- return createDescription(readerClass, typeSystem, typePriorities, indexes, capabilities,
- cdata.configurationParameters, cdata.configurationValues, externalResources);
- }
-
- public static CollectionReaderDescription createDescription(
- Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
- ConfigurationParameter[] configurationParameters, Object[] configurationValues)
- throws ResourceInitializationException {
- return createDescription(readerClass, typeSystem, typePriorities, indexes, capabilities,
- configurationParameters, configurationValues, null);
- }
-
- /**
- * The factory method for creating CollectionReaderDescription objects for a given class,
- * TypeSystemDescription, TypePriorities, capabilities, and configuration data
- */
- public static CollectionReaderDescription createDescription(
- Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
- TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
- ConfigurationParameter[] configurationParameters, Object[] configurationValues,
- Map<String, ExternalResourceDescription> externalResources)
- throws ResourceInitializationException {
- // create the descriptor and set configuration parameters
- CollectionReaderDescription desc = UIMAFramework.getResourceSpecifierFactory()
- .createCollectionReaderDescription();
- desc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
- desc.setImplementationName(readerClass.getName());
-
- ConfigurationData reflectedConfigurationData = createConfigurationData(readerClass);
- ResourceCreationSpecifierFactory.setConfigurationParameters(desc,
- reflectedConfigurationData.configurationParameters,
- reflectedConfigurationData.configurationValues);
- if (configurationParameters != null) {
- ResourceCreationSpecifierFactory.setConfigurationParameters(desc,
- configurationParameters, configurationValues);
- }
-
- // set the type system
- if (typeSystem != null) {
- desc.getCollectionReaderMetaData().setTypeSystem(typeSystem);
- }
-
- if (typePriorities != null) {
- desc.getCollectionReaderMetaData().setTypePriorities(typePriorities);
- }
-
- // set indexes from the argument to this call or from the annotation present in the
- // component if the argument is null
- if (indexes != null) {
- desc.getCollectionReaderMetaData().setFsIndexCollection(indexes);
- }
- else {
- desc.getCollectionReaderMetaData().setFsIndexCollection(
- createFsIndexCollection(readerClass));
- }
-
- // set capabilities from the argument to this call or from the annotation present in the
- // component if the argument is null
- if (capabilities != null) {
- desc.getCollectionReaderMetaData().setCapabilities(capabilities);
- }
- else {
- Capability capability = CapabilityFactory.createCapability(readerClass);
- if (capability != null) {
- desc.getCollectionReaderMetaData().setCapabilities(new Capability[] { capability });
- }
- }
-
- // Extract external resource dependencies
- Collection<ExternalResourceDependency> deps = ExternalResourceInitializer
- .getResourceDeclarations(readerClass).values();
- desc.setExternalResourceDependencies(deps.toArray(new ExternalResourceDependency[deps
- .size()]));
-
- // Bind External Resources
- if (externalResources != null) {
- for (Entry<String, ExternalResourceDescription> e : externalResources.entrySet()) {
- bindExternalResource(desc, e.getKey(), e.getValue());
- }
- }
-
- return desc;
- }
-
- /**
- * Since the configuration parameters of a CollectionReader with the given configuration
- * parameter data
- *
- * @deprecated use {@link ResourceCreationSpecifierFactory#setConfigurationParameters}
- */
- @Deprecated
- public static void setConfigurationParameters(
- CollectionReaderDescription collectionReaderDescription, Object... configurationData)
- throws ResourceInitializationException {
- ResourceCreationSpecifierFactory.setConfigurationParameters(collectionReaderDescription,
- configurationData);
- }
+ private CollectionReaderFactory() {
+ // This class is not meant to be instantiated
+ }
+
+ /**
+ * Create a CollectionReader from an XML descriptor file and a set of configuration parameters.
+ *
+ * @param descriptorPath
+ * The path to the XML descriptor file.
+ * @param configurationData
+ * Any additional configuration parameters to be set. These should be supplied as (name,
+ * value) pairs, so there should always be an even number of parameters.
+ * @return The CollectionReader created from the XML descriptor and the configuration parameters.
+ */
+ public static CollectionReader createCollectionReaderFromPath(String descriptorPath,
+ Object... configurationData) throws UIMAException, IOException {
+ ResourceCreationSpecifier specifier = createResourceCreationSpecifier(descriptorPath,
+ configurationData);
+ return UIMAFramework.produceCollectionReader(specifier);
+ }
+
+ /**
+ * Get a CollectionReader from the name (Java-style, dotted) of an XML descriptor file, and a set
+ * of configuration parameters.
+ *
+ * @param descriptorName
+ * The fully qualified, Java-style, dotted name of the XML descriptor file.
+ * @param configurationData
+ * Any additional configuration parameters to be set. These should be supplied as (name,
+ * value) pairs, so there should always be an even number of parameters.
+ * @return The AnalysisEngine created from the XML descriptor and the configuration parameters.
+ */
+
+ public static CollectionReader createCollectionReader(String descriptorName,
+ Object... configurationData) throws UIMAException, IOException {
+ Import imp = UIMAFramework.getResourceSpecifierFactory().createImport();
+ imp.setName(descriptorName);
+ URL url = imp.findAbsoluteUrl(UIMAFramework.newDefaultResourceManager());
+ ResourceSpecifier specifier = createResourceCreationSpecifier(url, configurationData);
+ return UIMAFramework.produceCollectionReader(specifier);
+ }
+
+ /**
+ * Get a CollectionReader from a CollectionReader class, a type system, and a set of configuration
+ * parameters. The type system is detected automatically using
+ * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}.
+ *
+ * @param readerClass
+ * The class of the CollectionReader to be created.
+ * @param configurationData
+ * Any additional configuration parameters to be set. These should be supplied as (name,
+ * value) pairs, so there should always be an even number of parameters.
+ * @return The CollectionReader created and initialized with the type system and configuration
+ * parameters.
+ */
+ public static CollectionReader createCollectionReader(
+ Class<? extends CollectionReader> readerClass, Object... configurationData)
+ throws ResourceInitializationException {
+ TypeSystemDescription tsd = createTypeSystemDescription();
+ return createCollectionReader(readerClass, tsd, (TypePriorities) null, configurationData);
+ }
+
+ /**
+ * Get a CollectionReader from a CollectionReader class, a type system, and a set of configuration
+ * parameters.
+ *
+ * @param readerClass
+ * The class of the CollectionReader to be created.
+ * @param typeSystem
+ * A description of the types used by the CollectionReader (may be null).
+ * @param configurationData
+ * Any additional configuration parameters to be set. These should be supplied as (name,
+ * value) pairs, so there should always be an even number of parameters.
+ * @return The CollectionReader created and initialized with the type system and configuration
+ * parameters.
+ */
+ public static CollectionReader createCollectionReader(
+ Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
+ Object... configurationData) throws ResourceInitializationException {
+ return createCollectionReader(readerClass, typeSystem, (TypePriorities) null, configurationData);
+ }
+
+ public static CollectionReader createCollectionReader(
+ Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
+ String[] prioritizedTypeNames, Object... configurationData)
+ throws ResourceInitializationException {
+ TypePriorities typePriorities = createTypePriorities(prioritizedTypeNames);
+ return createCollectionReader(readerClass, typeSystem, typePriorities, configurationData);
+ }
+
+ public static CollectionReader createCollectionReader(
+ Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
+ TypePriorities typePriorities, Object... configurationData)
+ throws ResourceInitializationException {
+ CollectionReaderDescription desc = createDescription(readerClass, typeSystem, typePriorities,
+ configurationData);
+ return createCollectionReader(desc);
+ }
+
+ /**
+ * This method creates a CollectionReader from a CollectionReaderDescription adding additional
+ * configuration parameter data as desired
+ *
+ * @param configurationData
+ * configuration parameter data as name value pairs. Will override values already set in
+ * the description.
+ */
+ public static CollectionReader createCollectionReader(CollectionReaderDescription desc,
+ Object... configurationData) throws ResourceInitializationException {
+ CollectionReaderDescription descClone = (CollectionReaderDescription) desc.clone();
+ ResourceCreationSpecifierFactory.setConfigurationParameters(descClone, configurationData);
+ return UIMAFramework.produceCollectionReader(descClone);
+ }
+
+ /**
+ * A simple factory method for creating a CollectionReaderDescription with a given class, type
+ * system description, and configuration data The type system is detected automatically using
+ * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}.
+ */
+ public static CollectionReaderDescription createDescription(
+ Class<? extends CollectionReader> readerClass, Object... configurationData)
+ throws ResourceInitializationException {
+ TypeSystemDescription tsd = createTypeSystemDescription();
+ return createDescription(readerClass, tsd, (TypePriorities) null, configurationData);
+ }
+
+ /**
+ * A simple factory method for creating a CollectionReaderDescription with a given class, type
+ * system description, and configuration data
+ */
+ public static CollectionReaderDescription createDescription(
+ Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
+ Object... configurationData) throws ResourceInitializationException {
+ return createDescription(readerClass, typeSystem, (TypePriorities) null, configurationData);
+ }
+
+ public static CollectionReaderDescription createDescription(
+ Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
+ String[] prioritizedTypeNames, Object... configurationData)
+ throws ResourceInitializationException {
+ TypePriorities typePriorities = createTypePriorities(prioritizedTypeNames);
+ return createDescription(readerClass, typeSystem, typePriorities, configurationData);
+ }
+
+ public static CollectionReaderDescription createDescription(
+ Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
+ TypePriorities typePriorities, Object... configurationData)
+ throws ResourceInitializationException {
+ return createDescription(readerClass, typeSystem, typePriorities, (FsIndexCollection) null,
+ (Capability[]) null, configurationData);
+ }
+
+ public static CollectionReaderDescription createDescription(
+ Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
+ TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
+ Object... configurationData) throws ResourceInitializationException {
+
+ ensureParametersComeInPairs(configurationData);
+
+ // Extract ExternalResourceDescriptions from configurationData
+ // <ParamterName, ExternalResourceDescription> will be stored in this map
+ Map<String, ExternalResourceDescription> externalResources = ExternalResourceFactory
+ .extractExternalResourceParameters(configurationData);
+
+ // Create description normally
+ ConfigurationData cdata = createConfigurationData(configurationData);
+ return createDescription(readerClass, typeSystem, typePriorities, indexes, capabilities,
+ cdata.configurationParameters, cdata.configurationValues, externalResources);
+ }
+
+ public static CollectionReaderDescription createDescription(
+ Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
+ TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
+ ConfigurationParameter[] configurationParameters, Object[] configurationValues)
+ throws ResourceInitializationException {
+ return createDescription(readerClass, typeSystem, typePriorities, indexes, capabilities,
+ configurationParameters, configurationValues, null);
+ }
+
+ /**
+ * The factory method for creating CollectionReaderDescription objects for a given class,
+ * TypeSystemDescription, TypePriorities, capabilities, and configuration data
+ */
+ public static CollectionReaderDescription createDescription(
+ Class<? extends CollectionReader> readerClass, TypeSystemDescription typeSystem,
+ TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
+ ConfigurationParameter[] configurationParameters, Object[] configurationValues,
+ Map<String, ExternalResourceDescription> externalResources)
+ throws ResourceInitializationException {
+ // create the descriptor and set configuration parameters
+ CollectionReaderDescription desc = UIMAFramework.getResourceSpecifierFactory()
+ .createCollectionReaderDescription();
+ desc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
+ desc.setImplementationName(readerClass.getName());
+
+ ConfigurationData reflectedConfigurationData = createConfigurationData(readerClass);
+ ResourceCreationSpecifierFactory.setConfigurationParameters(desc,
+ reflectedConfigurationData.configurationParameters,
+ reflectedConfigurationData.configurationValues);
+ if (configurationParameters != null) {
+ ResourceCreationSpecifierFactory.setConfigurationParameters(desc, configurationParameters,
+ configurationValues);
+ }
+
+ // set the type system
+ if (typeSystem != null) {
+ desc.getCollectionReaderMetaData().setTypeSystem(typeSystem);
+ }
+
+ if (typePriorities != null) {
+ desc.getCollectionReaderMetaData().setTypePriorities(typePriorities);
+ }
+
+ // set indexes from the argument to this call or from the annotation present in the
+ // component if the argument is null
+ if (indexes != null) {
+ desc.getCollectionReaderMetaData().setFsIndexCollection(indexes);
+ } else {
+ desc.getCollectionReaderMetaData().setFsIndexCollection(createFsIndexCollection(readerClass));
+ }
+
+ // set capabilities from the argument to this call or from the annotation present in the
+ // component if the argument is null
+ if (capabilities != null) {
+ desc.getCollectionReaderMetaData().setCapabilities(capabilities);
+ } else {
+ Capability capability = CapabilityFactory.createCapability(readerClass);
+ if (capability != null) {
+ desc.getCollectionReaderMetaData().setCapabilities(new Capability[] { capability });
+ }
+ }
+
+ // Extract external resource dependencies
+ Collection<ExternalResourceDependency> deps = ExternalResourceInitializer
+ .getResourceDeclarations(readerClass).values();
+ desc.setExternalResourceDependencies(deps.toArray(new ExternalResourceDependency[deps.size()]));
+
+ // Bind External Resources
+ if (externalResources != null) {
+ for (Entry<String, ExternalResourceDescription> e : externalResources.entrySet()) {
+ bindExternalResource(desc, e.getKey(), e.getValue());
+ }
+ }
+
+ return desc;
+ }
+
+ /**
+ * Since the configuration parameters of a CollectionReader with the given configuration parameter
+ * data
+ *
+ * @deprecated use {@link ResourceCreationSpecifierFactory#setConfigurationParameters}
+ */
+ @Deprecated
+ public static void setConfigurationParameters(
+ CollectionReaderDescription collectionReaderDescription, Object... configurationData)
+ throws ResourceInitializationException {
+ ResourceCreationSpecifierFactory.setConfigurationParameters(collectionReaderDescription,
+ configurationData);
+ }
}