Package it.eng.spagobi.engines.commonj.utils

Examples of it.eng.spagobi.engines.commonj.utils.ProcessesStatusContainer


      pid = getAttributeAsString( PID );
      logger.debug("Parameter [" + PID + "] is equals to [" + pid + "]");     
      Assert.assertTrue(!StringUtilities.isEmpty( pid ), "Parameter [" + PID + "] cannot be null or empty");
     
     
      ProcessesStatusContainer processesStatusContainer = ProcessesStatusContainer.getInstance();
      Object o=processesStatusContainer.getPidContainerMap().get(pid);

      // if process still in session stop the process and delete the attribute, otherwise it could have been finished
      if(o!=null){
        CommonjWorkContainer container=(CommonjWorkContainer)o;
        FooRemoteWorkItem fooRwi=container.getFooRemoteWorkItem();
        // release the resource
        fooRwi.release();
        // Use it to give time to set the status
        Thread.sleep(1000);
        statusWI=container.getWorkItem().getStatus();
        //session.removeAttribute("SBI_PROCESS_"+document_id);
        processesStatusContainer.getPidContainerMap().remove(pid);


      } // if no more in session is completed
      else statusWI=WorkEvent.WORK_COMPLETED;
View Full Code Here




      // Get the container object from session: it MUST be present if start button is enabled
      //Object o=session.getAttribute("SBI_PROCESS_"+document_id);
      ProcessesStatusContainer processesStatusContainer = ProcessesStatusContainer.getInstance();
      Object o=processesStatusContainer.getPidContainerMap().get(pId);
      CommonjWorkContainer container=(CommonjWorkContainer)o;

      WorkManager wm=container.getWm();
      Work workToDo=container.getWork();
      CommonjWorkListener listener=container.getListener();
      FooRemoteWorkItem fooRemoteWorkItem=wm.buildFooRemoteWorkItem(workToDo, listener);

      int statusWI;

      // Check if work was accepted
      if(fooRemoteWorkItem.getStatus()==WorkEvent.WORK_ACCEPTED){
        container.setFooRemoteWorkItem(fooRemoteWorkItem);
        // run work!
        WorkItem workItem=(WorkItem)wm.runWithReturnWI(workToDo, listener);
        container.setWorkItem(workItem);
        statusWI=workItem.getStatus();
        // put new Object in singleton!!!

        processesStatusContainer.getPidContainerMap().put(pId, container);
        //session.setAttribute("SBI_PROCESS_"+document_id, container);

        // if not in action mode don't send the response
        if(actionMode){
          try {
View Full Code Here

  public void configure(HttpSession session, CommonjWork work, Map parameters, String documentUnique, boolean isLabelthrows 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);

        }
//      }
View Full Code Here

      logger.debug("OUT");
    }

    // clean the singleton!!!
    if(pid != null){
      ProcessesStatusContainer processesStatusContainer = ProcessesStatusContainer.getInstance();
      processesStatusContainer.getPidContainerMap().remove(pid);
      logger.debug("removed from singleton process item with pid "+pid);
    }
    logger.info("OUT");
  }
View Full Code Here

//      logger.error("could not retrieve document id");
//      throw new SpagoBIEngineServiceException(getActionName(), "could not find document id");
//    }

    CommonjWorkContainer container=null;
    ProcessesStatusContainer processesStatusContainer = ProcessesStatusContainer.getInstance();
    Object o=processesStatusContainer.getPidContainerMap().get(pid);
    //recover from session, if does not find means work is completed
    //Object o=session.getAttribute("SBI_PROCESS_"+document_id);
    try{
      int statusWI;

      if(o!=null){      // object found in session, work could be not started, running or completed

        container=(CommonjWorkContainer)o;
        FooRemoteWorkItem fooRwi=container.getFooRemoteWorkItem();
        WorkItem wi=container.getWorkItem();

        // if WorkItem is not set means work has never been started
        if(fooRwi!=null && wi!=null){
          statusWI=wi.getStatus();
          // if finds that work is finished delete the attribute from session
          if(statusWI==WorkEvent.WORK_COMPLETED){
            logger.debug("Work is finished - remove from session");
            //session.removeAttribute("SBI_PROCESS_"+document_id);
            processesStatusContainer.getPidContainerMap().remove(pid);
          }
        }
        else{
          // if not workitem is set means that is not started yet or has been cancelled by listener!?!
          statusWI=0;
View Full Code Here

TOP

Related Classes of it.eng.spagobi.engines.commonj.utils.ProcessesStatusContainer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.