Package it.eng.spagobi.engines.dossier.modules

Source Code of it.eng.spagobi.engines.dossier.modules.DossierManagementModule

/**

SpagoBI - The Business Intelligence Free Platform

Copyright (C) 2005-2008 Engineering Ingegneria Informatica S.p.A.

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

**/
package it.eng.spagobi.engines.dossier.modules;

import it.eng.spago.base.SourceBean;
import it.eng.spago.base.SourceBeanException;
import it.eng.spago.dispatching.module.AbstractModule;
import it.eng.spago.error.EMFErrorCategory;
import it.eng.spago.error.EMFErrorHandler;
import it.eng.spago.error.EMFErrorSeverity;
import it.eng.spago.error.EMFInternalError;
import it.eng.spago.error.EMFUserError;
import it.eng.spago.navigation.LightNavigationManager;
import it.eng.spago.validation.EMFValidationError;
import it.eng.spagobi.analiticalmodel.document.bo.BIObject;
import it.eng.spagobi.analiticalmodel.document.dao.IBIObjectDAO;
import it.eng.spagobi.behaviouralmodel.analyticaldriver.bo.BIObjectParameter;
import it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.IBIObjectParameterDAO;
import it.eng.spagobi.commons.constants.ObjectsTreeConstants;
import it.eng.spagobi.commons.constants.SpagoBIConstants;
import it.eng.spagobi.commons.dao.DAOFactory;
import it.eng.spagobi.commons.dao.IRoleDAO;
import it.eng.spagobi.commons.utilities.GeneralUtilities;
import it.eng.spagobi.commons.utilities.SpagoBITracer;
import it.eng.spagobi.engines.dossier.bo.ConfiguredBIDocument;
import it.eng.spagobi.engines.dossier.bo.DossierAnalyticalDriversManager;
import it.eng.spagobi.engines.dossier.bo.WorkflowConfiguration;
import it.eng.spagobi.engines.dossier.constants.DossierConstants;
import it.eng.spagobi.engines.dossier.dao.DossierDAOHibImpl;
import it.eng.spagobi.engines.dossier.dao.IDossierDAO;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.fileupload.FileItem;
import org.apache.log4j.Logger;

/**
* This class implements a module which  handles pamphlets management.
*/
public class DossierManagementModule extends AbstractModule {
 
  static private Logger logger = Logger.getLogger(DossierManagementModule.class);

  /* (non-Javadoc)
   * @see it.eng.spago.dispatching.module.AbstractModule#init(it.eng.spago.base.SourceBean)
   */
  public void init(SourceBean config) {
  }

