public void service(SourceBean serviceRequest, SourceBean serviceResponse) throws GeoEngineException {
GeoEngineInstance geoEngineInstance;
Map env;
byte[] analysisStateRowData;
GeoEngineAnalysisState analysisState = null;
String executionContext;
String executionId;
String documentLabel;
String outputType;
Monitor hitsPrimary = null;
Monitor hitsByDate = null;
Monitor hitsByUserId = null;
Monitor hitsByDocumentId = null;
Monitor hitsByExecutionContext = null;
logger.debug("IN");
try {
setEngineName(ENGINE_NAME);
super.service(serviceRequest, serviceResponse);
//if(true) throw new SpagoBIEngineStartupException(getEngineName(), "Test exception");
logger.debug("User Id: " + getUserId());
logger.debug("Audit Id: " + getAuditId());
logger.debug("Document Id: " + getDocumentId());
//logger.debug("Template: " + getTemplateAsSourceBean());
hitsPrimary = MonitorFactory.startPrimary("GeoEngine.requestHits");
hitsByDate = MonitorFactory.start("GeoEngine.requestHits." + DateFormat.getDateInstance(DateFormat.SHORT).format(new Date()));
hitsByUserId = MonitorFactory.start("GeoEngine.requestHits." + getUserId());
hitsByDocumentId = MonitorFactory.start("GeoEngine.requestHits." + getDocumentId());
executionContext = getAttributeAsString( EXECUTION_CONTEXT );
logger.debug("Parameter [" + EXECUTION_CONTEXT + "] is equal to [" + executionContext + "]");
executionId = getAttributeAsString( EXECUTION_ID );
logger.debug("Parameter [" + EXECUTION_ID + "] is equal to [" + executionId + "]");
documentLabel = getAttributeAsString( DOCUMENT_LABEL );
logger.debug("Parameter [" + DOCUMENT_LABEL + "] is equal to [" + documentLabel + "]");
outputType = getAttributeAsString(OUTPUT_TYPE);
logger.debug("Parameter [" + OUTPUT_TYPE + "] is equal to [" + outputType + "]");
logger.debug("Execution context: " + executionContext);
String isDocumentCompositionModeActive = (executionContext != null && executionContext.equalsIgnoreCase("DOCUMENT_COMPOSITION") )? "TRUE": "FALSE";
logger.debug("Document composition mode active: " + isDocumentCompositionModeActive);
hitsByExecutionContext = MonitorFactory.start("GeoEngine.requestHits." + (isDocumentCompositionModeActive.equalsIgnoreCase("TRUE")?"compositeDocument": "singleDocument"));
env = getEnv("TRUE".equalsIgnoreCase(isDocumentCompositionModeActive), documentLabel, executionId);
if( outputType != null ) {
env.put(GeoEngineConstants.ENV_OUTPUT_TYPE, outputType);
}
try {
geoEngineInstance = GeoEngine.createInstance(getTemplateAsSourceBean(), env);
} catch (Throwable t) {
Throwable rootException = t;
while(rootException.getCause() != null) {
rootException = rootException.getCause();
}
String str = rootException.getMessage()!=null? rootException.getMessage(): rootException.getClass().getName();
SpagoBIEngineStartupException se = new SpagoBIEngineStartupException(getEngineName(), "Impossible to create engine instance. \nThe root cause of the error is: " + str, t);
throw se;
}
geoEngineInstance.setAnalysisMetadata( getAnalysisMetadata() );
analysisStateRowData = getAnalysisStateRowData();
if(analysisStateRowData != null) {
logger.debug("AnalysisStateRowData: " + new String(analysisStateRowData));
analysisState = new GeoEngineAnalysisState( );
analysisState.load( analysisStateRowData );
logger.debug("AnalysisState: " + analysisState.toString());
} else {
logger.debug("AnalysisStateRowData: NULL");
}
if(analysisState != null) {
geoEngineInstance.setAnalysisState( analysisState );