/**
*
*/
package net.conselldemallorca.helium.core.helperv26;
import java.io.ByteArrayOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.annotation.Resource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.exe.ProcessInstanceExpedient;
import org.springframework.stereotype.Component;
import net.conselldemallorca.helium.core.common.JbpmVars;
import net.conselldemallorca.helium.core.helper.ExpedientHelper;
import net.conselldemallorca.helium.core.helper.PluginHelper;
import net.conselldemallorca.helium.core.model.dto.DocumentDto;
import net.conselldemallorca.helium.core.model.hibernate.DefinicioProces;
import net.conselldemallorca.helium.core.model.hibernate.Document;
import net.conselldemallorca.helium.core.model.hibernate.DocumentStore;
import net.conselldemallorca.helium.core.model.hibernate.DocumentStore.DocumentFont;
import net.conselldemallorca.helium.core.model.hibernate.Expedient;
import net.conselldemallorca.helium.core.model.hibernate.Portasignatures;
import net.conselldemallorca.helium.core.model.hibernate.Portasignatures.TipusEstat;
import net.conselldemallorca.helium.core.util.DocumentTokenUtils;
import net.conselldemallorca.helium.core.util.GlobalProperties;
import net.conselldemallorca.helium.core.util.PdfUtils;
import net.conselldemallorca.helium.integracio.plugins.signatura.RespostaValidacioSignatura;
import net.conselldemallorca.helium.jbpm3.integracio.JbpmHelper;
import net.conselldemallorca.helium.jbpm3.integracio.JbpmProcessDefinition;
import net.conselldemallorca.helium.jbpm3.integracio.JbpmProcessInstance;
import net.conselldemallorca.helium.jbpm3.integracio.JbpmTask;
import net.conselldemallorca.helium.v3.core.api.exception.SistemaExternException;
import net.conselldemallorca.helium.v3.core.repository.DefinicioProcesRepository;
import net.conselldemallorca.helium.v3.core.repository.DocumentRepository;
import net.conselldemallorca.helium.v3.core.repository.DocumentStoreRepository;
import net.conselldemallorca.helium.v3.core.repository.ExpedientRepository;
import net.conselldemallorca.helium.v3.core.repository.PortasignaturesRepository;
/**
* Helper per a gestionar els documents dels expedients
*
* @author Limit Tecnologies <limit@limit.es>
*/
@Component
public class DocumentHelper {
/*public static final String PREFIX_VAR_DOCUMENT = "H3l1um#document.";
public static final String PREFIX_ADJUNT = "H3l1um#adjunt.";
public static final String PREFIX_SIGNATURA = "H3l1um#signatura.";*/
@Resource
private JbpmHelper jbpmDao;
@Resource
private DefinicioProcesRepository definicioProcesRepository;
@Resource
private ExpedientRepository expedientRepository;
@Resource
private DocumentRepository documentRepository;
@Resource
private DocumentStoreRepository documentStoreRepository;
@Resource
private PortasignaturesRepository portasignaturesRepository;
@Resource
private PluginHelper pluginHelper;
@Resource
private ExpedientHelper expedientHelper;
private DocumentTokenUtils documentTokenUtils;
private PdfUtils pdfUtils;
public Long actualitzarDocument(
String taskInstanceId,
String processInstanceId,
String documentCodi,
String documentNom,
Date documentData,
String arxiuNom,
byte[] arxiuContingut,
boolean isAdjunt) {
DocumentStore documentStore = null;
Long documentStoreId = getDocumentStoreIdDeVariableJbpm(taskInstanceId, processInstanceId, documentCodi, isAdjunt);
if (documentStoreId != null)
documentStore = documentStoreRepository.findOne(documentStoreId);
if (documentStore == null) {
documentStore = new DocumentStore(
(pluginHelper.gestioDocumentalIsPluginActiu()) ? DocumentFont.ALFRESCO : DocumentFont.INTERNA,
processInstanceId,
getVarPerDocumentCodi(documentCodi, isAdjunt),
new Date(),
documentData,
arxiuNom);
documentStore.setAdjunt(isAdjunt);
if (isAdjunt)
documentStore.setAdjuntTitol(documentNom);
if (arxiuContingut != null)
documentStore.setArxiuContingut(arxiuContingut);
documentStore = documentStoreRepository.save(documentStore);
documentStoreId = documentStore.getId();
} else {
documentStore.setDataDocument(documentData);
documentStore.setArxiuNom(arxiuNom);
if (pluginHelper.gestioDocumentalIsPluginActiu()) {
documentStore.setArxiuContingut(
(pluginHelper.gestioDocumentalIsPluginActiu()) ? null : arxiuContingut);
}
if (documentStore.isAdjunt())
documentStore.setAdjuntTitol(documentNom);
if (arxiuContingut != null && pluginHelper.gestioDocumentalIsPluginActiu())
pluginHelper.gestioDocumentalDeleteDocument(
documentStore.getReferenciaFont(),
expedientHelper.findExpedientByProcessInstanceId(processInstanceId));
}
// Crea el document a dins la gestió documental
if (arxiuContingut != null && pluginHelper.gestioDocumentalIsPluginActiu()) {
ProcessInstanceExpedient expedient = jbpmDao.expedientFindByProcessInstanceId(processInstanceId);
String docNom = documentNom;
if (docNom == null) {
Document document = getDocumentDisseny(
taskInstanceId,
processInstanceId,
documentCodi);
docNom = document.getNom();
}
String referenciaFont = pluginHelper.gestioDocumentalCreateDocument(
expedientRepository.findOne(expedient.getId()),
documentStoreId.toString(),
docNom,
documentData,
arxiuNom,
arxiuContingut);
documentStore.setReferenciaFont(referenciaFont);
}
// Guarda la referència al nou document a dins el jBPM
if (taskInstanceId != null)
jbpmDao.setTaskInstanceVariable(
taskInstanceId,
getVarPerDocumentCodi(documentCodi, isAdjunt),
documentStoreId);
else
jbpmDao.setProcessInstanceVariable(
processInstanceId,
getVarPerDocumentCodi(documentCodi, isAdjunt),
documentStoreId);
return documentStoreId;
}
public void esborrarDocument(
String taskInstanceId,
String processInstanceId,
String documentCodi) {
Long documentStoreId = getDocumentStoreIdDeVariableJbpm(
taskInstanceId,
processInstanceId,
documentCodi);
if (documentStoreId != null){
DocumentStore documentStore = documentStoreRepository.findOne(documentStoreId);
if (documentStore != null) {
if (documentStore.isSignat()) {
if (pluginHelper.custodiaIsPluginActiu()) {
pluginHelper.custodiaEsborrarSignatures(
documentStore.getReferenciaCustodia(),
expedientHelper.findExpedientByProcessInstanceId(processInstanceId));
}
}
if (documentStore.getFont().equals(DocumentFont.ALFRESCO))
pluginHelper.gestioDocumentalDeleteDocument(
documentStore.getReferenciaFont(),
expedientHelper.findExpedientByProcessInstanceId(processInstanceId));
if (processInstanceId != null) {
Portasignatures psigna = portasignaturesRepository.findByProcessInstanceIdAndDocumentStoreId(
processInstanceId,
documentStore.getId());
if (psigna != null) {
psigna.setEstat(TipusEstat.ESBORRAT);
portasignaturesRepository.save(psigna);
}
}
documentStoreRepository.delete(documentStoreId);
}
if (taskInstanceId != null) {
jbpmDao.deleteTaskInstanceVariable(
taskInstanceId,
getVarPerDocumentCodi(documentCodi, false));
jbpmDao.deleteTaskInstanceVariable(
taskInstanceId,
JbpmVars.PREFIX_SIGNATURA + documentCodi);
}
if (processInstanceId != null) {
jbpmDao.deleteProcessInstanceVariable(
processInstanceId,
getVarPerDocumentCodi(documentCodi, false));
}
}
}
public void esborrarDocumentAdjunt(
Long documentStoreId,
String processInstanceId,
String adjuntId) {
if (documentStoreId != null){
DocumentStore documentStore = documentStoreRepository.findOne(documentStoreId);
if (documentStore != null) {
if (documentStore.isSignat()) {
if (pluginHelper.custodiaIsPluginActiu()) {
pluginHelper.custodiaEsborrarSignatures(
documentStore.getReferenciaCustodia(),
expedientHelper.findExpedientByProcessInstanceId(processInstanceId));
}
}
if (documentStore.getFont().equals(DocumentFont.ALFRESCO))
pluginHelper.gestioDocumentalDeleteDocument(
documentStore.getReferenciaFont(),
expedientHelper.findExpedientByProcessInstanceId(processInstanceId));
if (processInstanceId != null) {
Portasignatures psigna = portasignaturesRepository.findByProcessInstanceIdAndDocumentStoreId(
processInstanceId,
documentStore.getId());
if (psigna != null) {
psigna.setEstat(TipusEstat.ESBORRAT);
portasignaturesRepository.save(psigna);
}
}
documentStoreRepository.delete(documentStoreId);
}
if (processInstanceId != null) {
jbpmDao.deleteProcessInstanceVariable(
processInstanceId,
getVarPerDocumentCodi(adjuntId, true));
}
}
}
public boolean signarDocumentTascaAmbToken(
String token,
byte[] signatura) {
String taskInstanceId = getTaskInstanceIdPerToken(token);
Long documentStoreId = getDocumentStoreIdPerToken(token);
DocumentDto dto = toDocumentDto(
documentStoreId,
false,
false,
true,
true,
true);
if (dto != null) {
DocumentStore documentStore = documentStoreRepository.findOne(dto.getId());
boolean custodiat = false;
if (pluginHelper.custodiaIsPluginActiu()) {
String nomArxiu = getNomArxiuAmbExtensio(
dto.getArxiuNom(),
getExtensioArxiuSignat());
String referenciaCustodia = null;
if (pluginHelper.custodiaIsValidacioImplicita()) {
referenciaCustodia = pluginHelper.custodiaAfegirSignatura(
documentStore.getId(),
documentStore.getReferenciaFont(),
nomArxiu,
dto.getCustodiaCodi(),
signatura);
custodiat = true;
} else {
RespostaValidacioSignatura resposta = pluginHelper.signaturaVerificar(
dto.getVistaContingut(),
signatura,
false);
if (resposta.isEstatOk()) {
referenciaCustodia = pluginHelper.custodiaAfegirSignatura(
documentStore.getId(),
documentStore.getReferenciaFont(),
nomArxiu,
dto.getCustodiaCodi(),
signatura);
custodiat = true;
}
}
documentStore.setReferenciaCustodia(referenciaCustodia);
}
if (custodiat) {
documentStore.setSignat(true);
jbpmDao.setTaskInstanceVariable(
taskInstanceId,
JbpmVars.PREFIX_SIGNATURA + dto.getDocumentCodi(),
documentStore.getId());
}
return custodiat;
}
return false;
}
public DocumentStore getDocumentStore(
String taskInstanceId,
String processInstanceId,
String documentCodi) {
Long documentStoreId = getDocumentStoreIdDeVariableJbpm(taskInstanceId, processInstanceId, documentCodi);
if (documentStoreId != null)
return documentStoreRepository.findOne(documentStoreId);
else
return null;
}
public DocumentDto getDocumentSenseContingut(
String taskInstanceId,
String processInstanceId,
String documentCodi,
boolean perSignarEnTasca,
boolean ambInfoPsigna) {
Long documentStoreId = getDocumentStoreIdDeVariableJbpm(taskInstanceId, processInstanceId, documentCodi);
if (documentStoreId != null) {
try {
DocumentDto dto = toDocumentDto(
documentStoreId,
false,
false,
false,
false,
false);
if (perSignarEnTasca) {
try {
dto.setTokenSignaturaMultiple(getDocumentTokenUtils().xifrarTokenMultiple(
new String[] {
taskInstanceId,
documentStoreId.toString()}));
} catch (Exception ex) {
logger.error("No s'ha pogut generar el token pel document " + documentStoreId, ex);
}
if (dto.isSignat()) {
Object signatEnTasca = jbpmDao.getTaskInstanceVariable(taskInstanceId, JbpmVars.PREFIX_SIGNATURA + dto.getDocumentCodi());
dto.setSignatEnTasca(signatEnTasca != null);
} else {
dto.setSignatEnTasca(false);
}
}
return dto;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
public DocumentDto getDocumentSenseContingut(
Long documentStoreId) {
if (documentStoreId != null) {
DocumentDto dto;
try {
dto = toDocumentDto(
documentStoreId,
false,
false,
false,
false,
false);
return dto;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
public DocumentDto getDocumentOriginal(
String taskInstanceId,
String processInstanceId,
String documentCodi,
boolean ambContingut) {
return getDocumentOriginal(
getDocumentStoreIdDeVariableJbpm(taskInstanceId, processInstanceId, documentCodi),
ambContingut);
}
public DocumentDto getDocumentOriginalPerToken(
String token,
boolean ambContingut) {
return getDocumentOriginal(
getDocumentStoreIdPerToken(token),
ambContingut);
}
public DocumentDto getDocumentOriginal(
Long documentStoreId,
boolean ambContingut) {
if (documentStoreId != null) {
try {
return toDocumentDto(
documentStoreId,
ambContingut,
false,
false,
false,
false);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
public DocumentDto getDocumentVista(
String taskInstanceId,
String processInstanceId,
String documentCodi,
boolean perSignar,
boolean ambSegellSignatura) throws Exception {
return getDocumentVista(
getDocumentStoreIdDeVariableJbpm(taskInstanceId, processInstanceId, documentCodi),
perSignar,
ambSegellSignatura);
}
public DocumentDto getDocumentVistaPerToken(
String token,
boolean perSignar,
boolean ambSegellSignatura) throws Exception {
return getDocumentVista(
getDocumentStoreIdPerToken(token),
perSignar,
ambSegellSignatura);
}
public DocumentDto getDocumentVista(
Long documentStoreId,
boolean perSignar,
boolean ambSegellSignatura) throws Exception {
if (documentStoreId != null) {
return toDocumentDto(
documentStoreId,
false,
false,
true,
perSignar,
ambSegellSignatura);
} else {
return null;
}
}
public String getDocumentCodiPerVariableJbpm(String var) {
if (var.startsWith(JbpmVars.PREFIX_DOCUMENT)) {
return var.substring(JbpmVars.PREFIX_DOCUMENT.length());
} else if (var.startsWith(JbpmVars.PREFIX_ADJUNT)) {
return var.substring(JbpmVars.PREFIX_ADJUNT.length());
} else if (var.startsWith(JbpmVars.PREFIX_SIGNATURA)) {
return var.substring(JbpmVars.PREFIX_SIGNATURA.length());
} else {
return var;
}
}
public JbpmTask getTaskPerToken(String token) {
return jbpmDao.getTaskById(getTaskInstanceIdPerToken(token));
}
private Long getDocumentStoreIdDeVariableJbpm(
String taskInstanceId,
String processInstanceId,
String documentCodi) {
return getDocumentStoreIdDeVariableJbpm(taskInstanceId, processInstanceId,documentCodi, false);
}
private Long getDocumentStoreIdDeVariableJbpm(
String taskInstanceId,
String processInstanceId,
String documentCodi,
boolean isAdjunt) {
Object value = null;
if (taskInstanceId != null) {
value = jbpmDao.getTaskInstanceVariable(
taskInstanceId,
getVarPerDocumentCodi(documentCodi, isAdjunt));
}
if (value == null && processInstanceId != null) {
value = jbpmDao.getProcessInstanceVariable(
processInstanceId,
getVarPerDocumentCodi(documentCodi, isAdjunt));
}
return (Long)value;
}
private Document getDocumentDisseny(
String taskInstanceId,
String processInstanceId,
String documentCodi) {
if (taskInstanceId != null) {
JbpmTask taskInstance = jbpmDao.getTaskById(taskInstanceId);
DefinicioProces definicioProces = definicioProcesRepository.findByJbpmId(taskInstance.getProcessDefinitionId());
return documentRepository.findAmbDefinicioProcesICodi(
definicioProces.getId(),
documentCodi);
} else {
JbpmProcessInstance processInstance = jbpmDao.getProcessInstance(processInstanceId);
DefinicioProces definicioProces = definicioProcesRepository.findByJbpmId(processInstance.getProcessDefinitionId());
return documentRepository.findAmbDefinicioProcesICodi(
definicioProces.getId(),
documentCodi);
}
}
private DocumentDto toDocumentDto(
Long documentStoreId,
boolean ambContingutOriginal,
boolean ambContingutSignat,
boolean ambContingutVista,
boolean perSignar,
boolean ambSegellSignatura) {
if (documentStoreId != null) {
DocumentStore document = documentStoreRepository.findOne(documentStoreId);
if (document != null) {
DocumentDto dto = new DocumentDto();
dto.setId(document.getId());
dto.setDataCreacio(document.getDataCreacio());
dto.setDataDocument(document.getDataDocument());
dto.setArxiuNom(document.getArxiuNom());
dto.setArxiuContingut(document.getArxiuContingut());
dto.setProcessInstanceId(document.getProcessInstanceId());
dto.setSignat(document.isSignat());
dto.setAdjunt(document.isAdjunt());
dto.setAdjuntTitol(document.getAdjuntTitol());
try {
dto.setTokenSignatura(getDocumentTokenUtils().xifrarToken(documentStoreId.toString()));
} catch (Exception ex) {
logger.error("No s'ha pogut generar el token pel document " + documentStoreId, ex);
}
if (document.isSignat()) {
dto.setUrlVerificacioCustodia(
pluginHelper.custodiaObtenirUrlComprovacioSignatura(
documentStoreId.toString()));
}
String codiDocument;
if (document.isAdjunt()) {
dto.setAdjuntId(document.getJbpmVariable().substring(JbpmVars.PREFIX_ADJUNT.length()));
dto.setDocumentId(document.getId());
} else {
codiDocument = document.getJbpmVariable().substring(JbpmVars.PREFIX_DOCUMENT.length());
JbpmProcessDefinition jpd = jbpmDao.findProcessDefinitionWithProcessInstanceId(document.getProcessInstanceId());
DefinicioProces definicioProces = definicioProcesRepository.findByJbpmKeyAndVersio(
jpd.getKey(),
jpd.getVersion());
Document doc = documentRepository.findAmbDefinicioProcesICodi(definicioProces.getId(), codiDocument);
if (doc != null) {
dto.setContentType(doc.getContentType());
dto.setCustodiaCodi(doc.getCustodiaCodi());
dto.setDocumentId(doc.getId());
dto.setDocumentCodi(doc.getCodi());
dto.setDocumentNom(doc.getNom());
dto.setTipusDocPortasignatures(doc.getTipusDocPortasignatures());
dto.setAdjuntarAuto(doc.isAdjuntarAuto());
}
}
if (ambContingutOriginal) {
dto.setArxiuContingut(
getContingutDocumentAmbFont(document));
}
if (ambContingutSignat && document.isSignat() && isSignaturaFileAttached()) {
dto.setSignatNom(
getNomArxiuAmbExtensio(
document.getArxiuNom(),
getExtensioArxiuSignat()));
byte[] signatura = pluginHelper.custodiaObtenirSignaturesAmbArxiu(document.getReferenciaCustodia());
dto.setSignatContingut(signatura);
}
if (ambContingutVista) {
String arxiuOrigenNom;
byte[] arxiuOrigenContingut;
// Obtenim l'origen per a generar la vista o bé del document original
// o bé del document signat
if (document.isSignat() && isSignaturaFileAttached()) {
if (ambContingutSignat) {
arxiuOrigenNom = dto.getSignatNom();
arxiuOrigenContingut = dto.getSignatContingut();
} else {
arxiuOrigenNom = getNomArxiuAmbExtensio(
document.getArxiuNom(),
getExtensioArxiuSignat());
arxiuOrigenContingut = pluginHelper.custodiaObtenirSignaturesAmbArxiu(document.getReferenciaCustodia());
}
} else {
arxiuOrigenNom = dto.getArxiuNom();
if (ambContingutOriginal) {
arxiuOrigenContingut = dto.getArxiuContingut();
} else {
if (document.getFont().equals(DocumentFont.INTERNA)) {
arxiuOrigenContingut = document.getArxiuContingut();
} else {
arxiuOrigenContingut = pluginHelper.gestioDocumentalObtenirDocument(
document.getReferenciaFont());
}
}
}
// Calculam l'extensió del document final de la vista
String extensioActual = null;
int indexPunt = arxiuOrigenNom.indexOf(".");
if (indexPunt != -1)
extensioActual = arxiuOrigenNom.substring(0, indexPunt);
String extensioDesti = extensioActual;
if (perSignar && isActiuConversioSignatura()) {
extensioDesti = getExtensioArxiuSignat();
} else if (document.isRegistrat()) {
extensioDesti = getExtensioArxiuRegistrat();
}
dto.setVistaNom(dto.getArxiuNomSenseExtensio() + "." + extensioDesti);
if ("pdf".equalsIgnoreCase(extensioDesti)) {
// Si és un PDF podem estampar
try {
ByteArrayOutputStream vistaContingut = new ByteArrayOutputStream();
DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm");
String dataRegistre = null;
if (document.getRegistreData() != null)
dataRegistre = df.format(document.getRegistreData());
String numeroRegistre = document.getRegistreNumero();
getPdfUtils().estampar(
arxiuOrigenNom,
arxiuOrigenContingut,
(ambSegellSignatura) ? !document.isSignat() : false,
(ambSegellSignatura) ? getUrlComprovacioSignatura(documentStoreId, dto.getTokenSignatura()): null,
document.isRegistrat(),
numeroRegistre,
dataRegistre,
document.getRegistreOficinaNom(),
document.isRegistreEntrada(),
vistaContingut,
extensioDesti);
dto.setVistaContingut(vistaContingut.toByteArray());
} catch (Exception ex) {
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(document.getProcessInstanceId());
String errorDescripcio = "No s'ha pogut generar la vista pel document '" + document.getCodiDocument() + "'";
logger.error(errorDescripcio, ex);
throw SistemaExternException.tractarSistemaExternException(
expedient.getEntorn().getId(),
expedient.getEntorn().getCodi(),
expedient.getEntorn().getNom(),
expedient.getId(),
expedient.getTitol(),
expedient.getNumero(),
expedient.getTipus().getId(),
expedient.getTipus().getCodi(),
expedient.getTipus().getNom(),
"(PORTASIGNATURES. Enviar: " + errorDescripcio + ")",
ex);
}
} else {
// Si no és un pdf retornam la vista directament
dto.setVistaNom(arxiuOrigenNom);
dto.setVistaContingut(arxiuOrigenContingut);
}
}
if (document.isRegistrat()) {
dto.setRegistreData(document.getRegistreData());
dto.setRegistreNumero(document.getRegistreNumero());
dto.setRegistreOficinaCodi(document.getRegistreOficinaCodi());
dto.setRegistreOficinaNom(document.getRegistreOficinaNom());
dto.setRegistreEntrada(document.isRegistreEntrada());
dto.setRegistrat(true);
}
return dto;
}
}
return null;
}
private boolean isSignaturaFileAttached() {
return "true".equalsIgnoreCase((String)GlobalProperties.getInstance().get("app.signatura.plugin.file.attached"));
}
private boolean isActiuConversioSignatura() {
String actiuConversio = (String)GlobalProperties.getInstance().get("app.conversio.actiu");
if (!"true".equalsIgnoreCase(actiuConversio))
return false;
String actiuConversioSignatura = (String)GlobalProperties.getInstance().get("app.conversio.signatura.actiu");
return "true".equalsIgnoreCase(actiuConversioSignatura);
}
private String getNomArxiuAmbExtensio(
String arxiuNomOriginal,
String extensio) {
if (!isActiuConversioSignatura())
return arxiuNomOriginal;
if (extensio == null)
extensio = "";
int indexPunt = arxiuNomOriginal.lastIndexOf(".");
if (indexPunt != -1) {
return arxiuNomOriginal.substring(0, indexPunt) + "." + extensio;
} else {
return arxiuNomOriginal + "." + extensio;
}
}
private String getExtensioArxiuSignat() {
return (String)GlobalProperties.getInstance().get("app.conversio.signatura.extension");
}
private String getExtensioArxiuRegistrat() {
return (String)GlobalProperties.getInstance().get("app.conversio.registre.extension");
}
private byte[] getContingutDocumentAmbFont(DocumentStore document) {
if (document.getFont().equals(DocumentFont.INTERNA))
return document.getArxiuContingut();
else
return pluginHelper.gestioDocumentalObtenirDocument(
document.getReferenciaFont());
}
private String getUrlComprovacioSignatura(Long documentStoreId, String token) {
String urlCustodia = pluginHelper.custodiaObtenirUrlComprovacioSignatura(
documentStoreId.toString());
if (urlCustodia != null) {
return urlCustodia;
} else {
String baseUrl = (String)GlobalProperties.getInstance().get("app.base.verificacio.url");
if (baseUrl == null)
baseUrl = (String)GlobalProperties.getInstance().get("app.base.url");
return baseUrl + "/signatura/verificarExtern.html?token=" + token;
}
}
private Long getDocumentStoreIdPerToken(String token) {
try {
String[] tokenDesxifrat = getDocumentTokenUtils().desxifrarTokenMultiple(token);
if (tokenDesxifrat.length == 1)
return Long.parseLong(tokenDesxifrat[0]);
else
return Long.parseLong(tokenDesxifrat[1]);
} catch (Exception ex) {
throw new RuntimeException("Format de token incorrecte", ex);
}
}
private String getTaskInstanceIdPerToken(String token) {
try {
String[] tokenDesxifrat = getDocumentTokenUtils().desxifrarTokenMultiple(token);
if (tokenDesxifrat.length == 2)
return tokenDesxifrat[0];
else
throw new RuntimeException("Format de token incorrecte");
} catch (Exception ex) {
throw new RuntimeException("Format de token incorrecte", ex);
}
}
public String getVarPerDocumentCodi(String documentCodi, boolean isAdjunt) {
if (isAdjunt)
return JbpmVars.PREFIX_ADJUNT + documentCodi;
else
return JbpmVars.PREFIX_DOCUMENT + documentCodi;
}
private DocumentTokenUtils getDocumentTokenUtils() {
if (documentTokenUtils == null)
documentTokenUtils = new DocumentTokenUtils(
(String)GlobalProperties.getInstance().get("app.encriptacio.clau"));
return documentTokenUtils;
}
private PdfUtils getPdfUtils() {
if (pdfUtils == null)
pdfUtils = new PdfUtils();
return pdfUtils;
}
private static final Log logger = LogFactory.getLog(DocumentHelper.class);
public void esborrarVariableInstance(
String processInstanceId,
String adjuntId) {
jbpmDao.deleteProcessInstanceVariable(
processInstanceId,
getVarPerDocumentCodi(adjuntId, true));
}
}