  /**
   * Reads the operation asked by the user and calls the right operation handler.
   *
   * @param request The Source Bean containing all request parameters
   * @param response The Source Bean containing all response parameters
   *
   * @throws exception If an exception occurs
   * @throws Exception the exception
   */
  public void service(SourceBean request, SourceBean response) throws Exception {
    logger.debug("IN");
    EMFErrorHandler errorHandler = getErrorHandler();
    String operation = (String) request.getAttribute(SpagoBIConstants.OPERATION);
    logger.debug("Begin of detail Engine modify/visualization service with operation =" +operation);
    String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
    if (tempFolder == null) {
      tempFolder = initDossier(request, response);
      request.setAttribute(DossierConstants.DOSSIER_TEMP_FOLDER, tempFolder);
    }
    response.setAttribute(DossierConstants.DOSSIER_TEMP_FOLDER, tempFolder);
    try{
      if((operation==null)||(operation.trim().equals(""))) {
        EMFUserError userError = new EMFUserError(EMFErrorSeverity.ERROR, "100", "component_dossier_messages");
        logger.error("The operation parameter is null");
        throw userError;
      } else if(operation.equalsIgnoreCase(SpagoBIConstants.NEW_DOCUMENT_TEMPLATE)) {
        newTemplateHandler(request, response);
      } else if(operation.equalsIgnoreCase(SpagoBIConstants.EDIT_DOCUMENT_TEMPLATE)) {
        dossierDetailHandler(request, response);
      } else if (operation.equalsIgnoreCase(DossierConstants.OPERATION_NEW_CONFIGURED_DOCUMENT)) {
        newConfiguredDocumentHandler(request, response);
      } else if (operation.equalsIgnoreCase(DossierConstants.OPERATION_SAVE_CONFIGURED_DOCUMENT)) {
        saveConfiguredDocumentHandler(request, response);
      } else if (operation.equalsIgnoreCase(DossierConstants.OPERATION_DETAIL_DOSSIER)) {
        dossierDetailHandler(request, response);
      } else if (operation.equalsIgnoreCase(DossierConstants.OPERATION_DELETE_CONFIGURED_DOCUMENT)) {
        deleteConfiguredDocumentHandler(request, response);
      } else if (operation.equalsIgnoreCase(DossierConstants.OPERATION_DETAIL_CONFIGURED_DOCUMENT)) {
        detailConfiguredDocumentHandler(request, response);
      } else if (operation.equalsIgnoreCase(DossierConstants.OPERATION_SAVE_DETAIL_DOSSIER)) {
        saveDossierDetailHandler(request, response);
      } else if (operation.equalsIgnoreCase(DossierConstants.OPERATION_LOAD_PRESENTATION_TEMPLATE)) {
        loadPresentationTemplateHandler(request, response);
      } else if (operation.equalsIgnoreCase(DossierConstants.OPERATION_LOAD_PROCESS_DEFINITION_FILE)) {
        loadProcessDefinitionFileHandler(request, response);
      } else if (operation.equalsIgnoreCase(DossierConstants.OPERATION_EXIT_FROM_DETAIL)) {
        exitFromDetailHandler(request, response);
      }
    } catch (EMFUserError eex) {
      errorHandler.addError(eex);
      return;
    } catch (Exception ex) {
      SpagoBITracer.major(DossierConstants.NAME_MODULE, this.getClass().getName(),
                      "service", "Error while processin request", ex);
      EMFUserError emfue = new EMFUserError(EMFErrorSeverity.ERROR, 100);
      EMFInternalError internalError = new EMFInternalError(EMFErrorSeverity.ERROR, ex);
      errorHandler.addError(internalError);
      return;
    } finally {
      logger.debug("OUT");
    }
  }

  private void exitFromDetailHandler(SourceBean request, SourceBean response) throws EMFUserError, SourceBeanException {
    logger.debug("IN");
    String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
    IDossierDAO dossierDao = DAOFactory.getDossierDAO();
    // cleans temp folder
    dossierDao.clean(tempFolder);
    // propagates dossier id (usefull to return to document main detail page if light navigator is disabled)
    Integer dossierId = dossierDao.getDossierId(tempFolder);
    response.setAttribute(ObjectsTreeConstants.OBJECT_ID, dossierId.toString());
    response.setAttribute(DossierConstants.PUBLISHER_NAME, "ExitFromDossierDetailLoop");
    logger.debug("OUT");
  }

  private String initDossier(SourceBean request, SourceBean response) throws EMFUserError, SourceBeanException {
    logger.debug("IN");
    String objIdStr = (String) request.getAttribute(SpagoBIConstants.OBJECT_ID);
    Integer objId = new Integer(objIdStr);
    BIObject dossier = DAOFactory.getBIObjectDAO().loadBIObjectById(objId);
    IDossierDAO dossierDao = DAOFactory.getDossierDAO();
    String tempFolder = dossierDao.init(dossier);
    logger.debug("OUT");
    return tempFolder;
  }

  private void loadProcessDefinitionFileHandler(SourceBean request,
      SourceBean response) throws SourceBeanException, EMFUserError {
    logger.debug("IN");
    try {
      String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
      IDossierDAO dossierDao = new DossierDAOHibImpl();
      FileItem upFile = (FileItem) request.getAttribute("UPLOADED_FILE");
      if (upFile != null) {
        String fileName = GeneralUtilities.getRelativeFileNames(upFile.getName());
        if (upFile.getSize() == 0) {
          EMFValidationError error = new EMFValidationError(EMFErrorSeverity.ERROR, "uploadFile", "201");
          getErrorHandler().addError(error);
          return;
        }
        int maxSize = GeneralUtilities.getTemplateMaxSize();
        if (upFile.getSize() > maxSize) {
          EMFValidationError error = new EMFValidationError(EMFErrorSeverity.ERROR, "uploadFile", "202");
          getErrorHandler().addError(error);
          return;
        }
        if (!fileName.toUpperCase().endsWith(".XML")) {
          List params = new ArrayList();
          params.add("xml");
          EMFUserError error = new EMFValidationError(EMFErrorSeverity.ERROR, "UPLOADED_FILE", "107", params, null, "component_dossier_messages");
          getErrorHandler().addError(error);
        } else {
          byte[] fileContent = upFile.get();
          dossierDao.storeProcessDefinitionFile(fileName, fileContent, tempFolder);
        }
      } else {
        logger.warn("Upload file was null!!!");
      }
     
     
//      UploadedFile upFile = (UploadedFile) request.getAttribute("UPLOADED_FILE");
//      if (upFile != null) {
//        String fileName = upFile.getFileName();
//        if (!fileName.toUpperCase().endsWith(".XML")) {
//          List params = new ArrayList();
//          params.add("xml");
//          EMFUserError error = new EMFValidationError(EMFErrorSeverity.ERROR, "UPLOADED_FILE", "107", params, null, "component_dossier_messages");
//          getErrorHandler().addError(error);
//        } else {
//          byte[] fileContent = upFile.getFileContent();
//          dossierDao.storeProcessDefinitionFile(fileName, fileContent, tempFolder);
//        }
//      } else {
//        logger.warn("Upload file was null!!!");
//      }
      response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierLoopbackDossierDetail");
    } finally {
      logger.debug("OUT");
    }
  }

