CoreContextManager contextManager = new CoreContextManager(new SpagoBISessionContainer(sessionContainer),
new LightNavigatorContextRetrieverStrategy(requestSB));
ExecutionInstance instance = contextManager.getExecutionInstance(ExecutionInstance.class.getName());
String executionRole = instance.getExecutionRole();
Integer objId = DAOFactory.getBIObjectDAO().loadBIObjectByLabel(objLabel).getId();
BIObject obj = DAOFactory.getBIObjectDAO().loadBIObjectForExecutionByIdAndRole(objId, executionRole);
if (obj == null){
logger.error("Cannot obtain engine url. Document with label " + objLabel +" doesn't exist into database.");
List l = new ArrayList();
l.add(objLabel);
throw new EMFUserError(EMFErrorSeverity.ERROR, "1005", l, messageBundle);
}
Engine engine = obj.getEngine();
// GET THE TYPE OF ENGINE (INTERNAL / EXTERNAL) AND THE SUITABLE BIOBJECT TYPES
Domain engineType = null;
Domain compatibleBiobjType = null;
try {
engineType = DAOFactory.getDomainDAO().loadDomainById(engine.getEngineTypeId());
compatibleBiobjType = DAOFactory.getDomainDAO().loadDomainById(engine.getBiobjTypeId());
} catch (EMFUserError error) {
logger.error("Error retrieving document's engine information", error);
return "1009|";
} catch (Exception error) {
logger.error("Error retrieving document's engine information", error);
return "1009|";
}
String compatibleBiobjTypeCd = compatibleBiobjType.getValueCd();
String biobjTypeCd = obj.getBiObjectTypeCode();
// CHECK IF THE BIOBJECT IS COMPATIBLE WITH THE TYPES SUITABLE FOR THE ENGINE
if (!compatibleBiobjTypeCd.equalsIgnoreCase(biobjTypeCd)) {
// the engine document type and the biobject type are not compatible
logger.error("Engine cannot execute input document type: " +
"the engine " + engine.getName() + " can execute '" + compatibleBiobjTypeCd + "' type documents " +
"while the input document is a '" + biobjTypeCd + "'.");
Vector params = new Vector();
params.add(engine.getName());
params.add(compatibleBiobjTypeCd);
params.add(biobjTypeCd);
//errorHandler.addError(new EMFUserError(EMFErrorSeverity.ERROR, 2002, params));
return "2002|";
}
// IF USER CAN'T EXECUTE THE OBJECT RETURN
if (!ObjectsAccessVerifier.canSee(obj, profile)) return "1010|";
//get object configuration
DocumentCompositionConfiguration docConfig = null;
docConfig = (DocumentCompositionConfiguration)contextManager.get("docConfig");
Document document = null;
//get correct document configuration
List lstDoc = docConfig.getLabelsArray();
boolean foundDoc = false;
for (int i = 0; i < lstDoc.size(); i++){
document = (Document)docConfig.getDocument((String)lstDoc.get(i));
if (document != null){
if (!obj.getLabel().equalsIgnoreCase(document.getSbiObjLabel()))
continue;
else{
foundDoc = true;
break;
}
}
}
if (!foundDoc){
List l = new ArrayList();
l.add(obj.getLabel());
EMFUserError userError = new EMFUserError(EMFErrorSeverity.ERROR, 1079, l);
logger.error("The object with label " + obj.getLabel() + " hasn't got a document into template" );
return "1002|";
}
String className = obj.getEngine().getClassName();
if (className == null || className.trim().equals("")) {
// external engine
//baseUrlReturn = obj.getEngine().getUrl() + "?";
baseUrlReturn = obj.getEngine().getUrl();
if (baseUrlReturn.indexOf("?") < 0) baseUrlReturn += "?";
String driverClassName = obj.getEngine().getDriverName();
IEngineDriver aEngineDriver = (IEngineDriver)Class.forName(driverClassName).newInstance();
Map mapPars = aEngineDriver.getParameterMap(obj, profile, executionRole);
String id = (String) requestSB.getAttribute("vpId");
if (id != null){
IViewpointDAO VPDAO = DAOFactory.getViewpointDAO();