/**
*
*/
package net.conselldemallorca.helium.core.helper;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.annotation.Resource;
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.GlobalProperties;
import net.conselldemallorca.helium.integracio.plugins.custodia.CustodiaPlugin;
import net.conselldemallorca.helium.integracio.plugins.custodia.CustodiaPluginException;
import net.conselldemallorca.helium.integracio.plugins.gesdoc.GestioDocumentalPlugin;
import net.conselldemallorca.helium.integracio.plugins.persones.DadesPersona;
import net.conselldemallorca.helium.integracio.plugins.persones.PersonesPlugin;
import net.conselldemallorca.helium.integracio.plugins.persones.PersonesPluginException;
import net.conselldemallorca.helium.integracio.plugins.portasignatures.DocumentPortasignatures;
import net.conselldemallorca.helium.integracio.plugins.portasignatures.PasSignatura;
import net.conselldemallorca.helium.integracio.plugins.portasignatures.PortasignaturesPlugin;
import net.conselldemallorca.helium.integracio.plugins.portasignatures.PortasignaturesPluginException;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesAssumpte;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesExpedient;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesInteressat;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesNotificacio;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesOficina;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesRepresentat;
import net.conselldemallorca.helium.integracio.plugins.registre.DocumentRegistre;
import net.conselldemallorca.helium.integracio.plugins.registre.RegistreEntrada;
import net.conselldemallorca.helium.integracio.plugins.registre.RegistreNotificacio;
import net.conselldemallorca.helium.integracio.plugins.registre.RegistrePlugin;
import net.conselldemallorca.helium.integracio.plugins.registre.RegistrePluginException;
import net.conselldemallorca.helium.integracio.plugins.registre.RegistreSortida;
import net.conselldemallorca.helium.integracio.plugins.registre.RespostaAnotacioRegistre;
import net.conselldemallorca.helium.integracio.plugins.registre.RespostaJustificantDetallRecepcio;
import net.conselldemallorca.helium.integracio.plugins.registre.RespostaJustificantRecepcio;
import net.conselldemallorca.helium.integracio.plugins.registre.TramitSubsanacio;
import net.conselldemallorca.helium.integracio.plugins.registre.TramitSubsanacioParametre;
import net.conselldemallorca.helium.integracio.plugins.signatura.RespostaValidacioSignatura;
import net.conselldemallorca.helium.integracio.plugins.signatura.SignaturaPlugin;
import net.conselldemallorca.helium.integracio.plugins.signatura.SignaturaPluginException;
import net.conselldemallorca.helium.integracio.plugins.tramitacio.DadesTramit;
import net.conselldemallorca.helium.integracio.plugins.tramitacio.DocumentTramit;
import net.conselldemallorca.helium.integracio.plugins.tramitacio.Event;
import net.conselldemallorca.helium.integracio.plugins.tramitacio.ObtenirDadesTramitRequest;
import net.conselldemallorca.helium.integracio.plugins.tramitacio.PublicarEventRequest;
import net.conselldemallorca.helium.integracio.plugins.tramitacio.PublicarExpedientRequest;
import net.conselldemallorca.helium.integracio.plugins.tramitacio.Signatura;
import net.conselldemallorca.helium.integracio.plugins.tramitacio.TramitacioPlugin;
import net.conselldemallorca.helium.integracio.plugins.tramitacio.TramitacioPluginException;
import net.conselldemallorca.helium.v3.core.api.dto.DocumentDto;
import net.conselldemallorca.helium.v3.core.api.dto.ExpedientDto;
import net.conselldemallorca.helium.v3.core.api.dto.IntegracioAccioTipusEnumDto;
import net.conselldemallorca.helium.v3.core.api.dto.IntegracioParametreDto;
import net.conselldemallorca.helium.v3.core.api.dto.PersonaDto;
import net.conselldemallorca.helium.v3.core.api.dto.RegistreAnnexDto;
import net.conselldemallorca.helium.v3.core.api.dto.RegistreAnotacioDto;
import net.conselldemallorca.helium.v3.core.api.dto.RegistreIdDto;
import net.conselldemallorca.helium.v3.core.api.dto.RegistreNotificacioDto;
import net.conselldemallorca.helium.v3.core.api.dto.RegistreNotificacioDto.RegistreNotificacioTramitSubsanacioParametreDto;
import net.conselldemallorca.helium.v3.core.api.dto.TramitDocumentDto;
import net.conselldemallorca.helium.v3.core.api.dto.TramitDocumentDto.TramitDocumentSignaturaDto;
import net.conselldemallorca.helium.v3.core.api.dto.TramitDto;
import net.conselldemallorca.helium.v3.core.api.dto.ZonaperEventDto;
import net.conselldemallorca.helium.v3.core.api.dto.ZonaperExpedientDto;
import net.conselldemallorca.helium.v3.core.api.exception.NoTrobatException;
import net.conselldemallorca.helium.v3.core.api.exception.SistemaExternException;
import net.conselldemallorca.helium.v3.core.repository.PortasignaturesRepository;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Component;
/**
* Helper per a accedir a la funcionalitat dels plugins.
*
* @author Limit Tecnologies <limit@limit.es>
*/
@Component("pluginHelperV3")
public class PluginHelper {
private static final String CACHE_PERSONA_ID = "personaPluginCache";
@Resource
private PortasignaturesRepository portasignaturesRepository;
@Resource
private ConversioTipusHelper conversioTipusHelper;
@Autowired
private CacheManager cacheManager;
@Autowired
private MonitorIntegracioHelper monitorIntegracioHelper;
private PersonesPlugin personesPlugin;
private boolean personesPluginEvaluat = false;
private TramitacioPlugin tramitacioPlugin;
private boolean tramitacioPluginEvaluat = false;
private RegistrePlugin registrePlugin;
private boolean registrePluginEvaluat = false;
private GestioDocumentalPlugin gestioDocumentalPlugin;
private boolean gestioDocumentalPluginEvaluat = false;
private PortasignaturesPlugin portasignaturesPlugin;
private boolean portasignaturesPluginEvaluat = false;
private CustodiaPlugin custodiaPlugin;
private boolean custodiaPluginEvaluat = false;
private SignaturaPlugin signaturaPlugin;
private boolean signaturaPluginEvaluat = false;
public List<PersonaDto> personaFindLikeNomSencer(String text) {
long t0 = System.currentTimeMillis();
try {
List<DadesPersona> persones = getPersonesPlugin().findLikeNomSencer(text);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_PERSONA,
"Consulta d'usuaris amb like",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto("text", text));
if (persones == null)
return new ArrayList<PersonaDto>();
return conversioTipusHelper.convertirList(persones, PersonaDto.class);
} catch (PersonesPluginException ex) {
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_PERSONA,
"Consulta d'usuaris amb like",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
"El plugin ha retornat una excepció",
ex,
new IntegracioParametreDto("text", text));
logger.error(
"No s'han pogut consultar persones amb el text (text=" + text + ")",
ex);
throw new SistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"No s'han pogut consultar persones amb el text (text=" + text + ")",
ex);
}
}
public List<Portasignatures> findPendentsPortasignaturesPerProcessInstanceId(String processInstanceId) {
List<Portasignatures> psignas = portasignaturesRepository.findPendentsPerProcessInstanceId(processInstanceId);
Iterator<Portasignatures> it = psignas.iterator();
while (it.hasNext()) {
Portasignatures psigna = it.next();
if ( !TipusEstat.PENDENT.equals(psigna.getEstat()) &&
!TipusEstat.SIGNAT.equals(psigna.getEstat()) &&
!TipusEstat.REBUTJAT.equals(psigna.getEstat()) &&
!TipusEstat.ERROR.equals(psigna.getEstat())) {
it.remove();
}
}
return psignas;
}
public PersonaDto personaFindAmbCodi(String codi) {
Cache personaCache = cacheManager.getCache(CACHE_PERSONA_ID);
if (personaCache.get(codi) == null) {
long t0 = System.currentTimeMillis();
try {
DadesPersona dadesPersona = getPersonesPlugin().findAmbCodi(codi);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_PERSONA,
"Consulta d'usuari amb codi",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto("codi", codi));
if (dadesPersona == null)
throw new NoTrobatException(DadesPersona.class, codi);
PersonaDto dto = conversioTipusHelper.convertir(
dadesPersona,
PersonaDto.class);
if (dto != null) {
personaCache.put(codi, dto);
}
return dto;
} catch (PersonesPluginException ex) {
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_PERSONA,
"Consulta d'usuari amb codi",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
"El plugin ha retornat una excepció",
ex,
new IntegracioParametreDto("codi", codi));
logger.error(
"No s'han pogut consultar persones amb el codi (codi=" + codi + ")",
ex);
throw new SistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"No s'han pogut consultar persones amb el codi (codi=" + codi + ")",
ex);
}
} else {
return (PersonaDto)personaCache.get(codi).get();
}
}
public List<String> personaFindRolsAmbCodi(String codi) throws Exception {
return getPersonesPlugin().findRolsAmbCodi(codi);
}
public boolean personaIsPluginActiu() {
return getPersonesPlugin() != null;
}
public boolean personaIsSyncActiu() {
String syncActiu = GlobalProperties.getInstance().getProperty("app.persones.plugin.sync.actiu");
return "true".equalsIgnoreCase(syncActiu);
}
public void tramitacioZonaperExpedientCrear(
ExpedientDto expedient,
ZonaperExpedientDto dadesExpedient) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"expedientIdentificador",
dadesExpedient.getExpedientIdentificador()),
new IntegracioParametreDto(
"expedientClau",
dadesExpedient.getExpedientClau()),
new IntegracioParametreDto(
"unitatAdministrativa",
dadesExpedient.getUnitatAdministrativa()),
new IntegracioParametreDto(
"descripcio",
dadesExpedient.getDescripcio())
};
long t0 = System.currentTimeMillis();
try {
PublicarExpedientRequest request = conversioTipusHelper.convertir(
dadesExpedient,
PublicarExpedientRequest.class);
getTramitacioPlugin().publicarExpedient(request);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Creació d'expedient",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
} catch (TramitacioPluginException ex) {
String errorDescripcio = "No s'ha pogut crear l'expedient (" +
"expedientIdentificador=" + dadesExpedient.getExpedientIdentificador() + ", " +
"expedientClau=" + dadesExpedient.getExpedientClau() + ", " +
"unitatAdministrativa=" + dadesExpedient.getUnitatAdministrativa() + ", " +
"descripcio=" + dadesExpedient.getDescripcio() + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Creació d'expedient",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
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(),
"(SISTRA. Crear expedient: " + errorDescripcio + ")",
ex);
}
}
public void tramitacioZonaperEventCrear(
Expedient expedient,
ZonaperEventDto dadesEvent) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"expedientIdentificador",
expedient.getTramitExpedientIdentificador()),
new IntegracioParametreDto(
"expedientClau",
expedient.getTramitExpedientClau()),
new IntegracioParametreDto(
"unitatAdministrativa",
expedient.getUnitatAdministrativa()),
new IntegracioParametreDto(
"interessatNif",
expedient.getInteressatNif()),
new IntegracioParametreDto(
"eventTitol",
dadesEvent.getTitol()),
new IntegracioParametreDto(
"eventText",
dadesEvent.getText())
};
if (expedient.getTramitExpedientIdentificador() == null || expedient.getTramitExpedientClau() == null)
throw new SistemaExternException(
expedient.getEntorn().getId(),
expedient.getEntorn().getCodi(),
expedient.getEntorn().getNom(),
expedient.getId(),
expedient.getTitol(),
expedient.getNumero(),
expedient.getTipus().getId(),
expedient.getTipus().getCodi(),
expedient.getTipus().getNom(),
"(SISTRA. Crear event)",
"Abans s'ha de crear un expedient per a poder publicar un event");
PublicarEventRequest request = new PublicarEventRequest();
request.setExpedientIdentificador(expedient.getTramitExpedientIdentificador());
request.setExpedientClau(expedient.getTramitExpedientClau());
request.setUnitatAdministrativa(expedient.getUnitatAdministrativa());
request.setRepresentatNif(expedient.getInteressatNif());
request.setRepresentatNom(expedient.getInteressatNom());
request.setEvent(
conversioTipusHelper.convertir(
dadesEvent,
Event.class));
long t0 = System.currentTimeMillis();
try {
getTramitacioPlugin().publicarEvent(request);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Creació d'event",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
} catch (TramitacioPluginException ex) {
String errorDescripcio = "No s'ha pogut crear l'event (" +
"expedientIdentificador=" + expedient.getTramitExpedientIdentificador() + ", " +
"expedientClau=" + expedient.getTramitExpedientClau() + ", " +
"unitatAdministrativa=" + expedient.getUnitatAdministrativa() + ", " +
"interessatNif=" + expedient.getInteressatNif() + ", " +
"eventTitol=" + dadesEvent.getTitol() + ", " +
"eventText=" + dadesEvent.getText() + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Creació d'event",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
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(),
"(SISTRA. Crear event: " + errorDescripcio + ")",
ex);
}
}
public TramitDto tramitacioObtenirDadesTramit(
String numero,
String clau) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"numero",
numero),
new IntegracioParametreDto(
"clau",
clau)
};
long t0 = System.currentTimeMillis();
try {
ObtenirDadesTramitRequest request = new ObtenirDadesTramitRequest();
request.setNumero(numero);
request.setClau(clau);
DadesTramit dadesTramit = getTramitacioPlugin().obtenirDadesTramit(request);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Obtenir dades del tràmit",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
return toTramitDto(dadesTramit);
} catch (TramitacioPluginException ex) {
String errorDescripcio = "No s'ha pogut obtenir la informació del tràmit (" +
"numero=" + numero + ", " +
"clau=" + clau + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Obtenir dades del tràmit",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
logger.error(
errorDescripcio,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(SISTRA. Tramitació: " + errorDescripcio + ")",
ex);
}
}
public RespostaAnotacioRegistre tramitacioRegistrarNotificacio(
RegistreNotificacio registreNotificacio,
Expedient expedient) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"expedientIdentificador",
registreNotificacio.getDadesExpedient().getIdentificador()),
new IntegracioParametreDto(
"expedientClau",
registreNotificacio.getDadesExpedient().getClau()),
new IntegracioParametreDto(
"expedientUnitatAdministrativa",
registreNotificacio.getDadesExpedient().getUnitatAdministrativa()),
new IntegracioParametreDto(
"interessatNif",
registreNotificacio.getDadesInteressat().getNif()),
new IntegracioParametreDto(
"interessatNom",
registreNotificacio.getDadesInteressat().getNomAmbCognoms()),
new IntegracioParametreDto(
"assumpte",
registreNotificacio.getDadesNotificacio().getAssumpte())
};
long t0 = System.currentTimeMillis();
try {
RespostaAnotacioRegistre resposta = getTramitacioPlugin().registrarNotificacio(registreNotificacio);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Registrar notificació",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
return resposta;
} catch (TramitacioPluginException ex) {
String errorDescripcio = "No s'han pogut registrar la notificació (" +
"expedientIdentificador=" + registreNotificacio.getDadesExpedient().getIdentificador() + ", " +
"expedientClau=" + registreNotificacio.getDadesExpedient().getClau() + ", " +
"oficinaOrganCodi=" + registreNotificacio.getDadesOficina().getOrganCodi() + ", " +
"oficinaCodi=" + registreNotificacio.getDadesOficina().getOficinaCodi() + ")";
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(),
"(SISTRA. Registrar notificació: " + errorDescripcio + ")",
ex);
}
}
public RespostaJustificantRecepcio tramitacioObtenirJustificant(
String registreNumero) {
long t0 = System.currentTimeMillis();
try {
RespostaJustificantRecepcio resposta = getTramitacioPlugin().obtenirJustificantRecepcio(registreNumero);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Obtenir justificant",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"registreNumero",
registreNumero));
return resposta;
} catch (Exception ex) {
String errorDescripcio = "No s'han pogut obtenir el justificant de recepció (" +
"registreNumero=" + registreNumero + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Obtenir justificant",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"registreNumero",
registreNumero));
logger.error(
errorDescripcio,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(SISTRA. Obtenir justificant: " + errorDescripcio + ")",
ex);
}
}
public RespostaJustificantDetallRecepcio tramitacioObtenirJustificantDetall(
String registreNumero) {
long t0 = System.currentTimeMillis();
try {
RespostaJustificantDetallRecepcio resposta = getTramitacioPlugin().obtenirJustificantDetallRecepcio(registreNumero);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Obtenir detall justificant",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"registreNumero",
registreNumero));
return resposta;
} catch (Exception ex) {
String errorDescripcio = "No s'han pogut obtenir el detall del justificant de recepció (" +
"registreNumero=" + registreNumero + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_SISTRA,
"Obtenir detall justificant",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"registreNumero",
registreNumero));
logger.error(
errorDescripcio,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(SISTRA. Obtenir justificant detall: " + errorDescripcio + ")",
ex);
}
}
public RegistreIdDto registreAnotacioEntrada(
RegistreAnotacioDto anotacio,
Expedient expedient) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"organCodi",
anotacio.getOrganCodi()),
new IntegracioParametreDto(
"oficinaCodi",
anotacio.getOficinaCodi()),
new IntegracioParametreDto(
"entitatCodi",
anotacio.getEntitatCodi()),
new IntegracioParametreDto(
"unitatAdministrativa",
anotacio.getUnitatAdministrativa()),
new IntegracioParametreDto(
"interessatNif",
anotacio.getInteressatNif()),
new IntegracioParametreDto(
"assumpteExtracte",
anotacio.getAssumpteExtracte())
};
long t0 = System.currentTimeMillis();
try {
RespostaAnotacioRegistre resposta = getRegistrePlugin().registrarEntrada(
toRegistreEntrada(anotacio));
if (!resposta.isOk()) {
String errorDescripcio = "No s'ha pogut registrar l'entrada (" +
getDescripcioErrorRegistre(anotacio) +
"errorCodi=" + resposta.getErrorCodi() + ", " +
"errorDescripcio=" + resposta.getErrorDescripcio() + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Anotació d'entrada",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
parametres);
throw new SistemaExternException(
expedient.getEntorn().getId(),
expedient.getEntorn().getCodi(),
expedient.getEntorn().getNom(),
expedient.getId(),
expedient.getTitol(),
expedient.getNumero(),
expedient.getTipus().getId(),
expedient.getTipus().getCodi(),
expedient.getTipus().getNom(),
"(Registre d'entrada)",
errorDescripcio);
} else {
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Anotació d'entrada",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
RegistreIdDto registreId = new RegistreIdDto();
registreId.setNumero(resposta.getNumero());
registreId.setData(resposta.getData());
return registreId;
}
} catch (RegistrePluginException ex) {
String errorDescripcio = "No s'ha pogut registrar l'entrada (" +
getDescripcioErrorRegistre(anotacio) + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Anotació d'entrada",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
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(),
"(Registre d'entrada: " + errorDescripcio + ")",
ex);
}
}
public RegistreIdDto registreAnotacioSortida(
RegistreAnotacioDto anotacio,
Expedient expedient) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"organCodi",
anotacio.getOrganCodi()),
new IntegracioParametreDto(
"oficinaCodi",
anotacio.getOficinaCodi()),
new IntegracioParametreDto(
"entitatCodi",
anotacio.getEntitatCodi()),
new IntegracioParametreDto(
"unitatAdministrativa",
anotacio.getUnitatAdministrativa()),
new IntegracioParametreDto(
"interessatNif",
anotacio.getInteressatNif()),
new IntegracioParametreDto(
"assumpteExtracte",
anotacio.getAssumpteExtracte())
};
long t0 = System.currentTimeMillis();
try {
RespostaAnotacioRegistre resposta = getRegistrePlugin().registrarSortida(
toRegistreSortida(anotacio));
if (!resposta.isOk()) {
String errorDescripcio = "No s'ha pogut registrar la sortida (" +
getDescripcioErrorRegistre(anotacio) +
"errorCodi=" + resposta.getErrorCodi() + ", " +
"errorDescripcio=" + resposta.getErrorDescripcio() + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Anotació de sortida",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
parametres);
throw new SistemaExternException(
expedient.getEntorn().getId(),
expedient.getEntorn().getCodi(),
expedient.getEntorn().getNom(),
expedient.getId(),
expedient.getTitol(),
expedient.getNumero(),
expedient.getTipus().getId(),
expedient.getTipus().getCodi(),
expedient.getTipus().getNom(),
"(Registre de sortida)",
errorDescripcio);
} else {
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Anotació de sortida",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
RegistreIdDto registreId = new RegistreIdDto();
registreId.setNumero(resposta.getNumero());
registreId.setData(resposta.getData());
return registreId;
}
} catch (RegistrePluginException ex) {
String errorDescripcio = "No s'ha pogut registrar la sortida (" +
getDescripcioErrorRegistre(anotacio) + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Anotació de sortida",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
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(),
"(Registre de sortida: " + errorDescripcio + ")",
ex);
}
}
public RegistreIdDto registreNotificacio(
RegistreNotificacioDto notificacio,
Expedient expedient) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"organCodi",
notificacio.getOrganCodi()),
new IntegracioParametreDto(
"oficinaCodi",
notificacio.getOficinaCodi()),
new IntegracioParametreDto(
"entitatCodi",
notificacio.getEntitatCodi()),
new IntegracioParametreDto(
"unitatAdministrativa",
notificacio.getUnitatAdministrativa()),
new IntegracioParametreDto(
"interessatNif",
notificacio.getInteressatNif()),
new IntegracioParametreDto(
"assumpteExtracte",
notificacio.getAssumpteExtracte())
};
long t0 = System.currentTimeMillis();
try {
RespostaAnotacioRegistre resposta = getRegistrePlugin().registrarNotificacio(
toRegistreNotificacio(notificacio));
if (!resposta.isOk()) {
String errorDescripcio = "No s'han pogut registrar la notificació (" +
getDescripcioErrorRegistre(notificacio) +
"errorCodi=" + resposta.getErrorCodi() + ", " +
"errorDescripcio=" + resposta.getErrorDescripcio() + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Notificació",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
parametres);
throw new SistemaExternException(
expedient.getEntorn().getId(),
expedient.getEntorn().getCodi(),
expedient.getEntorn().getNom(),
expedient.getId(),
expedient.getTitol(),
expedient.getNumero(),
expedient.getTipus().getId(),
expedient.getTipus().getCodi(),
expedient.getTipus().getNom(),
"(Registre de notificació)",
errorDescripcio);
} else {
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Notificació",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
RegistreIdDto registreId = new RegistreIdDto();
registreId.setNumero(resposta.getNumero());
registreId.setData(resposta.getData());
return registreId;
}
} catch (RegistrePluginException ex) {
String errorDescripcio = "No s'ha pogut registrar la notificació (" +
getDescripcioErrorRegistre(notificacio) + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Notificació",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
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(),
"(Registre de notificacio: " + errorDescripcio + ")",
ex);
}
}
public Date registreDataJustificantRecepcio(
String numeroRegistre,
Expedient expedient) {
long t0 = System.currentTimeMillis();
try {
RespostaJustificantRecepcio resposta = getRegistrePlugin().obtenirJustificantRecepcio(numeroRegistre);
if (!resposta.isOk()) {
String errorDescripcio = "No s'han pogut obtenir la data del justificant de la notificació (" +
"numeroRegistre=" + numeroRegistre + ", " +
"errorCodi=" + resposta.getErrorCodi() + ", " +
"errorDescripcio=" + resposta.getErrorDescripcio() + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Obtenir data del justificant de recepció",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
new IntegracioParametreDto(
"numeroRegistre",
numeroRegistre));
throw new SistemaExternException(
expedient != null ? expedient.getEntorn().getId() : null,
expedient != null ? expedient.getEntorn().getCodi() : null,
expedient != null ? expedient.getEntorn().getNom() : null,
expedient != null ? expedient.getId() : null,
expedient != null ? expedient.getTitol() : null,
expedient != null ? expedient.getNumero() : null,
expedient != null ? expedient.getTipus().getId() : null,
expedient != null ? expedient.getTipus().getCodi() : null,
expedient != null ? expedient.getTipus().getNom() : null,
"(Registre data de justificant)",
errorDescripcio);
} else {
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Obtenir data del justificant de recepció",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"numeroRegistre",
numeroRegistre));
return resposta.getData();
}
} catch (RegistrePluginException ex) {
String errorDescripcio = "No s'han pogut obtenir la data del justificant de la notificació (" +
"numeroRegistre=" + numeroRegistre + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Obtenir data del justificant de recepció",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"numeroRegistre",
numeroRegistre));
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(),
"(Registre data de justificant: " + errorDescripcio + ")",
ex);
}
}
public String registreOficinaNom(
String codi,
Expedient expedient) {
long t0 = System.currentTimeMillis();
try {
String oficinaNom = getRegistrePlugin().obtenirNomOficina(codi);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Obtenir nom de l'oficina",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"oficinaCodi",
codi));
return oficinaNom;
} catch (RegistrePluginException ex) {
String errorDescripcio = "No s'ha pogut obtenir el nom de l'oficina de registre (" +
"codi=" + codi + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_REGISTRE,
"Obtenir nom de l'oficina",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"oficinaCodi",
codi));
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(),
"(Registre oficina nom: " + errorDescripcio + ")",
ex);
}
}
public boolean registreIsPluginActiu() {
return getRegistrePlugin() != null;
}
public String gestioDocumentalCreateDocument(
Expedient expedient,
String documentCodi,
String documentDescripcio,
Date documentData,
String documentArxiuNom,
byte[] documentArxiuContingut) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"expedient",
expedient.getIdentificador()),
new IntegracioParametreDto(
"documentCodi",
documentCodi),
new IntegracioParametreDto(
"documentDescripcio",
documentDescripcio),
new IntegracioParametreDto(
"documentData",
documentData),
new IntegracioParametreDto(
"documentArxiuNom",
documentArxiuNom)
};
long t0 = System.currentTimeMillis();
try {
String expedientTipus = null;
if (gestionDocumentalIsTipusExpedientDirecte()) {
expedientTipus = expedient.getTipus().getCodi();
} else if (gestionDocumentalIsTipusExpedientNou()) {
expedientTipus = expedient.getEntorn().getCodi() + "_" + expedient.getTipus().getCodi();
} else {
expedientTipus = expedient.getEntorn().getCodi() + "#" + expedient.getTipus().getCodi();
}
String documentId = getGestioDocumentalPlugin().createDocument(
expedient.getNumeroIdentificador(),
expedientTipus,
documentCodi,
documentDescripcio,
documentData,
documentArxiuNom,
documentArxiuContingut);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_GESDOC,
"Pujar document",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
return documentId;
} catch (Exception ex) {
String errorDescripcio = "No s'han pogut guardar el document a la gestió documental (" +
"expedientIdentificador=" + expedient.getIdentificador() + ", " +
"documentCodi=" + documentCodi + ", " +
"documentDescripcio=" + documentDescripcio + ", " +
"documentData=" + documentData + ", " +
"documentArxiuNom=" + documentArxiuNom + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_GESDOC,
"Pujar document",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
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(),
"(GESTIÓ DOCUMENTAL. Crear document: " + errorDescripcio + ")",
ex);
}
}
public byte[] gestioDocumentalObtenirDocument(
String documentId) {
long t0 = System.currentTimeMillis();
try {
byte[] contingut = getGestioDocumentalPlugin().retrieveDocument(documentId);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_GESDOC,
"Obtenir document",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"documentId",
documentId));
return contingut;
} catch (Exception ex) {
String errorDescripcio = "No s'han pogut llegir el document de la gestió documental (documentId=" + documentId + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_GESDOC,
"Obtenir document",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"documentId",
documentId));
logger.error(
errorDescripcio,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(GESTIÓ DOCUMENTAL. Crear document: " + errorDescripcio + ")",
ex);
}
}
public void gestioDocumentalDeleteDocument(
String documentId,
Expedient expedient) {
long t0 = System.currentTimeMillis();
try {
if (getGestioDocumentalPlugin() != null)
getGestioDocumentalPlugin().deleteDocument(documentId);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_GESDOC,
"Esborrar document",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"documentId",
documentId));
} catch (Exception ex) {
String errorDescripcio = "No s'han pogut esborrar el document de la gestió documental (documentId=" + documentId + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_GESDOC,
"Obtenir document",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"documentId",
documentId));
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(),
"(GESTIÓ DOCUMENTAL. Delete document: " + errorDescripcio + ")",
ex);
}
}
public boolean gestioDocumentalIsPluginActiu() {
return getGestioDocumentalPlugin() != null;
}
public Integer portasignaturesEnviar(
DocumentDto document,
List<DocumentDto> annexos,
PersonaDto persona,
List<PersonaDto> personesPas1,
int minSignatarisPas1,
List<PersonaDto> personesPas2,
int minSignatarisPas2,
List<PersonaDto> personesPas3,
int minSignatarisPas3,
Expedient expedient,
String importancia,
Date dataLimit,
Long tokenId,
Long processInstanceId,
String transicioOK,
String transicioKO) {
IntegracioParametreDto[] parametres = null;
long t0 = System.currentTimeMillis();
try {
parametres = new IntegracioParametreDto[9];
parametres[0] = new IntegracioParametreDto(
"expedient",
expedient != null ? expedient.getIdentificador() : null);
parametres[1] = new IntegracioParametreDto(
"documentCodi",
document != null ? document.getDocumentCodi() : null);
parametres[2] = new IntegracioParametreDto(
"documentNom",
document != null ? document.getDocumentNom() : null);
parametres[3] = new IntegracioParametreDto(
"documentTipus",
document != null ? document.getTipusDocPortasignatures() : null);
parametres[4] = new IntegracioParametreDto(
"arxiuNom",
document != null ? document.getArxiuNom() : null);
parametres[5] = new IntegracioParametreDto(
"personaCodi",
persona != null ? persona.getCodi() : null);
parametres[6] = new IntegracioParametreDto(
"personesCodiPas1",
personestoString(personesPas1));
parametres[7] = new IntegracioParametreDto(
"personesCodiPas2",
personestoString(personesPas2));
parametres[8] = new IntegracioParametreDto(
"personesCodiPas3",
personestoString(personesPas3));
if (document == null) {
throw new NullPointerException("El document per a enviar a portafirmes es null.");
}
Integer resposta = getPortasignaturesPlugin().uploadDocument(
getDocumentPortasignatures(document, expedient),
getAnnexosPortasignatures(annexos, expedient),
false,
getPassesSignatura(
getSignatariIdPerPersona(persona),
personesPas1,
minSignatarisPas1,
personesPas2,
minSignatarisPas2,
personesPas3,
minSignatarisPas3),
expedient.getIdentificador(),
importancia,
dataLimit);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_PFIRMA,
"Enviar document a firmar",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
Calendar cal = Calendar.getInstance();
Portasignatures portasignatures = new Portasignatures();
portasignatures.setDocumentId(resposta);
portasignatures.setTokenId(tokenId);
portasignatures.setDataEnviat(cal.getTime());
portasignatures.setEstat(TipusEstat.PENDENT);
portasignatures.setDocumentStoreId(document.getId());
portasignatures.setTransicioOK(transicioOK);
portasignatures.setTransicioKO(transicioKO);
portasignatures.setExpedient(expedient);
portasignatures.setProcessInstanceId(processInstanceId.toString());
portasignaturesRepository.save(portasignatures);
return resposta;
} catch (Exception ex) {
String errorDescripcio = "No s'han pogut enviar el document al portafirmes (" +
"documentId=" + (document == null ? "NULL" : document.getId()) + ", " +
"destinatari=" + (persona == null ? "NULL" : persona.getCodi()) + ", " +
"expedient=" + (expedient == null ? "NULL" : expedient.getIdentificador()) + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_PFIRMA,
"Enviar document a firmar",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
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);
}
}
private String personestoString(List<PersonaDto> persones) {
if (persones == null)
return null;
String sPersones = "";
for (PersonaDto persona: persones) {
if (persona != null)
sPersones += persona.getCodi() + ",";
}
if (sPersones.length() > 0)
sPersones = sPersones.substring(0, sPersones.length() - 1);
return sPersones;
}
public void portasignaturesCancelar(
List<Integer> documentIds) {
StringBuilder ids = new StringBuilder();
boolean first = true;
for (Integer documentId: documentIds) {
if (first)
first = false;
else
ids.append(", ");
ids.append(documentId.toString());
}
long t0 = System.currentTimeMillis();
try {
getPortasignaturesPlugin().deleteDocuments(
documentIds);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_PFIRMA,
"Cancel·lació d'enviaments de documents",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"documentIds",
ids.toString()));
for (Integer documentId: documentIds) {
Portasignatures portasignatures = portasignaturesRepository.findByDocumentId(documentId);
if (portasignatures != null) {
portasignatures.setEstat(TipusEstat.CANCELAT);
}
}
} catch (PortasignaturesPluginException ex) {
String errorDescripcio = "No s'han pogut cancel·lar els enviaments al portafirmes (" +
"ids=" + ids.toString() + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_PFIRMA,
"Cancel·lació d'enviaments de documents",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"documentIds",
ids.toString()));
logger.error(
errorDescripcio,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(PORTASIGNATURES. Cancelar: " + errorDescripcio + ")",
ex);
}
}
public String custodiaAfegirSignatura(
Long documentId,
String gesdocId,
String nomArxiuSignat,
String codiTipusCustodia,
byte[] signatura) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"documentId",
documentId),
new IntegracioParametreDto(
"gesdocId",
gesdocId),
new IntegracioParametreDto(
"nomArxiuSignat",
nomArxiuSignat),
new IntegracioParametreDto(
"codiTipusCustodia",
codiTipusCustodia)
};
long t0 = System.currentTimeMillis();
try {
String custodiaId = getCustodiaPlugin().addSignature(
documentId.toString(),
gesdocId,
nomArxiuSignat,
codiTipusCustodia,
signatura);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Enviament de document a custòdia",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
return custodiaId;
} catch (CustodiaPluginException ex) {
String errorDescripcio = "No s'ha pogut afegir la signatura a la custòdia (" +
"documentId=" + documentId + ", " +
"gesdocId=" + gesdocId + ", " +
"nomArxiuSignat=" + nomArxiuSignat + ", " +
"codiTipusCustodia=" + codiTipusCustodia + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Enviament de document a custòdia",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
logger.error(
errorDescripcio,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(CUSTÒDIA. Afegir signatura: " + errorDescripcio + ")",
ex);
}
}
public List<RespostaValidacioSignatura> custodiaDadesValidacioSignatura(
String documentId) {
long t0 = System.currentTimeMillis();
try {
List<RespostaValidacioSignatura> validacions = getCustodiaPlugin().dadesValidacioSignatura(
documentId);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Obtenció de dades de validació de signatura",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"documentId",
documentId));
return validacions;
} catch (CustodiaPluginException ex) {
String errorDescripcio = "No s'han pogut obtenir les dades de les signatures de la custòdia (documentId=" + documentId + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Obtenció de dades de validació de signatura",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"documentId",
documentId));
logger.error(
errorDescripcio,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(CUSTÒDIA. Dades validació signatura: " + errorDescripcio + ")",
ex);
}
}
public List<byte[]> custodiaObtenirSignatures(
String documentId) {
long t0 = System.currentTimeMillis();
try {
List<byte[]> signatures = getCustodiaPlugin().getSignatures(documentId);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Obtenció de signatures",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"documentId",
documentId));
return signatures;
} catch (CustodiaPluginException ex) {
String errorDescripcio = "No s'han pogut obtenirles signatures de la custòdia (documentId=" + documentId + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Obtenció de signatures",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"documentId",
documentId));
logger.error(
errorDescripcio,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(CUSTÒDIA. Obtenir signatures: " + errorDescripcio + ")",
ex);
}
}
public byte[] custodiaObtenirSignaturesAmbArxiu(
String documentId) {
long t0 = System.currentTimeMillis();
try {
byte[] signaturesAmbArxiu = getCustodiaPlugin().getSignaturesAmbArxiu(documentId);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Obtenció de signatures amb arxiu",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"documentId",
documentId));
return signaturesAmbArxiu;
} catch (CustodiaPluginException ex) {
String errorDescripcio = "No s'han pogut obtenirles signatures amb arxiu de la custòdia (documentId=" + documentId + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Obtenció de signatures amb arxiu",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"documentId",
documentId));
logger.error(
errorDescripcio,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(CUSTÒDIA. Obtenir signatures amb arxiu: " + errorDescripcio + ")",
ex);
}
}
public void custodiaEsborrarSignatures(
String documentId,
Expedient expedient) {
long t0 = System.currentTimeMillis();
try {
getCustodiaPlugin().deleteSignatures(documentId);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Esborrar documents custodiats",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"documentId",
documentId));
} catch (CustodiaPluginException ex) {
String errorDescripcio = "No s'ha pogut esborrar el document de la custòdia (documentId=" + documentId + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Esborrar documents custodiats",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"documentId",
documentId));
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(),
"(CUSTÒDIA: Esborrar signatures: " + errorDescripcio + ")",
ex);
}
}
public String custodiaObtenirUrlComprovacioSignatura(
String documentId) {
long t0 = System.currentTimeMillis();
try {
String url = getCustodiaPlugin().getUrlComprovacioSignatura(documentId);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Obtenir URL de comprovació de signatura",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
new IntegracioParametreDto(
"documentId",
documentId));
return url;
} catch (CustodiaPluginException ex) {
String errorDescripcio = "No s'ha pogut obtenir url de comprovació de la custòdia (documentId=" + documentId + ")";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_CUSTODIA,
"Obtenir URL de comprovació de signatura",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
new IntegracioParametreDto(
"documentId",
documentId));
logger.error(
documentId,
ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(CUSTÒDIA. Obtenir URL comprovació: " + errorDescripcio + ")",
ex);
}
}
public boolean custodiaPotObtenirInfoSignatures() {
return getCustodiaPlugin().potObtenirInfoSignatures();
}
public boolean custodiaIsValidacioImplicita() {
return getCustodiaPlugin().isValidacioImplicita();
}
public boolean custodiaIsPluginActiu() {
return getCustodiaPlugin() != null;
}
public RespostaValidacioSignatura signaturaVerificar(
byte[] document,
byte[] signatura,
boolean obtenirDadesCertificat) {
IntegracioParametreDto[] parametres = new IntegracioParametreDto[] {
new IntegracioParametreDto(
"document",
document.length + " bytes"),
new IntegracioParametreDto(
"signatura",
signatura.length + " bytes"),
new IntegracioParametreDto(
"obtenirDadesCertificat",
new Boolean(obtenirDadesCertificat).toString())
};
long t0 = System.currentTimeMillis();
try {
RespostaValidacioSignatura resposta = getSignaturaPlugin().verificarSignatura(
document,
signatura,
obtenirDadesCertificat);
monitorIntegracioHelper.addAccioOk(
MonitorIntegracioHelper.INTCODI_FIRMA,
"Validació de signatura",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
parametres);
return resposta;
} catch (SignaturaPluginException ex) {
String errorDescripcio = "No s'han pogut verificar la signatura";
monitorIntegracioHelper.addAccioError(
MonitorIntegracioHelper.INTCODI_FIRMA,
"Validació de signatura",
IntegracioAccioTipusEnumDto.ENVIAMENT,
System.currentTimeMillis() - t0,
errorDescripcio,
ex,
parametres);
logger.error(errorDescripcio, ex);
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(PLUGIN SIGNATURA. Validació de signatura: " + errorDescripcio + ")",
ex);
}
}
private TramitDto toTramitDto(DadesTramit dadesTramit) {
TramitDto dto = conversioTipusHelper.convertir(
dadesTramit,
TramitDto.class);
if (dto.getDocuments() != null)
dto.getDocuments().clear();
if (dadesTramit.getDocuments() != null) {
List<TramitDocumentDto> documents = new ArrayList<TramitDocumentDto>();
for (DocumentTramit dt: dadesTramit.getDocuments()) {
TramitDocumentDto doc = new TramitDocumentDto();
doc.setNom(dt.getNom());
doc.setIdentificador(dt.getIdentificador());
doc.setInstanciaNumero(dt.getInstanciaNumero());
if (dt.getDocumentTelematic() != null) {
doc.setTelematic(true);
doc.setTelematicArxiuNom(dt.getDocumentTelematic().getArxiuNom());
doc.setTelematicArxiuExtensio(dt.getDocumentTelematic().getArxiuExtensio());
doc.setTelematicArxiuContingut(dt.getDocumentTelematic().getArxiuContingut());
doc.setTelematicReferenciaGestorDocumental(dt.getDocumentTelematic().getReferenciaGestorDocumental());
doc.setTelematicReferenciaCodi(dt.getDocumentTelematic().getReferenciaCodi());
doc.setTelematicReferenciaClau(dt.getDocumentTelematic().getReferenciaClau());
doc.setTelematicEstructurat(dt.getDocumentTelematic().getEstructurat());
if (dt.getDocumentTelematic().getSignatures() != null) {
List<TramitDocumentSignaturaDto> telematicSignatures = new ArrayList<TramitDocumentSignaturaDto>();
for (Signatura s: dt.getDocumentTelematic().getSignatures()) {
telematicSignatures.add(
doc.newDocumentSignatura(
s.getSignatura(),
s.getFormat()));
}
doc.setTelematicSignatures(telematicSignatures);
}
}
if (dt.getDocumentPresencial() != null) {
doc.setPresencial(true);
doc.setPresencialTipus(dt.getDocumentPresencial().getTipus());
doc.setPresencialDocumentCompulsar(dt.getDocumentPresencial().getDocumentCompulsar());
doc.setPresencialFotocopia(dt.getDocumentPresencial().getFotocopia());
doc.setPresencialSignatura(dt.getDocumentPresencial().getSignatura());
}
documents.add(doc);
}
dto.setDocuments(documents);
}
return dto;
}
private RegistreEntrada toRegistreEntrada(RegistreAnotacioDto anotacio) {
RegistreEntrada registreEntrada = new RegistreEntrada();
DadesOficina dadesOficina = new DadesOficina();
dadesOficina.setOrganCodi(anotacio.getOrganCodi());
dadesOficina.setOficinaCodi(anotacio.getOficinaCodi());
registreEntrada.setDadesOficina(dadesOficina);
DadesInteressat dadesInteressat = new DadesInteressat();
dadesInteressat.setEntitatCodi(anotacio.getEntitatCodi());
dadesInteressat.setAutenticat(anotacio.isInteressatAutenticat());
dadesInteressat.setNif(anotacio.getInteressatNif());
dadesInteressat.setNomAmbCognoms(anotacio.getInteressatNomAmbCognoms());
dadesInteressat.setPaisCodi(anotacio.getInteressatPaisCodi());
dadesInteressat.setPaisNom(anotacio.getInteressatPaisNom());
dadesInteressat.setProvinciaCodi(anotacio.getInteressatProvinciaCodi());
dadesInteressat.setProvinciaNom(anotacio.getInteressatProvinciaNom());
dadesInteressat.setMunicipiCodi(anotacio.getInteressatMunicipiCodi());
dadesInteressat.setMunicipiNom(anotacio.getInteressatMunicipiNom());
registreEntrada.setDadesInteressat(dadesInteressat);
DadesRepresentat dadesRepresentat = new DadesRepresentat();
dadesRepresentat.setNif(anotacio.getRepresentatNif());
dadesRepresentat.setNomAmbCognoms(anotacio.getRepresentatNomAmbCognoms());
registreEntrada.setDadesRepresentat(dadesRepresentat);
DadesAssumpte dadesAssumpte = new DadesAssumpte();
dadesAssumpte.setIdiomaCodi(anotacio.getAssumpteIdiomaCodi());
dadesAssumpte.setTipus(anotacio.getAssumpteTipus());
dadesAssumpte.setAssumpte(anotacio.getAssumpteExtracte());
dadesAssumpte.setUnitatAdministrativa(anotacio.getUnitatAdministrativa());
dadesAssumpte.setRegistreNumero(anotacio.getAssumpteRegistreNumero());
dadesAssumpte.setRegistreAny(anotacio.getAssumpteRegistreAny());
registreEntrada.setDadesAssumpte(dadesAssumpte);
if (anotacio.getAnnexos() != null) {
List<DocumentRegistre> documents = new ArrayList<DocumentRegistre>();
for (RegistreAnnexDto annex: anotacio.getAnnexos()) {
DocumentRegistre document = new DocumentRegistre();
document.setNom(annex.getNom());
document.setData(annex.getData());
document.setIdiomaCodi(annex.getIdiomaCodi());
document.setArxiuNom(annex.getArxiuNom());
document.setArxiuContingut(annex.getArxiuContingut());
documents.add(document);
}
registreEntrada.setDocuments(documents);
}
return registreEntrada;
}
private RegistreSortida toRegistreSortida(RegistreAnotacioDto anotacio) {
RegistreSortida registreSortida = new RegistreSortida();
DadesOficina dadesOficina = new DadesOficina();
dadesOficina.setOrganCodi(anotacio.getOrganCodi());
dadesOficina.setOficinaCodi(anotacio.getOficinaCodi());
registreSortida.setDadesOficina(dadesOficina);
DadesInteressat dadesInteressat = new DadesInteressat();
dadesInteressat.setEntitatCodi(anotacio.getEntitatCodi());
dadesInteressat.setAutenticat(anotacio.isInteressatAutenticat());
dadesInteressat.setNif(anotacio.getInteressatNif());
dadesInteressat.setNomAmbCognoms(anotacio.getInteressatNomAmbCognoms());
dadesInteressat.setPaisCodi(anotacio.getInteressatPaisCodi());
dadesInteressat.setPaisNom(anotacio.getInteressatPaisNom());
dadesInteressat.setProvinciaCodi(anotacio.getInteressatProvinciaCodi());
dadesInteressat.setProvinciaNom(anotacio.getInteressatProvinciaNom());
dadesInteressat.setMunicipiCodi(anotacio.getInteressatMunicipiCodi());
dadesInteressat.setMunicipiNom(anotacio.getInteressatMunicipiNom());
registreSortida.setDadesInteressat(dadesInteressat);
DadesRepresentat dadesRepresentat = new DadesRepresentat();
dadesRepresentat.setNif(anotacio.getRepresentatNif());
dadesRepresentat.setNomAmbCognoms(anotacio.getRepresentatNomAmbCognoms());
registreSortida.setDadesRepresentat(dadesRepresentat);
DadesAssumpte dadesAssumpte = new DadesAssumpte();
dadesAssumpte.setIdiomaCodi(anotacio.getAssumpteIdiomaCodi());
dadesAssumpte.setTipus(anotacio.getAssumpteTipus());
dadesAssumpte.setAssumpte(anotacio.getAssumpteExtracte());
dadesAssumpte.setUnitatAdministrativa(anotacio.getUnitatAdministrativa());
dadesAssumpte.setRegistreNumero(anotacio.getAssumpteRegistreNumero());
dadesAssumpte.setRegistreAny(anotacio.getAssumpteRegistreAny());
registreSortida.setDadesAssumpte(dadesAssumpte);
if (anotacio.getAnnexos() != null) {
List<DocumentRegistre> documents = new ArrayList<DocumentRegistre>();
for (RegistreAnnexDto annex: anotacio.getAnnexos()) {
DocumentRegistre document = new DocumentRegistre();
document.setNom(annex.getNom());
document.setData(annex.getData());
document.setIdiomaCodi(annex.getIdiomaCodi());
document.setArxiuNom(annex.getArxiuNom());
document.setArxiuContingut(annex.getArxiuContingut());
documents.add(document);
}
registreSortida.setDocuments(documents);
}
return registreSortida;
}
private RegistreNotificacio toRegistreNotificacio(
RegistreNotificacioDto notificacio) {
RegistreNotificacio registreNotificacio = new RegistreNotificacio();
DadesExpedient dadesExpedient = new DadesExpedient();
dadesExpedient.setIdentificador(notificacio.getExpedientIdentificador());
dadesExpedient.setClau(notificacio.getExpedientClau());
dadesExpedient.setUnitatAdministrativa(notificacio.getExpedientUnitatAdministrativa());
registreNotificacio.setDadesExpedient(dadesExpedient);
DadesOficina dadesOficina = new DadesOficina();
dadesOficina.setOrganCodi(notificacio.getOrganCodi());
dadesOficina.setOficinaCodi(notificacio.getOficinaCodi());
registreNotificacio.setDadesOficina(dadesOficina);
DadesInteressat dadesInteressat = new DadesInteressat();
dadesInteressat.setEntitatCodi(notificacio.getEntitatCodi());
dadesInteressat.setAutenticat(notificacio.isInteressatAutenticat());
dadesInteressat.setNif(notificacio.getInteressatNif());
dadesInteressat.setNomAmbCognoms(notificacio.getInteressatNomAmbCognoms());
dadesInteressat.setPaisCodi(notificacio.getInteressatPaisCodi());
dadesInteressat.setPaisNom(notificacio.getInteressatPaisNom());
dadesInteressat.setProvinciaCodi(notificacio.getInteressatProvinciaCodi());
dadesInteressat.setProvinciaNom(notificacio.getInteressatProvinciaNom());
dadesInteressat.setMunicipiCodi(notificacio.getInteressatMunicipiCodi());
dadesInteressat.setMunicipiNom(notificacio.getInteressatMunicipiNom());
registreNotificacio.setDadesInteressat(dadesInteressat);
DadesRepresentat dadesRepresentat = new DadesRepresentat();
dadesRepresentat.setNif(notificacio.getRepresentatNif());
dadesRepresentat.setNomAmbCognoms(notificacio.getRepresentatNomAmbCognoms());
registreNotificacio.setDadesRepresentat(dadesRepresentat);
DadesNotificacio dadesNotificacio = new DadesNotificacio();
dadesNotificacio.setJustificantRecepcio(notificacio.isNotificacioJustificantRecepcio());
dadesNotificacio.setAvisTitol(notificacio.getNotificacioAvisTitol());
dadesNotificacio.setAvisText(notificacio.getNotificacioAvisText());
dadesNotificacio.setAvisTextSms(notificacio.getNotificacioAvisTextSms());
dadesNotificacio.setOficiTitol(notificacio.getNotificacioOficiTitol());
dadesNotificacio.setOficiText(notificacio.getNotificacioOficiText());
dadesNotificacio.setIdiomaCodi(notificacio.getAssumpteIdiomaCodi());
dadesNotificacio.setTipus(notificacio.getAssumpteTipus());
dadesNotificacio.setAssumpte(notificacio.getAssumpteExtracte());
dadesNotificacio.setUnitatAdministrativa(notificacio.getUnitatAdministrativa());
dadesNotificacio.setRegistreNumero(notificacio.getAssumpteRegistreNumero());
dadesNotificacio.setRegistreAny(notificacio.getAssumpteRegistreAny());
if (notificacio.getTramitSubsanacioIdentificador() != null) {
TramitSubsanacio tramitSubsanacio = new TramitSubsanacio();
tramitSubsanacio.setIdentificador(notificacio.getTramitSubsanacioIdentificador());
tramitSubsanacio.setVersio(notificacio.getTramitSubsanacioVersio());
tramitSubsanacio.setDescripcio(notificacio.getTramitSubsanacioDescripcio());
if (notificacio.getTramitSubsanacioParametres() != null) {
List<TramitSubsanacioParametre> parametres = new ArrayList<TramitSubsanacioParametre>();
for (RegistreNotificacioTramitSubsanacioParametreDto param: notificacio.getTramitSubsanacioParametres()) {
TramitSubsanacioParametre p = new TramitSubsanacioParametre();
p.setParametre(param.getParametre());
p.setValor(param.getValor());
parametres.add(p);
}
tramitSubsanacio.setParametres(parametres);
}
dadesNotificacio.setOficiTramitSubsanacio(tramitSubsanacio);
}
registreNotificacio.setDadesNotificacio(dadesNotificacio);
if (notificacio.getAnnexos() != null) {
List<DocumentRegistre> documents = new ArrayList<DocumentRegistre>();
for (RegistreAnnexDto annex: notificacio.getAnnexos()) {
DocumentRegistre document = new DocumentRegistre();
document.setNom(annex.getNom());
document.setData(annex.getData());
document.setIdiomaCodi(annex.getIdiomaCodi());
document.setArxiuNom(annex.getArxiuNom());
document.setArxiuContingut(annex.getArxiuContingut());
documents.add(document);
}
registreNotificacio.setDocuments(documents);
}
return registreNotificacio;
}
private DocumentPortasignatures getDocumentPortasignatures(
DocumentDto document,
Expedient expedient) {
DocumentPortasignatures documentPs = new DocumentPortasignatures();
documentPs.setTitol(
expedient.getIdentificador() + ": " + document.getDocumentNom());
documentPs.setArxiuNom(document.getVistaNom());
documentPs.setArxiuContingut(document.getVistaContingut());
documentPs.setTipus(document.getTipusDocPortasignatures());
documentPs.setSignat(document.isSignat());
documentPs.setReference(document.getId().toString());
return documentPs;
}
private List<DocumentPortasignatures> getAnnexosPortasignatures(
List<DocumentDto> annexos,
Expedient expedient) {
if (annexos == null)
return null;
List<DocumentPortasignatures> resposta = new ArrayList<DocumentPortasignatures>();
for (DocumentDto document: annexos)
resposta.add(getDocumentPortasignatures(document, expedient));
return resposta;
}
private PasSignatura[] getPassesSignatura(
String signatariId,
List<PersonaDto> personesPas1,
int minSignatarisPas1,
List<PersonaDto> personesPas2,
int minSignatarisPas2,
List<PersonaDto> personesPas3,
int minSignatarisPas3) {
if (personesPas1 != null && personesPas1.size() > 0) {
List<PasSignatura> passes = new ArrayList<PasSignatura>();
PasSignatura pas = new PasSignatura();
List<String> signataris = getSignatariIdsPerPersones(personesPas1);
pas.setSignataris(signataris.toArray(new String[signataris.size()]));
pas.setMinSignataris(minSignatarisPas1);
passes.add(pas);
if (personesPas2 != null && personesPas2.size() > 0) {
pas = new PasSignatura();
signataris = getSignatariIdsPerPersones(personesPas2);
pas.setSignataris(signataris.toArray(new String[signataris.size()]));
pas.setMinSignataris(minSignatarisPas2);
passes.add(pas);
}
if (personesPas3 != null && personesPas3.size() > 0) {
pas = new PasSignatura();
signataris = getSignatariIdsPerPersones(personesPas3);
pas.setSignataris(signataris.toArray(new String[signataris.size()]));
pas.setMinSignataris(minSignatarisPas3);
passes.add(pas);
}
return passes.toArray(new PasSignatura[passes.size()]);
} else if (signatariId != null) {
PasSignatura[] passes = new PasSignatura[1];
PasSignatura pas = new PasSignatura();
pas.setMinSignataris(1);
pas.setSignataris(new String[] {signatariId});
passes[0] = pas;
return passes;
} else {
PasSignatura[] passes = new PasSignatura[0];
return passes;
}
}
private List<String> getSignatariIdsPerPersones(List<PersonaDto> persones) {
List<String> signatariIds = new ArrayList<String>();
for (PersonaDto persona: persones) {
String signatariId = getSignatariIdPerPersona(persona);
if (signatariId != null)
signatariIds.add(signatariId);
}
return signatariIds;
}
private String getSignatariIdPerPersona(PersonaDto persona) {
if (persona == null)
return null;
String signatariId = persona.getDni();
if (isIdUsuariPerCodi())
signatariId = persona.getCodi();
if (isIdUsuariPerDni())
signatariId = persona.getDni();
return signatariId;
}
private String getDescripcioErrorRegistre(
RegistreAnotacioDto anotacio) {
return "organCodi=" + anotacio.getOrganCodi() + ", " +
"oficinaCodi=" + anotacio.getOficinaCodi() + ", " +
"entitatCodi=" + anotacio.getEntitatCodi() + ", " +
"unitatAdministrativa=" + anotacio.getUnitatAdministrativa() + ", " +
"unitatAdministrativa=" + anotacio.getAssumpteExtracte() + ", " +
"unitatAdministrativa=" + anotacio.getUnitatAdministrativa() + ", " +
"annexos=" + ((anotacio.getAnnexos() != null) ? anotacio.getAnnexos().size() : 0);
}
private boolean isIdUsuariPerDni() {
return "dni".equalsIgnoreCase(GlobalProperties.getInstance().getProperty("app.portasignatures.plugin.usuari.id"));
}
private boolean isIdUsuariPerCodi() {
return "codi".equalsIgnoreCase(GlobalProperties.getInstance().getProperty("app.portasignatures.plugin.usuari.id"));
}
private boolean gestionDocumentalIsTipusExpedientNou() {
return "true".equalsIgnoreCase(
GlobalProperties.getInstance().getProperty("app.gesdoc.plugin.tipus.nou"));
}
private boolean gestionDocumentalIsTipusExpedientDirecte() {
return "true".equalsIgnoreCase(
GlobalProperties.getInstance().getProperty("app.gesdoc.plugin.tipus.directe"));
}
private PersonesPlugin getPersonesPlugin() {
if (!personesPluginEvaluat) {
String pluginClass = GlobalProperties.getInstance().getProperty("app.persones.plugin.class");
if (pluginClass != null) {
try {
Class<?> clazz = Class.forName(pluginClass);
personesPlugin = (PersonesPlugin)clazz.newInstance();
} catch (Exception ex) {
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"No s'ha pogut instanciar el plugin de persones (class=" + pluginClass + ")",
ex);
}
}
personesPluginEvaluat = true;
}
return personesPlugin;
}
private TramitacioPlugin getTramitacioPlugin() {
if (!tramitacioPluginEvaluat) {
String pluginClass = GlobalProperties.getInstance().getProperty("app.tramitacio.plugin.class");
if (pluginClass == null) {
String bantelUrl = GlobalProperties.getInstance().getProperty("app.bantel.entrades.url");
if (bantelUrl.contains("v1")) {
pluginClass = "net.conselldemallorca.helium.integracio.plugins.tramitacio.TramitacioPluginSistrav1";
} else {
pluginClass = "net.conselldemallorca.helium.integracio.plugins.tramitacio.TramitacioPluginSistrav2";
}
}
if (pluginClass != null && pluginClass.length() > 0) {
try {
Class<?> clazz = Class.forName(pluginClass);
tramitacioPlugin = (TramitacioPlugin)clazz.newInstance();
} catch (Exception ex) {
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"No s'ha pogut instanciar el plugin de tramitació (class=" + pluginClass + ")",
ex);
}
}
}
return tramitacioPlugin;
}
private RegistrePlugin getRegistrePlugin() {
if (!registrePluginEvaluat) {
String pluginClass = GlobalProperties.getInstance().getProperty("app.registre.plugin.class");
if (pluginClass != null && pluginClass.length() > 0) {
try {
Class<?> clazz = Class.forName(pluginClass);
registrePlugin = (RegistrePlugin)clazz.newInstance();
} catch (Exception ex) {
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"No s'ha pogut instanciar el plugin de registre (class=" + pluginClass + ")",
ex);
}
}
}
return registrePlugin;
}
private GestioDocumentalPlugin getGestioDocumentalPlugin() {
if (!gestioDocumentalPluginEvaluat) {
String pluginClass = GlobalProperties.getInstance().getProperty("app.gesdoc.plugin.class");
if (pluginClass != null && pluginClass.length() > 0) {
try {
Class<?> clazz = Class.forName(pluginClass);
gestioDocumentalPlugin = (GestioDocumentalPlugin)clazz.newInstance();
} catch (Exception ex) {
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"No s'ha pogut instanciar el plugin de gestió documental (class=" + pluginClass + ")",
ex);
}
}
}
return gestioDocumentalPlugin;
}
private PortasignaturesPlugin getPortasignaturesPlugin() {
if (!portasignaturesPluginEvaluat) {
String pluginClass = GlobalProperties.getInstance().getProperty("app.portasignatures.plugin.class");
if ((pluginClass != null) && (pluginClass.length() > 0)) {
try {
Class<?> clazz = Class.forName(pluginClass);
portasignaturesPlugin = (PortasignaturesPlugin)clazz.newInstance();
} catch (Exception ex) {
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"No s'ha pogut instanciar el plugin de portafirmes (class=" + pluginClass + ")",
ex);
}
}
}
return portasignaturesPlugin;
}
private CustodiaPlugin getCustodiaPlugin() {
if (!custodiaPluginEvaluat) {
String pluginClass = GlobalProperties.getInstance().getProperty("app.custodia.plugin.class");
if (pluginClass != null && pluginClass.length() > 0) {
try {
Class<?> clazz = Class.forName(pluginClass);
custodiaPlugin = (CustodiaPlugin)clazz.newInstance();
} catch (Exception ex) {
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"No s'ha pogut instanciar el plugin de custòdia (class=" + pluginClass + ")",
ex);
}
}
}
return custodiaPlugin;
}
private SignaturaPlugin getSignaturaPlugin() {
if (!signaturaPluginEvaluat) {
String pluginClass = GlobalProperties.getInstance().getProperty("app.signatura.plugin.class");
if (pluginClass != null && pluginClass.length() > 0) {
try {
Class<?> clazz = Class.forName(pluginClass);
signaturaPlugin = (SignaturaPlugin)clazz.newInstance();
} catch (Exception ex) {
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"No s'ha pogut instanciar el plugin de signatura (class=" + pluginClass + ")",
ex);
}
}
}
return signaturaPlugin;
}
private static final Log logger = LogFactory.getLog(PluginHelper.class);
}