  private void loadPresentationTemplateHandler(SourceBean request,
      SourceBean response) throws SourceBeanException, EMFUserError {
    logger.debug("IN");
    try {
      String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
      IDossierDAO dossierDao = new DossierDAOHibImpl();
      FileItem upFile = (FileItem) request.getAttribute("UPLOADED_FILE");
      if (upFile != null) {
        String fileName = GeneralUtilities.getRelativeFileNames(upFile.getName());
        if (upFile.getSize() == 0) {
          EMFValidationError error = new EMFValidationError(EMFErrorSeverity.ERROR, "uploadFile", "201");
          getErrorHandler().addError(error);
          return;
        }
        int maxSize = GeneralUtilities.getTemplateMaxSize();
        if (upFile.getSize() > maxSize) {
          EMFValidationError error = new EMFValidationError(EMFErrorSeverity.ERROR, "uploadFile", "202");
          getErrorHandler().addError(error);
          return;
        }
        if (!fileName.toUpperCase().endsWith(".PPT")) {
          List params = new ArrayList();
          params.add("ppt");
          EMFUserError error = new EMFValidationError(EMFErrorSeverity.ERROR, "UPLOADED_FILE", "107", params, null, "component_dossier_messages");
          getErrorHandler().addError(error);
        } else {
          byte[] fileContent = upFile.get();
          dossierDao.storePresentationTemplateFile(fileName, fileContent, tempFolder);
        }
      } else {
        logger.warn("Upload file was null!!!");
      }
     
     
//      UploadedFile upFile = (UploadedFile) request.getAttribute("UPLOADED_FILE");
//      if (upFile != null) {
//        String fileName = upFile.getFileName();
//        if (!fileName.toUpperCase().endsWith(".PPT")) {
//          List params = new ArrayList();
//          params.add("ppt");
//          EMFUserError error = new EMFValidationError(EMFErrorSeverity.ERROR, "UPLOADED_FILE", "107", params, null, "component_dossier_messages");
//          getErrorHandler().addError(error);
//        } else {
//          byte[] fileContent = upFile.getFileContent();
//          dossierDao.storePresentationTemplateFile(fileName, fileContent, tempFolder);
//        }
//      } else {
//        logger.warn("Upload file was null!!!");
//      }
      response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierLoopbackDossierDetail");
    } finally {
      logger.debug("OUT");
    }
   
  }

  private void newTemplateHandler(SourceBean request, SourceBean response) throws SourceBeanException, EMFUserError {
    logger.debug("IN");
    String tempOOFileName = "";
    List confDoc = new ArrayList();
    WorkflowConfiguration workConf = new WorkflowConfiguration();
    List functionalities;
    try {
      functionalities = DAOFactory.getLowFunctionalityDAO().loadAllLowFunctionalities(true);
    } catch (EMFUserError e) {
      logger.error("Error while loading documents tree", e);
      throw new EMFUserError(EMFErrorSeverity.ERROR, 100);
    }
    response.setAttribute(SpagoBIConstants.FUNCTIONALITIES_LIST, functionalities);
        response.setAttribute(DossierConstants.CONFIGURED_DOCUMENT_LIST, confDoc);
    response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierDetail");
    response.setAttribute(DossierConstants.OO_TEMPLATE_FILENAME, tempOOFileName);
    response.setAttribute(DossierConstants.WORKFLOW_CONFIGURATION, workConf);
    logger.debug("OUT");
  }
 
 
 
 
 
