TempiElaborazioneUtils.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.core.transazioni.utils;

  21. import java.io.Serializable;
  22. import java.text.SimpleDateFormat;
  23. import java.util.Date;

  24. import org.openspcoop2.core.commons.CoreException;
  25. import org.openspcoop2.utils.date.DateUtils;


  26. /**    
  27.  * TempiElaborazioneUtils
  28.  *
  29.  * @author Poli Andrea (poli@link.it)
  30.  * @author $Author$
  31.  * @version $Rev$, $Date$
  32.  */
  33. public class TempiElaborazioneUtils implements Serializable {

  34.     /**
  35.      *
  36.      */
  37.     private static final long serialVersionUID = 1L;
  38.    
  39.     private static final String format = "yyyyMMddHHmmssSSS";
  40.     private static final String FUNZIONALITA_SEPARATOR = "-";
  41.     private static final String FUNZIONALITA_DATE_UNDEFINED = "0";
  42.     private static final String TEMPI_SEPARATOR = " ";

  43.     /*
  44.      * NOTA: Spazio massimo occupato.
  45.      * Ogni informazione occupa  'yyyyMMddHHmmssSSS' + '-' + 'yyyyMMddHHmmssSSS' + ' ' = 36
  46.      * Per ora siamo a 33 informazioni raccolte (token, autenticazione, ...), quindi 33*36=1188.
  47.      * Attenzione a non superare 4000 che รจ la larghezza massima.
  48.      *
  49.      **/
  50.    
  51.     private static String _convertToDBValue(TempiElaborazioneFunzionalita tempiElaborazioneFunzionalita) {
  52.         SimpleDateFormat dateformat = DateUtils.getDefaultDateTimeFormatter(format);
  53.         StringBuilder bf = new StringBuilder("");
  54.         if(tempiElaborazioneFunzionalita!=null && tempiElaborazioneFunzionalita.dataIngresso!=null) {
  55.             bf.append(dateformat.format(tempiElaborazioneFunzionalita.dataIngresso));
  56.         }
  57.         else {
  58.             bf.append(FUNZIONALITA_DATE_UNDEFINED);
  59.         }
  60.         bf.append(FUNZIONALITA_SEPARATOR);
  61.         if(tempiElaborazioneFunzionalita!=null && tempiElaborazioneFunzionalita.dataUscita!=null) {
  62.             bf.append(dateformat.format(tempiElaborazioneFunzionalita.dataUscita));
  63.         }
  64.         else {
  65.             bf.append(FUNZIONALITA_DATE_UNDEFINED);
  66.         }
  67.         return bf.toString();
  68.     }
  69.    
  70.     public static String convertToDBValue(TempiElaborazione tempiElaborazione) {
  71.        
  72.         StringBuilder bf = new StringBuilder();
  73.        
  74.         bf.append(_convertToDBValue(tempiElaborazione.token)).append(TEMPI_SEPARATOR);
  75.         bf.append(_convertToDBValue(tempiElaborazione.autenticazione)).append(TEMPI_SEPARATOR);
  76.         bf.append(_convertToDBValue(tempiElaborazione.autenticazioneToken)).append(TEMPI_SEPARATOR);
  77.         bf.append(_convertToDBValue(tempiElaborazione.autorizzazione)).append(TEMPI_SEPARATOR);
  78.         bf.append(_convertToDBValue(tempiElaborazione.autorizzazioneContenuti)).append(TEMPI_SEPARATOR);
  79.         bf.append(_convertToDBValue(tempiElaborazione.validazioneRichiesta)).append(TEMPI_SEPARATOR);
  80.         bf.append(_convertToDBValue(tempiElaborazione.validazioneRisposta)).append(TEMPI_SEPARATOR);
  81.         bf.append(_convertToDBValue(tempiElaborazione.controlloTraffico_maxRequests)).append(TEMPI_SEPARATOR);
  82.         bf.append(_convertToDBValue(tempiElaborazione.controlloTraffico_rateLimiting)).append(TEMPI_SEPARATOR);
  83.         bf.append(_convertToDBValue(tempiElaborazione.sicurezzaMessaggioRichiesta)).append(TEMPI_SEPARATOR);
  84.         bf.append(_convertToDBValue(tempiElaborazione.sicurezzaMessaggioRisposta)).append(TEMPI_SEPARATOR);
  85.         bf.append(_convertToDBValue(tempiElaborazione.gestioneAttachmentsRichiesta)).append(TEMPI_SEPARATOR);
  86.         bf.append(_convertToDBValue(tempiElaborazione.gestioneAttachmentsRisposta)).append(TEMPI_SEPARATOR);
  87.         bf.append(_convertToDBValue(tempiElaborazione.correlazioneApplicativaRichiesta)).append(TEMPI_SEPARATOR);
  88.         bf.append(_convertToDBValue(tempiElaborazione.correlazioneApplicativaRisposta)).append(TEMPI_SEPARATOR);
  89.         bf.append(_convertToDBValue(tempiElaborazione.tracciamentoRichiesta)).append(TEMPI_SEPARATOR);
  90.         bf.append(_convertToDBValue(tempiElaborazione.tracciamentoRisposta)).append(TEMPI_SEPARATOR);
  91.         bf.append(_convertToDBValue(tempiElaborazione.dumpRichiestaIngresso)).append(TEMPI_SEPARATOR);
  92.         bf.append(_convertToDBValue(tempiElaborazione.dumpRichiestaUscita)).append(TEMPI_SEPARATOR);
  93.         bf.append(_convertToDBValue(tempiElaborazione.dumpRispostaIngresso)).append(TEMPI_SEPARATOR);
  94.         bf.append(_convertToDBValue(tempiElaborazione.dumpRispostaUscita)).append(TEMPI_SEPARATOR);
  95.         bf.append(_convertToDBValue(tempiElaborazione.dumpBinarioRichiestaIngresso)).append(TEMPI_SEPARATOR);
  96.         bf.append(_convertToDBValue(tempiElaborazione.dumpBinarioRichiestaUscita)).append(TEMPI_SEPARATOR);
  97.         bf.append(_convertToDBValue(tempiElaborazione.dumpBinarioRispostaIngresso)).append(TEMPI_SEPARATOR);
  98.         bf.append(_convertToDBValue(tempiElaborazione.dumpBinarioRispostaUscita)).append(TEMPI_SEPARATOR);
  99.         bf.append(_convertToDBValue(tempiElaborazione.dumpIntegrationManager)).append(TEMPI_SEPARATOR);
  100.         bf.append(_convertToDBValue(tempiElaborazione.responseCachingCalcoloDigest)).append(TEMPI_SEPARATOR);
  101.         bf.append(_convertToDBValue(tempiElaborazione.responseCachingReadFromCache)).append(TEMPI_SEPARATOR);
  102.         bf.append(_convertToDBValue(tempiElaborazione.responseCachingSaveInCache)).append(TEMPI_SEPARATOR);
  103.         bf.append(_convertToDBValue(tempiElaborazione.trasformazioneRichiesta)).append(TEMPI_SEPARATOR);
  104.         bf.append(_convertToDBValue(tempiElaborazione.trasformazioneRisposta)).append(TEMPI_SEPARATOR);
  105.         bf.append(_convertToDBValue(tempiElaborazione.attributeAuthority)).append(TEMPI_SEPARATOR);
  106.         bf.append(_convertToDBValue(tempiElaborazione.autenticazioneApplicativoToken)).append(TEMPI_SEPARATOR);
  107.        
  108.         return bf.toString();
  109.     }
  110.    
  111.     private static TempiElaborazioneFunzionalita _convertFromDBValue(String dbValue) throws CoreException {
  112.         if(dbValue==null || "".equals(dbValue)) {
  113.             return null;
  114.         }
  115.         SimpleDateFormat dateformat = DateUtils.getDefaultDateTimeFormatter(format);
  116.         String [] date = dbValue.split(FUNZIONALITA_SEPARATOR);
  117.         if(date==null || date.length!=2) {
  118.             return null;
  119.         }
  120.         String dataInizio = date[0];
  121.         String dataFine = date[1];
  122.         TempiElaborazioneFunzionalita tempi = null;
  123.         try {
  124.             if(!FUNZIONALITA_DATE_UNDEFINED.equals(dataInizio)) {
  125.                 Date d = dateformat.parse(dataInizio);
  126.                 if(tempi==null) {
  127.                     tempi = new TempiElaborazioneFunzionalita();
  128.                 }
  129.                 tempi.setDataIngresso(d);
  130.             }
  131.             if(!FUNZIONALITA_DATE_UNDEFINED.equals(dataFine)) {
  132.                 Date d = dateformat.parse(dataFine);
  133.                 if(tempi==null) {
  134.                     tempi = new TempiElaborazioneFunzionalita();
  135.                 }
  136.                 tempi.setDataUscita(d);
  137.             }
  138.         }catch(Exception e) {
  139.             throw new CoreException(e.getMessage(),e);
  140.         }
  141.         return tempi;
  142.     }
  143.    
  144.     public static TempiElaborazione convertFromDBValue(String dbValue) throws CoreException {
  145.        
  146.         if(dbValue==null || "".equals(dbValue)) {
  147.             return null;
  148.         }
  149.        
  150.         String [] tempi = dbValue.split(TEMPI_SEPARATOR);
  151.         if(tempi==null || tempi.length<=0) {
  152.             return null;
  153.         }
  154.        
  155.         TempiElaborazione tempiElaborazione = null;
  156.        
  157.         // Gestiamo per incremento senza mettere paletti sui valori attesi, in modo da supportare eventuali informazioni future rimanendo compatibili all'indietro
  158.         // NOTA!!: Nuove informazioni aggiungerle cmq in fondo anche nel metodo sopra 'convertToDBValue'
  159.         for (int i = 0; i < tempi.length; i++) {
  160.        
  161.             String tempo = tempi[i];
  162.             TempiElaborazioneFunzionalita funzionalita = _convertFromDBValue(tempo);
  163.             if(funzionalita==null) {
  164.                 continue;
  165.             }
  166.             if(funzionalita!=null && tempiElaborazione==null) {
  167.                 tempiElaborazione = new TempiElaborazione();
  168.             }
  169.                        
  170.             if(i==0) {
  171.                 tempiElaborazione.token = funzionalita;
  172.             }
  173.             else if(i==1) {
  174.                 tempiElaborazione.autenticazione = funzionalita;
  175.             }
  176.             else if(i==2) {
  177.                 tempiElaborazione.autenticazioneToken = funzionalita;
  178.             }
  179.             else if(i==3) {
  180.                 tempiElaborazione.autorizzazione = funzionalita;
  181.             }
  182.             else if(i==4) {
  183.                 tempiElaborazione.autorizzazioneContenuti = funzionalita;
  184.             }
  185.             else if(i==5) {
  186.                 tempiElaborazione.validazioneRichiesta = funzionalita;
  187.             }
  188.             else if(i==6) {
  189.                 tempiElaborazione.validazioneRisposta = funzionalita;
  190.             }
  191.             else if(i==7) {
  192.                 tempiElaborazione.controlloTraffico_maxRequests = funzionalita;
  193.             }
  194.             else if(i==8) {
  195.                 tempiElaborazione.controlloTraffico_rateLimiting = funzionalita;
  196.             }
  197.             else if(i==9) {
  198.                 tempiElaborazione.sicurezzaMessaggioRichiesta = funzionalita;
  199.             }
  200.             else if(i==10) {
  201.                 tempiElaborazione.sicurezzaMessaggioRisposta = funzionalita;
  202.             }
  203.             else if(i==11) {
  204.                 tempiElaborazione.gestioneAttachmentsRichiesta = funzionalita;
  205.             }
  206.             else if(i==12) {
  207.                 tempiElaborazione.gestioneAttachmentsRisposta = funzionalita;
  208.             }
  209.             else if(i==13) {
  210.                 tempiElaborazione.correlazioneApplicativaRichiesta = funzionalita;
  211.             }
  212.             else if(i==14) {
  213.                 tempiElaborazione.correlazioneApplicativaRisposta = funzionalita;
  214.             }
  215.             else if(i==15) {
  216.                 tempiElaborazione.tracciamentoRichiesta = funzionalita;
  217.             }
  218.             else if(i==16) {
  219.                 tempiElaborazione.tracciamentoRisposta = funzionalita;
  220.             }
  221.             else if(i==17) {
  222.                 tempiElaborazione.dumpRichiestaIngresso = funzionalita;
  223.             }
  224.             else if(i==18) {
  225.                 tempiElaborazione.dumpRichiestaUscita = funzionalita;
  226.             }
  227.             else if(i==19) {
  228.                 tempiElaborazione.dumpRispostaIngresso = funzionalita;
  229.             }
  230.             else if(i==20) {
  231.                 tempiElaborazione.dumpRispostaUscita = funzionalita;
  232.             }
  233.             else if(i==21) {
  234.                 tempiElaborazione.dumpBinarioRichiestaIngresso = funzionalita;
  235.             }
  236.             else if(i==22) {
  237.                 tempiElaborazione.dumpBinarioRichiestaUscita = funzionalita;
  238.             }
  239.             else if(i==23) {
  240.                 tempiElaborazione.dumpBinarioRispostaIngresso = funzionalita;
  241.             }
  242.             else if(i==24) {
  243.                 tempiElaborazione.dumpBinarioRispostaUscita = funzionalita;
  244.             }
  245.             else if(i==25) {
  246.                 tempiElaborazione.dumpIntegrationManager = funzionalita;
  247.             }
  248.             else if(i==26) {
  249.                 tempiElaborazione.responseCachingCalcoloDigest = funzionalita;
  250.             }
  251.             else if(i==27) {
  252.                 tempiElaborazione.responseCachingReadFromCache = funzionalita;
  253.             }
  254.             else if(i==28) {
  255.                 tempiElaborazione.responseCachingSaveInCache = funzionalita;
  256.             }
  257.             else if(i==29) {
  258.                 tempiElaborazione.trasformazioneRichiesta = funzionalita;
  259.             }
  260.             else if(i==30) {
  261.                 tempiElaborazione.trasformazioneRisposta = funzionalita;
  262.             }
  263.             else if(i==31) {
  264.                 tempiElaborazione.attributeAuthority = funzionalita;
  265.             }
  266.             else if(i==32) {
  267.                 tempiElaborazione.autenticazioneApplicativoToken = funzionalita;
  268.             }

  269.         }
  270.        
  271.         return tempiElaborazione;
  272.     }
  273.    
  274. }