package org.opensextant.service.processing; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import gate.Corpus; import gate.CorpusController; import gate.Factory; import gate.creole.ExecutionException; import gate.creole.ResourceInstantiationException; public class DocumentProcessor { private CorpusController controller; private Corpus corpus; /** Log object. */ private static final Logger LOGGER = LoggerFactory.getLogger(DocumentProcessor.class); public DocumentProcessor(CorpusController cont) { this.controller = cont; } public synchronized void cleanup() { Factory.deleteResource(controller); if (corpus != null) { Factory.deleteResource(corpus); } } public void process(gate.Document doc) { if (corpus == null) { try { corpus = Factory.newCorpus("DP Corpus"); } catch (ResourceInstantiationException e) { LOGGER.error("Couldnt create new corpus", e); } } try { corpus.add(doc); controller.setCorpus(corpus); try { controller.execute(); } catch (ExecutionException e) { LOGGER.error("Couldnt execute document processing", e); } } finally { controller.setCorpus(null); corpus.clear(); } } }