  private void newConfiguredDocumentHandler(SourceBean request, SourceBean response)
                        throws SourceBeanException, EMFUserError {
    logger.debug("IN");
    String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
    Object objIdObj = request.getAttribute(DossierConstants.DOSSIER_CONFIGURED_BIOBJECT_ID);
    if(!(objIdObj instanceof String)){
      Map errBackPars = new HashMap();
      errBackPars.put("PAGE", DossierConstants.DOSSIER_MANAGEMENT_PAGE);
      errBackPars.put(DossierConstants.DOSSIER_TEMP_FOLDER, tempFolder);
      errBackPars.put(LightNavigationManager.LIGHT_NAVIGATOR_DISABLED, "true");
      errBackPars.put(SpagoBIConstants.OPERATION, DossierConstants.OPERATION_DETAIL_DOSSIER);
      throw new EMFUserError(EMFErrorSeverity.ERROR, "102", null, errBackPars, "component_dossier_messages");
    }
    String objIdStr = (String) objIdObj;
    Integer objId = new Integer(objIdStr);
    BIObject obj = null;
    List params = null;
    List roleList = null;
    try{
      IBIObjectDAO biobjdao = DAOFactory.getBIObjectDAO();
      obj = biobjdao.loadBIObjectById(objId);
      Integer id = obj.getId();
      IBIObjectParameterDAO biobjpardao = DAOFactory.getBIObjectParameterDAO();
      params = biobjpardao.loadBIObjectParametersById(id);
      IRoleDAO roleDao = DAOFactory.getRoleDAO();
      roleList = roleDao.loadAllRoles();
    } catch (Exception e) {
      SpagoBITracer.major(DossierConstants.NAME_MODULE, this.getClass().getName(),
                                 "newConfiguredDocumentHandler",
                                 "Error while loading biobje parameters and roles", e);
    }
    Integer id = obj.getId();
    String descr = obj.getDescription();
    String label = obj.getLabel();
    String name = obj.getName();
    Iterator iterParams = params.iterator();
    HashMap parNamesMap = new HashMap();
    HashMap parValueMap = new HashMap();
    while(iterParams.hasNext()) {
      BIObjectParameter par = (BIObjectParameter)iterParams.next();
      String parLabel = par.getLabel();
      String parUrlName = par.getParameterUrlName();
      parNamesMap.put(parLabel, parUrlName);
      parValueMap.put(parUrlName, "");
    }
    response.setAttribute("parnamemap", parNamesMap);
    response.setAttribute("parvaluemap", parValueMap);
    response.setAttribute("idobj", id);
    response.setAttribute("description", descr);
    response.setAttribute("label", label);
    response.setAttribute("name", name);
    response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierConfiguredDocumentDetail");
    logger.debug("OUT");
  }
 
 
 
 
  private void saveConfiguredDocumentHandler(SourceBean request, SourceBean response) throws Exception {
    logger.debug("IN");
    String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
    String label = (String)request.getAttribute("biobject_label");
    // get logical name assigned to the configured document
    String logicalName = (String)request.getAttribute("logicalname");
    if( (logicalName==null) || logicalName.trim().equalsIgnoreCase("") ) {
      logicalName = "";
      //throw new EMFUserError(EMFErrorSeverity.ERROR, 103, "component_dossier_messages");
    }
    // load biobject using label
//    Integer id = new Integer(idobj);
    IBIObjectDAO biobjdao = DAOFactory.getBIObjectDAO();
    BIObject obj = biobjdao.loadBIObjectByLabel(label);
    IBIObjectParameterDAO biobjpardao = DAOFactory.getBIObjectParameterDAO();
    // gets parameters of the biobject
    List params = biobjpardao.loadBIObjectParametersById(obj.getId());
    Iterator iterParams = params.iterator();
    // get map of the param url name and value assigned
    boolean findOutFormat = false;
    Map paramValueMap = new HashMap();
    Map paramNameMap = new HashMap();
    while(iterParams.hasNext()) {
      BIObjectParameter par = (BIObjectParameter)iterParams.next();
      String parUrlName = par.getParameterUrlName();
      if(parUrlName.equalsIgnoreCase("outputType"))
        findOutFormat = true;
      String value = (String)request.getAttribute(parUrlName);
      paramValueMap.put(parUrlName, value);
      paramNameMap.put(par.getLabel(), par.getParameterUrlName());
    }
    if(!findOutFormat){
      paramValueMap.put("outputType", "JPGBASE64");
    }
    // fill a configured document bo with data retrived
    ConfiguredBIDocument confDoc = new ConfiguredBIDocument();
    confDoc.setDescription(obj.getDescription());
//    confDoc.setId(obj.getId());
    confDoc.setLabel(obj.getLabel());
    confDoc.setParameters(paramValueMap);
    confDoc.setName(obj.getName());
    confDoc.setLogicalName(logicalName);
   
    // check if the error handler contains validation errors
    EMFErrorHandler errorHandler = getResponseContainer().getErrorHandler();
    if(errorHandler.isOKByCategory(EMFErrorCategory.VALIDATION_ERROR)){
      // store the configured document
      IDossierDAO dossierDao = new DossierDAOHibImpl();
      dossierDao.addConfiguredDocument(confDoc, tempFolder);
      response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierLoopbackDossierDetail");
    } else {
      // set attribute into response
      response.setAttribute("parnamemap", paramNameMap);
      response.setAttribute("parvaluemap", paramValueMap);
//      response.setAttribute("idobj", confDoc.getId());
      response.setAttribute("description", confDoc.getDescription());
      response.setAttribute("label", confDoc.getLabel());
      response.setAttribute("name", confDoc.getName());
      response.setAttribute("logicalname", confDoc.getLogicalName());
      response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierConfiguredDocumentDetail");
    }
    logger.debug("OUT");
  }
 
 
 
