InformazioniRecordDiagnostici.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.pdd.logger.diagnostica;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import org.openspcoop2.core.commons.CoreException;
- import org.openspcoop2.pdd.logger.record.AbstractDatoRicostruzione;
- import org.openspcoop2.pdd.logger.record.CharDatoRicostruzione;
- import org.openspcoop2.pdd.logger.record.StringDatoRicostruzione;
- import org.openspcoop2.pdd.logger.record.TimestampDatoRicostruzione;
- /**
- * InformazioniRecordDiagnostici
- *
- * @author Poli Andrea (poli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class InformazioniRecordDiagnostici {
- protected boolean presenti = false;
-
- protected boolean ricostruibili = false;
-
- protected List<AbstractDatoRicostruzione<?>> dati = new ArrayList<>();
- protected List<InfoDiagnostico> diagnostici = new ArrayList<>();
-
- protected String motivoRicostruzioneNonFattibile = null;
-
-
- // Gli Ext servono per generare diagnostici dinamici che magari presentano template uguali ma che devono essere risolti con valori diversi
-
- protected List<InfoDiagnostico> diagnosticiExt = new ArrayList<>();
-
- protected List<DynamicExtendedInfoDiagnostico> datiExt = new ArrayList<>();
-
- protected String rawDBValue = null;
-
- public String getRawDBValue() {
- return this.rawDBValue;
- }
- public void setRawDBValue(String rawDBValue) {
- this.rawDBValue = rawDBValue;
- }
-
- public String getMotivoRicostruzioneNonFattibile() {
- return this.motivoRicostruzioneNonFattibile;
- }
-
- public boolean isRicostruibili() {
- return this.ricostruibili;
- }
-
- public boolean isPresenti() {
- return this.presenti;
- }
- public int sizeMetaDati(){
- return this.dati.size();
- }
-
- public AbstractDatoRicostruzione<?> getDato(MappingRicostruzioneDiagnostici mapping){
- if(mapping.getValue()==null) {
- return null;
- }
- int index = mapping.getValue();
- if(index < this.dati.size()) {
- return this.dati.get(index);
- }
- return null;
- }
-
- public List<InfoDiagnostico> getDiagnostici() {
- return this.diagnostici;
- }
-
- public void setPresenti(boolean presenti) {
- this.presenti = presenti;
- }
-
- public void setRicostruibili(boolean ricostruibili) {
- this.ricostruibili = ricostruibili;
- }
- public void setMotivoRicostruzioneNonFattibile(
- String motivoRicostruzioneNonFattibile) {
- this.motivoRicostruzioneNonFattibile = motivoRicostruzioneNonFattibile;
- }
- public void setDati(List<AbstractDatoRicostruzione<?>> dati) {
- this.dati = dati;
- }
-
- public void setDiagnostici(List<InfoDiagnostico> diagnostici) {
- this.diagnostici = diagnostici;
- }
-
- public List<InfoDiagnostico> getDiagnosticiExt() {
- return this.diagnosticiExt;
- }
- public void setDiagnosticiExt(List<InfoDiagnostico> diagnosticiExt) {
- this.diagnosticiExt = diagnosticiExt;
- }
- public void setDatiExt(List<DynamicExtendedInfoDiagnostico> datiExt) {
- this.datiExt = datiExt;
- }
-
- public List<DynamicExtendedInfoDiagnostico> getDatiExt() {
- return this.datiExt;
- }
-
-
-
- @Override
- public String toString(){
- StringBuilder bf = new StringBuilder();
- bf.append("---- Diagnostici -----\n");
- bf.append("\tpresenti("+this.presenti+")\n");
- bf.append("\tricostruibili("+this.ricostruibili+")\n");
- bf.append("\tdati size:"+this.dati.size()).append("\n");
- for (int i = 0; i < this.dati.size(); i++) {
- bf.append("\t\tdato["+MappingRicostruzioneDiagnostici.toEnumConstant(i).name()+"("+i+")]").append("\n");
- bf.append("\t\t\tdescrizione:"+this.dati.get(i).getInfo().getDescription()).append("\n");
- try{
- bf.append("\t\t\tvalore:"+this.dati.get(i).convertToString()).append("\n");
- }catch(Exception e){
- bf.append("\t\t\tvalore: ERRORE NEL CALCOLO: "+e.getMessage()).append("\n");
- }
- }
- if(!this.ricostruibili){
- bf.append(" motivoRicostruzioneNonFattibile("+this.motivoRicostruzioneNonFattibile+")\n");
- }
- return bf.toString();
- }
-
- public static InformazioniRecordDiagnostici convertoFromDBColumnValue(String columnMetaInf, String columnList1, String columnList2,
- String columnListExt, String datiExt) throws CoreException{
-
- InformazioniRecordDiagnostici info = new InformazioniRecordDiagnostici();
-
- if(columnMetaInf == null || "".equals(columnMetaInf.trim())){
- throw new CoreException("Valore non fornito");
- }
- info.setRawDBValue(columnMetaInf);
-
- if(columnMetaInf.length()==1 && (CostantiMappingDiagnostici.NON_PRESENTE == columnMetaInf.charAt(0)) ){
- info.setPresenti(false);
- return info;
- }
-
- info.setPresenti(true);
-
-
- // meta-inf
-
- String dbValue = columnMetaInf.trim();
-
- if(!dbValue.contains(CostantiMappingDiagnostici.SEPARATOR)){
- info.setRicostruibili(false);
- info.setMotivoRicostruzioneNonFattibile("Non sono presenti caratteri separatori ["+CostantiMappingDiagnostici.SEPARATOR+"] nel valore");
- return info;
- }
-
- String [] split = dbValue.split(CostantiMappingDiagnostici.SEPARATOR);
- Date gdoFirstDiagnostic = null;
- if( CostantiMappingDiagnostici.DIAGNOSTICI_EMESSI_RICOSTRUIBILI != split[0].charAt(0) ){
- info.setRicostruibili(false);
- info.setMotivoRicostruzioneNonFattibile(dbValue);
- }
- else{
- info.setRicostruibili(true);
- List<AbstractDatoRicostruzione<?>> listaDati = new ArrayList<>();
- info.setDati(listaDati);
-
- listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneDiagnostici.DIAGNOSTICI_EMESSI.getPosition()],
- CostantiMappingDiagnostici.DIAGNOSTICI_EMESSI));
-
- listaDati.add(new TimestampDatoRicostruzione(split[MappingRicostruzioneDiagnostici.DIAGNOSTICI_EMISSIONE_FIRST_DATE.getPosition()],
- CostantiMappingDiagnostici.DIAGNOSTICI_EMISSIONE_FIRST_DATE));
- Object oGdoFist = listaDati.get(MappingRicostruzioneDiagnostici.DIAGNOSTICI_EMISSIONE_FIRST_DATE.getPosition()).getDato();
- gdoFirstDiagnostic = (oGdoFist!=null ? (Date)oGdoFist : null);
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_AUTORIZZAZIONE.getPosition()],
- CostantiMappingDiagnostici.TIPO_AUTORIZZAZIONE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.CODICE_TRASPORTO_RICHIESTA.getPosition()],
- CostantiMappingDiagnostici.CODICE_TRASPORTO_RICHIESTA));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.CODICE_TRASPORTO_RISPOSTA.getPosition()],
- CostantiMappingDiagnostici.CODICE_TRASPORTO_RISPOSTA));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_CONNETTORE.getPosition()],
- CostantiMappingDiagnostici.TIPO_CONNETTORE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.MAX_THREADS_THRESHOLD.getPosition()],
- CostantiMappingDiagnostici.MAX_THREADS_THRESHOLD));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.CONTROLLO_TRAFFICO_THRESHOLD.getPosition()],
- CostantiMappingDiagnostici.CONTROLLO_TRAFFICO_THRESHOLD));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.ACTIVE_THREADS.getPosition()],
- CostantiMappingDiagnostici.ACTIVE_THREADS));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.NUMERO_POLICY_CONFIGURATE.getPosition()],
- CostantiMappingDiagnostici.NUMERO_POLICY_CONFIGURATE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.NUMERO_POLICY_DISABILITATE.getPosition()],
- CostantiMappingDiagnostici.NUMERO_POLICY_DISABILITATE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.NUMERO_POLICY_FILTRATE.getPosition()],
- CostantiMappingDiagnostici.NUMERO_POLICY_FILTRATE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.NUMERO_POLICY_NON_APPLICATE.getPosition()],
- CostantiMappingDiagnostici.NUMERO_POLICY_NON_APPLICATE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.NUMERO_POLICY_RISPETTATE.getPosition()],
- CostantiMappingDiagnostici.NUMERO_POLICY_RISPETTATE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.NUMERO_POLICY_VIOLATE.getPosition()],
- CostantiMappingDiagnostici.NUMERO_POLICY_VIOLATE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.NUMERO_POLICY_VIOLATE_WARNING_ONLY.getPosition()],
- CostantiMappingDiagnostici.NUMERO_POLICY_VIOLATE_WARNING_ONLY));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.NUMERO_POLICY_IN_ERRORE.getPosition()],
- CostantiMappingDiagnostici.NUMERO_POLICY_IN_ERRORE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_AUTENTICAZIONE.getPosition()],
- CostantiMappingDiagnostici.TIPO_AUTENTICAZIONE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_AUTORIZZAZIONE_CONTENUTI.getPosition()],
- CostantiMappingDiagnostici.TIPO_AUTORIZZAZIONE_CONTENUTI));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_VALIDAZIONE_CONTENUTI.getPosition()],
- CostantiMappingDiagnostici.TIPO_VALIDAZIONE_CONTENUTI));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_PROCESSAMENTO_MTOM_RICHIESTA.getPosition()],
- CostantiMappingDiagnostici.TIPO_PROCESSAMENTO_MTOM_RICHIESTA));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_PROCESSAMENTO_MTOM_RISPOSTA.getPosition()],
- CostantiMappingDiagnostici.TIPO_PROCESSAMENTO_MTOM_RISPOSTA));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_PROCESSAMENTO_MESSAGE_SECURITY_RICHIESTA.getPosition()],
- CostantiMappingDiagnostici.TIPO_PROCESSAMENTO_MESSAGE_SECURITY_RICHIESTA));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_PROCESSAMENTO_MESSAGE_SECURITY_RISPOSTA.getPosition()],
- CostantiMappingDiagnostici.TIPO_PROCESSAMENTO_MESSAGE_SECURITY_RISPOSTA));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.AUTENTICAZIONE_IN_CACHE.getPosition()],
- CostantiMappingDiagnostici.AUTENTICAZIONE_IN_CACHE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.AUTORIZZAZIONE_IN_CACHE.getPosition()],
- CostantiMappingDiagnostici.AUTORIZZAZIONE_IN_CACHE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.AUTORIZZAZIONE_CONTENUTI_IN_CACHE.getPosition()],
- CostantiMappingDiagnostici.AUTORIZZAZIONE_CONTENUTI_IN_CACHE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TOKEN_POLICY.getPosition()],
- CostantiMappingDiagnostici.TOKEN_POLICY));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TOKEN_POLICY_ACTIONS.getPosition()],
- CostantiMappingDiagnostici.TOKEN_POLICY_ACTIONS));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TOKEN_POLICY_AUTENTCAZIONE.getPosition()],
- CostantiMappingDiagnostici.TOKEN_POLICY_AUTENTCAZIONE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.RESPONSE_FROM_CACHE.getPosition()],
- CostantiMappingDiagnostici.RESPONSE_FROM_CACHE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_TRASFORMAZIONE_RICHIESTA.getPosition()],
- CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_RICHIESTA));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.TIPO_TRASFORMAZIONE_RISPOSTA.getPosition()],
- CostantiMappingDiagnostici.TIPO_TRASFORMAZIONE_RISPOSTA));
-
- if(split.length>(CostantiMappingDiagnostici.LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE_PRECEDENTE_INTRODOTTO_33_34)){
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.AUTENTICAZIONE_TOKEN_IN_CACHE.getPosition()],
- CostantiMappingDiagnostici.AUTENTICAZIONE_TOKEN_IN_CACHE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.AUTENTICAZIONE_FALLITA_MOTIVAZIONE.getPosition()],
- CostantiMappingDiagnostici.AUTENTICAZIONE_FALLITA_MOTIVAZIONE));
-
- }
-
- if(split.length>(CostantiMappingDiagnostici.LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE_PRECEDENTE_INTRODOTTO_35_36_37)){
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.MODI_TOKEN_AUTHORIZATION_IN_CACHE.getPosition()],
- CostantiMappingDiagnostici.MODI_TOKEN_AUTHORIZATION_IN_CACHE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.MODI_TOKEN_INTEGRITY_IN_CACHE.getPosition()],
- CostantiMappingDiagnostici.MODI_TOKEN_INTEGRITY_IN_CACHE));
-
- listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneDiagnostici.MODI_TOKEN_AUDIT_IN_CACHE.getPosition()],
- CostantiMappingDiagnostici.MODI_TOKEN_AUDIT_IN_CACHE));
-
- }
-
- if(split.length>CostantiMappingDiagnostici.LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE){
-
- // NOTA: successivi dati aggiunti
- // GESTIRE QUANDO SI INTRODUCONO NUOVE INFO
-
- }
- }
-
-
- // diagnostic
-
- List<InfoDiagnostico> listaDiagnostici = new ArrayList<>();
- info.setDiagnostici(listaDiagnostici);
-
- if( (columnList1==null || "".equals(columnList1))
- &&
- (info.isPresenti() && info.isRicostruibili())
- &&
-
- // Prima di sollevare l'eccezione controllo se i diagnostici simulati sono presenti solamente nella colonna column ext
- (columnListExt==null || "".equals(columnListExt) ||
- datiExt==null || "".equals(datiExt))
- ){
- throw new CoreException("Valore ColumnList1 non fornito, nonostante dovrebbero essere presenti dei diagnostici (informazione meta-inf indica la presenza e indica che sono ricostruibili)");
- }
- if(columnList1!=null && !"".equals(columnList1)){
- String [] splitDiagnosticList1 = columnList1.split(CostantiMappingDiagnostici.SEPARATOR);
- if(splitDiagnosticList1.length>CostantiMappingDiagnostici.MAX_DIAGNOSTIC_LIST_ROW_1){
- throw new CoreException("Valore ColumnList1 fornito non corretto. Non possono essere definiti piu' di "+CostantiMappingDiagnostici.MAX_DIAGNOSTIC_LIST_ROW_1+" diagnostici (separati dal carattere separatore ["+CostantiMappingDiagnostici.SEPARATOR+"])");
- }
- for (int i = 0; i < splitDiagnosticList1.length; i++) {
- String diagnostic = splitDiagnosticList1[i].trim();
- listaDiagnostici.add(InfoDiagnostico.convertoFromDBColumnValue(gdoFirstDiagnostic, diagnostic));
- }
- }
-
- if(columnList2!=null && !"".equals(columnList2)){
- String [] splitDiagnosticList2 = columnList2.split(CostantiMappingDiagnostici.SEPARATOR);
- if(splitDiagnosticList2.length>CostantiMappingDiagnostici.MAX_DIAGNOSTIC_LIST_ROW_2){
- throw new CoreException("Valore ColumnList2 fornito non corretto. Non possono essere definiti piu' di "+CostantiMappingDiagnostici.MAX_DIAGNOSTIC_LIST_ROW_2+" diagnostici (separati dal carattere separatore ["+CostantiMappingDiagnostici.SEPARATOR+"])");
- }
- for (int i = 0; i < splitDiagnosticList2.length; i++) {
- String diagnostic = splitDiagnosticList2[i].trim();
- listaDiagnostici.add(InfoDiagnostico.convertoFromDBColumnValue(gdoFirstDiagnostic, diagnostic));
- }
- }
-
- if(columnListExt!=null && !"".equals(columnListExt)){
-
- if(datiExt==null || "".equals(datiExt)){
- throw new CoreException("Trovato valore ColumnListExt ma non esiste un analogo valore per i DatiExt");
- }
-
- String [] splitDiagnosticListExt = columnListExt.split(CostantiMappingDiagnostici.SEPARATOR);
- String [] splitDatiExt = datiExt.split(CostantiMappingDiagnostici.DIAGNOSTIC_WITH_DYNAMIC_INFO_DIAG_SEPARATOR);
-
- if(splitDiagnosticListExt==null || splitDiagnosticListExt.length<=0){
- throw new CoreException("Trovato valore ColumnListExt corrotto");
- }
- if(splitDatiExt==null || splitDatiExt.length<=0){
- throw new CoreException("Trovato valore DatiExt corrotto");
- }
- if(splitDiagnosticListExt.length!=splitDatiExt.length){
- throw new CoreException("Assocazione tra ColumnListExt("+splitDiagnosticListExt.length+") e DatiExt("+splitDatiExt.length+") non corretta");
- }
-
- List<InfoDiagnostico> listaDiagnosticiExt = new ArrayList<>();
- info.setDiagnosticiExt(listaDiagnosticiExt);
-
- List<DynamicExtendedInfoDiagnostico> listaDatiExt = new ArrayList<>();
- info.setDatiExt(listaDatiExt);
-
- for (int i = 0; i < splitDiagnosticListExt.length; i++) {
-
- String diagnostic = splitDiagnosticListExt[i].trim();
- listaDiagnosticiExt.add(InfoDiagnostico.convertoFromDBColumnValue(gdoFirstDiagnostic, diagnostic));
-
- String valueExt = splitDatiExt[i].trim();
- listaDatiExt.add(DynamicExtendedInfoDiagnostico.convertoFromDBColumnValue(valueExt));
-
- }
-
- }
-
- return info;
- }
- }