//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.uima.utils;
import org.apache.uima.UimaContext;
import uk.gov.dstl.baleen.core.history.BaleenHistory;
import uk.gov.dstl.baleen.core.pipelines.PipelineBuilder;
/**
* Helper functions for UIMA.
*/
public class UimaUtils {
private UimaUtils() {
//Private constructor for utility class
}
/**
* Get the name of the pipeline which owns this context. This is set in
* {@link PipelineBuilder}.
*
* @param context
* @return the pipeline name or "unknown"
*/
public static String getPipelineName(UimaContext context) {
Object pipelineNameValue = context.getConfigParameterValue(PipelineBuilder.PIPELINE_NAME);
String pipelineName;
if (pipelineNameValue == null || !(pipelineNameValue instanceof String)) {
pipelineName = "unknown";
} else {
pipelineName = (String) pipelineNameValue;
}
return pipelineName;
}
/**
* Should we merge distinct entities or not,
* based on the global configuration parameter <em>history.mergeDistinctEntities</em>
* (unless overridden locally)
*
* @param context
* @return true if we should, false otherwise
*/
public static boolean isMergeDistinctEntities(UimaContext context) {
Object value = context.getConfigParameterValue(BaleenHistory.MERGE_DISTINCT_ENTITIES);
if (value == null || !(value instanceof Boolean)) {
return false;
} else {
return (boolean)value;
}
}
/** Derive a standardised name for an instance based on it's pipeline and class type.
* @param pipelineName the name of the pipeline the class is running in
* @param clazz the class
* @return the name (of the form pipeline.fullclassname
*/
public static String makePipelineSpecificName(String pipelineName, Class<?> clazz) {
return clazz.getCanonicalName() + "[" + pipelineName + "]";
}
}