  private void dossierDetailHandler(SourceBean request, SourceBean response) throws SourceBeanException, EMFUserError {
    logger.debug("IN");
    String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
    IDossierDAO dossierDao = new DossierDAOHibImpl();
//    List roleList = null;
//    try{
//      IRoleDAO roleDao = DAOFactory.getRoleDAO();
//      roleList = roleDao.loadAllRoles();
//    } catch(Exception e) {
//      logger.error("Error while loading all roles", e);
//    }
    // get the current template file name
    String tempFileName = dossierDao.getPresentationTemplateFileName(tempFolder);
    if (tempFileName == null) tempFileName = "";
    // get list of the configured document
    List confDoc = dossierDao.getConfiguredDocumentList(tempFolder);
    // get the current process definition file name
    String procDefFileName = dossierDao.getProcessDefinitionFileName(tempFolder);
    if (procDefFileName == null) procDefFileName = "";
    //WorkflowConfiguration workConf = bookDao.getWorkflowConfiguration(pathConfBook);
    List functionalities;
    try {
      functionalities = DAOFactory.getLowFunctionalityDAO().loadAllLowFunctionalities(true);
    } catch (EMFUserError e) {
      logger.error("Error while loading documents tree", e);
      throw new EMFUserError(EMFErrorSeverity.ERROR, 100);
    }
    response.setAttribute(SpagoBIConstants.FUNCTIONALITIES_LIST, functionalities);
        response.setAttribute(DossierConstants.CONFIGURED_DOCUMENT_LIST, confDoc);
    response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierDetail");
    response.setAttribute(DossierConstants.OO_TEMPLATE_FILENAME, tempFileName);
    response.setAttribute(DossierConstants.WF_PROCESS_DEFINTIION_FILENAME, procDefFileName);
    logger.debug("OUT");
  }
 
 
  private void deleteConfiguredDocumentHandler(SourceBean request, SourceBean response) throws Exception {
    logger.debug("IN");
    String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
    String confDocIdent = (String)request.getAttribute("configureddocumentidentifier");
    IDossierDAO dossierDao = new DossierDAOHibImpl();
    // delete the configured document
    dossierDao.deleteConfiguredDocument(confDocIdent, tempFolder);
    response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierLoopbackDossierDetail");
    logger.debug("OUT");
  }
 
 
 
