/**
*
*/
package net.conselldemallorca.helium.jbpm3.handlers;
import java.util.Date;
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;
/**
* Handler per a adjuntar un document al procés.
*
* @author Limit Tecnologies <limit@limit.es>
*/
@SuppressWarnings("serial")
public class DocumentAdjuntarHandler extends AbstractHeliumActionHandler implements DocumentAdjuntarHandlerInterface {
private String documentOrigen;
private String varDocumentOrigen;
private String titol;
private String varTitol;
private String data;
private String varData;
private String concatenarTitol;
private String esborrarDocument;
public void execute(ExecutionContext executionContext) throws Exception {
logger.debug("Inici execució handler adjuntar document");
String dor = (String)getValorOVariable(
executionContext,
documentOrigen,
varDocumentOrigen);
if (dor == null || dor.length() == 0) {
throw new JbpmException("No s'ha especificat cap document per adjuntar: " + documentOrigen);
}
String varCodi = Jbpm3HeliumBridge.getInstanceService().getCodiVariablePerDocumentCodi(dor);
Object valor = executionContext.getVariable(varCodi);
if (valor != null && valor instanceof Long) {
DocumentInfo docInfo = getDocumentInfo(
executionContext,
dor,
true);
if (docInfo != null) {
ExpedientDto expedient = getExpedientActual(executionContext);
logger.debug("Adjuntant document (exp=" + expedient.getIdentificacioPerLogs() + ", document=" + dor + ")");
String tit = (String)getValorOVariable(
executionContext,
titol,
varTitol);
String adjuntTitol;
if (isConcatenarTitol())
adjuntTitol = docInfo.getTitol() + " " + tit;
else
adjuntTitol = tit;
Date adjuntData = getValorOVariableData(executionContext, data, varData);
Jbpm3HeliumBridge.getInstanceService().documentExpedientAdjuntar(
getProcessInstanceId(executionContext),
null,
adjuntTitol,
(adjuntData != null) ? adjuntData : docInfo.getDataDocument(),
docInfo.getArxiuNom(),
docInfo.getArxiuContingut());
if (isEsborrarDocument()) {
Jbpm3HeliumBridge.getInstanceService().documentExpedientEsborrar(
null,
getProcessInstanceId(executionContext),
docInfo.getCodiDocument());
}
} else {
throw new JbpmException("No s'ha trobat el contingut del document especificat(" + dor + ")");
}
}
logger.debug("Handler adjuntar document finalitzat amb èxit");
}
public void setDocumentOrigen(String documentOrigen) {
this.documentOrigen = documentOrigen;
}
public void setVarDocumentOrigen(String varDocumentOrigen) {
this.varDocumentOrigen = varDocumentOrigen;
}
public void setTitol(String titol) {
this.titol = titol;
}
public void setVarTitol(String varTitol) {
this.varTitol = varTitol;
}
public void setData(String data) {
this.data = data;
}
public void setVarData(String varData) {
this.varData = varData;
}
public void setConcatenarTitol(String concatenarTitol) {
this.concatenarTitol = concatenarTitol;
}
public void setEsborrarDocument(String esborrarDocument) {
this.esborrarDocument = esborrarDocument;
}
private boolean isConcatenarTitol() {
return "true".equalsIgnoreCase(concatenarTitol) || "si".equalsIgnoreCase(concatenarTitol);
}
private boolean isEsborrarDocument() {
return "true".equalsIgnoreCase(esborrarDocument) || "si".equalsIgnoreCase(esborrarDocument);
}
private static final Log logger = LogFactory.getLog(DocumentAdjuntarHandler.class);
}