ConvertitoreCodiceDiagnostici.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.pdd.logger.diagnostica;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.soap.SOAPFault;
import org.apache.commons.lang.StringUtils;
import org.openspcoop2.core.config.GestioneTokenAutenticazione;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.constants.MTOMProcessorType;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
import org.openspcoop2.core.constants.CostantiDB;
import org.openspcoop2.core.constants.TipiConnettore;
import org.openspcoop2.core.eccezione.details.DettaglioEccezione;
import org.openspcoop2.core.eccezione.details.utils.XMLUtils;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDServizioApplicativo;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.registry.driver.IDServizioFactory;
import org.openspcoop2.core.transazioni.CredenzialeMittente;
import org.openspcoop2.core.transazioni.Transazione;
import org.openspcoop2.core.transazioni.constants.PddRuolo;
import org.openspcoop2.core.transazioni.constants.TipoAPI;
import org.openspcoop2.core.transazioni.utils.credenziali.CredenzialeTokenClient;
import org.openspcoop2.message.OpenSPCoop2Message;
import org.openspcoop2.message.OpenSPCoop2MessageFactory;
import org.openspcoop2.message.OpenSPCoop2MessageParseResult;
import org.openspcoop2.message.OpenSPCoop2RestMessage;
import org.openspcoop2.message.OpenSPCoop2SoapMessage;
import org.openspcoop2.message.constants.MessageRole;
import org.openspcoop2.message.constants.MessageType;
import org.openspcoop2.message.constants.ServiceBinding;
import org.openspcoop2.message.exception.MessageException;
import org.openspcoop2.message.exception.MessageNotSupportedException;
import org.openspcoop2.message.soap.SoapUtils;
import org.openspcoop2.message.utils.MessageUtilities;
import org.openspcoop2.pdd.core.CostantiPdD;
import org.openspcoop2.pdd.core.PdDContext;
import org.openspcoop2.pdd.core.autenticazione.GestoreAutenticazione;
import org.openspcoop2.pdd.core.connettori.ConnettoreBase;
import org.openspcoop2.pdd.core.connettori.ConnettoreUtils;
import org.openspcoop2.pdd.core.controllo_traffico.GeneratoreMessaggiErrore;
import org.openspcoop2.pdd.core.credenziali.engine.GestoreCredenzialiEngine;
import org.openspcoop2.pdd.core.token.PolicyGestioneToken;
import org.openspcoop2.pdd.core.trasformazioni.GestoreTrasformazioniUtilities;
import org.openspcoop2.pdd.logger.LogLevels;
import org.openspcoop2.pdd.logger.MsgDiagnosticiProperties;
import org.openspcoop2.pdd.logger.record.AbstractDatoRicostruzione;
import org.openspcoop2.pdd.logger.record.RuoloTransazione;
import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
import org.openspcoop2.protocol.engine.constants.Costanti;
import org.openspcoop2.protocol.engine.utils.NamingUtils;
import org.openspcoop2.protocol.sdk.Busta;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.constants.CostantiProtocollo;
import org.openspcoop2.protocol.sdk.constants.EsitoTransazioneName;
import org.openspcoop2.protocol.sdk.constants.MessaggiFaultErroreCooperazione;
import org.openspcoop2.protocol.sdk.constants.ProfiloDiCollaborazione;
import org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico;
import org.openspcoop2.protocol.sdk.tracciamento.Traccia;
import org.openspcoop2.protocol.utils.EsitiProperties;
import org.openspcoop2.security.message.constants.SecurityConstants;
import org.openspcoop2.utils.LoggerWrapperFactory;
import org.openspcoop2.utils.UtilsException;
import org.openspcoop2.utils.properties.PropertiesReader;
import org.openspcoop2.utils.transport.http.HttpRequestMethod;
import org.slf4j.Logger;
/**
* ConvertitoreCodiceDiagnostici
*
* @author Poli Andrea (poli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class ConvertitoreCodiceDiagnostici {
protected org.openspcoop2.pdd.logger.MsgDiagnostico msgDiag;
protected Transazione transazioneDTO = null;
protected InformazioniRecordDiagnostici info;
protected IProtocolFactory<?> protocolFactory;
protected List<String> codiciModuliSimulabili = new ArrayList<>();
protected List<String> codiciModuliSimulabiliIntegrazione = new ArrayList<>();
protected List<String> codiciModuliSimulabiliCooperazione = new ArrayList<>();
protected OpenSPCoop2Message mFaultRicostruitoCooperazione = null;
protected String mFaultRicostruitoCooperazioneDescrizioneWithDetails = null;
protected String mFaultRicostruitoCooperazioneDescrizioneWithoutDetails = null;
protected OpenSPCoop2Message mFaultRicostruitoIntegrazione = null;
protected String mFaultRicostruitoIntegrazioneDescrizioneWithDetails = null;
protected String mFaultRicostruitoIntegrazioneDescrizioneWithoutDetails = null;
protected List<String> codiciModuliSimulabiliTracciamento = new ArrayList<>();
protected boolean esitoAutenticazioneInCache = false;
protected boolean esitoAutorizzazioneInCache = false;
protected boolean esitoAutorizzazioneContenutiInCache = false;
protected boolean esitoAutenticazioneTokenInCache = false;
protected boolean esitoModiTokenAuthorizationInCache = false;
protected boolean esitoModiTokenIntegrityInCache = false;
protected boolean esitoModiTokenAuditInCache = false;
protected boolean rispostaLettaDallaCache = false;
protected String dettaglioAutenticazioneFallita = null;
public static final String RICEZIONE_CONTENUTI_APPLICATIVI_CODICE_MODULO = "001"; // codice modulo
public static final String RICEZIONE_CONTENUTI_APPLICATIVI_LOCAL_FORWARD_LOGINFO_CODICE = "001034"; // ricezioneContenutiApplicativi.localForward.logInfo
public static final String RICEZIONE_CONTENUTI_APPLICATIVI_CONSEGNA_RISPOSTA_APPLICATIVA_OK_CODICE = "001005"; // ricezioneContenutiApplicativi.consegnaRispostaApplicativaOkEffettuata
public static final String RICEZIONE_CONTENUTI_APPLICATIVI_CONSEGNA_RISPOSTA_APPLICATIVA_KO_CODICE = "001006"; // ricezioneContenutiApplicativi.consegnaRispostaApplicativaKoEffettuata
public static final String RICEZIONE_CONTENUTI_APPLICATIVI_AUTENTICAZIONE_IN_CORSO_CODICE = "001050"; // ricezioneContenutiApplicativi.autenticazioneInCorso
public static final String IMBUSTAMENTO_CODICE_MODULO = "002"; // codice modulo
public static final String INOLTRO_BUSTE_CODICE_MODULO = "003"; // codice modulo
public static final String INOLTRO_BUSTE_INOLTRO_CON_ERRORE_CODICE = "003008"; // inoltroBuste.inoltroConErrore
public static final String INOLTRO_BUSTE_RICEZIONE_SOAP_FAULT_CODICE = "003013"; // inoltroBuste.ricezioneSoapFault
public static final String RICEZIONE_BUSTE_CODICE_MODULO = "004"; // codice modulo
public static final String RICEZIONE_BUSTE_AUTORIZZAZIONE_BUSTE_EFFETTUATA_CODICE = "004004"; // ricezioneBuste.autorizzazioneBusteEffettuata
public static final String RICEZIONE_BUSTE_AUTENTICAZIONE_IN_CORSO_CODICE = "004074"; //ricezioneBuste.autenticazioneInCorso
public static final String RICEZIONE_BUSTE_AUTENTICAZIONE_EFFETTUATA_CODICE = "004075"; //ricezioneBuste.autenticazioneEffettuata
public static final String RICEZIONE_BUSTE_AUTENTICAZIONE_FALLITA_CODICE = "004076"; //ricezioneBuste.autenticazioneFallita
public static final String RICEZIONE_BUSTE_AUTENTICAZIONE_FALLITA_OPZIONALE_CODICE = "004077"; //ricezioneBuste.autenticazioneFallita.opzionale
public static final String SBUSTAMENTO_CODICE_MODULO = "005"; // codice modulo
public static final String SBUSTAMENTO_RISPOSTE_CODICE_MODULO = "006"; // codice modulo
public static final String CONSEGNA_CONTENUTI_APPLICATIVI_CODICE_MODULO = "007"; // codice modulo
public static final String CONSEGNA_CONTENUTI_APPLICATIVI_RICEZIONE_SOAP_FAULT_CODICE = "007014"; // consegnaContenutiApplicativi.ricezioneSoapFault
public ConvertitoreCodiceDiagnostici(Transazione transazioneDTO,
Traccia tracciaRichiesta, Traccia tracciaRisposta,
InformazioniRecordDiagnostici info,
CredenzialeMittente credenzialeClientId) throws ProtocolException{
this.init(null, tracciaRichiesta, tracciaRisposta, transazioneDTO, info, credenzialeClientId);
}
protected ConvertitoreCodiceDiagnostici() {
// va chiamato init
}
protected void init(IProtocolFactory<?> protocolFactory, Traccia tracciaRichiesta, Traccia tracciaRisposta,
Transazione transazioneDTO, InformazioniRecordDiagnostici info,
CredenzialeMittente credenzialeClientId) throws ProtocolException{
if(protocolFactory==null){
protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(transazioneDTO.getProtocollo());
}
/**Logger log = protocolFactory.getLogger() != null ? protocolFactory.getLogger() : LoggerWrapperFactory.getLogger(ConvertitoreCodiceDiagnostici.class);*/
String confDir = null;
if(!MsgDiagnosticiProperties.initialize(null,confDir)){
throw new ProtocolException("Inizializzazione MsgDiagnosticiProperties non riuscita");
}
MsgDiagnosticiProperties msgDiagProperties = MsgDiagnosticiProperties.getInstance();
if(!msgDiagProperties.initializeMsgDiagnosticiPersonalizzati()){
throw new ProtocolException("Inizializzazione MsgDiagnosticiProperties (msg personalizzati) non riuscita");
}
this.msgDiag = org.openspcoop2.pdd.logger.MsgDiagnostico.newInstance();
this.msgDiag.setPrefixMsgPersonalizzati("");
this.transazioneDTO = transazioneDTO;
this.info = info;
/* ---- Codici Simulabili ----- */
//this.codiciModuliSimulabili.add("000"); all
this.codiciModuliSimulabili.add(RICEZIONE_CONTENUTI_APPLICATIVI_CODICE_MODULO); // ricezioneContenutiApplicativi
this.codiciModuliSimulabili.add(IMBUSTAMENTO_CODICE_MODULO); // imbustamentoBusta
this.codiciModuliSimulabili.add(INOLTRO_BUSTE_CODICE_MODULO); // inoltroBuste
this.codiciModuliSimulabili.add(RICEZIONE_BUSTE_CODICE_MODULO); // ricezioneBuste
this.codiciModuliSimulabili.add(SBUSTAMENTO_CODICE_MODULO); // sbustamentoBusta
this.codiciModuliSimulabili.add(SBUSTAMENTO_RISPOSTE_CODICE_MODULO); // sbustamentoRispostaBusta
this.codiciModuliSimulabili.add(CONSEGNA_CONTENUTI_APPLICATIVI_CODICE_MODULO); // consegnaContenutiApplicativi
this.codiciModuliSimulabili.add("008"); // integrationManager
//this.codiciModuliSimulabili.add("009"); // tracciamento
//this.codiciModuliSimulabili.add("010"); // timerGestoreRiscontriRicevute
//this.codiciModuliSimulabili.add("011"); // timerGestoreMessaggi
//this.codiciModuliSimulabili.add("012"); // timerGestoreMessaggiInconsistenti
//this.codiciModuliSimulabili.add("013"); // timerGestoreRepositoryBuste
//this.codiciModuliSimulabili.add("014"); // timerMonitoraggioRisorse
//this.codiciModuliSimulabili.add("015"); // timerThreshold
//this.codiciModuliSimulabili.add("100"); // openspcoopStartup
this.codiciModuliSimulabiliIntegrazione.add(RICEZIONE_CONTENUTI_APPLICATIVI_CODICE_MODULO); // ricezioneContenutiApplicativi
this.codiciModuliSimulabiliIntegrazione.add(IMBUSTAMENTO_CODICE_MODULO); // imbustamentoBusta
this.codiciModuliSimulabiliIntegrazione.add(CONSEGNA_CONTENUTI_APPLICATIVI_CODICE_MODULO); // consegnaContenutiApplicativi
this.codiciModuliSimulabiliCooperazione.add(INOLTRO_BUSTE_CODICE_MODULO); // inoltroBuste
this.codiciModuliSimulabiliCooperazione.add(RICEZIONE_BUSTE_CODICE_MODULO); // ricezioneBuste
this.codiciModuliSimulabiliCooperazione.add(SBUSTAMENTO_CODICE_MODULO); // sbustamentoBusta
this.codiciModuliSimulabiliCooperazione.add(SBUSTAMENTO_RISPOSTE_CODICE_MODULO); // sbustamentoRispostaBusta
this.codiciModuliSimulabiliTracciamento.add("009007"); // richiestaIngresso.inCorso
this.codiciModuliSimulabiliTracciamento.add("009008"); // richiestaIngresso.completato
this.codiciModuliSimulabiliTracciamento.add("009009"); // richiestaUscita.inCorso
this.codiciModuliSimulabiliTracciamento.add("009010"); // richiestaUscita.completato
this.codiciModuliSimulabiliTracciamento.add("009011"); // rispostaIngresso.inCorso
this.codiciModuliSimulabiliTracciamento.add("009012"); // rispostaIngresso.completato
this.codiciModuliSimulabiliTracciamento.add("009013"); // rispostaUscita.inCorso
this.codiciModuliSimulabiliTracciamento.add("009014"); // rispostaUscita.completato
this.codiciModuliSimulabiliTracciamento.add("009015"); // richiestaIngresso.inCorso (fileTrace)
this.codiciModuliSimulabiliTracciamento.add("009016"); // richiestaIngresso.completato (fileTrace)
this.codiciModuliSimulabiliTracciamento.add("009017"); // richiestaUscita.inCorso (fileTrace)
this.codiciModuliSimulabiliTracciamento.add("009018"); // richiestaUscita.completato (fileTrace)
this.codiciModuliSimulabiliTracciamento.add("009019"); // rispostaIngresso.inCorso (fileTrace)
this.codiciModuliSimulabiliTracciamento.add("009020"); // rispostaIngresso.completato (fileTrace)
this.codiciModuliSimulabiliTracciamento.add("009021"); // rispostaUscita.inCorso (fileTrace)
this.codiciModuliSimulabiliTracciamento.add("009022"); // rispostaUscita.completato (fileTrace)
/* ---- Dati identificativi ----- */
IDSoggetto soggettoMittente = null;
if(transazioneDTO.getTipoSoggettoFruitore()!=null && transazioneDTO.getNomeSoggettoFruitore()!=null){
soggettoMittente = new IDSoggetto(transazioneDTO.getTipoSoggettoFruitore(),transazioneDTO.getNomeSoggettoFruitore());
}
IDServizio idServizio = null;
try {
if(transazioneDTO.getTipoServizio()!=null && transazioneDTO.getNomeServizio()!=null &&
transazioneDTO.getTipoSoggettoErogatore()!=null && transazioneDTO.getNomeSoggettoErogatore()!=null) {
idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(transazioneDTO.getTipoServizio(),transazioneDTO.getNomeServizio(),
transazioneDTO.getTipoSoggettoErogatore(),transazioneDTO.getNomeSoggettoErogatore(),
transazioneDTO.getVersioneServizio());
}
}catch(Exception e) {
throw new ProtocolException(e.getMessage(),e);
}
if(idServizio!=null) {
idServizio.setAzione(transazioneDTO.getAzione());
}
/* ---- Protocollo ---- */
this.protocolFactory = protocolFactory;
String protocollo = protocolFactory.getProtocol();
this.msgDiag.addKeywords(protocolFactory);
/* ---- Buste ---- */
// NOTA: se esiste una traccia di richiesta, si fornisce quella.
// Altrimenti la si costruisce dalla transazione.
Busta bustaRichiesta = null;
if(tracciaRichiesta!=null && tracciaRichiesta.getBusta()!=null){
bustaRichiesta = tracciaRichiesta.getBusta();
this.msgDiag.addKeywords(tracciaRichiesta.getBusta(), true);
}
else{
bustaRichiesta = new Busta(protocollo);
bustaRichiesta.setID(transazioneDTO.getIdMessaggioRichiesta());
ProfiloDiCollaborazione profilo = null;
if(transazioneDTO.getProfiloCollaborazioneOp2()!=null){
profilo = ProfiloDiCollaborazione.toProfiloDiCollaborazione(transazioneDTO.getProfiloCollaborazioneOp2());
bustaRichiesta.setProfiloDiCollaborazione(profilo);
}
bustaRichiesta.setProfiloDiCollaborazioneValue(transazioneDTO.getProfiloCollaborazioneProt());
bustaRichiesta.setTipoMittente(transazioneDTO.getTipoSoggettoFruitore());
bustaRichiesta.setMittente(transazioneDTO.getNomeSoggettoFruitore());
bustaRichiesta.setIdentificativoPortaMittente(transazioneDTO.getIdportaSoggettoFruitore());
bustaRichiesta.setIndirizzoMittente(transazioneDTO.getIndirizzoSoggettoFruitore());
bustaRichiesta.setTipoDestinatario(transazioneDTO.getTipoSoggettoErogatore());
bustaRichiesta.setDestinatario(transazioneDTO.getNomeSoggettoErogatore());
bustaRichiesta.setIdentificativoPortaDestinatario(transazioneDTO.getIdportaSoggettoErogatore());
bustaRichiesta.setIndirizzoDestinatario(transazioneDTO.getIndirizzoSoggettoErogatore());
bustaRichiesta.setTipoServizio(transazioneDTO.getTipoServizio());
bustaRichiesta.setServizio(transazioneDTO.getNomeServizio());
bustaRichiesta.setVersioneServizio(transazioneDTO.getVersioneServizio());
bustaRichiesta.setAzione(transazioneDTO.getAzione());
//bustaRichiesta.setRiferimentoMessaggio(null); // non posso saperlo se c'era l'id di richiesta o altro
//bustaRichiesta.setSequenza(-1); // non posso saperlo se c'era nella richiesta o nella risposta
//bustaRichiesta.setScadenza(new Date()); //non posso saperlo se c'era nella richiesta o nella risposta
this.msgDiag.addKeywords(bustaRichiesta, true);
}
// NOTA: se esiste una traccia di richiesta, si fornisce quella.
// Altrimenti la si costruisce dalla transazione.
if(tracciaRisposta!=null && tracciaRisposta.getBusta()!=null){
this.msgDiag.addKeywords(tracciaRisposta.getBusta(), false);
}
else{
Busta bustaRisposta = new Busta(protocollo);
bustaRisposta.setID(transazioneDTO.getIdMessaggioRisposta());
ProfiloDiCollaborazione profilo = null;
if(transazioneDTO.getProfiloCollaborazioneOp2()!=null){
profilo = ProfiloDiCollaborazione.toProfiloDiCollaborazione(transazioneDTO.getProfiloCollaborazioneOp2());
bustaRisposta.setProfiloDiCollaborazione(profilo);
}
bustaRisposta.setProfiloDiCollaborazioneValue(transazioneDTO.getProfiloCollaborazioneProt());
bustaRisposta.setTipoMittente(transazioneDTO.getTipoSoggettoErogatore());
bustaRisposta.setMittente(transazioneDTO.getNomeSoggettoErogatore());
bustaRisposta.setIdentificativoPortaMittente(transazioneDTO.getIdportaSoggettoErogatore());
bustaRisposta.setIndirizzoMittente(transazioneDTO.getIndirizzoSoggettoErogatore());
bustaRisposta.setTipoDestinatario(transazioneDTO.getTipoSoggettoFruitore());
bustaRisposta.setDestinatario(transazioneDTO.getNomeSoggettoFruitore());
bustaRisposta.setIdentificativoPortaDestinatario(transazioneDTO.getIdportaSoggettoFruitore());
bustaRisposta.setIndirizzoDestinatario(transazioneDTO.getIndirizzoSoggettoFruitore());
bustaRisposta.setTipoServizio(transazioneDTO.getTipoServizio());
bustaRisposta.setServizio(transazioneDTO.getNomeServizio());
bustaRisposta.setVersioneServizio(transazioneDTO.getVersioneServizio());
bustaRisposta.setAzione(transazioneDTO.getAzione());
//bustaRichiesta.setRiferimentoMessaggio(null); // non posso saperlo se c'era l'id di richiesta o altro
//bustaRichiesta.setSequenza(-1); // non posso saperlo se c'era nella richiesta o nella risposta
//bustaRichiesta.setScadenza(new Date()); //non posso saperlo se c'era nella richiesta o nella risposta
this.msgDiag.addKeywords(bustaRisposta, false);
}
/* ---- Servizi Applicativi ---- */
String servizioApplicativoFruitore = transazioneDTO.getServizioApplicativoFruitore();
if(servizioApplicativoFruitore!=null && !"".equals(servizioApplicativoFruitore)){
this.msgDiag.addKeyword(CostantiPdD.KEY_SA_FRUITORE, transazioneDTO.getServizioApplicativoFruitore());
}
else{
this.msgDiag.addKeyword(CostantiPdD.KEY_SA_FRUITORE, CostantiPdD.SERVIZIO_APPLICATIVO_ANONIMO);
}
String servizioApplicativoErogatore = transazioneDTO.getServizioApplicativoErogatore();
this.msgDiag.addKeyword(CostantiPdD.KEY_SA_EROGATORE, servizioApplicativoErogatore);
/* ---- Servizi Applicativi via Token ---- */
if(credenzialeClientId!=null && credenzialeClientId.getCredenziale()!=null) {
String clientId = CredenzialeTokenClient.convertClientIdDBValueToOriginal(credenzialeClientId.getCredenziale());
if(clientId!=null) {
this.msgDiag.addKeyword(CostantiPdD.KEY_TOKEN_CLIENT_ID, clientId);
}
try {
IDServizioApplicativo idApplicativoToken = CredenzialeTokenClient.convertApplicationDBValueToOriginal(credenzialeClientId.getCredenziale());
if(idApplicativoToken!=null) {
this.msgDiag.addKeyword(CostantiPdD.KEY_TOKEN_SERVIZIO_APPLICATIVO, idApplicativoToken.getNome()+NamingUtils.LABEL_DOMINIO+idApplicativoToken.getIdSoggettoProprietario().toString());
}
}catch(Exception e) {
protocolFactory.getLogger().error(e.getMessage(),e);
}
}
/* ---- Correlazione Applicativa ---- */
this.msgDiag.addKeyword(CostantiPdD.KEY_ID_CORRELAZIONE_APPLICATIVA, transazioneDTO.getIdCorrelazioneApplicativa());
/* ---- Ruolo (scenario, tipologia, tipoRicevuta, profiloAsincrono) ---- */
RuoloTransazione ruoloTransazione = RuoloTransazione.toEnumConstant(transazioneDTO.getRuoloTransazione());
String idAsincrono = transazioneDTO.getIdAsincrono();
if(ruoloTransazione!=null){
if(RuoloTransazione.INVOCAZIONE_ONEWAY.equals(ruoloTransazione)){
this.msgDiag.addKeyword(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO, Costanti.SCENARIO_ONEWAY_INVOCAZIONE_SERVIZIO);
}
else if(RuoloTransazione.INVOCAZIONE_SINCRONA.equals(ruoloTransazione)){
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPOLOGIA_RISPOSTA_APPLICATIVA, "risposta sincrona");
this.msgDiag.addKeyword(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO, Costanti.SCENARIO_SINCRONO_INVOCAZIONE_SERVIZIO);
}
else if(RuoloTransazione.INVOCAZIONE_ASINCRONA_SIMMETRICA.equals(ruoloTransazione)){
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPOLOGIA_RISPOSTA_APPLICATIVA, "ricevuta di una richiesta asincrona simmetrica");
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_RICEVUTA_ASINCRONA, "ricevuta di una richiesta asincrona simmetrica");
this.msgDiag.addKeyword(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO, Costanti.SCENARIO_ASINCRONO_SIMMETRICO_INVOCAZIONE_SERVIZIO);
}
else if(RuoloTransazione.RISPOSTA_ASINCRONA_SIMMETRICA.equals(ruoloTransazione)){
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPOLOGIA_RISPOSTA_APPLICATIVA, "ricevuta di una risposta asincrona simmetrica");
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_RICEVUTA_ASINCRONA, "ricevuta di una risposta asincrona simmetrica");
if(idAsincrono!=null){
this.msgDiag.addKeyword(CostantiPdD.KEY_ID_CORRELAZIONE_ASINCRONA, idAsincrono);
}
this.msgDiag.addKeyword(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO, Costanti.SCENARIO_ASINCRONO_SIMMETRICO_CONSEGNA_RISPOSTA);
}
else if(RuoloTransazione.INVOCAZIONE_ASINCRONA_ASIMMETRICA.equals(ruoloTransazione)){
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPOLOGIA_RISPOSTA_APPLICATIVA, "ricevuta di una richiesta asincrona asimmetrica");
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_RICEVUTA_ASINCRONA, "ricevuta di una richiesta asincrona asimmetrica");
this.msgDiag.addKeyword(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO, Costanti.SCENARIO_ASINCRONO_ASIMMETRICO_INVOCAZIONE_SERVIZIO);
}
else if(RuoloTransazione.RICHIESTA_STATO_ASINCRONA_ASIMMETRICA.equals(ruoloTransazione)){
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPOLOGIA_RISPOSTA_APPLICATIVA, "ricevuta di una risposta asincrona asimmetrica");
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_RICEVUTA_ASINCRONA, "ricevuta di una risposta asincrona asimmetrica contenente l'esito della richiesta stato");
if(idAsincrono!=null){
this.msgDiag.addKeyword(CostantiPdD.KEY_ID_CORRELAZIONE_ASINCRONA, idAsincrono);
}
this.msgDiag.addKeyword(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO, Costanti.SCENARIO_ASINCRONO_ASIMMETRICO_POLLING);
}
}
String tipoMessaggio = "messaggio";
//tipoMessaggio = "ricevuta asincrona"; non simulabile
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_MESSAGGIO_BUSTA, tipoMessaggio);
/* ---- Behaviour ---- */
// L'informazione non la si puo' salvare essendo i behaviour piu' di 1.
// Inoltre contengono il carattere separatore e andrebbe gestita anche questa criticita
this.msgDiag.addKeyword(CostantiPdD.KEY_DESCRIZIONE_BEHAVIOUR, "");
/* ---- Router ---- */
// router non verra' simulato
this.msgDiag.addKeyword(CostantiPdD.KEY_DESTINATARIO_TRASMISSIONE, "");
/* ---- Credenziali ---- */
String credenziali = transazioneDTO.getCredenziali();
// credenziali da gateway
if(credenziali!=null && !"".equals(credenziali)){
if(GestoreCredenzialiEngine.containsPrefixGatewayCredenziali(credenziali)) {
String identitaGateway = GestoreCredenzialiEngine.readIdentitaGatewayCredenziali(credenziali);
credenziali = GestoreCredenzialiEngine.erasePrefixGatewayCredenziali(credenziali);
this.msgDiag.addKeyword(CostantiPdD.KEY_IDENTITA_GESTORE_CREDENZIALI, identitaGateway);
this.msgDiag.addKeyword(CostantiPdD.KEY_NUOVE_CREDENZIALI, normalizeCredenziali(credenziali,true,false));
}
else{
this.msgDiag.addKeyword(CostantiPdD.KEY_NUOVE_CREDENZIALI, normalizeCredenziali(credenziali,true,false));
}
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI, normalizeCredenziali(credenziali,true,true));
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_SA_FRUITORE, normalizeCredenziali(credenziali,true,true));
}
else{
this.msgDiag.addKeyword(CostantiPdD.KEY_NUOVE_CREDENZIALI, "");
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI, "");
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_SA_FRUITORE, "");
}
/* ---- Operazione IM ---- */
if(transazioneDTO.getOperazioneIm()!=null){
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_OPERAZIONE_IM, transazioneDTO.getOperazioneIm());
}
/* ---- Parametri IM ---- */
if(transazioneDTO.getNomePorta()!=null){
String messaggioPerIdAsincrono = "";
if(idAsincrono!=null){
messaggioPerIdAsincrono = " riferimentoMessaggio["+idAsincrono+"]";
}
String c = "";
if(credenziali!=null){
c = credenziali;
}
String param = "PD["+transazioneDTO.getNomePorta()+"]"+c+messaggioPerIdAsincrono;
this.msgDiag.addKeyword(CostantiPdD.KEY_PARAMETRI_OPERAZIONE_IM, param);
}
/* ---- Autorizzazione Buste ---- */
if(idServizio!=null) {
if(soggettoMittente!=null){
this.msgDiag.addKeyword(CostantiPdD.KEY_MITTENTE_E_SERVIZIO_DA_AUTORIZZARE, "fruitore ["+soggettoMittente.toString()+"] -> servizio ["+idServizio.toString()+"]");
}
else{
this.msgDiag.addKeyword(CostantiPdD.KEY_MITTENTE_E_SERVIZIO_DA_AUTORIZZARE, "servizio ["+idServizio.toString()+"]");
}
}
// KEY_CREDENZIALI_MITTENTE_MSG Gestite all'interno del metodo buildContextForSingleMsgDiagnostico
/**if(credenziali!=null && !"".equals(credenziali)) {
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_MITTENTE_MSG, " credenzialiMittente "+credenziali);
}
else{
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_MITTENTE_MSG, "");
}*/
if(servizioApplicativoFruitore!=null)
this.msgDiag.addKeyword(CostantiPdD.KEY_SA_FRUITORE_MSG, " identitaServizioApplicativoFruitore ["+servizioApplicativoFruitore+"]");
else
this.msgDiag.addKeyword(CostantiPdD.KEY_SA_FRUITORE_MSG, "");
this.msgDiag.addKeyword(CostantiPdD.KEY_SUBJECT_MESSAGE_SECURITY_MSG, ""); // non simulato
this.msgDiag.addKeyword(CostantiPdD.KEY_DETAILS, ""); // non simulabile
if(tracciaRisposta!=null && tracciaRisposta.getBusta()!=null && tracciaRisposta.getBusta().sizeListaRiscontri()==1){
this.msgDiag.addKeyword(CostantiPdD.KEY_DATA_RISCONTRO, tracciaRisposta.getBusta().getRiscontro(0).getOraRegistrazione().toString());
this.msgDiag.addKeyword(CostantiPdD.KEY_ID_BUSTA_RISCONTRATA, tracciaRisposta.getBusta().getRiscontro(0).getID());
}
/* ---- Integrazione ---- */
Object o = info.getDato(MappingRicostruzioneDiagnostici.RESPONSE_FROM_CACHE).getDato();
String infoResponseFromCache = (o!=null ? (String) o : null );
if(CostantiMappingDiagnostici.IN_CACHE_TRUE.equals(infoResponseFromCache)) {
this.rispostaLettaDallaCache = true;
}
else {
this.rispostaLettaDallaCache = false;
}
if(PddRuolo.DELEGATA.equals(transazioneDTO.getPddRuolo())){
this.msgDiag.addKeyword(CostantiPdD.KEY_PORTA_DELEGATA, transazioneDTO.getNomePorta());
}
else{
this.msgDiag.addKeyword(CostantiPdD.KEY_PORTA_APPLICATIVA, transazioneDTO.getNomePorta());
}
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_CONNETTORE).getDato();
String tipoConnettore = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_CONNETTORE, tipoConnettore);
if(transazioneDTO.getLocationConnettore()!=null) {
String locationConnettore = transazioneDTO.getLocationConnettore();
if(this.rispostaLettaDallaCache &&
locationConnettore.contains(ConnettoreBase.LOCATION_CACHED_SEPARATOR_REQUEST_URL)) {
int indexOf = locationConnettore.indexOf(ConnettoreBase.LOCATION_CACHED_SEPARATOR_REQUEST_URL);
if(indexOf>0 && locationConnettore.length()>(indexOf+ConnettoreBase.LOCATION_CACHED_SEPARATOR_REQUEST_URL.length())) {
locationConnettore = locationConnettore.substring(indexOf+ConnettoreBase.LOCATION_CACHED_SEPARATOR_REQUEST_URL.length());
}
}
String url = null;
String method = null;
try {
url = CostantiPdD.readUrlFromConnettoreRequest(locationConnettore);
method = CostantiPdD.readMethodFromConnettoreRequest(locationConnettore);
}catch(Exception e) {
protocolFactory.getLogger().error(e.getMessage(),e);
}
if(url==null || StringUtils.isEmpty(url) || method==null || StringUtils.isEmpty(method)) {
url = locationConnettore;
method = transazioneDTO.getTipoRichiesta();
}
boolean tipoConnettoreHttp = false;
if(tipoConnettore!=null &&
(TipiConnettore.HTTP.getNome().equals(tipoConnettore) || TipiConnettore.HTTPS.getNome().equals(tipoConnettore) || tipoConnettore.toLowerCase().startsWith("http"))
) {
tipoConnettoreHttp = true;
}
HttpRequestMethod httpRequestMethod = null;
if(method!=null && !StringUtils.isEmpty(method)) {
httpRequestMethod = HttpRequestMethod.valueOf(method);
}
if( (TipoAPI.SOAP.getValoreAsInt() == transazioneDTO.getTipoApi()) || !tipoConnettoreHttp) {
httpRequestMethod = null; // il diagnostico in soap o in un connettore non http non contiene l'http method
}
this.msgDiag.addKeyword(CostantiPdD.KEY_LOCATION, ConnettoreUtils.formatLocation(httpRequestMethod, url));
}
/* ---- ControlloCongestione ---- */
o = info.getDato(MappingRicostruzioneDiagnostici.MAX_THREADS_THRESHOLD).getDato();
String maxThreadThreshold = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_MAX_THREADS_THRESHOLD, maxThreadThreshold);
o = info.getDato(MappingRicostruzioneDiagnostici.CONTROLLO_TRAFFICO_THRESHOLD).getDato();
String controlloTrafficoThreshold = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_CONTROLLO_TRAFFICO_THRESHOLD, controlloTrafficoThreshold);
o = info.getDato(MappingRicostruzioneDiagnostici.ACTIVE_THREADS).getDato();
String activeThreads = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_ACTIVE_THREADS, activeThreads);
o = info.getDato(MappingRicostruzioneDiagnostici.NUMERO_POLICY_CONFIGURATE).getDato();
String numeroPolicy = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_NUMERO_POLICY, numeroPolicy);
o = info.getDato(MappingRicostruzioneDiagnostici.NUMERO_POLICY_DISABILITATE).getDato();
String numeroPolicyDisabilitate = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_NUMERO_POLICY_DISABILITATE, numeroPolicyDisabilitate);
o = info.getDato(MappingRicostruzioneDiagnostici.NUMERO_POLICY_FILTRATE).getDato();
String numeroPolicyFiltrate = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_NUMERO_POLICY_FILTRATE, numeroPolicyFiltrate);
o = info.getDato(MappingRicostruzioneDiagnostici.NUMERO_POLICY_NON_APPLICATE).getDato();
String numeroPolicyNonApplicabili = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_NUMERO_POLICY_NON_APPLICATE, numeroPolicyNonApplicabili);
o = info.getDato(MappingRicostruzioneDiagnostici.NUMERO_POLICY_RISPETTATE).getDato();
String numeroPolicyRispettate = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_NUMERO_POLICY_RISPETTATE, numeroPolicyRispettate);
o = info.getDato(MappingRicostruzioneDiagnostici.NUMERO_POLICY_VIOLATE).getDato();
String numeroPolicyViolate = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_NUMERO_POLICY_VIOLATE, numeroPolicyViolate);
o = info.getDato(MappingRicostruzioneDiagnostici.NUMERO_POLICY_VIOLATE_WARNING_ONLY).getDato();
String numeroPolicyViolateWarningOnly = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_NUMERO_POLICY_VIOLATE_WARNING_ONLY, numeroPolicyViolateWarningOnly);
o = info.getDato(MappingRicostruzioneDiagnostici.NUMERO_POLICY_IN_ERRORE).getDato();
String numeroPolicyInErrore = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(GeneratoreMessaggiErrore.TEMPLATE_NUMERO_POLICY_IN_ERRORE, numeroPolicyInErrore);
/* ---- Altro ---- */
this.msgDiag.addKeyword(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO, ""); // non simulabile
String infoSearch = "";
if(bustaRichiesta!=null &&
bustaRichiesta.getTipoServizio()!=null && bustaRichiesta.getServizio()!=null &&
bustaRichiesta.getTipoDestinatario()!=null && bustaRichiesta.getDestinatario()!=null){
infoSearch = bustaRichiesta.getTipoServizio() + "/"
+ bustaRichiesta.getServizio() + " erogato dal Soggetto "
+ bustaRichiesta.getTipoDestinatario() + "/"
+ bustaRichiesta.getDestinatario();
if (bustaRichiesta.getAzione() != null)
infoSearch = infoSearch + " azione " + bustaRichiesta.getAzione();
if (idAsincrono != null) {
infoSearch = "Servizio correlato " + infoSearch;
} else {
infoSearch = "Servizio " + infoSearch;
}
infoSearch = "Ricerca nel registro dei servizi di: " + infoSearch;
if (idAsincrono != null)
infoSearch = infoSearch + " (idServizioCorrelato: "+ idAsincrono + ")";
}
this.msgDiag.addKeyword(CostantiPdD.KEY_INFO_SERVIZIO_BUSTA, infoSearch);
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_AUTENTICAZIONE).getDato();
String tipoAutenticazione = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_AUTENTICAZIONE, tipoAutenticazione);
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_AUTORIZZAZIONE).getDato();
String tipoAutorizzazione = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_AUTORIZZAZIONE_BUSTE, tipoAutorizzazione);
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_AUTORIZZAZIONE, tipoAutorizzazione);
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_AUTORIZZAZIONE_CONTENUTI).getDato();
String tipoAutorizzazioneContenuti = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_AUTORIZZAZIONE_CONTENUTO, tipoAutorizzazioneContenuti);
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_VALIDAZIONE_CONTENUTI).getDato();
String tipoTradottoOpenSPCoop = null;
String tipoValidazioneContenuti = (o!=null ? (String) o : null );
if(tipoValidazioneContenuti!=null && tipoValidazioneContenuti.length()>0){
char tipoValidazione = tipoValidazioneContenuti.charAt(0);
if(CostantiMappingDiagnostici.TIPO_VALIDAZIONE_CONTENUTI_OPENSPCOOP == tipoValidazione){
tipoTradottoOpenSPCoop = CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_OPENSPCOOP.getValue();
}
else if(CostantiMappingDiagnostici.TIPO_VALIDAZIONE_CONTENUTI_INTERFACE == tipoValidazione){
tipoTradottoOpenSPCoop = CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_INTERFACE.getValue();
}
else if(CostantiMappingDiagnostici.TIPO_VALIDAZIONE_CONTENUTI_XSD == tipoValidazione){
tipoTradottoOpenSPCoop = CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_XSD.getValue();
}
if(tipoValidazioneContenuti.length()>1){
char mtom = tipoValidazioneContenuti.charAt(1);
if(CostantiMappingDiagnostici.TIPO_VALIDAZIONE_CONTENUTI_MTOM == mtom){
tipoTradottoOpenSPCoop = tipoTradottoOpenSPCoop + CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_PRINT_SEPARATOR +
CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_VALIDAZIONE_CON_MTOM;
}
if(tipoValidazioneContenuti.length()>2){
char warn = tipoValidazioneContenuti.charAt(2);
if(CostantiMappingDiagnostici.TIPO_VALIDAZIONE_CONTENUTI_WARN == warn){
tipoTradottoOpenSPCoop = tipoTradottoOpenSPCoop + CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_PRINT_SEPARATOR +
CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_VALIDAZIONE_IN_WARNING_MODE;
}
}
}
}
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_VALIDAZIONE_CONTENUTI, tipoTradottoOpenSPCoop);
this.msgDiag.addKeyword(CostantiPdD.KEY_DETAILS_VALIDAZIONE_CONTENUTI,"");
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_PROCESSAMENTO_MTOM_RICHIESTA).getDato();
tipoTradottoOpenSPCoop = null;
String tipoProcessamentoMTOMRichiesta = (o!=null ? (String) o : null );
if(tipoProcessamentoMTOMRichiesta!=null && tipoProcessamentoMTOMRichiesta.length()==1){
char tipoProcessamento = tipoProcessamentoMTOMRichiesta.charAt(0);
if(CostantiMappingDiagnostici.TIPO_MTOM_PROCESSAMENTO_DISABLE == tipoProcessamento){
tipoTradottoOpenSPCoop = MTOMProcessorType.DISABLE.getValue();
}
else if(CostantiMappingDiagnostici.TIPO_MTOM_PROCESSAMENTO_PACKAGING == tipoProcessamento){
tipoTradottoOpenSPCoop = MTOMProcessorType.PACKAGING.getValue();
}
else if(CostantiMappingDiagnostici.TIPO_MTOM_PROCESSAMENTO_UNPACKAGING == tipoProcessamento){
tipoTradottoOpenSPCoop = MTOMProcessorType.UNPACKAGING.getValue();
}
else if(CostantiMappingDiagnostici.TIPO_MTOM_PROCESSAMENTO_VERIFY == tipoProcessamento){
tipoTradottoOpenSPCoop = MTOMProcessorType.VERIFY.getValue();
}
}
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_PROCESSAMENTO_MTOM_RICHIESTA, tipoTradottoOpenSPCoop);
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_PROCESSAMENTO_MTOM_RISPOSTA).getDato();
tipoTradottoOpenSPCoop = null;
String tipoProcessamentoMTOMRisposta = (o!=null ? (String) o : null );
if(tipoProcessamentoMTOMRisposta!=null && tipoProcessamentoMTOMRisposta.length()==1){
char tipoProcessamento = tipoProcessamentoMTOMRisposta.charAt(0);
if(CostantiMappingDiagnostici.TIPO_MTOM_PROCESSAMENTO_DISABLE == tipoProcessamento){
tipoTradottoOpenSPCoop = MTOMProcessorType.DISABLE.getValue();
}
else if(CostantiMappingDiagnostici.TIPO_MTOM_PROCESSAMENTO_PACKAGING == tipoProcessamento){
tipoTradottoOpenSPCoop = MTOMProcessorType.PACKAGING.getValue();
}
else if(CostantiMappingDiagnostici.TIPO_MTOM_PROCESSAMENTO_UNPACKAGING == tipoProcessamento){
tipoTradottoOpenSPCoop = MTOMProcessorType.UNPACKAGING.getValue();
}
else if(CostantiMappingDiagnostici.TIPO_MTOM_PROCESSAMENTO_VERIFY == tipoProcessamento){
tipoTradottoOpenSPCoop = MTOMProcessorType.VERIFY.getValue();
}
}
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_PROCESSAMENTO_MTOM_RISPOSTA, tipoTradottoOpenSPCoop);
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_PROCESSAMENTO_MESSAGE_SECURITY_RICHIESTA).getDato();
tipoTradottoOpenSPCoop = null;
String tipoProcessamentoMessageSecurityRichiesta = (o!=null ? (String) o : null );
if(tipoProcessamentoMessageSecurityRichiesta!=null && tipoProcessamentoMessageSecurityRichiesta.length()>0){
tipoTradottoOpenSPCoop = buildSicurezzaMessaggio(tipoProcessamentoMessageSecurityRichiesta);
}
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_SICUREZZA_MESSAGGIO_RICHIESTA, tipoTradottoOpenSPCoop);
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_PROCESSAMENTO_MESSAGE_SECURITY_RISPOSTA).getDato();
tipoTradottoOpenSPCoop = null;
String tipoProcessamentoMessageSecurityRisposta = (o!=null ? (String) o : null );
if(tipoProcessamentoMessageSecurityRisposta!=null && tipoProcessamentoMessageSecurityRisposta.length()>0){
tipoTradottoOpenSPCoop = buildSicurezzaMessaggio(tipoProcessamentoMessageSecurityRisposta);
}
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_SICUREZZA_MESSAGGIO_RISPOSTA, tipoTradottoOpenSPCoop);
o = info.getDato(MappingRicostruzioneDiagnostici.AUTENTICAZIONE_IN_CACHE).getDato();
String infoAutenticazioneInCache = (o!=null ? (String) o : null );
if(CostantiMappingDiagnostici.IN_CACHE_TRUE.equals(infoAutenticazioneInCache)) {
this.esitoAutenticazioneInCache = true;
}
else {
this.esitoAutenticazioneInCache = false;
}
o = info.getDato(MappingRicostruzioneDiagnostici.AUTORIZZAZIONE_IN_CACHE).getDato();
String infoAutorizzazioneInCache = (o!=null ? (String) o : null );
if(CostantiMappingDiagnostici.IN_CACHE_TRUE.equals(infoAutorizzazioneInCache)) {
this.esitoAutorizzazioneInCache = true;
}
else {
this.esitoAutorizzazioneInCache = false;
}
o = info.getDato(MappingRicostruzioneDiagnostici.AUTORIZZAZIONE_CONTENUTI_IN_CACHE).getDato();
String infoAutorizzazioneContenutiInCache = (o!=null ? (String) o : null );
if(CostantiMappingDiagnostici.IN_CACHE_TRUE.equals(infoAutorizzazioneContenutiInCache)) {
this.esitoAutorizzazioneContenutiInCache = true;
}
else {
this.esitoAutorizzazioneContenutiInCache = false;
}
o = info.getDato(MappingRicostruzioneDiagnostici.TOKEN_POLICY).getDato();
String tokenPolicy = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(CostantiPdD.KEY_TOKEN_POLICY_GESTIONE, tokenPolicy);
o = info.getDato(MappingRicostruzioneDiagnostici.TOKEN_POLICY_ACTIONS).getDato();
tipoTradottoOpenSPCoop = null;
String tokenPolicyActions = (o!=null ? (String) o : null );
if(tokenPolicyActions!=null && tokenPolicyActions.length()>0){
tipoTradottoOpenSPCoop = buildTokenPolicyValidationActions(tokenPolicyActions);
}
this.msgDiag.addKeyword(CostantiPdD.KEY_TOKEN_POLICY_AZIONI, tipoTradottoOpenSPCoop);
o = info.getDato(MappingRicostruzioneDiagnostici.TOKEN_POLICY_AUTENTCAZIONE).getDato();
tipoTradottoOpenSPCoop = null;
String tokenPolicyAuthn = (o!=null ? (String) o : null );
if(tokenPolicyAuthn!=null && tokenPolicyAuthn.length()>0){
tipoTradottoOpenSPCoop = buildTokenPolicyAuthnActions(tokenPolicyAuthn);
}
this.msgDiag.addKeyword(CostantiPdD.KEY_TOKEN_AUTHN_CHECK, tipoTradottoOpenSPCoop);
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_TRASFORMAZIONE_RICHIESTA).getDato();
tipoTradottoOpenSPCoop = null;
String tipoTrasformazioneRichiesta = (o!=null ? (String) o : null );
if(tipoTrasformazioneRichiesta!=null && tipoTrasformazioneRichiesta.length()>0){
tipoTradottoOpenSPCoop = buildTipoTrasformazione(tipoTrasformazioneRichiesta);
}
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_TRASFORMAZIONE_RICHIESTA, tipoTradottoOpenSPCoop);
o = info.getDato(MappingRicostruzioneDiagnostici.TIPO_TRASFORMAZIONE_RISPOSTA).getDato();
tipoTradottoOpenSPCoop = null;
String tipoTrasformazioneRisposta = (o!=null ? (String) o : null );
if(tipoTrasformazioneRisposta!=null && tipoTrasformazioneRisposta.length()>0){
tipoTradottoOpenSPCoop = buildTipoTrasformazione(tipoTrasformazioneRisposta);
}
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_TRASFORMAZIONE_RISPOSTA, tipoTradottoOpenSPCoop);
AbstractDatoRicostruzione<?> oDatoAutenticazioneTokenInCache = info.getDato(MappingRicostruzioneDiagnostici.AUTENTICAZIONE_TOKEN_IN_CACHE);
if(oDatoAutenticazioneTokenInCache!=null) {
o = oDatoAutenticazioneTokenInCache.getDato();
String infoAutenticazioneTokenInCache = (o!=null ? (String) o : null );
if(CostantiMappingDiagnostici.IN_CACHE_TRUE.equals(infoAutenticazioneTokenInCache)) {
this.esitoAutenticazioneTokenInCache = true;
}
else {
this.esitoAutenticazioneTokenInCache = false;
}
}else {
this.esitoAutenticazioneTokenInCache = false;
}
AbstractDatoRicostruzione<?> oDatoAutenticazioneFallitaMotivazione = info.getDato(MappingRicostruzioneDiagnostici.AUTENTICAZIONE_FALLITA_MOTIVAZIONE);
if(oDatoAutenticazioneFallitaMotivazione!=null) {
o = oDatoAutenticazioneFallitaMotivazione.getDato();
tipoTradottoOpenSPCoop = null;
String tipoAutenticazioneFallitaMotivazione = (o!=null ? (String) o : null );
if(tipoAutenticazioneFallitaMotivazione!=null && tipoAutenticazioneFallitaMotivazione.length()>0){
tipoTradottoOpenSPCoop = buildTipoAutenticazioneFallitaMotivazione(tipoAutenticazioneFallitaMotivazione);
}
if(tipoTradottoOpenSPCoop!=null) {
this.dettaglioAutenticazioneFallita = tipoTradottoOpenSPCoop;
}
}
if(!PddRuolo.DELEGATA.equals(transazioneDTO.getPddRuolo()) &&
Costanti.MODIPA_PROTOCOL_NAME.equals(protocollo) &&
CostantiConfigurazione.AUTENTICAZIONE_TOKEN.equals(tipoAutorizzazione)) {
// casoSpecialeAutorizzazioneTokenModi
this.msgDiag.addKeyword(CostantiPdD.KEY_SA_FRUITORE_MSG, "");
}
AbstractDatoRicostruzione<?> oDatoModiTokenAuthorizationInCache = info.getDato(MappingRicostruzioneDiagnostici.MODI_TOKEN_AUTHORIZATION_IN_CACHE);
if(oDatoModiTokenAuthorizationInCache!=null) {
o = oDatoModiTokenAuthorizationInCache.getDato();
String infoInCache = (o!=null ? (String) o : null );
if(CostantiMappingDiagnostici.IN_CACHE_TRUE.equals(infoInCache)) {
this.esitoModiTokenAuthorizationInCache = true;
}
else {
this.esitoModiTokenAuthorizationInCache = false;
}
}else {
this.esitoModiTokenAuthorizationInCache = false;
}
AbstractDatoRicostruzione<?> oDatoModiTokenIntegrityInCache = info.getDato(MappingRicostruzioneDiagnostici.MODI_TOKEN_INTEGRITY_IN_CACHE);
if(oDatoModiTokenIntegrityInCache!=null) {
o = oDatoModiTokenIntegrityInCache.getDato();
String infoInCache = (o!=null ? (String) o : null );
if(CostantiMappingDiagnostici.IN_CACHE_TRUE.equals(infoInCache)) {
this.esitoModiTokenIntegrityInCache = true;
}
else {
this.esitoModiTokenIntegrityInCache = false;
}
}else {
this.esitoModiTokenIntegrityInCache = false;
}
AbstractDatoRicostruzione<?> oDatoModiTokenAuditInCache = info.getDato(MappingRicostruzioneDiagnostici.MODI_TOKEN_AUDIT_IN_CACHE);
if(oDatoModiTokenAuditInCache!=null) {
o = oDatoModiTokenAuditInCache.getDato();
String infoInCache = (o!=null ? (String) o : null );
if(CostantiMappingDiagnostici.IN_CACHE_TRUE.equals(infoInCache)) {
this.esitoModiTokenAuditInCache = true;
}
else {
this.esitoModiTokenAuditInCache = false;
}
}else {
this.esitoModiTokenAuditInCache = false;
}
if(info.sizeMetaDati()>=CostantiMappingDiagnostici.LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE){
// altri...
}
}
private String normalizeCredenziali(String credenziali, boolean addParentesi, boolean addFinalSpace) {
String newC = credenziali + "";
try {
if(newC.endsWith(" ")){
newC = newC.substring(0,newC.length()-1);
}
if(newC.contains("SSL-Issuer ")) {
newC = newC.substring(0,newC.indexOf("SSL-Issuer "));
while(newC.endsWith(" ") || newC.endsWith("\n")) {
newC = newC.substring(0,newC.length()-1);
}
}
String c = null;
if(addParentesi) {
c = "( "+newC+" )";
}
else {
c= newC;
}
if(addFinalSpace) {
c = c + " ";
}
return c;
}catch(Exception e) {
String msgError = "Interpretazione credenziali '"+credenziali+"' non riuscita: ("+newC+") "+e.getMessage();
LoggerWrapperFactory.getLogger(ConvertitoreCodiceDiagnostici.class).error(msgError, e);
return credenziali;
}
}
private String buildSicurezzaMessaggio(String tmp){
StringBuilder tipoTradottoOpenSPCoop = new StringBuilder();
char engine = tmp.charAt(0);
addSicurezzaMessaggioEngine(engine, tipoTradottoOpenSPCoop);
tipoTradottoOpenSPCoop.append(SecurityConstants.TIPO_SECURITY_ENGINE_SEPARATOR);
for (int i = 1; i < tmp.length(); i++) {
String actionCode = tmp.charAt(i)+"";
for (String keySecurity : CostantiMappingDiagnostici.getMapSecurityAction().keySet()) {
String actionSecurityCode = CostantiMappingDiagnostici.getMapSecurityAction().get(keySecurity);
if(actionSecurityCode.equals(actionCode)){
if(i>1){
tipoTradottoOpenSPCoop.append(SecurityConstants.TIPO_SECURITY_ACTION_SEPARATOR);
}
tipoTradottoOpenSPCoop.append(keySecurity);
break;
}
}
}
if(tipoTradottoOpenSPCoop.length()>0) {
return tipoTradottoOpenSPCoop.toString();
}
return null;
}
private void addSicurezzaMessaggioEngine(char engine, StringBuilder tipoTradottoOpenSPCoop) {
if(CostantiMappingDiagnostici.TIPO_SECURITY_ENGINE_WSS4J == engine){
tipoTradottoOpenSPCoop.append(SecurityConstants.SECURITY_ENGINE_WSS4J);
}
else if(CostantiMappingDiagnostici.TIPO_SECURITY_ENGINE_SOAPBOX == engine){
tipoTradottoOpenSPCoop.append(SecurityConstants.SECURITY_ENGINE_SOAPBOX);
}
else if(CostantiMappingDiagnostici.TIPO_SECURITY_ENGINE_DSS == engine){
tipoTradottoOpenSPCoop.append(SecurityConstants.SECURITY_ENGINE_DSS);
}
else if(CostantiMappingDiagnostici.TIPO_SECURITY_ENGINE_JOSE == engine){
tipoTradottoOpenSPCoop.append(SecurityConstants.SECURITY_ENGINE_JOSE);
}
else if(CostantiMappingDiagnostici.TIPO_SECURITY_ENGINE_XML == engine){
tipoTradottoOpenSPCoop.append(SecurityConstants.SECURITY_ENGINE_XML);
}
}
private String buildTokenPolicyValidationActions(String tmp) {
PolicyGestioneToken pgt = new PolicyGestioneToken();
if(tmp.length()==1 && (CostantiMappingDiagnostici.GESTIONE_TOKEN_VALIDATION_ACTION_NONE+"").equals(tmp)) {
return pgt.getLabelAzioniGestioneToken();
}
for (int i = 0; i < tmp.length(); i++) {
String actionCode = tmp.charAt(i)+"";
if((CostantiMappingDiagnostici.GESTIONE_TOKEN_VALIDATION_ACTION_JWT+"").equals(actionCode)) {
pgt.setValidazioneJWT(true);
}
else if((CostantiMappingDiagnostici.GESTIONE_TOKEN_VALIDATION_ACTION_INTROSPECTION+"").equals(actionCode)) {
pgt.setIntrospection(true);
}
else if((CostantiMappingDiagnostici.GESTIONE_TOKEN_VALIDATION_ACTION_USER_INFO+"").equals(actionCode)) {
pgt.setUserInfo(true);
}
}
return pgt.getLabelAzioniGestioneToken();
}
private String buildTokenPolicyAuthnActions(String tmp) {
GestioneTokenAutenticazione gestore = new GestioneTokenAutenticazione();
for (int i = 0; i < tmp.length(); i++) {
String actionCode = tmp.charAt(i)+"";
if((CostantiMappingDiagnostici.AUTENTICAZIONE_TOKEN_ISSUER+"").equals(actionCode)) {
gestore.setIssuer(StatoFunzionalita.ABILITATO);
}
else if((CostantiMappingDiagnostici.AUTENTICAZIONE_TOKEN_SUBJECT+"").equals(actionCode)) {
gestore.setSubject(StatoFunzionalita.ABILITATO);
}
else if((CostantiMappingDiagnostici.AUTENTICAZIONE_TOKEN_CLIENTID+"").equals(actionCode)) {
gestore.setClientId(StatoFunzionalita.ABILITATO);
}
else if((CostantiMappingDiagnostici.AUTENTICAZIONE_TOKEN_USERNAME+"").equals(actionCode)) {
gestore.setUsername(StatoFunzionalita.ABILITATO);
}
else if((CostantiMappingDiagnostici.AUTENTICAZIONE_TOKEN_EMAIL+"").equals(actionCode)) {
gestore.setEmail(StatoFunzionalita.ABILITATO);
}
}
return GestoreAutenticazione.getLabel(gestore);
}
private String buildTipoTrasformazione(String tmp) {
if(CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_NESSUNA.equals(tmp)){
return GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_NESSUNA;
}
StringBuilder bf = new StringBuilder();
for (int i = 0; i < tmp.length(); i++) {
if(i>0) {
bf.append(GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_SEPARATOR);
}
String actionCode = tmp.charAt(i)+"";
addTipoTrasformazioneAction(actionCode, bf);
}
if(bf.length()>0) {
return bf.toString();
}
return null;
}
private void addTipoTrasformazioneAction(String actionCode, StringBuilder bf) {
if((CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_CONVERSIONE_SOAP+"").equals(actionCode)) {
bf.append(GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_CONVERSIONE_SOAP);
}
else if((CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_CONVERSIONE_REST+"").equals(actionCode)) {
bf.append(GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_CONVERSIONE_REST);
}
else if((CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_CONVERSIONE_METHOD+"").equals(actionCode)) {
bf.append(GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_CONVERSIONE_METHOD);
}
else if((CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_CONVERSIONE_PATH+"").equals(actionCode)) {
bf.append(GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_CONVERSIONE_PATH);
}
else if((CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_CONVERSIONE_HEADERS+"").equals(actionCode)) {
bf.append(GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_CONVERSIONE_HEADERS);
}
else if((CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_CONVERSIONE_QUERY_PARAMETERS+"").equals(actionCode)) {
bf.append(GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_CONVERSIONE_QUERY_PARAMETERS);
}
else if((CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_CONVERSIONE_RETURN_CODE+"").equals(actionCode)) {
bf.append(GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_CONVERSIONE_RETURN_CODE);
}
else if((CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_NESSUNA+"").equals(actionCode)) {
bf.append(GestoreTrasformazioniUtilities.TIPO_TRASFORMAZIONE_NESSUNA);
}
else {
for (String keySecurity : CostantiMappingDiagnostici.getMapTipiConversione().keySet()) {
String actionSecurityCode = CostantiMappingDiagnostici.getMapTipiConversione().get(keySecurity);
if(actionSecurityCode.equals(actionCode)){
bf.append(keySecurity);
break;
}
}
}
}
private String buildTipoAutenticazioneFallitaMotivazione(String tmp) {
if(CostantiMappingDiagnostici.TIPO_AUTENTICAZIONE_FALLITA_MOTIVAZIONE_CREDENZIALI_NON_FORNITE.equals(tmp)){
return CostantiProtocollo.CREDENZIALI_NON_FORNITE;
}
else if(CostantiMappingDiagnostici.TIPO_AUTENTICAZIONE_FALLITA_MOTIVAZIONE_CREDENZIALI_FORNITE_NON_CORRETE.equals(tmp)){
return CostantiProtocollo.CREDENZIALI_FORNITE_NON_CORRETTE;
}
return null;
}
private void buildFaultInfo(Logger log) throws Exception {
buildFaultInfoIntegrazione(log);
buildFaultInfoCooperazione(log);
}
private void buildFaultInfoIntegrazione(Logger log) throws Exception {
if(this.mFaultRicostruitoIntegrazione==null &&
this.transazioneDTO.getFaultIntegrazione()!=null &&
!"".equals(this.transazioneDTO.getFaultIntegrazione())){
if(StringUtils.isNotEmpty(this.transazioneDTO.getFormatoFaultIntegrazione())){
MessageType msgType = MessageType.valueOf(this.transazioneDTO.getFormatoFaultIntegrazione());
OpenSPCoop2MessageParseResult parseResult = OpenSPCoop2MessageFactory.getDefaultMessageFactory().createMessage(msgType, MessageRole.FAULT,
MessageUtilities.getDefaultContentType(msgType),this.transazioneDTO.getFaultIntegrazione().getBytes());
this.mFaultRicostruitoIntegrazione = parseResult.getMessage_throwParseException();
}
buildFaultInfoIntegrazioneDetails(log);
}
}
private void buildFaultInfoIntegrazioneDetails(Logger log) throws MessageException, MessageNotSupportedException {
if(this.mFaultRicostruitoIntegrazione!=null) {
if(ServiceBinding.SOAP.equals(this.mFaultRicostruitoIntegrazione.getServiceBinding())) {
OpenSPCoop2SoapMessage soapMsg = this.mFaultRicostruitoIntegrazione.castAsSoap();
if(soapMsg.getSOAPBody()!=null && soapMsg.getSOAPBody().hasFault()){
this.mFaultRicostruitoIntegrazioneDescrizioneWithDetails = SoapUtils.safe_toString(soapMsg.getFactory(), soapMsg.getSOAPBody().getFault(), log);
this.mFaultRicostruitoIntegrazioneDescrizioneWithoutDetails = SoapUtils.safe_toString(soapMsg.getFactory(), soapMsg.getSOAPBody().getFault(), false, log);
}
}
else {
OpenSPCoop2RestMessage<?> restMsg = this.mFaultRicostruitoIntegrazione.castAsRest();
if(restMsg.isFault()){
this.mFaultRicostruitoIntegrazioneDescrizioneWithDetails = restMsg.getContentAsString();
this.mFaultRicostruitoIntegrazioneDescrizioneWithoutDetails = restMsg.getContentAsString();
}
}
}
}
private void buildFaultInfoCooperazione(Logger log) throws Exception {
if(this.mFaultRicostruitoCooperazione==null &&
this.transazioneDTO.getFaultCooperazione()!=null &&
!"".equals(this.transazioneDTO.getFaultCooperazione())){
if(StringUtils.isNotEmpty(this.transazioneDTO.getFormatoFaultCooperazione())){
MessageType msgType = MessageType.valueOf(this.transazioneDTO.getFormatoFaultCooperazione());
OpenSPCoop2MessageParseResult parseResult = OpenSPCoop2MessageFactory.getDefaultMessageFactory().createMessage(msgType, MessageRole.FAULT,
MessageUtilities.getDefaultContentType(msgType),this.transazioneDTO.getFaultCooperazione().getBytes());
this.mFaultRicostruitoCooperazione = parseResult.getMessage_throwParseException();
}
buildFaultInfoCooperazioneDetails(log);
}
}
private void buildFaultInfoCooperazioneDetails(Logger log) throws MessageException, MessageNotSupportedException {
if(this.mFaultRicostruitoCooperazione!=null) {
if(ServiceBinding.SOAP.equals(this.mFaultRicostruitoCooperazione.getServiceBinding())) {
OpenSPCoop2SoapMessage soapMsg = this.mFaultRicostruitoCooperazione.castAsSoap();
if(soapMsg.getSOAPBody()!=null && soapMsg.getSOAPBody().hasFault()){
this.mFaultRicostruitoCooperazioneDescrizioneWithDetails = SoapUtils.safe_toString(soapMsg.getFactory(), soapMsg.getSOAPBody().getFault(), log);
this.mFaultRicostruitoCooperazioneDescrizioneWithoutDetails = SoapUtils.safe_toString(soapMsg.getFactory(), soapMsg.getSOAPBody().getFault(), false, log);
}
}
else {
OpenSPCoop2RestMessage<?> restMsg = this.mFaultRicostruitoCooperazione.castAsRest();
if(restMsg.isFault()){
this.mFaultRicostruitoCooperazioneDescrizioneWithDetails = restMsg.getContentAsString();
this.mFaultRicostruitoCooperazioneDescrizioneWithoutDetails = restMsg.getContentAsString();
}
}
}
}
protected void buildFault(Logger log, String codice, String codiceModulo) throws Exception{
if(codice!=null) {
// nop
}
this.msgDiag.getKeywordLogPersonalizzati().remove(CostantiPdD.KEY_SOAP_FAULT);
this.msgDiag.addKeyword(CostantiPdD.KEY_SOAP_FAULT, "");
if(this.codiciModuliSimulabiliIntegrazione.contains(codiceModulo)){
buildFaultInfo(log);
// aggiorno key soap fault per il diagnostico in questione
if(this.mFaultRicostruitoIntegrazioneDescrizioneWithDetails!=null){
this.msgDiag.getKeywordLogPersonalizzati().remove(CostantiPdD.KEY_SOAP_FAULT);
this.msgDiag.addKeyword(CostantiPdD.KEY_SOAP_FAULT, this.mFaultRicostruitoIntegrazioneDescrizioneWithDetails);
}
}
else if(this.codiciModuliSimulabiliCooperazione.contains(codiceModulo)){
buildFaultInfo(log);
// aggiorno key soap fault per il diagnostico in questione
if(this.mFaultRicostruitoCooperazioneDescrizioneWithDetails!=null){
this.msgDiag.getKeywordLogPersonalizzati().remove(CostantiPdD.KEY_SOAP_FAULT);
this.msgDiag.addKeyword(CostantiPdD.KEY_SOAP_FAULT, this.mFaultRicostruitoCooperazioneDescrizioneWithDetails);
}
}
}
protected void buildContextForSingleMsgDiagnostico(String codice, String codiceModulo,
boolean dynamic, String dynamicType, String dynamicValue, Logger log) throws Exception{
if(codice.equals("001013") || codice.equals("001056") || codice.equals("001058") ||
codice.equals(RICEZIONE_BUSTE_AUTENTICAZIONE_EFFETTUATA_CODICE) || codice.equals(RICEZIONE_BUSTE_AUTENTICAZIONE_FALLITA_CODICE) || codice.equals(RICEZIONE_BUSTE_AUTENTICAZIONE_FALLITA_OPZIONALE_CODICE)) {
PdDContext pddContextDevNull = new PdDContext();
CostantiPdD.addKeywordInCache(this.msgDiag, this.esitoAutenticazioneInCache, pddContextDevNull, CostantiPdD.KEY_INFO_IN_CACHE_FUNZIONE_AUTENTICAZIONE);
}
else if(codice.equals("001015") || codice.equals("001045") ||
codice.equals(RICEZIONE_BUSTE_AUTORIZZAZIONE_BUSTE_EFFETTUATA_CODICE) || codice.equals("004005")) {
PdDContext pddContextDevNull = new PdDContext();
CostantiPdD.addKeywordInCache(this.msgDiag, this.esitoAutorizzazioneInCache, pddContextDevNull, CostantiPdD.KEY_INFO_IN_CACHE_FUNZIONE_AUTORIZZAZIONE);
}
else if(codice.equals("001016") || codice.equals("001048") ||
codice.equals("004045") || codice.equals("004046")) {
PdDContext pddContextDevNull = new PdDContext();
CostantiPdD.addKeywordInCache(this.msgDiag, this.esitoAutorizzazioneContenutiInCache, pddContextDevNull, CostantiPdD.KEY_INFO_IN_CACHE_FUNZIONE_AUTORIZZAZIONE_CONTENUTI);
}
else if(codice.equals("001126") || codice.equals("001127") || codice.equals("001128") ||
codice.equals("004149") || codice.equals("004150") || codice.equals("004151")) {
PdDContext pddContextDevNull = new PdDContext();
CostantiPdD.addKeywordInCache(this.msgDiag, this.esitoAutenticazioneTokenInCache, pddContextDevNull, CostantiPdD.KEY_INFO_IN_CACHE_FUNZIONE_AUTENTICAZIONE_TOKEN);
}
else if(codice.equals("001133") || codice.equals("004159") ) {
PdDContext pddContextDevNull = new PdDContext();
CostantiPdD.addKeywordInCache(this.msgDiag, this.esitoModiTokenAuthorizationInCache, pddContextDevNull, CostantiPdD.KEY_INFO_IN_CACHE_FUNZIONE_MODI_TOKEN_AUTHORIZATION);
}
else if(codice.equals("001139") || codice.equals("004165") ) {
PdDContext pddContextDevNull = new PdDContext();
CostantiPdD.addKeywordInCache(this.msgDiag, this.esitoModiTokenIntegrityInCache, pddContextDevNull, CostantiPdD.KEY_INFO_IN_CACHE_FUNZIONE_MODI_TOKEN_INTEGRITY);
}
else if(codice.equals("001145") ) {
PdDContext pddContextDevNull = new PdDContext();
CostantiPdD.addKeywordInCache(this.msgDiag, this.esitoModiTokenAuditInCache, pddContextDevNull, CostantiPdD.KEY_INFO_IN_CACHE_FUNZIONE_MODI_TOKEN_AUDIT);
}
if(
(codice.equals("001058") || codice.equals(RICEZIONE_BUSTE_AUTENTICAZIONE_FALLITA_OPZIONALE_CODICE) )
&&
(this.dettaglioAutenticazioneFallita!=null)
){
PdDContext pddContextDevNull = new PdDContext();
CostantiPdD.addKeywordAutenticazioneFallita(this.msgDiag, this.dettaglioAutenticazioneFallita, pddContextDevNull, CostantiPdD.KEY_INFO_IN_CACHE_FUNZIONE_AUTENTICAZIONE_FALLITA);
}
if(
(codice.equals("003007") || codice.equals("007012") || codice.equals("007028"))
&&
(this.rispostaLettaDallaCache)
){
this.msgDiag.addKeyword(CostantiPdD.KEY_LOCATION, ConnettoreBase.LOCATION_CACHED);
}
/*
* Il messaggio contiene solo i singoli dettagli del soapFault.
* es. Risposta applicativa (SOAPFault faultCode[ns0:Server.OpenSPCoopExampleFault] faultActor[OpenSPCoopTrace] faultString[Fault ritornato dalla servlet di trace, esempio di OpenSPCoop]) consegnata al servizio applicativo con codice di trasporto ...
*/
if(codice.equals(RICEZIONE_CONTENUTI_APPLICATIVI_CONSEGNA_RISPOSTA_APPLICATIVA_OK_CODICE) || codice.equals(RICEZIONE_CONTENUTI_APPLICATIVI_CONSEGNA_RISPOSTA_APPLICATIVA_KO_CODICE) || codice.equals("001008") || codice.equals("001031") || codice.equals("001033") ){
buildFaultInfo(log);
if(this.mFaultRicostruitoIntegrazioneDescrizioneWithoutDetails!=null) {
String descrizioneSoapFault = " ("+this.mFaultRicostruitoIntegrazioneDescrizioneWithoutDetails+")";
this.msgDiag.getKeywordLogPersonalizzati().remove(CostantiPdD.KEY_SOAP_FAULT);
this.msgDiag.addKeyword(CostantiPdD.KEY_SOAP_FAULT, descrizioneSoapFault);
}
}
if(codice.equals("004011") || codice.equals("004012") || codice.equals("004014")){
buildFaultInfo(log);
if(this.mFaultRicostruitoCooperazioneDescrizioneWithoutDetails!=null){
String descrizioneSoapFault = " ("+this.mFaultRicostruitoCooperazioneDescrizioneWithoutDetails+")";
this.msgDiag.getKeywordLogPersonalizzati().remove(CostantiPdD.KEY_SOAP_FAULT);
this.msgDiag.addKeyword(CostantiPdD.KEY_SOAP_FAULT, descrizioneSoapFault);
}
}
if(codice.equals("003024") ){
buildFaultInfo(log);
if(this.mFaultRicostruitoCooperazione!=null){
this.msgDiag.addKeyword(CostantiPdD.KEY_DETAILS_VALIDAZIONE_CONTENUTI,CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_VALIDAZIONE_SOAP_FAULT_PRESENTE);
}
else{
if(this.msgDiag.getKeywordLogPersonalizzati().containsKey(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO)){
String v = this.msgDiag.getKeywordLogPersonalizzati().get(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO);
if(Costanti.SCENARIO_ONEWAY_INVOCAZIONE_SERVIZIO.equals(v)){
this.msgDiag.addKeyword(CostantiPdD.KEY_DETAILS_VALIDAZIONE_CONTENUTI,CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_VALIDAZIONE_SOAP_BODY_NON_PRESENTE);
}
}
}
}
if(codice.equals("007024") ){
buildFaultInfo(log);
if(this.mFaultRicostruitoIntegrazione!=null){
this.msgDiag.addKeyword(CostantiPdD.KEY_DETAILS_VALIDAZIONE_CONTENUTI,CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_VALIDAZIONE_SOAP_FAULT_PRESENTE);
}
else{
if(this.msgDiag.getKeywordLogPersonalizzati().containsKey(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO)){
String v = this.msgDiag.getKeywordLogPersonalizzati().get(CostantiPdD.KEY_SCENARIO_COOPERAZIONE_GESTITO);
if(Costanti.SCENARIO_ONEWAY_INVOCAZIONE_SERVIZIO.equals(v)){
this.msgDiag.addKeyword(CostantiPdD.KEY_DETAILS_VALIDAZIONE_CONTENUTI,CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_VALIDAZIONE_SOAP_BODY_NON_PRESENTE);
}
}
}
}
/*
* Il messaggi che indica l'utilizzo della funzionalita' di LocalForward richiede il nome della PA
* Tale nome non e' conosciuto nel contesto di PortaDelegata delle Transazione.
* Comunque non aggiunge una informazione importante, potendo essere recuperata dai dati sul servizio e azione invocata
**/
if(codice.equals(RICEZIONE_CONTENUTI_APPLICATIVI_LOCAL_FORWARD_LOGINFO_CODICE)){
this.msgDiag.addKeyword(CostantiPdD.KEY_PORTA_APPLICATIVA, "");
}
// autenticazione dei soggetti su PA
String credenziali = this.msgDiag.getKeywordLogPersonalizzati().get(CostantiPdD.KEY_CREDENZIALI);
if(codice.equals(RICEZIONE_BUSTE_AUTENTICAZIONE_IN_CORSO_CODICE) || //ricezioneBuste.autenticazioneInCorso
codice.equals(RICEZIONE_BUSTE_AUTENTICAZIONE_EFFETTUATA_CODICE) || //ricezioneBuste.autenticazioneEffettuata
codice.equals(RICEZIONE_BUSTE_AUTENTICAZIONE_FALLITA_CODICE) || //ricezioneBuste.autenticazioneFallita
codice.equals(RICEZIONE_BUSTE_AUTENTICAZIONE_FALLITA_OPZIONALE_CODICE) //ricezioneBuste.autenticazioneFallita.opzionale
) {
if(credenziali!=null && !"".equals(credenziali)) {
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_MITTENTE_MSG, credenziali);
}
else{
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_MITTENTE_MSG, "");
}
}
else {
if(credenziali!=null && !"".equals(credenziali)) {
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_MITTENTE_MSG, " credenzialiMittente "+credenziali);
}
else{
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_MITTENTE_MSG, "");
}
}
if(codice.equals(RICEZIONE_BUSTE_AUTENTICAZIONE_EFFETTUATA_CODICE)){
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_MITTENTE_MSG, ""); // per evitare di visualizzarle anche nei successivi diagnostici
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI, "");
}
else if(codice.equals("001056")){
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_SA_FRUITORE, ""); // per evitare di visualizzarle anche nei successivi diagnostici
}
// Le credenziali del servizio applicativo non vengono più visualizzate se è stata effettuata l'autenticazione
// Questo processo avviene dal diagnosticio con codice 001003 in poi sulla porta delegata
if(codice.equals("001003")){
String autenticazione = this.msgDiag.getKeywordLogPersonalizzati().get(CostantiPdD.KEY_TIPO_AUTENTICAZIONE);
if(autenticazione!=null && !"".equals(autenticazione) && !"-".equals(autenticazione) && !"none".equals(autenticazione)) {
// in caso di autenticazione effettuata questo diagnostico non contiene le credenziali
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_SA_FRUITORE, "");
}
}
// Le credenziali del soggetto non vengono più visualizzate se è stata effettuata l'autenticazione
// Questo processo avviene dal diagnosticio con codice 004001 in poi sulla porta applicativa
if(codice.equals("004001")){
String autenticazione = this.msgDiag.getKeywordLogPersonalizzati().get(CostantiPdD.KEY_TIPO_AUTENTICAZIONE);
if(autenticazione!=null && !"".equals(autenticazione) && !"-".equals(autenticazione) && !"none".equals(autenticazione)) {
// in caso di autenticazione effettuata questo diagnostico non contiene le credenziali
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI, "");
this.msgDiag.addKeyword(CostantiPdD.KEY_CREDENZIALI_MITTENTE_MSG, "");
}
}
String codiceConsegnaRichiesta = null;
String codiceConsegnaRisposta = null;
if( RICEZIONE_CONTENUTI_APPLICATIVI_CODICE_MODULO.equals(codiceModulo) // ricezioneContenutiApplicativi
||
RICEZIONE_BUSTE_CODICE_MODULO.equals(codiceModulo) // ricezioneBuste
){
Object o = this.info.getDato(MappingRicostruzioneDiagnostici.CODICE_TRASPORTO_RISPOSTA).getDato();
codiceConsegnaRisposta = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(CostantiPdD.KEY_CODICE_CONSEGNA, codiceConsegnaRisposta);
}
else if (INOLTRO_BUSTE_CODICE_MODULO.equals(codiceModulo) // inoltroBuste
||
CONSEGNA_CONTENUTI_APPLICATIVI_CODICE_MODULO.equals(codiceModulo) // consegnaContenutiApplicativi
){
Object o = this.info.getDato(MappingRicostruzioneDiagnostici.CODICE_TRASPORTO_RICHIESTA).getDato();
codiceConsegnaRichiesta = (o!=null ? (String) o : null );
this.msgDiag.addKeyword(CostantiPdD.KEY_CODICE_CONSEGNA, codiceConsegnaRichiesta);
String erroreConsegna = "errore di trasporto, codice "+codiceConsegnaRichiesta;
if(this.mFaultRicostruitoCooperazione!=null || this.mFaultRicostruitoIntegrazione!=null){
boolean faultProtocollo = false;
if(codice.equals(INOLTRO_BUSTE_INOLTRO_CON_ERRORE_CODICE)){
try{
EsitoTransazioneName name = EsitoTransazioneName.convertoTo(EsitiProperties.getInstanceFromProtocolName(log, this.transazioneDTO.getProtocollo()).getEsitoName(this.transazioneDTO.getEsito()));
if(EsitoTransazioneName.ERRORE_PROTOCOLLO.equals(name)){
faultProtocollo = true;
}
}catch(Exception e){
log.error("Errore durante la comprensione dell'esito ["+this.transazioneDTO.getEsito()+"]: "+e.getMessage(),e);
}
}
if(faultProtocollo){
boolean set = false;
OpenSPCoop2Message msg = null;
if(INOLTRO_BUSTE_CODICE_MODULO.equals(codiceModulo)){
msg = this.mFaultRicostruitoCooperazione;
}
else if(CONSEGNA_CONTENUTI_APPLICATIVI_CODICE_MODULO.equals(codiceModulo)){
msg = this.mFaultRicostruitoIntegrazione;
}
if(msg!=null && ServiceBinding.SOAP.equals(msg.getServiceBinding())){
SOAPFault soapFault = null;
if(msg.castAsSoap().getSOAPBody()!=null){
soapFault = msg.castAsSoap().getSOAPBody().getFault();
}
if(soapFault!=null && soapFault.getFaultString()!=null){
if( soapFault.getFaultString().equals(this.protocolFactory.createTraduttore().toString(MessaggiFaultErroreCooperazione.FAULT_STRING_VALIDAZIONE)) ){
set = true;
erroreConsegna = soapFault.getFaultString();
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_MESSAGGIO_BUSTA_ERRORE, CostantiPdD.TIPO_MESSAGGIO_BUSTA_ERRORE_INTESTAZIONE);
}
else if( soapFault.getFaultString().equals(this.protocolFactory.createTraduttore().toString(MessaggiFaultErroreCooperazione.FAULT_STRING_PROCESSAMENTO)) ){
set = true;
erroreConsegna = soapFault.getFaultString();
this.msgDiag.addKeyword(CostantiPdD.KEY_TIPO_MESSAGGIO_BUSTA_ERRORE, CostantiPdD.TIPO_MESSAGGIO_BUSTA_ERRORE_PROCESSAMENTO);
}
}
if(set){
// abbiamo un soap fault. Controllo il detail per i successivi diagnostici
DettaglioEccezione dettaglioEccezione = XMLUtils.getDettaglioEccezione(log,msg);
if(dettaglioEccezione!=null){
this.msgDiag.addKeyword(CostantiPdD.KEY_OPENSPCOOP2_DETAILS, XMLUtils.toString(dettaglioEccezione));
}
}
}
if(!set){
if(INOLTRO_BUSTE_CODICE_MODULO.equals(codiceModulo) && this.mFaultRicostruitoCooperazioneDescrizioneWithDetails!=null){
erroreConsegna = erroreConsegna + " (" +this.mFaultRicostruitoCooperazioneDescrizioneWithDetails+ ")";
}
if(CONSEGNA_CONTENUTI_APPLICATIVI_CODICE_MODULO.equals(codiceModulo) && this.mFaultRicostruitoIntegrazioneDescrizioneWithDetails!=null){
erroreConsegna = erroreConsegna + " (" +this.mFaultRicostruitoIntegrazioneDescrizioneWithDetails+ ")";
}
}
}
else{
if(INOLTRO_BUSTE_CODICE_MODULO.equals(codiceModulo) && this.mFaultRicostruitoCooperazioneDescrizioneWithDetails!=null){
erroreConsegna = erroreConsegna + " (" +this.mFaultRicostruitoCooperazioneDescrizioneWithDetails+ ")";
}
if(CONSEGNA_CONTENUTI_APPLICATIVI_CODICE_MODULO.equals(codiceModulo) && this.mFaultRicostruitoIntegrazioneDescrizioneWithDetails!=null){
erroreConsegna = erroreConsegna + " (" +this.mFaultRicostruitoIntegrazioneDescrizioneWithDetails+ ")";
}
}
}
this.msgDiag.addKeyword(CostantiPdD.KEY_ERRORE_CONSEGNA, erroreConsegna);
}
else{
this.msgDiag.addKeyword(CostantiPdD.KEY_CODICE_CONSEGNA, null);
}
if(dynamic){
DynamicExtendedInfoDiagnosticoType type = DynamicExtendedInfoDiagnosticoType.getEnum(dynamicType);
switch (type) {
case NON_RICOSTRUIBILE:
// nop
break;
case POLICY_CONTROLLO_TRAFFICO:
Map<String, String> map = DynamicExtendedInfoDiagnosticoControlloTraffico.convertToProperties(dynamicValue);
if(map!=null && map.size()>0){
this.msgDiag.getKeywordLogPersonalizzati().putAll(map);
}
break;
default:
break;
}
}
}
// ***************** BUILD FROM DATI SIMULATI ********************
public List<MsgDiagnostico> build(Logger log) throws UtilsException{
List<MsgDiagnostico> msgDiagnosticiNormali = new ArrayList<>();
if(this.info.getDiagnostici()!=null && !this.info.getDiagnostici().isEmpty()){
for (InfoDiagnostico infoMsgDiag : this.info.getDiagnostici()) {
MsgDiagnostico m = new MsgDiagnostico();
String codice = infoMsgDiag.getCode();
String codiceModulo = codice.substring(0, 3);
try{
this.buildFault(log, codice, codiceModulo);
this.buildContextForSingleMsgDiagnostico(codice,codiceModulo,false,
null,null,
log);
}catch(Throwable t){
throw new UtilsException("build context error: "+t.getMessage(),t);
}
this.setDatiEngine(m, codice, codiceModulo, infoMsgDiag, null);
msgDiagnosticiNormali.add(m);
}
}
if(this.info.getDiagnosticiExt()!=null && !this.info.getDiagnosticiExt().isEmpty()){
List<MsgDiagnostico> msgDiagnosticiCompleted = new ArrayList<>();
List<String> positions = new ArrayList<>();
Map<String, InfoDiagnostico> mapPositionToInfoDiagnostico = new HashMap<>();
Map<String, DynamicExtendedInfoDiagnostico> mapPositionToDynamicExtendedInfoDiagnostico = new HashMap<>();
// nota: devo ordinarli per position, poichè vengono serializzati prima i diag ext di un tipo, poi di un altro.
// esempio prima i CT (controlloTraffico) poi quelli non ricostruibili
for (int i = 0; i < this.info.getDiagnosticiExt().size(); i++) {
InfoDiagnostico infoMsgDiag = this.info.getDiagnosticiExt().get(i);
DynamicExtendedInfoDiagnostico d = this.info.getDatiExt().get(i);
String keyPosition = null;
if(d.getDiagnosticPosition()<10){
keyPosition = "000"+d.getDiagnosticPosition();
}
else if(d.getDiagnosticPosition()<100){
keyPosition = "00"+d.getDiagnosticPosition();
}
else if(d.getDiagnosticPosition()<1000){
keyPosition = "0"+d.getDiagnosticPosition();
}
else{
keyPosition = ""+d.getDiagnosticPosition();
}
positions.add(keyPosition);
mapPositionToInfoDiagnostico.put(keyPosition, infoMsgDiag);
mapPositionToDynamicExtendedInfoDiagnostico.put(keyPosition, d);
}
Collections.sort(positions);
for (int i = 0; i < positions.size(); i++) {
String keyPosition = positions.get(i);
InfoDiagnostico infoMsgDiag = mapPositionToInfoDiagnostico.remove(keyPosition);
DynamicExtendedInfoDiagnostico d = mapPositionToDynamicExtendedInfoDiagnostico.remove(keyPosition);
MsgDiagnostico m = new MsgDiagnostico();
String codice = infoMsgDiag.getCode();
String codiceModulo = codice.substring(0, 3);
try{
this.buildFault(log, codice, codiceModulo);
this.buildContextForSingleMsgDiagnostico(codice,codiceModulo,true,
d.getType().getValue(),d.getValue(),
log);
}catch(Throwable t){
throw new UtilsException("build context error: "+t.getMessage(),t);
}
this.setDatiEngine(m, codice, codiceModulo, infoMsgDiag, d);
while(msgDiagnosticiCompleted.size()<d.getDiagnosticPosition() && !msgDiagnosticiNormali.isEmpty()){
msgDiagnosticiCompleted.add(msgDiagnosticiNormali.remove(0));
}
msgDiagnosticiCompleted.add(m);
}
while(!msgDiagnosticiNormali.isEmpty()){
msgDiagnosticiCompleted.add(msgDiagnosticiNormali.remove(0));
}
return msgDiagnosticiCompleted;
}
else{
return msgDiagnosticiNormali;
}
}
private void setDatiEngine(MsgDiagnostico msgDiag,String codice, String codiceModulo,
InfoDiagnostico infoMsgDiag,
DynamicExtendedInfoDiagnostico d) throws UtilsException{
PropertiesReader pr = MsgDiagnosticiProperties.getMappingCodiceToKeywordMsgDiagnosticiPersonalizzati();
PropertiesReader prSeverita = MsgDiagnosticiProperties.getLivelliMsgDiagnosticiPersonalizzati();
MsgDiagnosticiProperties msgDiagProp = MsgDiagnosticiProperties.getInstance();
boolean setSeverita = true;
if(msgDiagProp.getCodiceDiagnosticoDebugHigh().equals(codice)){
setSeverita = false;
msgDiag.setSeverita(LogLevels.SEVERITA_DEBUG_HIGH);
}
else if(msgDiagProp.getCodiceDiagnosticoDebugMedium().equals(codice)){
setSeverita = false;
msgDiag.setSeverita(LogLevels.SEVERITA_DEBUG_MEDIUM);
}
String nomeCompletoDiagnostico = pr.getValue(codice);
msgDiag.setCodice(codice);
msgDiag.setGdo(infoMsgDiag.getGdo());
msgDiag.setIdBusta(this.transazioneDTO.getIdMessaggioRichiesta());
msgDiag.setIdBustaRisposta(this.transazioneDTO.getIdMessaggioRisposta());
msgDiag.setIdFunzione(this.getIdentificativoFunzione(codiceModulo));
IDSoggetto idDominio = new IDSoggetto(this.transazioneDTO.getPddTipoSoggetto(), this.transazioneDTO.getPddNomeSoggetto(), this.transazioneDTO.getPddCodice());
msgDiag.setIdSoggetto(idDominio);
if(d!=null && DynamicExtendedInfoDiagnosticoType.NON_RICOSTRUIBILE.equals(d.getType())){
msgDiag.setMessaggio(DynamicExtendedInfoDiagnosticoNonRicostruibileUtils.convertToHumanMessage(d.getValue()));
}else{
msgDiag.setMessaggio(this.msgDiag.getMessaggio_replaceKeywords(nomeCompletoDiagnostico));
}
String idTransazionePresente = msgDiag.getProperty(CostantiDB.MSG_DIAGNOSTICI_COLUMN_ID_TRANSAZIONE);
if(idTransazionePresente==null){
msgDiag.addProperty(CostantiDB.MSG_DIAGNOSTICI_COLUMN_ID_TRANSAZIONE, this.transazioneDTO.getIdTransazione());
}
msgDiag.setProtocollo(this.transazioneDTO.getProtocollo());
if(setSeverita){
String sev = (String) prSeverita.get(nomeCompletoDiagnostico);
int sevI = 0;
try{
sevI = Integer.parseInt(sev);
}catch(Exception e){
throw new UtilsException("Errore durante il parsing della severità ["+sev+"] per il diagnostico ["+nomeCompletoDiagnostico+"] code ["+codice+"]");
}
msgDiag.setSeverita( (sevI) / 10000);
}
}
// *********** U T I L S **********************
private String getIdentificativoFunzione(String codice) throws UtilsException{
PropertiesReader pr = MsgDiagnosticiProperties.getCodiciIdentificativiFunzione();
Enumeration<?> keys = pr.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
String value = pr.getValue(key);
/**System.out.println("code["+key+"] name["+value+"]");*/
if(value.equals(codice)){
return key;
}
}
/**return null;*/
// Fix: non devo ritornare null sennò poi la serializzazione va in errore
return "core";
}
}