  private void detailConfiguredDocumentHandler(SourceBean request, SourceBean response) throws Exception {
    logger.debug("IN");
    String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
    String confDocIdent = (String)request.getAttribute("configureddocumentidentifier");
    // get configured document
    IDossierDAO dossierDao = new DossierDAOHibImpl();
    ConfiguredBIDocument confDoc = dossierDao.getConfiguredDocument(confDocIdent, tempFolder);
    // get parameter value map
    Map paramValueMap = confDoc.getParameters();
    // create parameter name map
//    Integer idobj = confDoc.getId();
    String label = confDoc.getLabel();
    BIObject obj = DAOFactory.getBIObjectDAO().loadBIObjectByLabel(label);
    Integer idobj = obj.getId();
    IBIObjectParameterDAO biobjpardao = DAOFactory.getBIObjectParameterDAO();
    List params = biobjpardao.loadBIObjectParametersById(idobj);
    Iterator iterParams = params.iterator();
    Map paramNameMap = new HashMap();
    while(iterParams.hasNext()) {
      BIObjectParameter par = (BIObjectParameter)iterParams.next();
      String parLabel = par.getLabel();
      String parUrlName = par.getParameterUrlName();
      paramNameMap.put(parLabel, parUrlName)
    }
    // set attribute into response
    response.setAttribute("parnamemap", paramNameMap);
    response.setAttribute("parvaluemap", paramValueMap);
//    response.setAttribute("idobj", confDoc.getId());
    response.setAttribute("description", confDoc.getDescription());
    response.setAttribute("label", confDoc.getLabel());
    response.setAttribute("name", confDoc.getName());
    response.setAttribute("logicalname", confDoc.getLogicalName());
    response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierConfiguredDocumentDetail");
    logger.debug("OUT");
  }
 
 
 
  private void saveDossierDetailHandler(SourceBean request, SourceBean response) throws Exception {
    logger.debug("IN");
    String tempFolder = (String) request.getAttribute(DossierConstants.DOSSIER_TEMP_FOLDER);
    IDossierDAO dossierDao = new DossierDAOHibImpl();
    List docs = dossierDao.getConfiguredDocumentList(tempFolder);
    EMFErrorHandler errorHandler = getErrorHandler();
    if (dossierDao.getPresentationTemplateFileName(tempFolder) == null) {
      logger.error("Presentation template not loaded");
      EMFValidationError error = new EMFValidationError(EMFErrorSeverity.ERROR, "", "104", "component_dossier_messages");
      errorHandler.addError(error);
    }
    if (dossierDao.getProcessDefinitionFileName(tempFolder) == null) {
      logger.error("Process definition file not loaded");
      EMFValidationError error = new EMFValidationError(EMFErrorSeverity.ERROR, "", "105", "component_dossier_messages");
      errorHandler.addError(error);
    }
    if (docs == null || docs.size() == 0) {
      logger.error("No documents configured in dossier");
      EMFValidationError error = new EMFValidationError(EMFErrorSeverity.ERROR, "", "106", "component_dossier_messages");
      errorHandler.addError(error);
    }
   
    Integer dossierId = dossierDao.getDossierId(tempFolder);
    adjustRequiredAnalyticalDrivers(dossierId, docs);
    if (errorHandler.isOKBySeverity(EMFErrorSeverity.ERROR)) {
      dossierDao.storeTemplate(dossierId, tempFolder);
    }
   
    String saveAndGoBackStr = (String) request.getAttribute("SAVE_AND_GO_BACK");
    boolean saveAndGoBack = saveAndGoBackStr != null && saveAndGoBackStr.trim().equalsIgnoreCase("TRUE");
    if (saveAndGoBack) {
      response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierSaveAndGoBackLoop");
    } else {
      response.setAttribute(DossierConstants.DOSSIER_SAVED_MSG_CODE_ATTR_NAME, "dossier.savedOk");
      response.setAttribute(DossierConstants.PUBLISHER_NAME, "DossierLoopbackDossierDetail");
    }
   
    logger.debug("OUT");
  }

  private void adjustRequiredAnalyticalDrivers(Integer dossierId, List docs) throws Exception {
    logger.debug("IN");
    DossierAnalyticalDriversManager manager = new DossierAnalyticalDriversManager();
    List<EMFValidationError> errors = manager.adjustRequiredAnalyticalDrivers(dossierId, docs);
    if (errors != null && errors.size() > 0) {
      Iterator<EMFValidationError> it = errors.iterator();
      while (it.hasNext()) {
        this.getErrorHandler().addError(it.next());
      }
    }
   
    logger.debug("OUT");
  }

}
TOP

Related Classes of it.eng.spagobi.engines.dossier.modules.DossierManagementModule

TOP
Copyright © 2018 www.massapi.com. 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.