InformazioniRecordTraccia.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.traccia;

  21. import java.util.ArrayList;
  22. import java.util.List;

  23. import org.openspcoop2.core.commons.CoreException;

  24. import org.openspcoop2.pdd.logger.record.AbstractDatoRicostruzione;
  25. import org.openspcoop2.pdd.logger.record.CharDatoRicostruzione;
  26. import org.openspcoop2.pdd.logger.record.StringDatoRicostruzione;
  27. import org.openspcoop2.pdd.logger.record.TimestampDatoRicostruzione;

  28. /**    
  29.  * InformazioniSalvataggioTraccia
  30.  *
  31.  * @author Poli Andrea (poli@link.it)
  32.  * @author $Author$
  33.  * @version $Rev$, $Date$
  34.  */
  35. public class InformazioniRecordTraccia {

  36.     protected boolean presente = false;
  37.    
  38.     protected boolean ricostruibile = false;
  39.    
  40.     protected List<AbstractDatoRicostruzione<?>> dati = new ArrayList<>();

  41.     protected String motivoRicostruzioneNonFattibile = null;
  42.    
  43.     protected String rawDBValue = null;
  44.    
  45.     public String getRawDBValue() {
  46.         return this.rawDBValue;
  47.     }

  48.     public void setRawDBValue(String rawDBValue) {
  49.         this.rawDBValue = rawDBValue;
  50.     }

  51.     public String getMotivoRicostruzioneNonFattibile() {
  52.         return this.motivoRicostruzioneNonFattibile;
  53.     }
  54.    
  55.     public boolean isRicostruibile() {
  56.         return this.ricostruibile;
  57.     }
  58.    
  59.     public boolean isPresente() {
  60.         return this.presente;
  61.     }

  62.     public AbstractDatoRicostruzione<?> getDato(MappingRicostruzioneTraccia mapping){
  63.         if(mapping.getValue()==null) {
  64.             return null;
  65.         }
  66.         int index = mapping.getValue();
  67.         if(index < this.dati.size()) {
  68.             return this.dati.get(index);
  69.         }
  70.         return null;
  71.     }
  72.    
  73.     public void setPresente(boolean presente) {
  74.         this.presente = presente;
  75.     }
  76.    
  77.     public void setRicostruibile(boolean ricostruibile) {
  78.         this.ricostruibile = ricostruibile;
  79.     }

  80.     public void setMotivoRicostruzioneNonFattibile(
  81.             String motivoRicostruzioneNonFattibile) {
  82.         this.motivoRicostruzioneNonFattibile = motivoRicostruzioneNonFattibile;
  83.     }

  84.     public void setDati(List<AbstractDatoRicostruzione<?>> dati) {
  85.         this.dati = dati;
  86.     }
  87.    
  88.     @Override
  89.     public String toString(){
  90.         StringBuilder bf = new StringBuilder();
  91.         bf.append("---- Traccia -----\n");
  92.         bf.append("\tpresente("+this.presente+")\n");
  93.         bf.append("\tricostruibile("+this.ricostruibile+")\n");
  94.         bf.append("\tdati size:"+this.dati.size()).append("\n");
  95.         for (int i = 0; i < this.dati.size(); i++) {
  96.             bf.append("\t\tdato["+MappingRicostruzioneTraccia.toEnumConstant(i).name()+"("+i+")]").append("\n");
  97.             bf.append("\t\t\tdescrizione:"+this.dati.get(i).getInfo().getDescription()).append("\n");
  98.             try{
  99.                 bf.append("\t\t\tvalore:"+this.dati.get(i).convertToString()).append("\n");
  100.             }catch(Exception e){
  101.                 bf.append("\t\t\tvalore: ERRORE NEL CALCOLO: "+e.getMessage()).append("\n");
  102.             }
  103.         }
  104.         if(!this.ricostruibile){
  105.             bf.append(" motivoRicostruzioneNonFattibile("+this.motivoRicostruzioneNonFattibile+")\n");  
  106.         }
  107.         return bf.toString();
  108.     }
  109.    

  110.     public static InformazioniRecordTraccia convertoFromDBColumnValue(String value) throws CoreException{
  111.        
  112.         InformazioniRecordTraccia info = new InformazioniRecordTraccia();
  113.                
  114.         if(value == null || "".equals(value.trim())){
  115.             throw new CoreException("Valore non fornito");
  116.         }
  117.         info.setRawDBValue(value);
  118.        
  119.         if(value.length()==1 && (CostantiMappingTracciamento.NON_PRESENTE == value.charAt(0)) ){
  120.             info.setPresente(false);
  121.             return info;
  122.         }
  123.        
  124.         info.setPresente(true);
  125.        
  126.         String dbValue = value.trim();
  127.        
  128.         if(!dbValue.contains(CostantiMappingTracciamento.SEPARATOR)){
  129.             info.setRicostruibile(false);
  130.             info.setMotivoRicostruzioneNonFattibile("Non sono presenti caratteri separatori ["+CostantiMappingTracciamento.SEPARATOR+"] nel valore");
  131.             return info;
  132.         }
  133.        
  134.         String [] split = dbValue.split(CostantiMappingTracciamento.SEPARATOR);
  135.         if( CostantiMappingTracciamento.TRACCIA_EMESSA_RICOSTRUIBILE != split[0].charAt(0) ){
  136.             info.setRicostruibile(false);
  137.             info.setMotivoRicostruzioneNonFattibile(dbValue);
  138.         }
  139.         else{
  140.             info.setRicostruibile(true);
  141.             List<AbstractDatoRicostruzione<?>> listaDati = new ArrayList<>();
  142.             info.setDati(listaDati);
  143.            
  144.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_EMESSA.getPosition()],
  145.                     CostantiMappingTracciamento.TRACCIA_EMESSA));

  146.             listaDati.add(new TimestampDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_DATA_REGISTRAZIONE.getPosition()],
  147.                     CostantiMappingTracciamento.TRACCIA_DATA_REGISTRAZIONE));
  148.            
  149.             listaDati.add(new TimestampDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_ORA_REGISTRAZIONE.getPosition()],
  150.                     CostantiMappingTracciamento.TRACCIA_BUSTA_ORA_REGISTRAZIONE));
  151.            
  152.             listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_TIPO_ORA_REGISTRAZIONE_BY_PROTOCOLLO.getPosition()],
  153.                     CostantiMappingTracciamento.TRACCIA_BUSTA_TIPO_ORA_REGISTRAZIONE_BY_PROTOCOLLO));
  154.            
  155.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_TIPO_ORA_REGISTRAZIONE_BY_OPENSPCOOP.getPosition()],
  156.                     CostantiMappingTracciamento.TRACCIA_BUSTA_TIPO_ORA_REGISTRAZIONE_BY_OPENSPCOOP));

  157.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_RIFERIMENTO_MESSAGGIO.getPosition()],
  158.                     CostantiMappingTracciamento.TRACCIA_BUSTA_RIFERIMENTO_MESSAGGIO));

  159.             listaDati.add(new TimestampDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_SCADENZA.getPosition()],
  160.                     CostantiMappingTracciamento.TRACCIA_BUSTA_SCADENZA));

  161.             listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_FILTRO_DUPLICATI.getPosition()],
  162.                     CostantiMappingTracciamento.TRACCIA_FILTRO_DUPLICATI));

  163.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_FILTRO_DUPLICATI_CODE.getPosition()],
  164.                     CostantiMappingTracciamento.TRACCIA_FILTRO_DUPLICATI_CODE));

  165.             listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_SEQUENZA.getPosition()],
  166.                     CostantiMappingTracciamento.TRACCIA_BUSTA_SEQUENZA));

  167.             listaDati.add(new TimestampDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_RISCONTRO_ORA_REGISTRAZIONE.getPosition()],
  168.                     CostantiMappingTracciamento.TRACCIA_BUSTA_RISCONTRO_ORA_REGISTRAZIONE));
  169.            
  170.             listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_RISCONTRO_TIPO_ORA_REGISTRAZIONE.getPosition()],
  171.                     CostantiMappingTracciamento.TRACCIA_BUSTA_RISCONTRO_TIPO_ORA_REGISTRAZIONE));
  172.            
  173.            
  174.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_RISCONTRO_TIPO_ORA_REGISTRAZIONE_CODE.getPosition()],
  175.                     CostantiMappingTracciamento.TRACCIA_BUSTA_RISCONTRO_TIPO_ORA_REGISTRAZIONE_CODE));

  176.             listaDati.add(new TimestampDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_PRIMA_TRASMISSIONE_ORA_REGISTRAZIONE.getPosition()],
  177.                     CostantiMappingTracciamento.TRACCIA_BUSTA_PRIMA_TRASMISSIONE_ORA_REGISTRAZIONE));
  178.            
  179.             listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_PRIMA_TRASMISSIONE_TIPO_ORA_REGISTRAZIONE.getPosition()],
  180.                     CostantiMappingTracciamento.TRACCIA_BUSTA_PRIMA_TRASMISSIONE_TIPO_ORA_REGISTRAZIONE));
  181.            
  182.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_PRIMA_TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_CODE.getPosition()],
  183.                     CostantiMappingTracciamento.TRACCIA_BUSTA_PRIMA_TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_CODE));
  184.            
  185.             listaDati.add(new TimestampDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_SECONDA_TRASMISSIONE_ORA_REGISTRAZIONE.getPosition()],
  186.                     CostantiMappingTracciamento.TRACCIA_BUSTA_SECONDA_TRASMISSIONE_ORA_REGISTRAZIONE));
  187.            
  188.             listaDati.add(new StringDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_SECONDA_TRASMISSIONE_TIPO_ORA_REGISTRAZIONE.getPosition()],
  189.                     CostantiMappingTracciamento.TRACCIA_BUSTA_SECONDA_TRASMISSIONE_TIPO_ORA_REGISTRAZIONE));
  190.            
  191.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_SECONDA_TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_CODE.getPosition()],
  192.                     CostantiMappingTracciamento.TRACCIA_BUSTA_SECONDA_TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_CODE));
  193.            
  194.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_CONFERMA_RICHIESTA.getPosition()],
  195.                     CostantiMappingTracciamento.TRACCIA_BUSTA_CONFERMA_RICHIESTA));
  196.            
  197.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_SERVIZIO_CORRELATO_PRESENTE.getPosition()],
  198.                     CostantiMappingTracciamento.TRACCIA_BUSTA_SERVIZIO_CORRELATO_PRESENTE));
  199.            
  200.             listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_ESITO_TRACCIA.getPosition()],
  201.                     CostantiMappingTracciamento.TRACCIA_BUSTA_ESITO_TRACCIA));
  202.                        
  203.             if(split.length>(CostantiMappingTracciamento.LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE_PRECEDENTE_INTRODOTTO_22)){
  204.            
  205.                 listaDati.add(new CharDatoRicostruzione(split[MappingRicostruzioneTraccia.TRACCIA_BUSTA_SOGGETTO_APPLICATIVO_TOKEN.getPosition()],
  206.                         CostantiMappingTracciamento.TRACCIA_BUSTA_SOGGETTO_APPLICATIVO_TOKEN));
  207.                
  208.             }
  209.            
  210.             if(split.length>CostantiMappingTracciamento.LENGHT_DATI_SIMULATI_VERSIONE_ATTUALE){
  211.                
  212.                 // NOTA: successivi dati aggiunti
  213.                 // GESTIRE QUANDO SI INTRODUCONO NUOVE INFO
  214.                
  215.             }
  216.         }
  217.        
  218.         return info;
  219.     }
  220. }