MsgDiagnostico.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */




  20. package org.openspcoop2.pdd.logger;

  21. import java.sql.Connection;
  22. import java.util.Date;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;

  26. import org.apache.logging.log4j.Level;
  27. import org.openspcoop2.core.config.PortaApplicativa;
  28. import org.openspcoop2.core.config.PortaDelegata;
  29. import org.openspcoop2.core.config.constants.Severita;
  30. import org.openspcoop2.core.constants.Costanti;
  31. import org.openspcoop2.core.constants.TipoPdD;
  32. import org.openspcoop2.core.id.IDPortaApplicativa;
  33. import org.openspcoop2.core.id.IDPortaDelegata;
  34. import org.openspcoop2.core.id.IDServizio;
  35. import org.openspcoop2.core.id.IDSoggetto;
  36. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  37. import org.openspcoop2.core.transazioni.TransazioneApplicativoServer;
  38. import org.openspcoop2.message.constants.ServiceBinding;
  39. import org.openspcoop2.pdd.config.ConfigurazionePdDManager;
  40. import org.openspcoop2.pdd.config.OpenSPCoop2Properties;
  41. import org.openspcoop2.pdd.core.CostantiPdD;
  42. import org.openspcoop2.pdd.core.PdDContext;
  43. import org.openspcoop2.pdd.core.handlers.GeneratoreCasualeDate;
  44. import org.openspcoop2.pdd.core.transazioni.GestoreConsegnaMultipla;
  45. import org.openspcoop2.pdd.core.transazioni.RepositoryGestioneStateful;
  46. import org.openspcoop2.pdd.core.transazioni.Transaction;
  47. import org.openspcoop2.pdd.core.transazioni.TransactionContext;
  48. import org.openspcoop2.pdd.core.transazioni.TransactionDeletedException;
  49. import org.openspcoop2.pdd.core.transazioni.TransactionNotExistsException;
  50. import org.openspcoop2.pdd.services.skeleton.IntegrationManager;
  51. import org.openspcoop2.protocol.engine.BasicProtocolFactory;
  52. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  53. import org.openspcoop2.protocol.engine.builder.DiagnosticoBuilder;
  54. import org.openspcoop2.protocol.sdk.Busta;
  55. import org.openspcoop2.protocol.sdk.Context;
  56. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  57. import org.openspcoop2.protocol.sdk.ProtocolException;
  58. import org.openspcoop2.protocol.sdk.config.ITraduttore;
  59. import org.openspcoop2.protocol.sdk.constants.TipoSerializzazione;
  60. import org.openspcoop2.protocol.sdk.diagnostica.IDiagnosticProducer;
  61. import org.openspcoop2.protocol.sdk.state.IState;
  62. import org.openspcoop2.protocol.sdk.state.RequestInfo;
  63. import org.openspcoop2.protocol.sdk.state.StateMessage;
  64. import org.openspcoop2.utils.MapKey;
  65. import org.openspcoop2.utils.Utilities;
  66. import org.openspcoop2.utils.date.DateManager;
  67. import org.slf4j.Logger;



  68. /**
  69.  * Contiene la definizione un Logger utilizzato dai nodi dell'infrastruttura di OpenSPCoop2
  70.  * per la registrazione di messaggi diagnostici.
  71.  *
  72.  * @author Poli Andrea (apoli@link.it)
  73.  * @author $Author$
  74.  * @version $Rev$, $Date$
  75.  */

  76. public class MsgDiagnostico {

  77.    
  78.     /** Indicazione di un gestore di msg diagnostici funzionante */
  79.     public static boolean gestoreDiagnosticaDisponibile = true;
  80.     /** Primo errore avvenuto nel momento in cui è stato rilevato un malfunzionamento nel sistema di diagnostica */
  81.     public static Throwable motivoMalfunzionamentoDiagnostici = null;
  82.    

  83.     /**  Logger log4j utilizzato per scrivere i msgDiagnostici */
  84.     private org.apache.logging.log4j.Logger loggerMsgDiagnostico = null;
  85.     /**  Logger log4j utilizzato per scrivere i msgDiagnostici HumanReadable */
  86.     private org.apache.logging.log4j.Logger loggerOpenSPCoop2 = null;
  87.     /**  Logger log4j utilizzato per scrivere i msgDiagnostici HumanReadable del servìzio di IntegrationManager */
  88.     private org.apache.logging.log4j.Logger loggerIntegrationManager = null;
  89.     /**  Logger log4j utilizzato per scrivere i msgDiagnostici da passare agli appender che non possiedono un id di transazione */
  90.     private org.apache.logging.log4j.Logger loggerResource = null;
  91.     /**  Logger log4j utilizzato per segnalare a video errori gravi (FATAL) */
  92.     private Logger loggerOpenSPCoop2Fatal = null;
  93.     /**  Logger log4j utilizzato per scrivere lo stack trace degli errore nel core logger di openspcoop */
  94.     private Logger loggerOpenSPCoop2Core = null;
  95.     /** Appender personalizzati per i messaggi diagnostici di OpenSPCoop2 */
  96.     private List<IDiagnosticProducer> loggerMsgDiagnosticoOpenSPCoopAppender = null;
  97.     private List<String> tipoMsgDiagnosticoOpenSPCoopAppender = null;

  98.     /** Soggetto che richiede il logger */
  99.     private IDSoggetto idSoggettoDominio;
  100.     /** Modulo Funzionale */
  101.     private String idModulo;
  102.     /** Identificativo della richiesta */
  103.     private String idMessaggioRichiesta;
  104.     /** Identificativo della risposta */
  105.     private String idMessaggioRisposta;
  106.     /** PdDContext */
  107.     private Context pddContext;
  108.     /** XMLBuilder */
  109.     private DiagnosticoBuilder diagnosticoBuilder;
  110.    
  111.     /** Protocol Factory */
  112.     private IProtocolFactory<?> protocolFactory;
  113.     private ITraduttore traduttore;
  114.     /** ConfigurazionePdDReader */
  115.     private ConfigurazionePdDManager _configurazionePdDReader;
  116.     /** MsgDiagnosticiProperties reader */
  117.     private MsgDiagnosticiProperties msgDiagPropertiesReader;
  118.     /** OpenSPCoopProperties */
  119.     private OpenSPCoop2Properties openspcoopProperties = null;
  120.    
  121.     /** Generatore di date casuali*/
  122.     private GeneratoreCasualeDate generatoreDateCasuali = null;
  123.    
  124.     /** Properties da aggiungere ai diagnostici (utili nelle implementazioni handler) */
  125.     private Map<String,String> properties = new HashMap<>();        
  126.     public Map<String, String> getProperties() {
  127.         return this.properties;
  128.     }

  129.     /** Keyword per i log personalizzati */
  130.     private Map<String,String> keywordLogPersonalizzati = new HashMap<>();  
  131.     public Map<String, String> getKeywordLogPersonalizzati() {
  132.         return this.keywordLogPersonalizzati;
  133.     }
  134.    
  135.     /** Informazioni sulla porta */
  136.     private String porta;
  137.     private boolean delegata;
  138.     @SuppressWarnings("unused")
  139.     private TipoPdD tipoPdD;
  140.     private Severita severitaPorta;

  141.     /** Stati */
  142.     private StateMessage state = null;
  143.     private StateMessage responseState = null;
  144.    
  145.     /** RequestInfo */
  146.     private RequestInfo requestInfo = null;
  147.    
  148.    
  149.     public static MsgDiagnostico newInstance(TipoPdD tipoPdD,IDSoggetto idSoggettoDominio, String modulo,String nomePorta, RequestInfo requestInfo, ConfigurazionePdDManager configurazionePdDManager) {
  150.         return new MsgDiagnostico(tipoPdD, idSoggettoDominio, modulo, nomePorta, requestInfo,
  151.                 configurazionePdDManager, null, null);
  152.     }
  153.     public static MsgDiagnostico newInstance(TipoPdD tipoPdD,IDSoggetto idSoggettoDominio, String modulo,String nomePorta, RequestInfo requestInfo, IState state) {
  154.         return new MsgDiagnostico(tipoPdD, idSoggettoDominio, modulo, nomePorta, requestInfo,
  155.                 null, state, null);
  156.     }
  157.     public static MsgDiagnostico newInstance(TipoPdD tipoPdD,IDSoggetto idSoggettoDominio, String modulo,String nomePorta, RequestInfo requestInfo, IState state, IState responseState) {
  158.         return new MsgDiagnostico(tipoPdD, idSoggettoDominio, modulo, nomePorta, requestInfo,
  159.                 null, state, responseState);
  160.     }
  161.    
  162.     public static MsgDiagnostico newInstance(TipoPdD tipoPdD,String modulo,String nomePorta, RequestInfo requestInfo, ConfigurazionePdDManager configurazionePdDManager) {
  163.         return new MsgDiagnostico(tipoPdD, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, nomePorta, requestInfo,
  164.                 configurazionePdDManager, null, null);
  165.     }
  166.     public static MsgDiagnostico newInstance(TipoPdD tipoPdD,String modulo,String nomePorta, RequestInfo requestInfo) {
  167.         return new MsgDiagnostico(tipoPdD, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, nomePorta, requestInfo,
  168.                 null, null, null);
  169.     }
  170.    
  171.     public static MsgDiagnostico newInstance(TipoPdD tipoPdD,String modulo,ConfigurazionePdDManager configurazionePdDManager) {
  172.         return new MsgDiagnostico(tipoPdD, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, null, null,
  173.                 configurazionePdDManager, null, null);
  174.     }
  175.     public static MsgDiagnostico newInstance(TipoPdD tipoPdD,String modulo) {
  176.         return new MsgDiagnostico(tipoPdD, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, null, null,
  177.                 null, null, null);
  178.     }
  179.    
  180.     public static MsgDiagnostico newInstance(IDSoggetto idSoggettoDominio, String modulo,ConfigurazionePdDManager configurazionePdDManager) {
  181.         return new MsgDiagnostico(null, idSoggettoDominio, modulo, null, null,
  182.                 configurazionePdDManager, null, null);
  183.     }
  184.    
  185.     public static MsgDiagnostico newInstance(String modulo,ConfigurazionePdDManager configurazionePdDManager) {
  186.         return new MsgDiagnostico(null, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, null, null,
  187.                 configurazionePdDManager, null, null);
  188.     }
  189.     public static MsgDiagnostico newInstance(String modulo) {
  190.         return new MsgDiagnostico(null, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, null, null,
  191.                 null, null, null);
  192.     }
  193.    
  194.     public static MsgDiagnostico newInstance() {
  195.         return new MsgDiagnostico();
  196.     }
  197.    
  198.     /**
  199.      * Costruttore.
  200.      *
  201.      * @param idSoggettoDominio Soggetto che richiede il logger
  202.      * @param modulo Funzione che richiede il logger
  203.      * @throws ProtocolException
  204.      *
  205.      */
  206.     private MsgDiagnostico(TipoPdD tipoPdD,IDSoggetto idSoggettoDominio, String modulo,String nomePorta, RequestInfo requestInfo,
  207.             ConfigurazionePdDManager configurazionePdDManagerParam,IState stateParam, IState responseStateParam) {
  208.        
  209.         this.idSoggettoDominio = idSoggettoDominio;
  210.         this.idModulo = modulo;
  211.         this.loggerMsgDiagnostico = OpenSPCoop2Logger.loggerMsgDiagnostico;
  212.         this.loggerOpenSPCoop2 = OpenSPCoop2Logger.loggerOpenSPCoop2;
  213.         this.loggerIntegrationManager = OpenSPCoop2Logger.loggerIntegrationManager;
  214.         this.loggerResource = OpenSPCoop2Logger.loggerOpenSPCoopResourcesAsLoggerImpl;
  215.         this.loggerOpenSPCoop2Fatal = OpenSPCoop2Logger.loggerOpenSPCoopConsole;
  216.         this.loggerMsgDiagnosticoOpenSPCoopAppender = OpenSPCoop2Logger.loggerMsgDiagnosticoOpenSPCoopAppender;
  217.         this.tipoMsgDiagnosticoOpenSPCoopAppender = OpenSPCoop2Logger.tipoMsgDiagnosticoOpenSPCoopAppender;
  218.         this.loggerOpenSPCoop2Core = OpenSPCoop2Logger.loggerOpenSPCoopCore;

  219.         if(configurazionePdDManagerParam!=null) {
  220.             this._configurazionePdDReader = configurazionePdDManagerParam;
  221.             this.state = this._configurazionePdDReader.getState();
  222.             this.responseState = this._configurazionePdDReader.getResponseState();
  223.         }
  224.         else {
  225.             if(stateParam!=null && stateParam instanceof StateMessage){
  226.                 this.state = (StateMessage) stateParam;
  227.             }
  228.             if(responseStateParam!=null && responseStateParam instanceof StateMessage){
  229.                 this.responseState = (StateMessage) responseStateParam;
  230.             }
  231.             this._configurazionePdDReader = ConfigurazionePdDManager.getInstance(this.state, this.responseState);
  232.         }
  233.         this.msgDiagPropertiesReader = MsgDiagnosticiProperties.getInstance();
  234.        
  235.         this.openspcoopProperties = OpenSPCoop2Properties.getInstance();
  236.         if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato()){
  237.             this.generatoreDateCasuali = GeneratoreCasualeDate.getGeneratoreCasualeDate();
  238.         }
  239.         try{
  240.             if(requestInfo!=null && requestInfo.getProtocolFactory()!=null) {
  241.                 this.protocolFactory = requestInfo.getProtocolFactory();
  242.             }
  243.             else {
  244.                 throw new Exception("ProtocolFactory unknow");
  245.             }
  246.             this.traduttore = this.protocolFactory.createTraduttore();
  247.         } catch(Throwable e){
  248.             // Succede quando non appartiene a nessun protocollo, ad esempio i diagnostici di startup
  249.             this.protocolFactory = new BasicProtocolFactory(this.loggerOpenSPCoop2Core);
  250.             try{
  251.                 this.traduttore = this.protocolFactory.createTraduttore();
  252.             } catch(Throwable eClose){}
  253.             //this.protocolFactory = null;
  254.         }
  255.         this.diagnosticoBuilder = new DiagnosticoBuilder(this.protocolFactory);
  256.         // Impostazione filtri
  257.         // Il filtro viene effettuato a livello di programma.
  258.        
  259.         this.requestInfo = requestInfo;
  260.        
  261.         this.porta = nomePorta;
  262.         this.tipoPdD = tipoPdD;
  263.         if(tipoPdD!=null) {
  264.             if(TipoPdD.DELEGATA.equals(tipoPdD)) {
  265.                 this.delegata = true;
  266.             }
  267.             else {
  268.                 this.delegata = false;
  269.             }
  270.         }
  271.         this.setPorta(this.requestInfo);
  272.            
  273.     }
  274.    
  275.     private ConfigurazionePdDManager getConfigurazionePdDManager() {
  276.         if(this._configurazionePdDReader!=null) {
  277.             return this._configurazionePdDReader;
  278.         }
  279.         if(this.state!=null || this.responseState!=null) {
  280.             return ConfigurazionePdDManager.getInstance(this.state, this.responseState);
  281.         }
  282.         return ConfigurazionePdDManager.getInstance();
  283.     }
  284.    
  285.     private MsgDiagnostico(){
  286.         this.msgDiagPropertiesReader = MsgDiagnosticiProperties.getInstance();
  287.     }
  288.    
  289.     private void setPorta(RequestInfo requestInfo) {
  290.         if(this.porta!=null) {
  291.             if(this.delegata) {
  292.                 try {
  293.                     IDPortaDelegata idPD = new IDPortaDelegata();
  294.                     idPD.setNome(this.porta);
  295.                     PortaDelegata pd = this.getConfigurazionePdDManager().getPortaDelegataSafeMethod(idPD, requestInfo);
  296.                     if(pd!=null && pd.getTracciamento()!=null) {
  297.                         this.severitaPorta = pd.getTracciamento().getSeverita();
  298.                     }
  299.                 }
  300.                 catch(Throwable e){}
  301.             }
  302.             else {
  303.                 try {
  304.                     IDPortaApplicativa idPA = new IDPortaApplicativa();
  305.                     idPA.setNome(this.porta);
  306.                     PortaApplicativa pa = this.getConfigurazionePdDManager().getPortaApplicativaSafeMethod(idPA, requestInfo);
  307.                     if(pa!=null && pa.getTracciamento()!=null) {
  308.                         this.severitaPorta = pa.getTracciamento().getSeverita();
  309.                     }
  310.                 }
  311.                 catch(Throwable e){}
  312.             }
  313.         }
  314.     }

  315.     public void updateRequestInfo(RequestInfo requestInfo) {
  316.         this.requestInfo = requestInfo;
  317.     }
  318.    
  319.     public void updatePorta(String porta, RequestInfo requestInfo) {
  320.         this.updatePorta(null, porta, requestInfo);
  321.     }
  322.     public void updatePorta(TipoPdD tipoPdD, String porta, RequestInfo requestInfo) {
  323.         if(tipoPdD!=null) {
  324.             this.tipoPdD = tipoPdD;
  325.             if(TipoPdD.DELEGATA.equals(tipoPdD)) {
  326.                 this.delegata = true;
  327.             }
  328.             else {
  329.                 this.delegata = false;
  330.             }
  331.         }
  332.         this.porta = porta;
  333.         this.setPorta(requestInfo);
  334.     }
  335.     public String getPorta() {
  336.         return this.porta;
  337.     }

  338.     public void updateState(IState requestStateParam, IState responseStateParam) {
  339.         StateMessage requestState = null;
  340.         StateMessage responseState = null;
  341.         if(requestStateParam!=null && requestStateParam instanceof StateMessage) {
  342.             requestState = (StateMessage) requestStateParam;
  343.         }
  344.         if(responseStateParam!=null && responseStateParam instanceof StateMessage) {
  345.             responseState = (StateMessage) responseStateParam;
  346.         }
  347.         updateState(requestState, responseState);
  348.     }
  349.     public void updateState(StateMessage requestState, StateMessage responseState){
  350.         this.state = requestState;
  351.         this.responseState = responseState;
  352.         if(this.state!=null || this.responseState!=null) {
  353.             if(this._configurazionePdDReader!=null) {
  354.                 this._configurazionePdDReader = this._configurazionePdDReader.refreshState(this.state, this.responseState);
  355.             }
  356.             else {
  357.                 this._configurazionePdDReader = ConfigurazionePdDManager.getInstance(this.state, this.responseState);
  358.             }
  359.         }
  360.         else {
  361.             this._configurazionePdDReader = ConfigurazionePdDManager.getInstance();
  362.         }
  363.     }
  364.     public void updateState(ConfigurazionePdDManager configurazionePdDManager){
  365.         this._configurazionePdDReader = configurazionePdDManager;
  366.         if(this._configurazionePdDReader!=null) {
  367.             this.state = this._configurazionePdDReader.getState();
  368.             this.responseState = this._configurazionePdDReader.getResponseState();
  369.         }
  370.         else {
  371.             this._configurazionePdDReader = ConfigurazionePdDManager.getInstance();
  372.         }
  373.     }
  374.    
  375.     private Connection getConnectionFromState(){
  376.         if(this.state!=null) {
  377.             Connection c = StateMessage.getConnection(this.state);
  378.             if(c!=null) {
  379.                 return c;
  380.             }
  381.         }
  382.         if(this.responseState!=null) {
  383.             Connection c = StateMessage.getConnection(this.responseState);
  384.             if(c!=null) {
  385.                 return c;
  386.             }
  387.         }
  388.         return null;
  389.     }
  390.     private IState getValidConnectionState(){
  391.         if(this.state!=null) {
  392.             Connection c = StateMessage.getConnection(this.state);
  393.             if(c!=null) {
  394.                 return this.state;
  395.             }
  396.         }
  397.         if(this.responseState!=null) {
  398.             Connection c = StateMessage.getConnection(this.responseState);
  399.             if(c!=null) {
  400.                 return this.responseState;
  401.             }
  402.         }
  403.         return null;
  404.     }
  405.    
  406.     /**
  407.      * Il Metodo si occupa di impostare il dominio del Soggetto che utilizza il logger.
  408.      *
  409.      * @param idSoggettoDominio Soggetto che richiede il logger
  410.      *
  411.      */
  412.     public void setDominio(IDSoggetto idSoggettoDominio){
  413.         this.idSoggettoDominio = idSoggettoDominio;
  414.     }
  415.     public IDSoggetto getDominio() {
  416.         return this.idSoggettoDominio;
  417.     }
  418.    
  419.     /**
  420.      * Il Metodo si occupa di impostare il contesto della PdD
  421.      *
  422.      * @param pddContext Contesto della PdD
  423.      *
  424.      */
  425.     public void setPddContext(Context pddContext, IProtocolFactory<?> protocolFactory) {
  426.         this.pddContext = pddContext;
  427.         this.protocolFactory = protocolFactory;
  428.         try{
  429.             this.traduttore = this.protocolFactory.createTraduttore();
  430.         }catch(Exception e){
  431.             // ignore
  432.         }
  433.         this.diagnosticoBuilder = new DiagnosticoBuilder(protocolFactory);
  434.         this.addKeywords(protocolFactory);
  435.     }


  436.     /**
  437.      * Il Metodo si occupa di impostare il modulo funzionale che che utilizza il logger.
  438.      *
  439.      * @param modulo Funzione che richiede il logger
  440.      *
  441.      */
  442.     public void setFunzione(String modulo){
  443.         this.idModulo = modulo;
  444.     }
  445.     public String getFunzione() {
  446.         return this.idModulo;
  447.     }

  448.     /**
  449.      * Il Metodo si occupa di impostare l'identificativo della richiesta in gestione.
  450.      *
  451.      * @param id Identificativo
  452.      */
  453.     public void setIdMessaggioRichiesta(String id){
  454.         this.idMessaggioRichiesta = id;
  455.     }
  456.     /**
  457.      * Il Metodo si occupa di impostare l'identificativo della risposta in gestione.
  458.      *
  459.      * @param id Identificativo
  460.      */
  461.     public void setIdMessaggioRisposta(String id){
  462.         this.idMessaggioRisposta = id;
  463.     }

  464.     /**
  465.      * Il Metodo si occupa di impostare i filtri sui logger.
  466.      *
  467.      *
  468.      */
  469.     public void aggiornaFiltri(){
  470.        
  471.         // Il filtro viene effettuato a livello di programma.

  472.     }

  473.     /**
  474.      * Filter.
  475.      *
  476.      *
  477.      * @deprecated  utility che elimina i caratteri XML codificati
  478.      */
  479.     @Deprecated  public String filter(String msg){
  480.         String xml = msg.replaceAll("&lt;","<");
  481.         xml = xml.replaceAll("&quot;","\"");
  482.         xml = xml.replaceAll("&gt;",">");
  483.         return xml;
  484.     }




  485.    
  486.    
  487.     /** -----------------Impostazione Identificatori nei messaggi ---------------- */
  488.     private IDSoggetto fruitore;
  489.     private IDServizio servizio;
  490.     private String servizioApplicativo;
  491.     private String idCorrelazioneApplicativa;
  492.     private String idCorrelazioneRisposta;
  493.     public void setFruitore(IDSoggetto fruitore) {
  494.         this.fruitore = fruitore;
  495.     }

  496.     public void setServizio(IDServizio servizio) {
  497.         this.servizio = servizio;
  498.     }

  499.     public void setServizioApplicativo(String servizioApplicativo) {
  500.         this.servizioApplicativo = servizioApplicativo;
  501.     }
  502.     public void setIdCorrelazioneApplicativa(String idCorrelazioneApplicativa) {
  503.         this.idCorrelazioneApplicativa = idCorrelazioneApplicativa;
  504.     }
  505.     public void setIdCorrelazioneRisposta(String idCorrelazioneRisposta) {
  506.         this.idCorrelazioneRisposta = idCorrelazioneRisposta;
  507.     }
  508.    
  509.     /** -----------------Impostazione TransazioneApplicativoServer ---------------- */
  510.     private TransazioneApplicativoServer transazioneApplicativoServer;
  511.     private IDPortaApplicativa idPortaApplicativa;
  512.     public void setTransazioneApplicativoServer(TransazioneApplicativoServer transazioneApplicativoServer, IDPortaApplicativa idPortaApplicativa) {
  513.         this.transazioneApplicativoServer = transazioneApplicativoServer;
  514.         this.idPortaApplicativa = idPortaApplicativa;
  515.     }
  516.    
  517.    
  518.    
  519.    
  520.     /*---------- Livelli/Messaggi personalizzati -------------*/
  521.    
  522.     /** Keyword replace per msg personalizzati */
  523.     public void addKeyword(String key,String value){
  524.         if(key!=null){
  525.             String tmpValue = value;
  526.             if(tmpValue == null)
  527.                 tmpValue = "";
  528.             this.keywordLogPersonalizzati.put(key, tmpValue);
  529.         }
  530.     }
  531.     public void addKeywordErroreProcessamento(Throwable t) {
  532.         this.addKeywordErroreProcessamento(t, null);
  533.     }
  534.     public void addKeywordErroreProcessamento(Throwable t,String prefix) {
  535.         String eccezione = t!=null ? Utilities.readFirstErrorValidMessageFromException(t) : "Internal Error";
  536.         if(prefix!=null) {
  537.             prefix = prefix.trim();
  538.             if(prefix.endsWith(":")==false) {
  539.                 prefix = prefix +":";
  540.             }
  541.             prefix = prefix +" ";
  542.             this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO ,prefix +eccezione);
  543.         }
  544.         else {
  545.             this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO ,eccezione);
  546.         }
  547.     }
  548.     public void addKeywords(IProtocolFactory<?> protocolFactory){
  549.         this.addKeyword(CostantiPdD.KEY_PROTOCOLLO, protocolFactory.getProtocol());
  550.         try{
  551.             this.addKeyword(CostantiPdD.KEY_PROTOCOLLO_TIPI_SOGGETTI, protocolFactory.createProtocolConfiguration().getTipiSoggetti().toString());
  552.         }catch(Exception e){
  553.             // ignore
  554.         }
  555.         try{
  556.             RequestInfo requestInfoParam = null;
  557.             if(this.pddContext!=null && this.pddContext.containsKey(Costanti.REQUEST_INFO)){
  558.                 requestInfoParam = (RequestInfo) this.pddContext.getObject(Costanti.REQUEST_INFO);
  559.             }
  560.             else{
  561.                 requestInfoParam = this.requestInfo;
  562.             }
  563.             ServiceBinding serviceBinding = null;
  564.             if(requestInfoParam!=null) {
  565.                 if(requestInfoParam.getProtocolContext().isPortaApplicativaService()) {
  566.                     serviceBinding = requestInfoParam.getProtocolServiceBinding();
  567.                 }
  568.                 else{
  569.                     serviceBinding = requestInfoParam.getIntegrationServiceBinding();
  570.                 }
  571.             }
  572.             this.addKeyword(CostantiPdD.KEY_PROTOCOLLO_TIPI_SERVIZI, protocolFactory.createProtocolConfiguration().getTipiServizi(serviceBinding).toString());
  573.         }catch(Exception e){
  574.             // ignore
  575.         }
  576.     }
  577.     public void addKeywords(Busta busta,boolean richiesta){
  578.         if(busta!=null){
  579.             if(richiesta){
  580.                 if(busta.getID()!=null)
  581.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RICHIESTA, busta.getID());
  582.                 else
  583.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RICHIESTA, "N.D.");
  584.                 if(busta.getProfiloDiCollaborazione()!=null){
  585.                     String profilo = null;
  586.                     if(this.traduttore!=null){
  587.                         profilo = this.traduttore.toString(busta.getProfiloDiCollaborazione());
  588.                     }
  589.                     else if(busta.getProtocollo()!=null){
  590.                         try{
  591.                             IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(busta.getProtocollo());
  592.                             ITraduttore traduttore = protocolFactory.createTraduttore();
  593.                             profilo = traduttore.toString(busta.getProfiloDiCollaborazione());
  594.                         }catch(Exception e){
  595.                             profilo = busta.getProfiloDiCollaborazione().name();
  596.                         }
  597.                     }else{
  598.                         profilo = busta.getProfiloDiCollaborazione().name();
  599.                     }
  600.                     if(profilo==null){
  601.                         profilo = busta.getProfiloDiCollaborazione().getEngineValue();
  602.                     }
  603.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_PROFILO_COLLABORAZIONE, profilo);
  604.                 }
  605.                 if(busta.getTipoMittente()!=null) {
  606.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RICHIESTA, busta.getTipoMittente());
  607.                 }
  608.                 else {
  609.                     try{
  610.                         this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RICHIESTA, ProtocolFactoryManager.getInstance().getDefaultOrganizationTypes().get(busta.getProtocollo()));
  611.                     }catch(Exception e){}
  612.                 }
  613.                 if(busta.getMittente()!=null) {
  614.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA, busta.getMittente());
  615.                 }else {
  616.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA, CostantiPdD.SOGGETTO_ANONIMO);
  617.                 }
  618.                 if(busta.getTipoDestinatario()!=null)
  619.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_DESTINATARIO_BUSTA_RICHIESTA, busta.getTipoDestinatario());
  620.                 if(busta.getDestinatario()!=null)
  621.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_DESTINATARIO_BUSTA_RICHIESTA, busta.getDestinatario());
  622.                 if(busta.getTipoServizio()!=null)
  623.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_SERVIZIO_BUSTA_RICHIESTA, busta.getTipoServizio());
  624.                 if(busta.getServizio()!=null)
  625.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SERVIZIO_BUSTA_RICHIESTA, busta.getServizio());
  626.                 if(busta.getVersioneServizio()!=null)
  627.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_VERSIONE_SERVIZIO_BUSTA_RICHIESTA, busta.getVersioneServizio().intValue()+"");
  628.                 if(busta.getAzione()!=null)
  629.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RICHIESTA, busta.getAzione());
  630.                 else
  631.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RICHIESTA, "");
  632.                 if(busta.getRiferimentoMessaggio()!=null)
  633.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_RIFERIMENTO_MESSAGGIO_RICHIESTA, busta.getRiferimentoMessaggio());
  634.                 if(busta.getSequenza()>0){
  635.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SEQUENZA, busta.getSequenza()+"");
  636.                 }
  637.                 if(busta.getIndirizzoMittente()!=null)
  638.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_INDIRIZZO_TELEMATICO_MITTENTE_RICHIESTA, busta.getIndirizzoMittente());
  639.                 if(busta.getIndirizzoDestinatario()!=null)
  640.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_INDIRIZZO_TELEMATICO_DESTINATARIO_RICHIESTA, busta.getIndirizzoDestinatario());
  641.                 if(busta.getScadenza()!=null)
  642.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SCADENZA_BUSTA_RICHIESTA, busta.getScadenza().toString());
  643.                
  644.                 if(busta.getTipoDestinatario()!=null && busta.getDestinatario()!=null &&
  645.                         busta.getTipoServizio()!=null && busta.getServizio()!=null && busta.getVersioneServizio()!=null){
  646.                     try{
  647.                         this.keywordLogPersonalizzati.put(CostantiPdD.KEY_URI_ACCORDO_PARTE_SPECIFICA,
  648.                                 IDServizioFactory.getInstance().getUriFromValues(busta.getTipoServizio(), busta.getServizio(),
  649.                                         busta.getTipoDestinatario(), busta.getDestinatario(), busta.getVersioneServizio()));
  650.                     }catch(Exception e){
  651.                         throw new RuntimeException(e.getMessage(),e);
  652.                     }
  653.                 }
  654.             }
  655.             else{
  656.                 if(busta.getID()!=null)
  657.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RISPOSTA, busta.getID());
  658.                 else
  659.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RISPOSTA, "N.D.");
  660.                 if(busta.getProfiloDiCollaborazione()!=null){
  661.                     String profilo = null;
  662.                     if(this.traduttore!=null){
  663.                         profilo = this.traduttore.toString(busta.getProfiloDiCollaborazione());
  664.                     }
  665.                     else if(busta.getProtocollo()!=null){
  666.                         try{
  667.                             IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(busta.getProtocollo());
  668.                             ITraduttore traduttore = protocolFactory.createTraduttore();
  669.                             profilo = traduttore.toString(busta.getProfiloDiCollaborazione());
  670.                         }catch(Exception e){
  671.                             profilo = busta.getProfiloDiCollaborazione().getEngineValue();
  672.                         }
  673.                     }else{
  674.                         profilo = busta.getProfiloDiCollaborazione().getEngineValue();
  675.                     }
  676.                     if(profilo==null){
  677.                         profilo = busta.getProfiloDiCollaborazione().getEngineValue();
  678.                     }
  679.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_PROFILO_COLLABORAZIONE, profilo);
  680.                 }
  681.                 if(busta.getTipoMittente()!=null)
  682.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RISPOSTA, busta.getTipoMittente());
  683.                 if(busta.getMittente()!=null)
  684.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RISPOSTA, busta.getMittente());
  685.                 if(busta.getTipoDestinatario()!=null)
  686.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_DESTINATARIO_BUSTA_RISPOSTA, busta.getTipoDestinatario());
  687.                 if(busta.getDestinatario()!=null)
  688.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_DESTINATARIO_BUSTA_RISPOSTA, busta.getDestinatario());
  689.                 if(busta.getTipoServizio()!=null)
  690.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_SERVIZIO_BUSTA_RISPOSTA, busta.getTipoServizio());
  691.                 if(busta.getServizio()!=null)
  692.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SERVIZIO_BUSTA_RISPOSTA, busta.getServizio());
  693.                 if(busta.getVersioneServizio()!=null)
  694.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_VERSIONE_SERVIZIO_BUSTA_RISPOSTA, busta.getVersioneServizio().intValue()+"");
  695.                 if(busta.getAzione()!=null)
  696.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RISPOSTA, busta.getAzione());
  697.                 else
  698.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RISPOSTA, "");
  699.                 if(busta.getRiferimentoMessaggio()!=null)
  700.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_RIFERIMENTO_MESSAGGIO_RISPOSTA, busta.getRiferimentoMessaggio());
  701.                 if(busta.getSequenza()>0){
  702.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SEQUENZA, busta.getSequenza()+"");
  703.                 }
  704.                 if(busta.getIndirizzoMittente()!=null)
  705.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_INDIRIZZO_TELEMATICO_MITTENTE_RISPOSTA, busta.getIndirizzoMittente());
  706.                 if(busta.getIndirizzoDestinatario()!=null)
  707.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_INDIRIZZO_TELEMATICO_DESTINATARIO_RISPOSTA, busta.getIndirizzoDestinatario());
  708.                 if(busta.getScadenza()!=null)
  709.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SCADENZA_BUSTA_RISPOSTA, busta.getScadenza().toString());
  710.             }  
  711.         }
  712.     }
  713.     public void addKeywords(IDSoggetto soggettoFruitore){
  714.         this.addKeywords(soggettoFruitore,null,null);
  715.     }
  716.     public void addKeywords(IDServizio idServizio){
  717.         this.addKeywords(null,idServizio,null);
  718.     }
  719.     public void addKeywords(IDSoggetto soggettoFruitore,IDServizio idServizio,String idMessaggio){
  720.         if(idMessaggio!=null){
  721.             this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RICHIESTA, idMessaggio);
  722.         }
  723.         if(soggettoFruitore!=null){
  724.             this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RICHIESTA, soggettoFruitore.getTipo());
  725.             this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA, soggettoFruitore.getNome());
  726.         }
  727.         else {
  728.             if(idServizio!=null && idServizio.getTipo()!=null) {
  729.                 try{
  730.                     String protocollo = ProtocolFactoryManager.getInstance().getProtocolByServiceType(idServizio.getTipo());
  731.                     this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RICHIESTA, ProtocolFactoryManager.getInstance().getDefaultOrganizationTypes().get(protocollo));
  732.                 }catch(Exception e){
  733.                     // ignore
  734.                 }
  735.                 this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA, CostantiPdD.SOGGETTO_ANONIMO);
  736.             }
  737.         }
  738.         if(idServizio!=null){
  739.             if(idServizio.getSoggettoErogatore()!=null){
  740.                 this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_DESTINATARIO_BUSTA_RICHIESTA, idServizio.getSoggettoErogatore().getTipo());
  741.                 this.keywordLogPersonalizzati.put(CostantiPdD.KEY_DESTINATARIO_BUSTA_RICHIESTA, idServizio.getSoggettoErogatore().getNome());
  742.             }
  743.             this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_SERVIZIO_BUSTA_RICHIESTA, idServizio.getTipo());
  744.             this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SERVIZIO_BUSTA_RICHIESTA, idServizio.getNome());
  745.             if(idServizio.getVersione()!=null){
  746.                 this.keywordLogPersonalizzati.put(CostantiPdD.KEY_VERSIONE_SERVIZIO_BUSTA_RICHIESTA, idServizio.getVersione().intValue()+"");
  747.             }
  748.             if(idServizio.getAzione()!=null)
  749.                 this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RICHIESTA, idServizio.getAzione());
  750.             try{
  751.                 this.keywordLogPersonalizzati.put(CostantiPdD.KEY_URI_ACCORDO_PARTE_SPECIFICA, IDServizioFactory.getInstance().getUriFromIDServizio(idServizio));
  752.             }catch(Exception e){
  753.                 throw new RuntimeException(e.getMessage(),e);
  754.             }
  755.         }
  756.     }
  757.     public void updateKeywordIdMessaggioRichiesta(String idMessaggio){
  758.         if(idMessaggio!=null){
  759.             this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RICHIESTA, idMessaggio);
  760.         }
  761.     }
  762.     public String replaceKeywords(String msg){
  763.                
  764.         /* Potenzialmente N^2  
  765.         String tmp = msg;
  766.         Enumeration<String> keys = this.keywordLogPersonalizzati.keys();
  767.         while(keys.hasMoreElements()){
  768.             String key = keys.nextElement();
  769.             tmp = tmp.replace(key, this.keywordLogPersonalizzati.get(key));
  770.         }
  771.         return tmp;
  772.         */

  773.         /* Costoso e inutile per quasi tutti i diagnostici
  774.         // Check di esistenza di almeno 2 '@'
  775.         if(msg!=null && msg.length()>2){
  776.             int index1 = msg.indexOf("@");
  777.             int index2 = msg.indexOf("@",index1+1);
  778.             if(index1<0 || index2<0){
  779.                 return msg; // non serve il replace
  780.             }
  781.         }
  782.         */
  783.        
  784.         StringBuilder bf = new StringBuilder();
  785.         StringBuilder keyword = new StringBuilder();
  786.         boolean separator = false;
  787.         char separatorChar = '@';
  788.         for(int i=0; i<msg.length(); i++){
  789.             char ch = msg.charAt(i);
  790.             if(separatorChar == ch){
  791.                 if(separator==false){
  792.                     // inizio keyword
  793.                     keyword.append(separatorChar);
  794.                     separator = true;
  795.                 }
  796.                 else{
  797.                     // fine keyword
  798.                     keyword.append(separatorChar);
  799.                     String valoreRimpiazzato = this.keywordLogPersonalizzati.get(keyword.toString());
  800.                     if(valoreRimpiazzato==null){
  801.                         // keyword non esistente, devo utilizzare l'originale
  802.                         bf.append(keyword.toString());
  803.                     }else{
  804.                         bf.append(valoreRimpiazzato);
  805.                     }
  806.                     keyword.setLength(0);
  807.                     separator=false;
  808.                 }
  809.             }else{
  810.                 if(separator){
  811.                     // sto scrivendo la keyword
  812.                     keyword.append(ch);
  813.                 }else{
  814.                     bf.append(ch);
  815.                 }
  816.             }
  817.         }
  818.         if ( separator )
  819.             bf.append(keyword.toString());
  820.         return bf.toString();
  821.     }
  822.    
  823.     private String prefixMsgPersonalizzati = null;
  824.     public String getPrefixMsgPersonalizzati() {
  825.         return this.prefixMsgPersonalizzati;
  826.     }
  827.     public void setPrefixMsgPersonalizzati(String v){
  828.         this.prefixMsgPersonalizzati = v;
  829.     }
  830.    
  831.     public int getLivello(String keyLivelloPersonalizzato){
  832.         return getLivello(this.prefixMsgPersonalizzati, keyLivelloPersonalizzato);
  833.     }
  834.     public int getLivello(String prefix,String keyLivelloPersonalizzato){
  835.         if(this.msgDiagPropertiesReader==null){
  836.             return -1;
  837.         }
  838.         Integer livello = this.msgDiagPropertiesReader.getLivello(prefix,keyLivelloPersonalizzato);
  839.         if(livello!=null){
  840.             return livello;
  841.         } else{
  842.             return -1;
  843.         }
  844.     }
  845.    
  846.     public String getCodice(String keyCodicePersonalizzato){
  847.         return getCodice(this.prefixMsgPersonalizzati, keyCodicePersonalizzato);
  848.     }
  849.     public String getCodice(String prefix,String keyCodicePersonalizzato){
  850.         if(this.msgDiagPropertiesReader==null){
  851.             return "PropertiesReader dei Messaggi Diagnostici non inizializzato";
  852.         }
  853.         return this.msgDiagPropertiesReader.getCodice(prefix,keyCodicePersonalizzato);
  854.     }
  855.    
  856.     public String getMessaggio(String keyMsgPersonalizzato){
  857.         return this.getMessaggio(this.prefixMsgPersonalizzati, keyMsgPersonalizzato, false);
  858.     }
  859.     public String getMessaggio(String prefix,String keyMsgPersonalizzato){
  860.         return this.getMessaggio(prefix, keyMsgPersonalizzato, false);
  861.     }
  862.     public String getMessaggio_replaceKeywords(String keyMsgPersonalizzato){
  863.         return this.getMessaggio(this.prefixMsgPersonalizzati, keyMsgPersonalizzato, true);
  864.     }
  865.     public String getMessaggio_replaceKeywords(String prefix,String keyMsgPersonalizzato){
  866.         return this.getMessaggio(prefix, keyMsgPersonalizzato, true);
  867.     }
  868.     private String getMessaggio(String prefix,String keyMsgPersonalizzato,boolean replaceKeywords){
  869.         if(this.msgDiagPropertiesReader==null){
  870.             return "PropertiesReader dei Messaggi Diagnostici non inizializzato";
  871.         }
  872.         String msgTmp = this.msgDiagPropertiesReader.getMessaggio(prefix,keyMsgPersonalizzato);
  873.         if(msgTmp==null){
  874.             msgTmp = "Messaggio diagnostico ["+prefix+keyMsgPersonalizzato+"] non definito nella configurazione della porta di dominio??";
  875.         }
  876.         if(replaceKeywords){
  877.             String msgReplaceKey = this.replaceKeywords(msgTmp);
  878.             return msgReplaceKey;
  879.         }else{
  880.             return msgTmp;
  881.         }
  882.     }
  883.    
  884.    
  885.    
  886.    
  887.    

  888.    
  889.    
  890.    
  891.    
  892.    
  893.    




  894.     /** ----------------- METODI DI LOGGING (Messaggi Diagnostici) ---------------- */

  895.     private void setEmitErrorConditionInContext(int livelloLog){
  896.         if(this.pddContext!=null){
  897.             if(livelloLog<=LogLevels.SEVERITA_ERROR_INTEGRATION){
  898.                 if(this.pddContext.containsKey(Costanti.EMESSI_DIAGNOSTICI_ERRORE)==false){
  899.                     this.pddContext.addObject(Costanti.EMESSI_DIAGNOSTICI_ERRORE, "true");
  900.                 }
  901.             }
  902.         }
  903.     }
  904.    
  905.     public void emitRicezioneMessaggioModuloBuste(MsgDiagnostico msgDiag, PdDContext pddContext, boolean mittenteAnonimo) {
  906.         if(mittenteAnonimo) {
  907.             msgDiag.logPersonalizzato("ricezioneMessaggio.mittenteAnonimo");
  908.         }
  909.         else {
  910.             // verifico che l'identita sia stata definita nel contesto del diagnostico non come 'Anonimo'
  911.             if(this.keywordLogPersonalizzati!=null) {
  912.                 String v = this.keywordLogPersonalizzati.get(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA);
  913.                 if(v==null || "".equals(v) || CostantiPdD.SOGGETTO_ANONIMO.equals(v)) {
  914.                     mittenteAnonimo = true;
  915.                 }
  916.             }
  917.             if(mittenteAnonimo) {
  918.                 msgDiag.logPersonalizzato("ricezioneMessaggio.mittenteAnonimo");
  919.             }
  920.             else {
  921.                 msgDiag.logPersonalizzato("ricezioneMessaggio");
  922.             }
  923.         }
  924.    }
  925.    
  926.     /**
  927.      * Il Metodo si occupa di creare un messaggio di livello 'Personalizzato'.
  928.      *
  929.      *
  930.      */
  931.     public void logPersonalizzato_custom(String messaggio, int livelloLog, String codiceDiagnostico){
  932.         _logPersonalizzato(null, null, null,
  933.                 messaggio, livelloLog, codiceDiagnostico);
  934.     }
  935.     public void logPersonalizzato_custom(String prefix, String messaggio, int livelloLog, String codiceDiagnostico){
  936.         _logPersonalizzato(prefix, null, null,
  937.                 messaggio, livelloLog, codiceDiagnostico);
  938.     }
  939.     public void logPersonalizzato_prefix(String prefix, String idModuloFunzionale,String idDiagnostico){
  940.         _logPersonalizzato(prefix, idModuloFunzionale, idDiagnostico,
  941.                 null,null,null);
  942.     }
  943.     public void logPersonalizzato_prefix(String prefix, String idDiagnostico){
  944.         _logPersonalizzato(prefix, null, idDiagnostico,
  945.                 null,null,null);
  946.     }
  947.     public void logPersonalizzato(String idModuloFunzionale,String idDiagnostico){
  948.         _logPersonalizzato(null, idModuloFunzionale, idDiagnostico,
  949.                 null,null,null);
  950.     }
  951.     public void logPersonalizzato(String idDiagnostico){
  952.         _logPersonalizzato(null, null, idDiagnostico,
  953.                 null,null,null);
  954.     }
  955.     private void _logPersonalizzato(String prefix, String idModuloFunzionale,String idDiagnostico,
  956.             String messaggioFromParam, Integer livelloLogFromParam, String codiceDiagnosticoFromParam) {

  957.         if(this.msgDiagPropertiesReader==null){
  958.             logError("MsgDiagnostico.logPersonalizzato [Risorsa non inizializzata], messaggio per idModuloFunzionale["+idModuloFunzionale+"] idDiagnostico["+idDiagnostico+"]");
  959.             return;
  960.         }
  961.        
  962.         int livelloLog = -1;
  963.         if(livelloLogFromParam!=null) {
  964.             livelloLog = livelloLogFromParam;
  965.         }
  966.         else {
  967.             if(idModuloFunzionale!=null) {
  968.                 livelloLog = this.getLivello(idModuloFunzionale,idDiagnostico);
  969.             }
  970.             else {
  971.                 livelloLog = this.getLivello(idDiagnostico);
  972.             }
  973.         }
  974.        
  975.         int severitaLogEmessoPerFiltro = livelloLog;
  976.         int severitaLivelloOpenSPCoop2 = LogLevels.toIntervalloOpenSPCoop2(livelloLog);
  977.         if(severitaLivelloOpenSPCoop2<0 || severitaLivelloOpenSPCoop2>7){
  978.             logError("MsgDiagnostico.logPersonalizzato error, conversione a livello OpenSPCoop non riuscita ["+severitaLivelloOpenSPCoop2+"]");
  979.             return;
  980.         }
  981.         this.setEmitErrorConditionInContext(severitaLivelloOpenSPCoop2);
  982.         Level logLevelseveritaLivelloLog4J = LogLevels.toLog4J(severitaLivelloOpenSPCoop2);
  983.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  984.         int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  985.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  986.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  987.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  988.             severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
  989.         }
  990.         if(this.severitaPorta!=null) {
  991.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  992.         }
  993.        
  994.         try{
  995.             boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
  996.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  997.             if(!emettiLogSuFile && !emettiLog) {
  998.                 return;
  999.             }
  1000.            
  1001.             String messaggio = null;
  1002.             String codiceDiagnostico = null;
  1003.             if(messaggioFromParam!=null) {
  1004.                 messaggio = messaggioFromParam;
  1005.                 codiceDiagnostico = codiceDiagnosticoFromParam;
  1006.             }
  1007.             else {
  1008.                 if(idModuloFunzionale!=null) {
  1009.                     messaggio = this.getMessaggio(idModuloFunzionale,idDiagnostico);
  1010.                     codiceDiagnostico = this.getCodice(idModuloFunzionale,idDiagnostico);
  1011.                 }
  1012.                 else {
  1013.                     messaggio = this.getMessaggio(idDiagnostico);
  1014.                     codiceDiagnostico = this.getCodice(idDiagnostico);
  1015.                 }
  1016.             }
  1017.             if(messaggio==null){
  1018.                 logError("MsgDiagnostico.logPersonalizzato error, messaggio non definito.");
  1019.                 return;
  1020.             }
  1021.                        
  1022.             // Data
  1023.             Date gdo = DateManager.getDate();
  1024.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  1025.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  1026.             }
  1027.            
  1028.             // Replace keyword
  1029.             String msgReplaceKey = this.replaceKeywords(messaggio);
  1030.             if(prefix!=null) {
  1031.                 msgReplaceKey = prefix + msgReplaceKey;
  1032.             }
  1033.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = this.getMsgDiagnostico(gdo, severitaLivelloOpenSPCoop2, msgReplaceKey, codiceDiagnostico);
  1034.            
  1035.            
  1036.             // Messaggio diagnostici
  1037.             //System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1038.             if( emettiLogSuFile ){

  1039.                 if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
  1040.                     try{
  1041.                         String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
  1042.                         this.loggerMsgDiagnostico.log(logLevelseveritaLivelloLog4J,xml);
  1043.                     }catch(Exception e){
  1044.                         logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
  1045.                         gestioneErroreDiagnostica(e);
  1046.                     }
  1047.                 }
  1048.                
  1049.             }
  1050.            
  1051.             // Messaggio diagnostici
  1052.             //System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1053.             if( emettiLog ){

  1054.                 if(msgDiag.getIdTransazione()!=null) {
  1055.                    
  1056.                     // TransazioneContext
  1057.                     if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
  1058.                         this.logMsgDiagnosticoInTransactionContext(msgDiag);
  1059.                     }
  1060.                    
  1061.                     // Msg Diagnostico personalizzato
  1062.                     for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
  1063.                         try{
  1064.                             this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
  1065.                         }catch(Exception e){
  1066.                             logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
  1067.                             gestioneErroreDiagnostica(e);
  1068.                         }
  1069.                     }
  1070.                 }
  1071.                 else {
  1072.                     // i diagnostici di sistema comunque non li registro sugli appender personalizzati.
  1073.                     String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1074.                             this.porta,this.delegata,
  1075.                             this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1076.                     try{
  1077.                         this.loggerResource.log(logLevelseveritaLivelloLog4J,message);

  1078.                     }catch(Exception e){
  1079.                         logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
  1080.                         gestioneErroreDiagnostica(e);
  1081.                     }
  1082.                 }
  1083.             }

  1084.             // Human Readable
  1085.             // System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
  1086.             boolean humanReadableAbilitato = false;
  1087.             if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1088.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
  1089.             }else{
  1090.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
  1091.             }
  1092.             if( humanReadableAbilitato &&  (emettiLogSuFile) ){
  1093.                
  1094.                 //ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
  1095.                 String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1096.                         this.porta,this.delegata,
  1097.                         this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1098.                 try{
  1099.                     if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1100.                         this.loggerIntegrationManager.log(logLevelseveritaLivelloLog4J,message);
  1101.                     }else{
  1102.                         this.loggerOpenSPCoop2.log(logLevelseveritaLivelloLog4J,message);
  1103.                     }
  1104.                 }catch(Exception e){
  1105.                     logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
  1106.                     gestioneErroreDiagnostica(e);
  1107.                 }
  1108.             }
  1109.            
  1110.             // Log fatal emesso su console jboss
  1111.             if(msgReplaceKey!=null && severitaLivelloOpenSPCoop2==0){
  1112.                 // dalla versione 2.3, essendo utilizzato slf4j, si converte fatal in error.
  1113.                 //this.loggerOpenSPCoop2Fatal.log(LogLevels.LOG_LEVEL_FATAL,msgReplaceKey);
  1114.                 this.loggerOpenSPCoop2Fatal.error(msgReplaceKey);
  1115.             }

  1116.         }catch(Exception e){
  1117.             logError("MsgDiagnostico.logPersonalizzato error "+e.getMessage(),e);
  1118.             gestioneErroreDiagnostica(e);
  1119.         }
  1120.     }
  1121.    
  1122.    
  1123.     public void addLogPersonalizzato(String idModuloFunzionale,String idDiagnostico, Transaction transaction, StringBuilder errorLog){

  1124.         if(this.msgDiagPropertiesReader==null){
  1125.             logError("MsgDiagnostico.logPersonalizzato [Risorsa non inizializzata], messaggio per idModuloFunzionale["+idModuloFunzionale+"] idDiagnostico["+idDiagnostico+"]");
  1126.             return;
  1127.         }
  1128.        
  1129.         int livelloLog = -1;
  1130.         if(idModuloFunzionale!=null) {
  1131.             livelloLog = this.getLivello(idModuloFunzionale,idDiagnostico);
  1132.         }
  1133.         else {
  1134.             livelloLog = this.getLivello(idDiagnostico);
  1135.         }
  1136.        
  1137.         int severitaLogEmessoPerFiltro = livelloLog;
  1138.         int severitaLivelloOpenSPCoop2 = LogLevels.toIntervalloOpenSPCoop2(livelloLog);
  1139.         if(severitaLivelloOpenSPCoop2<0 || severitaLivelloOpenSPCoop2>7){
  1140.             logError("MsgDiagnostico.logPersonalizzato error, conversione a livello OpenSPCoop non riuscita ["+severitaLivelloOpenSPCoop2+"]");
  1141.             return;
  1142.         }
  1143.         this.setEmitErrorConditionInContext(severitaLivelloOpenSPCoop2);
  1144.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1145.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  1146.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  1147.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  1148.         }
  1149.         if(this.severitaPorta!=null) {
  1150.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  1151.         }
  1152.        
  1153.         try{
  1154.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  1155.             if(!emettiLog) {
  1156.                 return;
  1157.             }
  1158.            
  1159.             String messaggio = null;
  1160.             String codiceDiagnostico = null;
  1161.             if(idModuloFunzionale!=null) {
  1162.                 messaggio = this.getMessaggio(idModuloFunzionale,idDiagnostico);
  1163.                 codiceDiagnostico = this.getCodice(idModuloFunzionale,idDiagnostico);
  1164.             }
  1165.             else {
  1166.                 messaggio = this.getMessaggio(idDiagnostico);
  1167.                 codiceDiagnostico = this.getCodice(idDiagnostico);
  1168.             }
  1169.             if(messaggio==null){
  1170.                 logError("MsgDiagnostico.logPersonalizzato error, messaggio non definito.");
  1171.                 return;
  1172.             }
  1173.                        
  1174.             // Data
  1175.             Date gdo = DateManager.getDate();
  1176.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  1177.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  1178.             }
  1179.            
  1180.             // Replace keyword
  1181.             String msgReplaceKey = this.replaceKeywords(messaggio);
  1182.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = this.getMsgDiagnostico(gdo, severitaLivelloOpenSPCoop2, msgReplaceKey, codiceDiagnostico);
  1183.             if(errorLog!=null) {
  1184.                 errorLog.append(msgDiag.getMessaggio());
  1185.             }
  1186.             transaction.addMsgDiagnostico(msgDiag);
  1187.         }catch(Exception e){
  1188.             logError("MsgDiagnostico.logPersonalizzato error "+e.getMessage(),e);
  1189.             // log su core solamente
  1190.             /**gestioneErroreDiagnostica(e);*/
  1191.         }
  1192.     }
  1193.    
  1194.    
  1195.     public void logErroreGenerico(Throwable e, String posizioneErrore) {
  1196.         String msg = e!=null ? Utilities.readFirstErrorValidMessageFromException(e) : "Internal Error";
  1197.         this.logErroreGenerico(msg,posizioneErrore);
  1198.         // inoltre registro l'errore nel logger_core di openspcoop
  1199.         if(this.loggerOpenSPCoop2Core!=null)
  1200.             this.loggerOpenSPCoop2Core.error(posizioneErrore+": "+msg,e);
  1201.     }
  1202.     public void logErroreGenerico(String message, String posizioneErrore) {
  1203.         this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO, message);
  1204.         this.addKeyword(CostantiPdD.KEY_POSIZIONE_ERRORE, posizioneErrore);
  1205.         this.logPersonalizzato(MsgDiagnosticiProperties.MSG_DIAG_ALL,"erroreGenerico");
  1206.     }
  1207.    
  1208.    
  1209.     public void logFatalError(Throwable e, String posizioneErrore) {
  1210.         String msg = e!=null ? Utilities.readFirstErrorValidMessageFromException(e) : "Internal Error";
  1211.         this.logFatalError(msg,posizioneErrore);
  1212.         // inoltre registro l'errore nel logger_core di openspcoop
  1213.         if(this.loggerOpenSPCoop2Core!=null){
  1214.             // dalla versione 2.3, essendo utilizzato slf4j, si converte fatal in error.
  1215.             //this.loggerOpenSPCoop2Core.fatal(posizioneErrore+": "+msg,e);
  1216.             this.loggerOpenSPCoop2Core.error(posizioneErrore+": "+msg,e);
  1217.         }
  1218.     }
  1219.     public void logFatalError(String message, String posizioneErrore) {
  1220.         this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO, message);
  1221.         this.addKeyword(CostantiPdD.KEY_POSIZIONE_ERRORE, posizioneErrore);
  1222.         this.logPersonalizzato(MsgDiagnosticiProperties.MSG_DIAG_ALL,"erroreGenericoMalfunzionamentoPdD");
  1223.     }
  1224.    
  1225.    
  1226.     public void logStartupError(Throwable e, String posizioneErrore) {
  1227.         String msg = null;
  1228.         if(e instanceof NullPointerException)
  1229.              msg = "NullPointerException";
  1230.         else
  1231.             msg = e.getMessage();
  1232.         this.logStartupError(msg,posizioneErrore);
  1233.         // inoltre registro l'errore nel logger_core di openspcoop
  1234.         if(this.loggerOpenSPCoop2Core!=null){
  1235.             // dalla versione 2.3, essendo utilizzato slf4j, si converte fatal in error.
  1236.             //this.loggerOpenSPCoop2Core.fatal(posizioneErrore+": "+msg,e);
  1237.             this.loggerOpenSPCoop2Core.error(posizioneErrore+": "+msg,e);
  1238.         }
  1239.     }
  1240.     public void logStartupError(String message, String posizioneErrore) {
  1241.         this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO, message);
  1242.         this.addKeyword(CostantiPdD.KEY_POSIZIONE_ERRORE, posizioneErrore);
  1243.         this.logPersonalizzato(MsgDiagnosticiProperties.MSG_DIAG_OPENSPCOOP_STARTUP,"erroreGenerico");
  1244.     }
  1245.    
  1246.     public void logDisconnectError(Throwable e, String url) {
  1247.         String msg = null;
  1248.         if(e instanceof NullPointerException)
  1249.              msg = "NullPointerException";
  1250.         else
  1251.             msg = e.getMessage();
  1252.         this.logDisconnectError(msg,url);
  1253.         // inoltre registro l'errore nel logger_core di openspcoop
  1254.         if(this.loggerOpenSPCoop2Core!=null)
  1255.             this.loggerOpenSPCoop2Core.error(url+": "+msg,e);
  1256.     }
  1257.     public void logDisconnectError(String message, String url) {
  1258.         this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO, message);
  1259.         this.addKeyword(CostantiPdD.KEY_POSIZIONE_ERRORE, url);
  1260.         this.logPersonalizzato(MsgDiagnosticiProperties.MSG_DIAG_ALL,"connessioneUscita.disconnectError");
  1261.     }
  1262.    
  1263.    

  1264.    
  1265.    
  1266.    
  1267.    
  1268.    
  1269.    
  1270.     /**
  1271.      * Il Metodo si occupa di creare un messaggio di livello 'FATAL'.
  1272.      * @deprecated in funzione del metodo logPersonalizzato
  1273.      *
  1274.      * @param msg Messaggio da registrare
  1275.      *
  1276.      */
  1277.     @Deprecated
  1278.     public void fatal(String msg) {

  1279.         String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
  1280.        
  1281.         this.setEmitErrorConditionInContext(LogLevels.SEVERITA_FATAL);
  1282.                
  1283.         int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_FATAL);
  1284.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1285.         int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1286.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  1287.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  1288.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  1289.             severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
  1290.         }
  1291.         if(this.severitaPorta!=null) {
  1292.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  1293.         }
  1294.        
  1295.         try{
  1296.            
  1297.             boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
  1298.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  1299.             if(!emettiLogSuFile && !emettiLog) {
  1300.                 return;
  1301.             }
  1302.            
  1303.             codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoFatal();
  1304.            
  1305.             // Data
  1306.             Date gdo = DateManager.getDate();
  1307.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  1308.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  1309.             }
  1310.            
  1311.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
  1312.            
  1313.             // Messaggio diagnostici
  1314.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1315.             if( emettiLogSuFile ){

  1316.                 if(msgDiag==null){
  1317.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_FATAL, msg, codiceDiagnostico);
  1318.                 }
  1319.                
  1320.                 if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
  1321.                     try{
  1322.                         String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
  1323.                         this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_FATAL,xml);
  1324.                     }catch(Exception e){
  1325.                         logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
  1326.                         gestioneErroreDiagnostica(e);
  1327.                     }
  1328.                 }
  1329.                    
  1330.             }
  1331.            
  1332.             // Messaggio diagnostici
  1333.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1334.             if( emettiLog ){
  1335.                    
  1336.                 if(msgDiag==null){
  1337.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_FATAL, msg, codiceDiagnostico);
  1338.                 }
  1339.                
  1340.                 if(msgDiag.getIdTransazione()!=null) {
  1341.                    
  1342.                     // TransazioneContext
  1343.                     if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
  1344.                         this.logMsgDiagnosticoInTransactionContext(msgDiag);
  1345.                     }
  1346.                    
  1347.                     // Msg Diagnostico personalizzato
  1348.                     for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
  1349.                         try{
  1350.                             this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
  1351.                         }catch(Exception e){
  1352.                             logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
  1353.                             gestioneErroreDiagnostica(e);
  1354.                         }
  1355.                     }
  1356.                 }
  1357.                 else {
  1358.                     // i diagnostici di sistema comunque non li registro sugli appender personalizzati.
  1359.                     String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1360.                             this.porta,this.delegata,
  1361.                             this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1362.                     try{
  1363.                         this.loggerResource.log(LogLevels.LOG_LEVEL_FATAL,message);

  1364.                     }catch(Exception e){
  1365.                         logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
  1366.                         gestioneErroreDiagnostica(e);
  1367.                     }
  1368.                 }
  1369.             }

  1370.             // Human Readable
  1371.             // System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
  1372.             boolean humanReadableAbilitato = false;
  1373.             if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1374.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
  1375.             }else{
  1376.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
  1377.             }
  1378.             if( humanReadableAbilitato &&  (emettiLogSuFile) ){
  1379.                
  1380.                 if(msgDiag==null){
  1381.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_FATAL, msg, codiceDiagnostico);
  1382.                 }
  1383.                
  1384.                 String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1385.                         this.porta,this.delegata,
  1386.                         this.fruitore,this.servizio,this.servizioApplicativo, this.protocolFactory);
  1387.                 try{
  1388.                     if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1389.                         this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_FATAL,message);
  1390.                     }else{
  1391.                         this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_FATAL,message);
  1392.                     }
  1393.                 }catch(Exception e){
  1394.                     logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
  1395.                     gestioneErroreDiagnostica(e);
  1396.                 }
  1397.             }
  1398.            
  1399.             // Log emesso su console jboss
  1400.             // dalla versione 2.3, essendo utilizzato slf4j, si converte fatal in error.
  1401.             //this.loggerOpenSPCoop2Fatal.log(LogLevels.LOG_LEVEL_FATAL,msg);
  1402.             this.loggerOpenSPCoop2Fatal.error(msg);

  1403.         }catch(Exception e){
  1404.             logError("MsgDiagnostico.fatalOpenSPCoop error "+e.getMessage(),e);
  1405.             gestioneErroreDiagnostica(e);
  1406.         }
  1407.     }

  1408.     /**
  1409.      * Il Metodo si occupa di creare un messaggio di livello 'ERROR-PROTOCOL'.
  1410.      * @deprecated in funzione del metodo logPersonalizzato
  1411.      *
  1412.      * @param msg Messaggio da registrare
  1413.      *
  1414.      */
  1415.     @Deprecated
  1416.     public void errorProtocol(String msg) {
  1417.        
  1418.         String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
  1419.        
  1420.         this.setEmitErrorConditionInContext(LogLevels.SEVERITA_ERROR_PROTOCOL);
  1421.        
  1422.         int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_ERROR_PROTOCOL);
  1423.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1424.         int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1425.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  1426.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  1427.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  1428.             severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
  1429.         }
  1430.         if(this.severitaPorta!=null) {
  1431.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  1432.         }
  1433.        
  1434.        
  1435.         try{
  1436.            
  1437.             boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
  1438.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  1439.             if(!emettiLogSuFile && !emettiLog) {
  1440.                 return;
  1441.             }
  1442.            
  1443.             codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoErrorProtocol();
  1444.            
  1445.             // Data
  1446.             Date gdo = DateManager.getDate();
  1447.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  1448.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  1449.             }
  1450.            
  1451.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
  1452.                        
  1453.             // Messaggio diagnostici
  1454.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1455.             if( emettiLogSuFile){

  1456.                 if(msgDiag==null){
  1457.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_PROTOCOL, msg, codiceDiagnostico);
  1458.                 }
  1459.                
  1460.                 if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
  1461.                     try{
  1462.                         String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
  1463.                         this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_ERROR_PROTOCOL,xml);
  1464.                     }catch(Exception e){
  1465.                         logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
  1466.                         gestioneErroreDiagnostica(e);
  1467.                     }
  1468.                 }
  1469.                    
  1470.             }
  1471.            
  1472.             // Messaggio diagnostici
  1473.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1474.             if( emettiLog){
  1475.                    
  1476.                 if(msgDiag==null){
  1477.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_PROTOCOL, msg, codiceDiagnostico);
  1478.                 }
  1479.                
  1480.                 if(msgDiag.getIdTransazione()!=null) {
  1481.                    
  1482.                     // TransazioneContext
  1483.                     if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
  1484.                         this.logMsgDiagnosticoInTransactionContext(msgDiag);
  1485.                     }
  1486.                    
  1487.                     // Msg Diagnostico personalizzato
  1488.                     for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
  1489.                         try{
  1490.                             this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
  1491.                         }catch(Exception e){
  1492.                             logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
  1493.                             gestioneErroreDiagnostica(e);
  1494.                         }
  1495.                     }
  1496.                 }
  1497.                 else {
  1498.                     // i diagnostici di sistema comunque non li registro sugli appender personalizzati.
  1499.                     String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1500.                             this.porta,this.delegata,
  1501.                             this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1502.                     try{
  1503.                         this.loggerResource.log(LogLevels.LOG_LEVEL_ERROR_PROTOCOL,message);

  1504.                     }catch(Exception e){
  1505.                         logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
  1506.                         gestioneErroreDiagnostica(e);
  1507.                     }
  1508.                 }
  1509.             }

  1510.             // Human Readable
  1511.             // System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
  1512.             boolean humanReadableAbilitato = false;
  1513.             if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1514.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
  1515.             }else{
  1516.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
  1517.             }
  1518.             if( humanReadableAbilitato &&  (emettiLogSuFile) ){
  1519.                
  1520.                 if(msgDiag==null){
  1521.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_PROTOCOL, msg, codiceDiagnostico);
  1522.                 }
  1523.                
  1524.                 //ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
  1525.                 String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1526.                         this.porta,this.delegata,
  1527.                         this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1528.                 try{
  1529.                     if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1530.                         this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_ERROR_PROTOCOL,message);
  1531.                     }else{
  1532.                         this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_ERROR_PROTOCOL,message);
  1533.                     }
  1534.                 }catch(Exception e){
  1535.                     logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
  1536.                     gestioneErroreDiagnostica(e);
  1537.                 }
  1538.             }
  1539.         }catch(Exception e){
  1540.             logError("MsgDiagnostico.errorProtocol error "+e.getMessage(),e);
  1541.             gestioneErroreDiagnostica(e);
  1542.         }

  1543.     }

  1544.     /**
  1545.      * Il Metodo si occupa di creare un messaggio di livello 'ERROR-INTEGRATION'.
  1546.      * @deprecated in funzione del metodo logPersonalizzato
  1547.      *
  1548.      * @param msg Messaggio da registrare
  1549.      *
  1550.      */
  1551.     @Deprecated
  1552.     public void errorIntegration(String msg) {
  1553.        
  1554.         String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
  1555.        
  1556.         this.setEmitErrorConditionInContext(LogLevels.SEVERITA_ERROR_INTEGRATION);
  1557.        
  1558.         int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_ERROR_INTEGRATION);
  1559.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1560.         int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1561.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  1562.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  1563.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  1564.             severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
  1565.         }
  1566.         if(this.severitaPorta!=null) {
  1567.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  1568.         }
  1569.        
  1570.         try{
  1571.            
  1572.             boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
  1573.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  1574.             if(!emettiLogSuFile && !emettiLog) {
  1575.                 return;
  1576.             }
  1577.            
  1578.             codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoErrorIntegration();
  1579.            
  1580.             // Data
  1581.             Date gdo = DateManager.getDate();
  1582.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  1583.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  1584.             }
  1585.            
  1586.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
  1587.                        
  1588.             // Messaggio diagnostici
  1589.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1590.             if( emettiLogSuFile){

  1591.                 if(msgDiag==null){
  1592.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_INTEGRATION, msg, codiceDiagnostico);
  1593.                 }
  1594.                
  1595.                 if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
  1596.                     try{
  1597.                         String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
  1598.                         this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_ERROR_INTEGRATION,xml);
  1599.                     }catch(Exception e){
  1600.                         logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
  1601.                         gestioneErroreDiagnostica(e);
  1602.                     }
  1603.                 }
  1604.                    
  1605.             }  
  1606.            
  1607.             // Messaggio diagnostici
  1608.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1609.             if( emettiLog){
  1610.                    
  1611.                 if(msgDiag==null){
  1612.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_INTEGRATION, msg, codiceDiagnostico);
  1613.                 }
  1614.                
  1615.                 if(msgDiag.getIdTransazione()!=null) {
  1616.                    
  1617.                     // TransazioneContext
  1618.                     if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
  1619.                         this.logMsgDiagnosticoInTransactionContext(msgDiag);
  1620.                     }
  1621.                    
  1622.                     // Msg Diagnostico personalizzato
  1623.                     for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
  1624.                         try{
  1625.                             this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
  1626.                         }catch(Exception e){
  1627.                             logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
  1628.                             gestioneErroreDiagnostica(e);
  1629.                         }
  1630.                     }
  1631.                 }
  1632.                 else {
  1633.                     // i diagnostici di sistema comunque non li registro sugli appender personalizzati.
  1634.                     String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1635.                             this.porta,this.delegata,
  1636.                             this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1637.                     try{
  1638.                         this.loggerResource.log(LogLevels.LOG_LEVEL_ERROR_INTEGRATION,message);

  1639.                     }catch(Exception e){
  1640.                         logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
  1641.                         gestioneErroreDiagnostica(e);
  1642.                     }
  1643.                 }
  1644.             }  

  1645.             // Human Readable
  1646.             // System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
  1647.             boolean humanReadableAbilitato = false;
  1648.             if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1649.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
  1650.             }else{
  1651.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
  1652.             }
  1653.             if( humanReadableAbilitato &&  (emettiLogSuFile) ){
  1654.                
  1655.                 if(msgDiag==null){
  1656.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_INTEGRATION, msg, codiceDiagnostico);
  1657.                 }
  1658.                
  1659.                 //ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
  1660.                 String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1661.                         this.porta,this.delegata,
  1662.                         this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1663.                 try{
  1664.                     if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1665.                         this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_ERROR_INTEGRATION,message);
  1666.                     }else{
  1667.                         this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_ERROR_INTEGRATION,message);
  1668.                     }
  1669.                 }catch(Exception e){
  1670.                     logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
  1671.                     gestioneErroreDiagnostica(e);
  1672.                 }
  1673.             }

  1674.         }catch(Exception e){
  1675.             logError("MsgDiagnostico.errorIntegration error "+e.getMessage(),e);
  1676.             gestioneErroreDiagnostica(e);
  1677.         }
  1678.     }
  1679.    
  1680.     /**
  1681.      * Il Metodo si occupa di creare un messaggio di livello 'INFO-PROTOCOL'.
  1682.      * @deprecated in funzione del metodo logPersonalizzato
  1683.      *
  1684.      * @param msg Messaggio da registrare
  1685.      *
  1686.      */
  1687.     @Deprecated
  1688.     public void infoProtocol(String msg) {
  1689.        
  1690.         String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
  1691.        
  1692.         this.setEmitErrorConditionInContext(LogLevels.SEVERITA_INFO_PROTOCOL);
  1693.        
  1694.         int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_INFO_PROTOCOL);
  1695.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1696.         int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1697.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  1698.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  1699.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  1700.             severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
  1701.         }
  1702.         if(this.severitaPorta!=null) {
  1703.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  1704.         }
  1705.        
  1706.         try{
  1707.            
  1708.             boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
  1709.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  1710.             if(!emettiLogSuFile && !emettiLog) {
  1711.                 return;
  1712.             }
  1713.            
  1714.             codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoInfoProtocol();
  1715.            
  1716.             // Data
  1717.             Date gdo = DateManager.getDate();
  1718.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  1719.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  1720.             }
  1721.            
  1722.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
  1723.                        
  1724.             // Messaggio diagnostici
  1725.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1726.             if( emettiLogSuFile){

  1727.                 if(msgDiag==null){
  1728.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_PROTOCOL, msg, codiceDiagnostico);
  1729.                 }
  1730.                
  1731.                 if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
  1732.                     try{
  1733.                         String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
  1734.                         this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_INFO_PROTOCOL,xml);
  1735.                     }catch(Exception e){
  1736.                         logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
  1737.                         gestioneErroreDiagnostica(e);
  1738.                     }
  1739.                 }
  1740.                    
  1741.             }
  1742.            
  1743.             // Messaggio diagnostici
  1744.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1745.             if( emettiLog){
  1746.                    
  1747.                 if(msgDiag==null){
  1748.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_PROTOCOL, msg, codiceDiagnostico);
  1749.                 }
  1750.                
  1751.                 if(msgDiag.getIdTransazione()!=null) {
  1752.                    
  1753.                     // TransazioneContext
  1754.                     if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
  1755.                         this.logMsgDiagnosticoInTransactionContext(msgDiag);
  1756.                     }
  1757.                    
  1758.                     // Msg Diagnostico personalizzato  
  1759.                     for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
  1760.                         try{
  1761.                             this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
  1762.                         }catch(Exception e){
  1763.                             logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
  1764.                             gestioneErroreDiagnostica(e);
  1765.                         }
  1766.                     }
  1767.                 }
  1768.                 else {
  1769.                     // i diagnostici di sistema comunque non li registro sugli appender personalizzati.
  1770.                     String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1771.                             this.porta,this.delegata,
  1772.                             this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1773.                     try{
  1774.                         this.loggerResource.log(LogLevels.LOG_LEVEL_INFO_PROTOCOL,message);

  1775.                     }catch(Exception e){
  1776.                         logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
  1777.                         gestioneErroreDiagnostica(e);
  1778.                     }
  1779.                 }
  1780.             }

  1781.             // Human Readable
  1782.             // System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
  1783.             boolean humanReadableAbilitato = false;
  1784.             if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1785.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
  1786.             }else{
  1787.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
  1788.             }
  1789.             if( humanReadableAbilitato &&  (emettiLogSuFile) ){
  1790.                
  1791.                 if(msgDiag==null){
  1792.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_PROTOCOL, msg, codiceDiagnostico);
  1793.                 }
  1794.                
  1795.                 //ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
  1796.                 String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1797.                         this.porta,this.delegata,
  1798.                         this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1799.                 try{
  1800.                     if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1801.                         this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_INFO_PROTOCOL,message);
  1802.                     }else{
  1803.                         this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_INFO_PROTOCOL,message);
  1804.                     }
  1805.                 }catch(Exception e){
  1806.                     logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
  1807.                     gestioneErroreDiagnostica(e);
  1808.                 }
  1809.             }

  1810.         }catch(Exception e){
  1811.             logError("MsgDiagnostico.infoProtocol error "+e.getMessage(),e);
  1812.             gestioneErroreDiagnostica(e);
  1813.         }

  1814.     }

  1815.     /**
  1816.      * Il Metodo si occupa di creare un messaggio di livello 'INFO-INTEGRATION'.
  1817.      * @deprecated in funzione del metodo logPersonalizzato
  1818.      *
  1819.      * @param msg Messaggio da registrare
  1820.      *
  1821.      */
  1822.     @Deprecated
  1823.     public void infoIntegration(String msg) {
  1824.        
  1825.         String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
  1826.        
  1827.         this.setEmitErrorConditionInContext(LogLevels.SEVERITA_INFO_INTEGRATION);
  1828.        
  1829.         int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_INFO_INTEGRATION);
  1830.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1831.         int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1832.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  1833.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  1834.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  1835.             severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
  1836.         }
  1837.         if(this.severitaPorta!=null) {
  1838.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  1839.         }
  1840.        
  1841.         try{
  1842.            
  1843.             boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
  1844.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  1845.             if(!emettiLogSuFile && !emettiLog) {
  1846.                 return;
  1847.             }
  1848.            
  1849.             codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoInfoIntegration();
  1850.            
  1851.             // Data
  1852.             Date gdo = DateManager.getDate();
  1853.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  1854.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  1855.             }
  1856.            
  1857.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
  1858.                        
  1859.             // Messaggio diagnostici
  1860.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1861.             if( emettiLogSuFile){

  1862.                 if(msgDiag==null){
  1863.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_INTEGRATION, msg, codiceDiagnostico);
  1864.                 }
  1865.                
  1866.                 if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
  1867.                     try{
  1868.                         String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
  1869.                         this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_INFO_INTEGRATION,xml);
  1870.                     }catch(Exception e){
  1871.                         logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
  1872.                         gestioneErroreDiagnostica(e);
  1873.                     }
  1874.                 }
  1875.                
  1876.             }
  1877.            
  1878.             // Messaggio diagnostici
  1879.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1880.             if( emettiLog){
  1881.                    
  1882.                 if(msgDiag==null){
  1883.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_INTEGRATION, msg, codiceDiagnostico);
  1884.                 }
  1885.                
  1886.                 if(msgDiag.getIdTransazione()!=null) {
  1887.                    
  1888.                     // TransazioneContext
  1889.                     if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
  1890.                         this.logMsgDiagnosticoInTransactionContext(msgDiag);
  1891.                     }
  1892.                    
  1893.                     // Msg Diagnostico personalizzato
  1894.                     for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
  1895.                         try{
  1896.                             this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
  1897.                         }catch(Exception e){
  1898.                             logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
  1899.                             gestioneErroreDiagnostica(e);
  1900.                         }
  1901.                     }
  1902.                 }
  1903.                 else {
  1904.                     // i diagnostici di sistema comunque non li registro sugli appender personalizzati.
  1905.                     String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1906.                             this.porta,this.delegata,
  1907.                             this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1908.                     try{
  1909.                         this.loggerResource.log(LogLevels.LOG_LEVEL_INFO_INTEGRATION,message);

  1910.                     }catch(Exception e){
  1911.                         logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
  1912.                         gestioneErroreDiagnostica(e);
  1913.                     }
  1914.                 }
  1915.             }

  1916.             // Human Readable
  1917.             // System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
  1918.             boolean humanReadableAbilitato = false;
  1919.             if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1920.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
  1921.             }else{
  1922.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
  1923.             }
  1924.             if( humanReadableAbilitato &&  (emettiLogSuFile) ){
  1925.                
  1926.                 if(msgDiag==null){
  1927.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_INTEGRATION, msg, codiceDiagnostico);
  1928.                 }
  1929.                
  1930.                 //ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
  1931.                 String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  1932.                         this.porta,this.delegata,
  1933.                         this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  1934.                 try{
  1935.                     if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  1936.                         this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_INFO_INTEGRATION,message);
  1937.                     }else{
  1938.                         this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_INFO_INTEGRATION,message);
  1939.                     }
  1940.                 }catch(Exception e){
  1941.                     logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
  1942.                     gestioneErroreDiagnostica(e);
  1943.                 }
  1944.             }

  1945.         }catch(Exception e){
  1946.             logError("MsgDiagnostico.infoIntegration error "+e.getMessage(),e);
  1947.             gestioneErroreDiagnostica(e);
  1948.         }

  1949.     }

  1950.     /**
  1951.      * Il Metodo si occupa di creare un messaggio di livello 'DEBUG-LOW'.
  1952.      * @deprecated in funzione del metodo logPersonalizzato
  1953.      * @param msg Messaggio da registrare
  1954.      *
  1955.      */
  1956.     @Deprecated
  1957.     public void lowDebug(String msg){
  1958.        
  1959.         String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
  1960.        
  1961.         this.setEmitErrorConditionInContext(LogLevels.SEVERITA_DEBUG_LOW);
  1962.        
  1963.         int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_DEBUG_LOW);
  1964.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1965.         int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  1966.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  1967.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  1968.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  1969.             severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
  1970.         }
  1971.         if(this.severitaPorta!=null) {
  1972.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  1973.         }
  1974.        
  1975.         try{
  1976.            
  1977.             boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
  1978.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  1979.             if(!emettiLogSuFile && !emettiLog) {
  1980.                 return;
  1981.             }
  1982.            
  1983.             codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoDebugLow();
  1984.            
  1985.             // Data
  1986.             Date gdo = DateManager.getDate();
  1987.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  1988.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  1989.             }
  1990.            
  1991.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
  1992.                        
  1993.             // Messaggio diagnostici
  1994.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  1995.             if( emettiLogSuFile){

  1996.                 if(msgDiag==null){
  1997.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_LOW, msg, codiceDiagnostico);
  1998.                 }
  1999.                
  2000.                 if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
  2001.                     try{
  2002.                         String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
  2003.                         this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_DEBUG_LOW,xml);
  2004.                     }catch(Exception e){
  2005.                         logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
  2006.                         gestioneErroreDiagnostica(e);
  2007.                     }
  2008.                 }

  2009.             }

  2010.             // Messaggio diagnostici
  2011.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  2012.             if( emettiLog){
  2013.                    
  2014.                 if(msgDiag==null){
  2015.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_LOW, msg, codiceDiagnostico);
  2016.                 }
  2017.                
  2018.                 if(msgDiag.getIdTransazione()!=null) {
  2019.                    
  2020.                     // TransazioneContext
  2021.                     if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
  2022.                         this.logMsgDiagnosticoInTransactionContext(msgDiag);
  2023.                     }
  2024.                    
  2025.                     // Msg Diagnostico personalizzato
  2026.                     for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
  2027.                         try{
  2028.                             this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
  2029.                         }catch(Exception e){
  2030.                             logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
  2031.                             gestioneErroreDiagnostica(e);
  2032.                         }
  2033.                     }
  2034.                 }
  2035.                 else {
  2036.                     // i diagnostici di sistema comunque non li registro sugli appender personalizzati.
  2037.                     String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  2038.                             this.porta,this.delegata,
  2039.                             this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  2040.                     try{
  2041.                         this.loggerResource.log(LogLevels.LOG_LEVEL_DEBUG_LOW,message);

  2042.                     }catch(Exception e){
  2043.                         logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
  2044.                         gestioneErroreDiagnostica(e);
  2045.                     }
  2046.                 }
  2047.             }
  2048.            
  2049.             // Human Readable
  2050.             // System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
  2051.             boolean humanReadableAbilitato = false;
  2052.             if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  2053.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
  2054.             }else{
  2055.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
  2056.             }
  2057.             if( humanReadableAbilitato &&  (emettiLogSuFile) ){
  2058.                
  2059.                 if(msgDiag==null){
  2060.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_LOW, msg, codiceDiagnostico);
  2061.                 }
  2062.                
  2063.                 //ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
  2064.                 String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  2065.                         this.porta,this.delegata,
  2066.                         this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  2067.                 try{
  2068.                     if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  2069.                         this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_DEBUG_LOW,message);
  2070.                     }else{
  2071.                         this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_DEBUG_LOW,message);
  2072.                     }
  2073.                 }catch(Exception e){
  2074.                     logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
  2075.                     gestioneErroreDiagnostica(e);
  2076.                 }
  2077.             }

  2078.         }catch(Exception e){
  2079.             logError("MsgDiagnostico.lowDebug error "+e.getMessage(),e);
  2080.             gestioneErroreDiagnostica(e);
  2081.         }
  2082.     }

  2083.     /**
  2084.      * Il Metodo si occupa di creare un messaggio di livello 'DEBUG-MEDIUM'.
  2085.      *
  2086.      * @param msg Messaggio da registrare
  2087.      *
  2088.      */
  2089.     public void mediumDebug(String msg) {
  2090.        
  2091.         String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
  2092.        
  2093.         this.setEmitErrorConditionInContext(LogLevels.SEVERITA_DEBUG_MEDIUM);
  2094.        
  2095.         int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_DEBUG_MEDIUM);
  2096.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  2097.         int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  2098.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  2099.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  2100.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  2101.             severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
  2102.         }
  2103.         if(this.severitaPorta!=null) {
  2104.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  2105.         }
  2106.        
  2107.         try{
  2108.            
  2109.             boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
  2110.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  2111.             if(!emettiLogSuFile && !emettiLog) {
  2112.                 return;
  2113.             }
  2114.            
  2115.             codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoDebugMedium();
  2116.            
  2117.             // Data
  2118.             Date gdo = DateManager.getDate();
  2119.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  2120.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  2121.             }
  2122.            
  2123.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
  2124.                        
  2125.             // Messaggio diagnostici
  2126.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  2127.             if( emettiLogSuFile){

  2128.                 if(msgDiag==null){
  2129.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_MEDIUM, msg, codiceDiagnostico);
  2130.                 }
  2131.                
  2132.                 if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
  2133.                     try{
  2134.                         String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
  2135.                         this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_DEBUG_MEDIUM,xml);
  2136.                     }catch(Exception e){
  2137.                         logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
  2138.                         gestioneErroreDiagnostica(e);
  2139.                     }
  2140.                 }

  2141.             }
  2142.            
  2143.             // Messaggio diagnostici
  2144.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  2145.             if( emettiLog){
  2146.                    
  2147.                 if(msgDiag==null){
  2148.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_MEDIUM, msg, codiceDiagnostico);
  2149.                 }
  2150.                
  2151.                 if(msgDiag.getIdTransazione()!=null) {
  2152.                    
  2153.                     // TransazioneContext
  2154.                     if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
  2155.                         this.logMsgDiagnosticoInTransactionContext(msgDiag);
  2156.                     }
  2157.                    
  2158.                     //  Msg Diagnostico personalizzato
  2159.                     for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
  2160.                         try{
  2161.                             this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
  2162.                         }catch(Exception e){
  2163.                             logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
  2164.                             gestioneErroreDiagnostica(e);
  2165.                         }
  2166.                     }
  2167.                 }
  2168.                 else {
  2169.                     // i diagnostici di sistema comunque non li registro sugli appender personalizzati.
  2170.                     String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  2171.                             this.porta,this.delegata,
  2172.                             this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  2173.                     try{
  2174.                         this.loggerResource.log(LogLevels.LOG_LEVEL_DEBUG_MEDIUM,message);

  2175.                     }catch(Exception e){
  2176.                         logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
  2177.                         gestioneErroreDiagnostica(e);
  2178.                     }
  2179.                 }
  2180.             }

  2181.             // Human Readable
  2182.             // System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
  2183.             boolean humanReadableAbilitato = false;
  2184.             if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  2185.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
  2186.             }else{
  2187.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
  2188.             }
  2189.             if( humanReadableAbilitato &&  (emettiLogSuFile) ){
  2190.                
  2191.                 if(msgDiag==null){
  2192.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_MEDIUM, msg, codiceDiagnostico);
  2193.                 }
  2194.                
  2195.                 //ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
  2196.                 String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  2197.                         this.porta,this.delegata,
  2198.                         this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  2199.                 try{
  2200.                     if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  2201.                         this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_DEBUG_MEDIUM,message);
  2202.                     }else{
  2203.                         this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_DEBUG_MEDIUM,message);
  2204.                     }
  2205.                 }catch(Exception e){
  2206.                     logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
  2207.                     gestioneErroreDiagnostica(e);
  2208.                 }
  2209.             }

  2210.         }catch(Exception e){
  2211.             logError("MsgDiagnostico.mediumDebug error "+e.getMessage(),e);
  2212.             gestioneErroreDiagnostica(e);
  2213.         }

  2214.     }

  2215.     /**
  2216.      * Il Metodo si occupa di creare un messaggio di livello 'DEBUG-HIGH'.
  2217.      *
  2218.      * @param msg Messaggio da registrare
  2219.      *
  2220.      */
  2221.     public void highDebug(String msg){
  2222.        
  2223.         String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
  2224.        
  2225.         this.setEmitErrorConditionInContext(LogLevels.SEVERITA_DEBUG_HIGH);
  2226.        
  2227.         int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_DEBUG_HIGH);
  2228.         int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  2229.         int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
  2230.         ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
  2231.         if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
  2232.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
  2233.             severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
  2234.         }
  2235.         if(this.severitaPorta!=null) {
  2236.             severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
  2237.         }
  2238.        
  2239.         try{
  2240.            
  2241.             boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
  2242.             boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
  2243.             if(!emettiLogSuFile && !emettiLog) {
  2244.                 return;
  2245.             }
  2246.            
  2247.             codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoDebugHigh();
  2248.            
  2249.             // Data
  2250.             Date gdo = DateManager.getDate();
  2251.             if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
  2252.                 gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  2253.             }
  2254.            
  2255.             org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
  2256.                        
  2257.             // Messaggio diagnostici
  2258.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  2259.             if( emettiLogSuFile){

  2260.                 if(msgDiag==null){
  2261.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_HIGH, msg, codiceDiagnostico);
  2262.                 }
  2263.                
  2264.                 if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
  2265.                     try{
  2266.                         String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
  2267.                         this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_DEBUG_HIGH,xml);
  2268.                     }catch(Exception e){
  2269.                         logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
  2270.                         gestioneErroreDiagnostica(e);
  2271.                     }
  2272.                 }
  2273.                    
  2274.             }
  2275.            
  2276.             // Messaggio diagnostici
  2277.             // System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
  2278.             if( emettiLog){
  2279.                
  2280.                 if(msgDiag==null){
  2281.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_HIGH, msg, codiceDiagnostico);
  2282.                 }
  2283.                
  2284.                 if(msgDiag.getIdTransazione()!=null) {
  2285.                    
  2286.                     // TransazioneContext
  2287.                     if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
  2288.                         this.logMsgDiagnosticoInTransactionContext(msgDiag);
  2289.                     }
  2290.                    
  2291.                     // Msg Diagnostico personalizzato
  2292.                     for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
  2293.                         try{
  2294.                             this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
  2295.                         }catch(Exception e){
  2296.                             logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
  2297.                             gestioneErroreDiagnostica(e);
  2298.                         }
  2299.                     }
  2300.                 }
  2301.                 else {
  2302.                     // i diagnostici di sistema comunque non li registro sugli appender personalizzati.
  2303.                     String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  2304.                             this.porta,this.delegata,
  2305.                             this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  2306.                     try{
  2307.                         this.loggerResource.log(LogLevels.LOG_LEVEL_DEBUG_HIGH,message);

  2308.                     }catch(Exception e){
  2309.                         logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
  2310.                         gestioneErroreDiagnostica(e);
  2311.                     }
  2312.                 }
  2313.             }

  2314.             // Human Readable
  2315.             // System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
  2316.             boolean humanReadableAbilitato = false;
  2317.             if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  2318.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
  2319.             }else{
  2320.                 humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
  2321.             }
  2322.             if( humanReadableAbilitato &&  (emettiLogSuFile) ){
  2323.                
  2324.                 if(msgDiag==null){
  2325.                     msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_HIGH, msg, codiceDiagnostico);
  2326.                 }
  2327.                
  2328.                 //ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
  2329.                 String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
  2330.                         this.porta,this.delegata,
  2331.                         this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
  2332.                 try{
  2333.                     if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
  2334.                         this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_DEBUG_HIGH,message);
  2335.                     }else{
  2336.                         this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_DEBUG_HIGH,message);
  2337.                     }
  2338.                 }catch(Exception e){
  2339.                     logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
  2340.                     gestioneErroreDiagnostica(e);
  2341.                 }
  2342.             }

  2343.         }catch(Exception e){
  2344.             logError("MsgDiagnostico.highDebug error "+e.getMessage(),e);
  2345.             gestioneErroreDiagnostica(e);
  2346.         }
  2347.     }

  2348.    
  2349.    
  2350.     private void logMsgDiagnosticoInTransactionContext(org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag) {
  2351.        
  2352.         if(this.transazioneApplicativoServer!=null) {
  2353.             try {
  2354.                 // forzo
  2355.                 msgDiag.setIdTransazione(this.transazioneApplicativoServer.getIdTransazione());
  2356.                 msgDiag.setApplicativo(this.transazioneApplicativoServer.getServizioApplicativoErogatore());
  2357.                 GestoreConsegnaMultipla.getInstance().safeSave(msgDiag, this.idPortaApplicativa, this.getValidConnectionState(), this.requestInfo, this.pddContext);
  2358.             }catch(Throwable t) {
  2359.                 logError("Errore durante il salvataggio delle informazioni relative al servizio applicativo: "+t.getMessage(),t);
  2360.                 gestioneErroreDiagnostica(t);
  2361.             }
  2362.         }
  2363.         else {
  2364.        
  2365.             Exception exc = null;
  2366.             boolean gestioneStateful = false;
  2367.             try {
  2368.                 Transaction tr = TransactionContext.getTransaction(msgDiag.getIdTransazione());
  2369.                 tr.addMsgDiagnostico(msgDiag);
  2370.             }catch(TransactionDeletedException e){
  2371.                 gestioneStateful = true;
  2372.             }catch(TransactionNotExistsException e){
  2373.                 gestioneStateful = true;
  2374.             }catch(Exception e){
  2375.                 exc = e;
  2376.             }
  2377.             if(gestioneStateful){
  2378.                 try{
  2379.                     //System.out.println("@@@@@REPOSITORY@@@@@ LOG MSG DIAG ID TRANSAZIONE ["+idTransazione+"] ADD");
  2380.                     RepositoryGestioneStateful.addMsgDiagnostico(msgDiag.getIdTransazione(), msgDiag);
  2381.                 }catch(Exception e){
  2382.                     if(!IntegrationManager.ID_MODULO.equals(this.idModulo) &&
  2383.                             !("["+org.openspcoop2.pdd.core.handlers.transazioni.PostOutResponseHandler.class.getName()+"] invocazione terminata").equals(msgDiag.getMessaggio())
  2384.                         ) { //
  2385.                         exc = e;
  2386.                     }
  2387.                 }
  2388.             }
  2389.             if(exc!=null) {
  2390.                 logError("Errore durante l'emissione del msg diagnostico nel contesto della transazione: "+exc.getMessage(),exc);
  2391.                 gestioneErroreDiagnostica(exc);
  2392.             }
  2393.         }
  2394.     }
  2395.    
  2396.    
  2397.     private org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico getMsgDiagnostico(Date gdo,int severitaLivelloOpenSPCoop2,String msg,String codiceDiagnostico){
  2398.        
  2399.         org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiagnostico = new org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico();
  2400.        
  2401.         if(this.pddContext!=null && this.pddContext.containsKey(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)) {
  2402.             msgDiagnostico.setIdTransazione((String) this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
  2403.         }
  2404.        
  2405.         msgDiagnostico.setGdo(gdo);
  2406.        
  2407.         msgDiagnostico.setIdSoggetto(this.idSoggettoDominio);
  2408.         msgDiagnostico.setIdFunzione(this.idModulo);
  2409.         msgDiagnostico.setSeverita(severitaLivelloOpenSPCoop2);
  2410.         msgDiagnostico.setMessaggio(msg);
  2411.        
  2412.         msgDiagnostico.setIdBusta(this.idMessaggioRichiesta);
  2413.         msgDiagnostico.setIdBustaRisposta(this.idMessaggioRisposta);
  2414.         msgDiagnostico.setCodice(codiceDiagnostico);
  2415.        
  2416.         msgDiagnostico.setApplicativo(this.servizioApplicativo);
  2417.        
  2418.         msgDiagnostico.setProtocollo(this.protocolFactory.getProtocol());
  2419.        
  2420.         if(this.pddContext!=null){
  2421.             List<MapKey<String>> keys = org.openspcoop2.core.constants.Costanti.CONTEXT_OBJECT;
  2422.             if(keys!=null){
  2423.                 for (int j = 0; j < keys.size(); j++) {
  2424.                     MapKey<String> mapKey = keys.get(j);
  2425.                     Object o = this.pddContext.getObject(mapKey);
  2426.                     if(o!=null && o instanceof String){
  2427.                         msgDiagnostico.addProperty(mapKey.getValue(), (String)o);
  2428.                     }
  2429.                 }
  2430.             }
  2431.         }
  2432.        
  2433.         if(this.properties!=null){
  2434.             this.properties.forEach( (k,v) -> msgDiagnostico.addProperty(k, v) );
  2435.         }
  2436.        
  2437.         return msgDiagnostico;
  2438.     }
  2439.    
  2440.     private void gestioneErroreDiagnostica(Throwable e) {
  2441.        
  2442.         if(this.openspcoopProperties.isRegistrazioneDiagnosticaFallita_BloccoServiziPdD()){
  2443.             MsgDiagnostico.gestoreDiagnosticaDisponibile=false;
  2444.             MsgDiagnostico.motivoMalfunzionamentoDiagnostici=e;
  2445.             logError("Il Sistema di gestione della diagnostica ha rilevato un errore durante la registrazione di un messaggio diagnostico,"+
  2446.                     " tutti i servizi/moduli della porta di dominio sono sospesi. Si richiede un intervento sistemistico per la risoluzione del problema "+
  2447.                     "e il riavvio di GovWay. Errore rilevato: ",e);
  2448.         }
  2449.        
  2450.     }
  2451.    
  2452.     private void logError(String msgErrore,Throwable e){
  2453.         if(this.loggerOpenSPCoop2Core!=null){
  2454.             this.loggerOpenSPCoop2Core.error(msgErrore,e);
  2455.         }
  2456.         else if(OpenSPCoop2Logger.loggerOpenSPCoopCore!=null){
  2457.             OpenSPCoop2Logger.loggerOpenSPCoopCore.error(msgErrore,e);
  2458.         }
  2459.        
  2460.         // Registro l'errore anche in questo logger.
  2461.         if(OpenSPCoop2Logger.loggerOpenSPCoopResources!=null){
  2462.             OpenSPCoop2Logger.loggerOpenSPCoopResources.error(msgErrore,e);
  2463.         }
  2464.        
  2465.     }
  2466.     private void logError(String msgErrore){
  2467.         if(this.loggerOpenSPCoop2Core!=null){
  2468.             this.loggerOpenSPCoop2Core.error(msgErrore);
  2469.         }
  2470.         else if(OpenSPCoop2Logger.loggerOpenSPCoopCore!=null){
  2471.             OpenSPCoop2Logger.loggerOpenSPCoopCore.error(msgErrore);
  2472.         }
  2473.        
  2474.         // Registro l'errore anche in questo logger.
  2475.         if(OpenSPCoop2Logger.loggerOpenSPCoopResources!=null){
  2476.             OpenSPCoop2Logger.loggerOpenSPCoopResources.error(msgErrore);
  2477.         }
  2478.        
  2479.     }
  2480. }