/** * */ package net.conselldemallorca.helium.jbpm3.handlers; import net.conselldemallorca.helium.jbpm3.handlers.tipus.DocumentInfo; import net.conselldemallorca.helium.jbpm3.integracio.Jbpm3HeliumBridge; import net.conselldemallorca.helium.v3.core.api.dto.ExpedientDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jbpm.JbpmException; import org.jbpm.graph.exe.ExecutionContext; import org.jbpm.graph.exe.ProcessInstance; /** * Handler per a copiar un document de l'expedient actual a un altre * expedient destí. * * @author Limit Tecnologies <limit@limit.es> */ @SuppressWarnings("serial") public class DocumentExpedientCopiarDestiHandler extends AbstractHeliumActionHandler implements DocumentExpedientCopiarDestiHandlerInterface { private String destiExpedientTipus; private String varDestiExpedientTipus; private String destiExpedientNumero; private String varDestiExpedientNumero; private String destiExpedientDocument; private String varDestiExpedientDocument; private String documentCodi; private String varDocumentCodi; public void execute(ExecutionContext executionContext) throws Exception { logger.debug("Inici execució handler copiar document a desti"); String documentOrigenCodi = (String)getValorOVariable( executionContext, documentCodi, varDocumentCodi); if (documentOrigenCodi == null) throw new JbpmException("No s'ha especificat cap codi de document"); DocumentInfo docInfo = getDocumentInfo( executionContext, documentOrigenCodi, true); if (docInfo != null) { ExpedientDto expedient = getExpedientActual(executionContext); logger.debug("Copiant document a desti (exp=" + expedient.getIdentificacioPerLogs() + ", document=" + documentOrigenCodi + ")"); String expedientTipusCodi = (String)getValorOVariable( executionContext, destiExpedientTipus, varDestiExpedientTipus); String expedientNumero = (String)getValorOVariable( executionContext, destiExpedientNumero, varDestiExpedientNumero); String documentDestiCodi = (String)getValorOVariable( executionContext, destiExpedientDocument, varDestiExpedientDocument); ExpedientDto expedientDesti = Jbpm3HeliumBridge.getInstanceService().getExpedientAmbEntornITipusINumero( expedient.getEntorn().getId(), expedientTipusCodi, expedientNumero); if (expedientDesti != null) { ProcessInstance pi = executionContext.getJbpmContext().getProcessInstance( new Long(expedientDesti.getProcessInstanceId())); Long documentStoreId = Jbpm3HeliumBridge.getInstanceService().documentExpedientGuardar( new Long(pi.getId()).toString(), documentDestiCodi, docInfo.getDataDocument(), docInfo.getArxiuNom(), docInfo.getArxiuContingut()); if (docInfo.isRegistrat()) { Jbpm3HeliumBridge.getInstanceService().documentExpedientGuardarDadesRegistre( documentStoreId, docInfo.getRegistreNumero(), docInfo.getRegistreData(), docInfo.getRegistreOficinaCodi(), docInfo.getRegistreOficinaNom(), docInfo.isRegistreEntrada()); } } else { throw new JbpmException("No s'ha trobat l'expedient destí (expedientTipusCodi=" + expedientTipusCodi + ", expedientNumero=" + destiExpedientNumero + ")"); } } else { throw new JbpmException("No s'ha trobat el document a dins l'expedient (codi=" + documentOrigenCodi + ")"); } logger.debug("Handler copiar document a desti finalitzat amb èxit"); } public void setDestiExpedientTipus(String destiExpedientTipus) { this.destiExpedientTipus = destiExpedientTipus; } public void setVarDestiExpedientTipus(String varDestiExpedientTipus) { this.varDestiExpedientTipus = varDestiExpedientTipus; } public void setDestiExpedientNumero(String destiExpedientNumero) { this.destiExpedientNumero = destiExpedientNumero; } public void setVarDestiExpedientNumero(String varDestiExpedientNumero) { this.varDestiExpedientNumero = varDestiExpedientNumero; } public void setDestiExpedientDocument(String destiExpedientDocument) { this.destiExpedientDocument = destiExpedientDocument; } public void setVarDestiExpedientDocument(String varDestiExpedientDocument) { this.varDestiExpedientDocument = varDestiExpedientDocument; } public void setDocumentCodi(String documentCodi) { this.documentCodi = documentCodi; } public void setVarDocumentCodi(String varDocumentCodi) { this.varDocumentCodi = varDocumentCodi; } private static final Log logger = LogFactory.getLog(DocumentExpedientCopiarDestiHandler.class); }