try{
// get the user profile from session
SessionContainer permSession = sessionContainer.getPermanentContainer();
IEngUserProfile profile = (IEngUserProfile)permSession.getAttribute(IEngUserProfile.ENG_USER_PROFILE);
// get the execution role
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;