//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.uima;
import java.util.Map;
import org.apache.uima.UIMAException;
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.fit.factory.AnalysisEngineFactory;
import org.apache.uima.jcas.JCas;
import org.apache.uima.resource.ResourceInitializationException;
import org.junit.After;
import org.junit.Before;
import uk.gov.dstl.baleen.core.jobs.BaleenJob;
import uk.gov.dstl.baleen.core.jobs.BaleenJobManager;
import uk.gov.dstl.baleen.exceptions.BaleenException;
import uk.gov.dstl.baleen.uima.testing.JCasSingleton;
@SuppressWarnings("unchecked")
public class AbstractBaleenTaskTest {
private BaleenJobManager jobManager;
private JCas jCas;
@Before
public void beforeAbstractBaleenTaskTest() throws UIMAException {
jobManager = new BaleenJobManager();
jCas = JCasSingleton.getJCasInstance();
}
@After
public void afterAbstractBaleenTaskTest() {
jCas.release();
}
protected AnalysisEngine create(Class<? extends BaleenTask> taskClass, Object... args)
throws ResourceInitializationException {
return AnalysisEngineFactory.createEngine(taskClass, args);
}
protected AnalysisEngine create(Class<? extends BaleenTask> taskClass)
throws ResourceInitializationException {
return AnalysisEngineFactory.createEngine(taskClass);
}
private String getYaml(Class<? extends BaleenTask>... taskClasses) {
StringBuilder sb = new StringBuilder("schedule: uk.gov.dstl.baleen.uima.testing.TestSchedule\ntasks:\n");
for (Class<? extends BaleenTask> taskClass : taskClasses) {
sb.append(String.format("- class: %s\n", taskClass.getName()));
}
return sb.toString();
}
private String getYaml(Class<? extends BaleenTask> taskClass, Map<String, String> params) {
StringBuilder sb = new StringBuilder(getYaml(taskClass));
if (params != null) {
for (Map.Entry<String, String> e : params.entrySet()) {
sb.append(String.format(" %s: %s\n", e.getKey(), e.getValue()));
}
}
return params.toString();
}
protected BaleenJob wrapInJob(Class<? extends BaleenTask>... taskClasses) throws BaleenException {
String yaml = getYaml(taskClasses);
return (BaleenJob) jobManager.create("testjob", yaml);
}
protected BaleenJob wrapInJob(Class<? extends BaleenTask> taskClass, Map<String, String> params)
throws BaleenException {
String yaml = getYaml(taskClass, params);
return (BaleenJob) jobManager.create("testjob", yaml);
}
protected JobSettings execute(AnalysisEngine... analysisEngines) throws AnalysisEngineProcessException {
jCas.reset();
for (AnalysisEngine ae : analysisEngines) {
ae.process(jCas);
}
return new JobSettings(jCas);
}
public BaleenJobManager getJobManager() {
return jobManager;
}
public JCas getJCas() {
return jCas;
}
}