*/
public BaseCollectionReader getCollectionReader() throws ResourceConfigurationException {
checkForErrors();
BaseCollectionReader colreader = null;
try {
CpeCollectionReader reader = (getCpeDescriptor().getAllCollectionCollectionReaders())[0];
if (reader == null) {
throw new ResourceConfigurationException(InvalidXMLException.ELEMENT_NOT_FOUND,
new Object[] { "<collectionReader>", "<cpeDescriptor>" }, new Exception(
CpmLocalizedMessage.getLocalizedMessage(CPMUtils.CPM_LOG_RESOURCE_BUNDLE,
"UIMA_CPM_EXP_missing_required_element__WARNING", new Object[] {
Thread.currentThread().getName(), "<collectionReader>" })));
}
CpeCollectionReaderIterator cit = reader.getCollectionIterator();
if (cit == null || cit.getDescriptor() == null ||
(cit.getDescriptor().getInclude() == null && cit.getDescriptor().getImport() == null)) {
throw new ResourceConfigurationException(InvalidXMLException.ELEMENT_NOT_FOUND,
new Object[] { "<include>", "<collectionIterator>" }, new Exception(
CpmLocalizedMessage.getLocalizedMessage(CPMUtils.CPM_LOG_RESOURCE_BUNDLE,
"UIMA_CPM_EXP_missing_required_element__WARNING", new Object[] {
Thread.currentThread().getName(), "<include> or <import>" })));
}
if (cit.getDescriptor().getInclude() != null && cit.getDescriptor().getInclude().get() == null) {
throw new ResourceConfigurationException(InvalidXMLException.ELEMENT_NOT_FOUND,
new Object[] { "<href>", "<collectionIterator>" }, new Exception(
CpmLocalizedMessage.getLocalizedMessage(CPMUtils.CPM_LOG_RESOURCE_BUNDLE,
"UIMA_CPM_EXP_missing_attribute_from_xml_element__WARNING",
new Object[] { Thread.currentThread().getName(), "<href>",
"<collectionIterator>" })));
}
URL descriptorUrl = cit.getDescriptor().findAbsoluteUrl(getResourceManager());
// create new collection reader from the descriptor
XMLInputSource in1 = new XMLInputSource(descriptorUrl);
ResourceSpecifier colReaderSp = UIMAFramework.getXMLParser()
.parseCollectionReaderDescription(in1);
overrideParameterSettings(colReaderSp, cit.getConfigurationParameterSettings(), "Collection Reader");
// compute sofa mapping for the CollectionReader
CpeSofaMappings sofanamemappings = cit.getSofaNameMappings();
HashMap sofamap = new HashMap();
if (sofanamemappings != null) {
CpeSofaMapping[] sofaNameMappingArray = sofanamemappings.getSofaNameMappings();
for (int i = 0; sofaNameMappingArray != null && i < sofaNameMappingArray.length; i++) {
CpeSofaMapping aSofaMap = sofaNameMappingArray[i];
// if no component sofa name, then set it to default
if (aSofaMap.getComponentSofaName() == null)
aSofaMap.setComponentSofaName(CAS.NAME_DEFAULT_TEXT_SOFA);
sofamap.put(aSofaMap.getComponentSofaName(), aSofaMap.getCpeSofaName());
}
}
// create child UimaContext for the CollectionReader
UimaContextAdmin collectionReaderContext = uimaContext.createChild("_CollectionReader",
sofamap);
Map additionalParams = new HashMap();
additionalParams.put(Resource.PARAM_UIMA_CONTEXT, collectionReaderContext);
colreader = (BaseCollectionReader) UIMAFramework.produceResource(BaseCollectionReader.class,
colReaderSp, getResourceManager(), additionalParams);
//set up CAS Initializer
CpeCollectionReaderCasInitializer casInit = reader.getCasInitializer();
if (casInit != null) {
if (casInit.getDescriptor() == null) {
throw new ResourceConfigurationException(InvalidXMLException.ELEMENT_NOT_FOUND,
new Object[] { "<descriptor>", "<casInitializer>" }, new Exception(
CpmLocalizedMessage.getLocalizedMessage(CPMUtils.CPM_LOG_RESOURCE_BUNDLE,