CostantiMappingDiagnostici.java

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

package org.openspcoop2.pdd.logger.diagnostica;

import java.util.HashMap;
import java.util.Map;

import org.openspcoop2.pdd.core.trasformazioni.TipoTrasformazione;
import org.openspcoop2.pdd.logger.MsgDiagnosticiProperties;
import org.openspcoop2.security.message.constants.SecurityConstants;

import org.openspcoop2.pdd.logger.record.CostantiDati;
import org.openspcoop2.pdd.logger.record.InfoDato;

/**     
 * CostantiMappingDiagnostici
 *
 * @author Poli Andrea (poli@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 */
public class CostantiMappingDiagnostici {
	
	private CostantiMappingDiagnostici() {}

	public static final int MAX_DIAGNOSTIC_LIST_ROW_1 = 15;
	public static final int MAX_DIAGNOSTIC_LIST_ROW_2 = 30; // è un TEXT questa colonna
	public static final int MAX_DIAGNOSTIC_LIST_SUM = MAX_DIAGNOSTIC_LIST_ROW_1+MAX_DIAGNOSTIC_LIST_ROW_2;
	
	/**public static void setMAX_DIAGNOSTIC_LIST_ROW_2(int p) {
		CostantiMappingDiagnostici.MAX_DIAGNOSTIC_LIST_ROW_2 = p;
		CostantiMappingDiagnostici.MAX_DIAGNOSTIC_LIST_SUM =  MAX_DIAGNOSTIC_LIST_ROW_1+MAX_DIAGNOSTIC_LIST_ROW_2;
	}*/
	
	public static final String DIAGNOSTIC_ORIGINAL_POSITION = "DIAGNOSTIC_ORIGINAL_POSITION";
	
	public static final String DIAGNOSTIC_WITH_DYNAMIC_INFO_TYPE = MsgDiagnosticiProperties.DIAGNOSTIC_WITH_DYNAMIC_INFO_TYPE;
	
	public static final String DIAGNOSTIC_WITH_DYNAMIC_INFO_VALUE = MsgDiagnosticiProperties.DIAGNOSTIC_WITH_DYNAMIC_INFO_VALUE;
	
	public static final String DIAGNOSTIC_WITH_DYNAMIC_INFO_SEPARATOR = MsgDiagnosticiProperties.DIAGNOSTIC_WITH_DYNAMIC_INFO_SEPARATOR;
	
	public static final String DIAGNOSTIC_WITH_DYNAMIC_INFO_DIAG_SEPARATOR = MsgDiagnosticiProperties.DIAGNOSTIC_WITH_DYNAMIC_INFO_DIAG_SEPARATOR;
	
	public static final String DIAGNOSTIC_WITH_DYNAMIC_INFO_TYPE_SEPARATOR = MsgDiagnosticiProperties.DIAGNOSTIC_WITH_DYNAMIC_INFO_TYPE_SEPARATOR;
	
	public static final char NON_PRESENTE = CostantiDati.NON_PRESENTE.charAt(0);
	
	public static final String SEPARATOR = CostantiDati.SEPARATOR;
	
	/**
	 * Posizione 1 (1 carattere):
  		- (-) Non presente
  		- (N) indica che la transazione ha emesso diagnostici non ricostruibili
  		- (R) indica che la transazione ha emesso diagnostici non ricostruibili
	 **/
	public static final InfoDato DIAGNOSTICI_EMESSI = new InfoDato(0, 
			"Indicazione se la transazione ha emesso diagnostici ricostruibili (R), non ricostruibile (N) o non ha emesso alcuna traccia (-)");
	public static final char DIAGNOSTICI_EMESSI_RICOSTRUIBILI = 'R';
	public static final char DIAGNOSTICI_EMESSI_NON_RICOSTRUIBILI = 'N';
	
	public static final InfoDato DIAGNOSTICI_EMESSI_NON_RICOSTRUIBILI_MOTIVO = new InfoDato(1, 
			"Motivo che indica come mai i diagnostici non sono ricostruibili");
	
	/**
	 * 	Posizione 2 (8 caratteri)
	  - Data del primo diagnostico nel formato 'AAAAMMDD'
	 */
	public static final InfoDato DIAGNOSTICI_EMISSIONE_FIRST_DATE = new InfoDato(1, 
			"Indica la data del primo messaggio diagnostico emesso nel formato AAAAMMDD");
	
