public void configure(HttpSession session, CommonjWork work, Map parameters, String documentUnique, boolean isLabel) throws WorkNotFoundException, WorkExecutionException {
logger.debug("IN");
File executableWorkDir;
ProcessesStatusContainer processesStatusContainer = ProcessesStatusContainer.getInstance();
try {
logger.debug("Starting configure method of work : " +
"name = [" + work.getWorkName() + "] ; " +
"to start class= [" + work.getClassName() + "] ; ");
executableWorkDir = worksRepository.getExecutableWorkDir(work);
if (!worksRepository.containsWork(work)) {
logger.error("work [" +
worksRepository.getRootDir().getPath()+"/"+work.getWorkName()+ "] not found in repository");
throw new WorkNotFoundException("work [" +
worksRepository.getRootDir().getPath()+"/"+work.getWorkName()+ "] not found in repository");
}
logger.debug("Work [" + work.getWorkName() +"] succesfully found in repository");
// load in memory all jars found in folder!
loadJars(work, executableWorkDir);
//String classToLoad="prova.Studente";
String classToLoad=work.getClassName();
WorkManager wm = new WorkManager();
logger.debug("work manager instanziated");
AuditServiceProxy auditServiceProxy=null;
Object auditO=parameters.get(EngineConstants.ENV_AUDIT_SERVICE_PROXY);
if(auditO!=null) auditServiceProxy=(AuditServiceProxy)auditO;
Object eventO=parameters.get(EngineConstants.ENV_EVENT_SERVICE_PROXY);
EventServiceProxy eventServiceProxy=null;
eventServiceProxy=(EventServiceProxy)eventO;
Object executionRoleO=parameters.get(SpagoBIConstants.EXECUTION_ROLE);
String executionRole=executionRoleO!=null ? executionRoleO.toString() : "";
// check if it is already in sessione means it is already running!!
CommonjWorkContainer container=new CommonjWorkContainer();
// no more used check in sesssion!
//boolean already=container.isInSession(documentId, session);
// if(already==false){
CommonjWorkListener listener = new CommonjWorkListener(auditServiceProxy, eventServiceProxy);
if (documentUnique!=null && isLabel) {
listener.setBiObjectLabel(documentUnique);
}
else if (documentUnique!=null && !isLabel) {
listener.setBiObjectID(documentUnique);
}
listener.setExecutionRole(executionRole);
listener.setWorkName(work.getWorkName());
listener.setWorkClass(work.getClassName());
logger.info("Class to run "+classToLoad);
logger.debug("listener ready");
Class clazz=null;
try {
clazz = Thread.currentThread().getContextClassLoader().loadClass(classToLoad);
} catch (ClassNotFoundException e) {
logger.debug("class loaded not foud...",e);
}
Object obj = clazz.newInstance();
logger.debug("class loaded "+classToLoad);
SpagoBIWork workToLaunch=null;
// class loaded could be instance of CmdExecWork o di Work, testa se � il primo, se no � l'altra
if (obj instanceof CmdExecWork) {
logger.debug("Class specified extends CmdExecWork");
workToLaunch = (CmdExecWork) obj;
workToLaunch.setPid(work.getPId());
((CmdExecWork)obj).setCommand(work.getCommand());
((CmdExecWork)obj).setCommandEnvironment(work.getCommand_environment());
((CmdExecWork)obj).setCmdParameters(work.getCmdParameters());
((CmdExecWork)obj).setClasspathParameters(work.getClasspathParameters());
workToLaunch.setAnalyticalParameters(work.getAnalyticalParameters());
workToLaunch.setSbiParameters(work.getSbiParametersMap());
if(isLabel) workToLaunch.setSbiLabel(documentUnique);
}
else
if (obj instanceof SpagoBIWork) {
logger.debug("Class specified extends Work");
workToLaunch=(SpagoBIWork)obj;
workToLaunch.setPid(work.getPId());
workToLaunch.setSbiParameters(work.getSbiParametersMap());
workToLaunch.setAnalyticalParameters(work.getAnalyticalParameters());
if(isLabel) workToLaunch.setSbiLabel(documentUnique);
}
else{
logger.error("Class you want to launch should extend SpagoBIWork or CmdExecWork");
return;
}
container.setPid(work.getPId());
container.setWork(workToLaunch);
container.setListener(listener);
container.setName(work.getWorkName());
container.setWm(wm);
//container.setInSession(documentId, session);
processesStatusContainer.getPidContainerMap().put(work.getPId(), container);
for (Iterator iterator = processesStatusContainer.getPidContainerMap().keySet().iterator(); iterator.hasNext();) {
String id = (String) iterator.next();
logger.debug("ID: "+id);
}
// }