mon.setTaskName("Initializing");
Handler handler = initConsoleLink(config.getScriptFilePath().lastSegment());
CAS cas = null;
AnalysisEngine ae = null;
try {
File specFile = new File(engine);
XMLInputSource in = new XMLInputSource(specFile);
ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
ResourceManager resMgr = UIMAFramework.newDefaultResourceManager();
resMgr.setDataPath(rootPath.toPortableString());
ae = UIMAFramework.produceAnalysisEngine(specifier, resMgr, null);
} catch (Exception e) {
String message = e.getMessage();
DLTKCore.error(message, e);
clearConsoleLink(handler);
throw new CoreException(new Status(IStatus.ERROR, RutaIdeUIPlugin.PLUGIN_ID,
ScriptLaunchConfigurationConstants.ERR_INTERNAL_ERROR, message, e));
}
try {
if ("debug".equals(launchMode)) {
ae.setConfigParameterValue(RutaEngine.PARAM_DEBUG, true);
ae.setConfigParameterValue(RutaEngine.PARAM_DEBUG_WITH_MATCHES, true);
ae.setConfigParameterValue(RutaEngine.PARAM_PROFILE, true);
ae.setConfigParameterValue(RutaEngine.PARAM_STATISTICS, true);
ae.setConfigParameterValue(RutaEngine.PARAM_CREATED_BY, true);
ae.reconfigure();
}
} catch (Exception e) {
clearConsoleLink(handler);
String message = e.getMessage();
DLTKCore.error(message, e);
throw new CoreException(new Status(IStatus.ERROR, RutaIdeUIPlugin.PLUGIN_ID,
ScriptLaunchConfigurationConstants.ERR_INTERNAL_ERROR, message, e));
}
mon.worked(1);
for (File each : inputFiles) {
mon.setTaskName("Processing " + each.getName());
if (mon.isCanceled()) {
break;
}
try {
if (cas == null) {
cas = ae.newCAS();
} else {
cas.reset();
}
if (each.getName().endsWith("xmi")) {
XmiCasDeserializer.deserialize(new FileInputStream(each), cas, true);
} else {
cas.setDocumentText(getText(each));
}
if (mon.isCanceled()) {
break;
}
RutaEngine.removeSourceDocumentInformation(cas);
RutaEngine.addSourceDocumentInformation(cas, each);
ae.process(cas);
mon.worked(1);
if (mon.isCanceled()) {
break;
}
File outputFile = new File(outputDir, each.getName() + ".xmi");
mon.setTaskName("Saving " + outputFile.getName());
writeXmi(cas, outputFile);
mon.worked(1);
} catch (Exception e) {
if (cas != null) {
cas.release();
}
if (ae != null) {
ae.destroy();
}
clearConsoleLink(handler);
String message = e.getMessage();
DLTKCore.error(message, e);
throw new CoreException(new Status(IStatus.ERROR, RutaIdeUIPlugin.PLUGIN_ID,
ScriptLaunchConfigurationConstants.ERR_INTERNAL_ERROR, message, e));
}
}
if (cas != null) {
cas.release();
}
if (ae != null) {
ae.destroy();
}
IFolder folder = outputFolder;
folder.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
clearConsoleLink(handler);
mon.done();