	/**
	 * 	Posizione 3 (max 30 caratteri o -)
	  - tipoAutorizzazioneBusta
	 */
	public static final InfoDato TIPO_AUTORIZZAZIONE = new InfoDato(2, 
			"Indica il tipo di autorizzazione utilizzato dalla PdD");
	
	/**
	 * 	Posizione 4 (max 20 caratteri o -)
	  - codice di trasporto della richiesta
	 */
	public static final InfoDato CODICE_TRASPORTO_RICHIESTA = new InfoDato(3, 
			"Indica il codice di trasporto ottenuto durante la fase di consegna della richiesta");
	
	/**
	 * 	Posizione 5 (max 20 caratteri o -)
	  - codice di trasporto della risposta
	 */
	public static final InfoDato CODICE_TRASPORTO_RISPOSTA = new InfoDato(4, 
			"Indica il codice di trasporto ottenuto durante la fase di consegna della risposta");
	
	/**
	 * 	Posizione 6 (max 20 caratteri o -)
	  - tipo di connettore
	 */
	public static final InfoDato TIPO_CONNETTORE = new InfoDato(5, 
			"Indica il tipo di connettore utilizzato per la consegna del messaggio di richiesta");
		
	/**
	 * 	Posizione 7 (max 10 caratteri o -)
	  - max threads threshold
	 */
	public static final InfoDato MAX_THREADS_THRESHOLD = new InfoDato(6, 
			"Indica il numero massimo di richieste simultanee");
	
	/**
	 * 	Posizione 8 (max 2 caratteri o -)
	  - threshold che attiva il controllo del traffico (in percentuale)
	 */
	public static final InfoDato CONTROLLO_TRAFFICO_THRESHOLD = new InfoDato(7, 
			"Indica la % di richieste simultanee rispetto al numero massimo, per attivare il controllo del traffico");
	
	/**
	 * 	Posizione 9 (max 10 caratteri o -)
	  - active max threads
	 */
	public static final InfoDato ACTIVE_THREADS = new InfoDato(8, 
			"Indica il numero di threads attivi");
	
	/**
	 * 	Posizione 10 (max 4 caratteri o -)
	  - numero di policy configurate
	 */
	public static final InfoDato NUMERO_POLICY_CONFIGURATE = new InfoDato(9, 
			"Indica il numero di policy attivate");
	
	/**
	 * 	Posizione 11 (max 4 caratteri o -)
	  - numero di policy configurate però disabilitate
	 */
	public static final InfoDato NUMERO_POLICY_DISABILITATE = new InfoDato(10, 
			"Indica il numero di policy attivate con stato disabilitate");
	
	/**
	 * 	Posizione 12 (max 4 caratteri o -)
	  - numero di policy configurate però che non rispettano il filtro per i dati della transazione in essere
	 */
	public static final InfoDato NUMERO_POLICY_FILTRATE = new InfoDato(11, 
			"Indica il numero di policy configurate però che non rispettano il filtro per i dati della transazione in essere");
	
	/**
	 * 	Posizione 13 (max 4 caratteri o -)
	  - numero di policy configurate che non possono essere applicate per le condizioni del sistema
	 */
	public static final InfoDato NUMERO_POLICY_NON_APPLICATE = new InfoDato(12, 
			"Indica il numero di policy configurate che non possono essere applicate per le condizioni del sistema");
	
	/**
	 * 	Posizione 14 (max 4 caratteri o -)
	  - numero di policy configurate che soddisfano i valori di soglia
	 */
	public static final InfoDato NUMERO_POLICY_RISPETTATE= new InfoDato(13, 
			"Indica il numero di policy configurate che soddisfano i valori di soglia");
	
	/**
	 * 	Posizione 15 (max 4 caratteri o -)
	  - numero di policy configurate che violano i valori di soglia
	 */
	public static final InfoDato NUMERO_POLICY_VIOLATE= new InfoDato(14, 
			"Indica il numero di policy configurate che violano i valori di soglia");
	
	/**
	 * 	Posizione 16 (max 4 caratteri o -)
	  - numero di policy configurate che violano i valori di soglia (warningOnly)
	 */
	public static final InfoDato NUMERO_POLICY_VIOLATE_WARNING_ONLY= new InfoDato(15, 
			"Indica il numero di policy configurate che violano i valori di soglia (warningOnly)");
	
	/**
	 * 	Posizione 17 (max 4 caratteri o -)
	  - numero di policy configurate la cui verifica ha provocato un errore
	 */
	public static final InfoDato NUMERO_POLICY_IN_ERRORE= new InfoDato(16, 
			"Indica il numero di policy configurate la cui verifica ha provocato un errore");
	
	/**
	 * 	Posizione 18 (max 20 caratteri o -)
	  - tipoAutenticazione
	 */
	public static final InfoDato TIPO_AUTENTICAZIONE = new InfoDato(17, 
			"Indica il tipo di autenticazione utilizzato dalla PdD");
	
	/**
	 * 	Posizione 19 (max 20 caratteri o -)
	  - tipoAutorizzazioneContenuti
	 */
	public static final InfoDato TIPO_AUTORIZZAZIONE_CONTENUTI = new InfoDato(18, 
			"Indica il tipo di autorizzazione contenuti utilizzato dalla PdD");
	
	/**
	 * 	Posizione 20 (max 3 caratteri o -)
	  - tipoValidazioneContenuti
	 */
	
	public static final char TIPO_VALIDAZIONE_CONTENUTI_OPENSPCOOP = 'O';
	public static final char TIPO_VALIDAZIONE_CONTENUTI_INTERFACE = 'I';
	public static final char TIPO_VALIDAZIONE_CONTENUTI_XSD = 'X';
	public static final char TIPO_VALIDAZIONE_CONTENUTI_WARN = 'W';
	public static final char TIPO_VALIDAZIONE_CONTENUTI_MTOM = 'M';
	
	public static final InfoDato TIPO_VALIDAZIONE_CONTENUTI = new InfoDato(19, 
			"Indica il tipo di validazione contenuti utilizzato dalla PdD");
	
	/**
	 * 	Posizione 21 (max 1 caratteri o -)
	  - tipoProcessamentoMtomRichiesta
	 */
	
	public static final char TIPO_MTOM_PROCESSAMENTO_DISABLE = 'D';
	public static final char TIPO_MTOM_PROCESSAMENTO_PACKAGING = 'P';
	public static final char TIPO_MTOM_PROCESSAMENTO_UNPACKAGING = 'U';
	public static final char TIPO_MTOM_PROCESSAMENTO_VERIFY = 'V';
	
	public static final InfoDato TIPO_PROCESSAMENTO_MTOM_RICHIESTA = new InfoDato(20, 
			"Indica il tipo di processamento mtom della richiesta utilizzato dalla PdD");
	
	/**
	 * 	Posizione 22 (max 1 caratteri o -)
	  - tipoProcessamentoMtomRisposta
	 */
	
	public static final InfoDato TIPO_PROCESSAMENTO_MTOM_RISPOSTA = new InfoDato(21, 
			"Indica il tipo di processamento mtom della risposta utilizzato dalla PdD");
	
	/**
	 * 	Posizione 23 (max 6 caratteri o -)
	  - tipoProcessamentoMessageSecurityRichiesta
	 */
	
	public static final char TIPO_SECURITY_ENGINE_WSS4J = 'W';
	public static final char TIPO_SECURITY_ENGINE_SOAPBOX = 'S';
	public static final char TIPO_SECURITY_ENGINE_DSS = 'D';
	public static final char TIPO_SECURITY_ENGINE_JOSE = 'J';
	public static final char TIPO_SECURITY_ENGINE_XML = 'X';
	
	private static final Map<String, String> MAP_SECURITY_ACTION = new HashMap<>();
	public static Map<String, String> getMapSecurityAction() {
		return MAP_SECURITY_ACTION;
	}
	static {
		// deve essere 1 carattere
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_NO_SECURITY, "1");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_USERNAME_TOKEN_SIGNATURE, "2");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_USERNAME_TOKEN, "3");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_USERNAME_TOKEN_NO_PASSWORD, "4");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_SAML_TOKEN_UNSIGNED, "5");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_SAML_TOKEN_SIGNED, "6");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_SIGNATURE, "7");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_ENCRYPTION, "8");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_TIMESTAMP, "9");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_SIGNATURE_DERIVED, "a");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_ENCRYPTION_DERIVED, "b");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_SIGNATURE_WITH_KERBEROS_TOKEN, "c");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_ENCRYPTION_WITH_KERBEROS_TOKEN, "d");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_KERBEROS_TOKEN, "e");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_CUSTOM_TOKEN, "f");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_ENCRYPT_OLD, "g");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_DECRYPTION, "h");
		MAP_SECURITY_ACTION.put(SecurityConstants.ACTION_DECRYPT_OLD, "i");
	}
	
	public static final InfoDato TIPO_PROCESSAMENTO_MESSAGE_SECURITY_RICHIESTA = new InfoDato(22, 
			"Indica il tipo di processamento message security della richiesta utilizzato dalla PdD");
	
	/**
	 * 	Posizione 24 (max 6 caratteri o -)
	  - tipoProcessamentoMessageSecurityRisposta
	 */
	public static final InfoDato TIPO_PROCESSAMENTO_MESSAGE_SECURITY_RISPOSTA = new InfoDato(23, 
			"Indica il tipo di processamento message security della risposta utilizzato dalla PdD");
	
	/**
	 * 	Posizione 25 (max 1 caratteri o -)
	  - autenticazioneInCache
	 */
	public static final InfoDato AUTENTICAZIONE_IN_CACHE = new InfoDato(24, 
			"Indica se il risultato dell'autenticazione è stato prelevato dalla cache o meno");
	
	/**
	 * 	Posizione 26 (max 1 caratteri o -)
	  - autenticazioneInCache
	 */
	public static final InfoDato AUTORIZZAZIONE_IN_CACHE = new InfoDato(25, 
			"Indica se il risultato dell'autorizzazione è stato prelevato dalla cache o meno");
	
	/**
	 * 	Posizione 27 (max 1 caratteri o -)
	  - autenticazioneInCache
	 */
	
	public static final InfoDato AUTORIZZAZIONE_CONTENUTI_IN_CACHE = new InfoDato(26, 
			"Indica se il risultato dell'autorizzazione dei contenuti è stato prelevato dalla cache o meno");
	
	/**
	 * 	Posizione 28 (max 40 caratteri o -)
	  - nome della token policy
	 */
	public static final InfoDato TOKEN_POLICY = new InfoDato(27, 
			"Indica il nome della token policy");
	
	/**
	 * 	Posizione 29 (max 3 caratteri o -)
	  - tipo di operazioni sul token
	 */
	public static final char GESTIONE_TOKEN_VALIDATION_ACTION_NONE = 'N';
	public static final char GESTIONE_TOKEN_VALIDATION_ACTION_JWT = 'J';
	public static final char GESTIONE_TOKEN_VALIDATION_ACTION_INTROSPECTION = 'I';
	public static final char GESTIONE_TOKEN_VALIDATION_ACTION_USER_INFO = 'U';
	public static final InfoDato TOKEN_POLICY_ACTIONS = new InfoDato(28, 
			"Azioni effettuate sul token");
	
	/**
	 * 	Posizione 30 (max 5 caratteri o -)
	  - tipo di operazioni sul token
	 */
	public static final char AUTENTICAZIONE_TOKEN_ISSUER = 'I';
	public static final char AUTENTICAZIONE_TOKEN_SUBJECT = 'S';
	public static final char AUTENTICAZIONE_TOKEN_CLIENTID = 'C';
	public static final char AUTENTICAZIONE_TOKEN_USERNAME = 'U';
	public static final char AUTENTICAZIONE_TOKEN_EMAIL = 'E';
	public static final InfoDato TOKEN_POLICY_AUTENTCAZIONE = new InfoDato(29, 
			"Azioni di autenticazione effettuate sul token");
	
	/**
	 * 	Posizione 31 (max 1 caratteri o -)
	  - responseFromCache
	 */
	public static final InfoDato RESPONSE_FROM_CACHE = new InfoDato(30, 
			"Indica se la risposta e' stata prelevata dalla cache delle risposte");

	/**
	 * 	Posizione 32 (max 6 caratteri o -)
	  - tipoTrasformazioneRichiesta
	 */
	
	public static final String TIPO_TRASFORMAZIONE_CONVERSIONE_SOAP = "S";
	public static final String TIPO_TRASFORMAZIONE_CONVERSIONE_REST = "R";
	public static final String TIPO_TRASFORMAZIONE_CONVERSIONE_METHOD = "M";
	public static final String TIPO_TRASFORMAZIONE_CONVERSIONE_PATH = "P";
	public static final String TIPO_TRASFORMAZIONE_CONVERSIONE_HEADERS = "H";
	public static final String TIPO_TRASFORMAZIONE_CONVERSIONE_QUERY_PARAMETERS = "Q";
	public static final String TIPO_TRASFORMAZIONE_CONVERSIONE_RETURN_CODE = "C";
	public static final String TIPO_TRASFORMAZIONE_NESSUNA = "N";
	
	private static final Map<String, String> MAP_TIPI_CONVERSIONE = new HashMap<>();
	public static Map<String, String> getMapTipiConversione() {
		return MAP_TIPI_CONVERSIONE;
	}
	static {
		// Deve essere un carattere (diverso da quelli sopra S,R,M,P,H,Q,C,N)
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.EMPTY.getValue(), "1");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.TEMPLATE.getValue(), "2");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.FREEMARKER_TEMPLATE.getValue(), "3");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.FREEMARKER_TEMPLATE_ZIP.getValue(), "4");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.VELOCITY_TEMPLATE.getValue(), "5");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.VELOCITY_TEMPLATE_ZIP.getValue(), "6");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.XSLT.getValue(), "7");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.ZIP.getValue(), "8");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.TGZ.getValue(), "9");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.TAR.getValue(), "0");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.CONTEXT_FREEMARKER_TEMPLATE.getValue(), "F");
		MAP_TIPI_CONVERSIONE.put(TipoTrasformazione.CONTEXT_VELOCITY_TEMPLATE.getValue(), "V");
	}
	
	public static final InfoDato TIPO_TRASFORMAZIONE_RICHIESTA = new InfoDato(31, 
			"Indica il tipo di trasformazione della richiesta utilizzato dalla PdD");
	
	/**
	 * 	Posizione 33 (max 6 caratteri o -)
	  - tipoTrasformazioneRichiesta
	 */
	public static final InfoDato TIPO_TRASFORMAZIONE_RISPOSTA = new InfoDato(32, 
			"Indica il tipo di trasformazione della risposta utilizzato dalla PdD");
	
	
	/**
	 * 	Posizione 34 (max 1 caratteri o -)
	  - autenticazioneTokenInCache
	 */
	public static final InfoDato AUTENTICAZIONE_TOKEN_IN_CACHE = new InfoDato(33, 
			"Indica se il risultato dell'autenticazione token è stato prelevato dalla cache o meno");
	
	/**
	 * 	Posizione 35 (max 1 caratteri o -)
	  - dettaglioAutenticazioneFallita
	 */
	
	public static final String TIPO_AUTENTICAZIONE_FALLITA_MOTIVAZIONE_CREDENZIALI_NON_FORNITE = "N";
	public static final String TIPO_AUTENTICAZIONE_FALLITA_MOTIVAZIONE_CREDENZIALI_FORNITE_NON_CORRETE = "E";
		
	public static final InfoDato AUTENTICAZIONE_FALLITA_MOTIVAZIONE = new InfoDato(34, 
			"Indica la tipologia di errore di autenticazione");
	
	/**
	 * 	Posizione 36 (max 1 caratteri o -)
	  - modiTokenAuthorizationInCache
	 */
	public static final InfoDato MODI_TOKEN_AUTHORIZATION_IN_CACHE = new InfoDato(35, 
			"Indica se il token ModI Authorization è stato prelevato dalla cache o meno");
	
	/**
	 * 	Posizione 37 (max 1 caratteri o -)
	  - modiTokenIntegrityInCache
	 */
	public static final InfoDato MODI_TOKEN_INTEGRITY_IN_CACHE = new InfoDato(36, 
			"Indica se il token ModI Integrity è stato prelevato dalla cache o meno");
	
	/**
	 * 	Posizione 38 (max 1 caratteri o -)
	  - modiTokenAuditInCache
	 */
	public static final InfoDato MODI_TOKEN_AUDIT_IN_CACHE = new InfoDato(37, 
			"Indica se il token ModI Audit è stato prelevato dalla cache o meno");
	
	
	
	// Costanti condivise
	
	public static final String IN_CACHE_TRUE = "T";
	public static final String IN_CACHE_FALSE = "F";
	
	// Attuale somma dei caratteri:
	// (1-3)     1 +  8 + 30 + 
	// (4-6)    20 + 20 + 20 +
	// (7-9)    10 +  2 + 10 +
	// (10-12)   4 +  4 +  4 +
	// (13-15)   4 +  4 +  4 +
	// (16-18)   4 +  4 + 10 +
	// (19-20)  20 + 3 +
	// (21-23)   1 +  1 + 6 +
	// (24)      6 +
	// (25-27)   1 + 1 + 1 +
	// (28-31)  40 + 3 + 5 + 1 +
	// (32-33)   6 + 6 +
	// (34)      1 +
	// (35)      1
	// (36-38)   3
	// risultato: 269 + LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE spazi = 307
	
	public static final int LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE_PRECEDENTE_INTRODOTTO_33_34 = 33;
	public static final int LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE_PRECEDENTE_INTRODOTTO_35_36_37 = 35;
	public static final int LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE = 38; // incrementare ogni volta si aggiunge una nuova info

}