StatisticsCollection.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.core.handlers.statistics;

  21. import java.util.List;

  22. import org.openspcoop2.core.constants.TipoPdD;
  23. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  24. import org.openspcoop2.protocol.sdk.builder.EsitoTransazione;
  25. import org.openspcoop2.protocol.utils.EsitiProperties;
  26. import org.openspcoop2.utils.LoggerWrapperFactory;
  27. import org.openspcoop2.utils.SemaphoreLock;
  28. import org.openspcoop2.utils.UtilsRuntimeException;
  29. import org.openspcoop2.utils.date.DateManager;
  30. import org.slf4j.Logger;

  31. /**
  32.  * StatisticsCollection
  33.  *
  34.  * @author Poli Andrea (apoli@link.it)
  35.  * @author $Author$
  36.  * @version $Rev$, $Date$
  37.  */
  38. public class StatisticsCollection {

  39.     private StatisticsCollection() {}
  40.    
  41.     private static final StatisticsCollection statisticsCollection =  new StatisticsCollection();
  42.     public static StatisticsCollection getStatisticsCollection(){
  43.         return StatisticsCollection.statisticsCollection;
  44.     }

  45.     private static final long SOGLIA_DIMENSIONE = Long.MAX_VALUE-100000;
  46.     private static final int SOGLIA_TEMPORALE = 1000*60*30; // statistiche relative all'ultima mezz'ora.
  47.    
  48.     private static Logger log = LoggerWrapperFactory.getLogger(StatisticsCollection.class);
  49.     private static boolean isEsitoOk(EsitoTransazione esito, IProtocolFactory<?> protocollo){
  50.         try{
  51.             if(esito==null) {
  52.                 return false;
  53.             }
  54.             List<Integer> esitiOk = EsitiProperties.getInstance(log,protocollo).getEsitiCodeOk();
  55.             for (Integer esitoOk : esitiOk) {
  56.                 if(esitoOk!=null && esito.getCode()!=null) {
  57.                     if(esitoOk.intValue() == esito.getCode().intValue()){
  58.                         return true;
  59.                     }
  60.                 }
  61.             }
  62.             return false;
  63.         }catch(Exception e){
  64.             // non sono previsti errori
  65.             throw new UtilsRuntimeException(e.getMessage(),e);
  66.         }
  67.     }
  68.    
  69.    
  70.    
  71.     /* ***** UPDATE STATO ******* */
  72.     private static org.openspcoop2.utils.Semaphore semaphore = new org.openspcoop2.utils.Semaphore("StatisticsCollection");
  73.     public static void update(Statistic stat){
  74.         SemaphoreLock lock = semaphore.acquireThrowRuntime("update");
  75.         try {
  76.             updateEngine(stat);
  77.         }finally {
  78.             semaphore.release(lock, "update");
  79.         }
  80.     }
  81.     private static void updateEngine(Statistic stat){

  82.         if(!TipoPdD.APPLICATIVA.equals(stat.getTipoPdD()) &&
  83.                 !TipoPdD.DELEGATA.equals(stat.getTipoPdD()) ){
  84.             return;
  85.         }
  86.        
  87.         // Check soglia temporale
  88.         if(StatisticsCollection.getStatisticsCollection().dataUltimoRefresh>0){
  89.             if((DateManager.getTimeMillis()-StatisticsCollection.getStatisticsCollection().dataUltimoRefresh)>StatisticsCollection.SOGLIA_TEMPORALE){
  90.                 StatisticsCollection.reset();
  91.             }
  92.         }
  93.         else{
  94.             // Inserisco data arrivo richiesta
  95.             StatisticsCollection.getStatisticsCollection().dataUltimoRefresh = stat.getTimeMillisIngressoRichiesta();
  96.             if(StatisticsCollection.getStatisticsCollection().dataUltimoRefresh<=0){
  97.                 StatisticsCollection.getStatisticsCollection().dataUltimoRefresh = DateManager.getTimeMillis();
  98.             }
  99.         }
  100.        
  101.         // Cechk soglia sulla dimensione
  102.         /**if(needResetForOverSizeLong()){
  103.             reset();
  104.         }*/
  105.        
  106.         // Contatori
  107.         StatisticsCollection.incrementCount(stat.getEsito(), stat.getProtocollo(), StatisticsCollection.statisticsCollection.statNumeroTransazioni);
  108.         if(TipoPdD.APPLICATIVA.equals(stat.getTipoPdD())){
  109.             StatisticsCollection.incrementCount(stat.getEsito(), stat.getProtocollo(), StatisticsCollection.statisticsCollection.statNumeroTransazioniPA);
  110.         }else if(TipoPdD.DELEGATA.equals(stat.getTipoPdD())){
  111.             StatisticsCollection.incrementCount(stat.getEsito(), stat.getProtocollo(), StatisticsCollection.statisticsCollection.statNumeroTransazioniPD);
  112.         }
  113.        
  114.         // Latenze
  115.         if(isEsitoOk(stat.getEsito(),stat.getProtocollo())){
  116.            
  117.             long latenzaTotale = -1;
  118.             if(stat.getTimeMillisUscitaRisposta()>0 && stat.getTimeMillisIngressoRichiesta()>0)
  119.                 latenzaTotale = stat.getTimeMillisUscitaRisposta() - stat.getTimeMillisIngressoRichiesta();
  120.             if(latenzaTotale>0){
  121.                 StatisticsCollection.computeLatenza(latenzaTotale, StatisticsCollection.statisticsCollection.statLatenzaAttraversamento);
  122.                 if(TipoPdD.APPLICATIVA.equals(stat.getTipoPdD())){
  123.                     StatisticsCollection.computeLatenza(latenzaTotale, StatisticsCollection.statisticsCollection.statLatenzaAttraversamentoPA);
  124.                 }else if(TipoPdD.DELEGATA.equals(stat.getTipoPdD())){
  125.                     StatisticsCollection.computeLatenza(latenzaTotale, StatisticsCollection.statisticsCollection.statLatenzaAttraversamentoPD);
  126.                 }  
  127.             }
  128.            
  129.             long latenzaRichiesta = -1;
  130.             if(stat.getTimeMillisUscitaRichiesta()>0 && stat.getTimeMillisIngressoRichiesta()>0)
  131.                 latenzaRichiesta = stat.getTimeMillisUscitaRichiesta() - stat.getTimeMillisIngressoRichiesta();
  132.             if(latenzaRichiesta>0){
  133.                 StatisticsCollection.computeLatenza(latenzaRichiesta, StatisticsCollection.statisticsCollection.statLatenzaAttraversamentoRequest);
  134.                 if(TipoPdD.APPLICATIVA.equals(stat.getTipoPdD())){
  135.                     StatisticsCollection.computeLatenza(latenzaRichiesta, StatisticsCollection.statisticsCollection.statLatenzaAttraversamentoPARequest);
  136.                 }else if(TipoPdD.DELEGATA.equals(stat.getTipoPdD())){
  137.                     StatisticsCollection.computeLatenza(latenzaRichiesta, StatisticsCollection.statisticsCollection.statLatenzaAttraversamentoPDRequest);
  138.                 }  
  139.             }
  140.            
  141.             long latenzaRisposta = -1;
  142.             if(stat.getTimeMillisUscitaRisposta()>0 && stat.getTimeMillisIngressoRisposta()>0)
  143.                 latenzaRisposta = stat.getTimeMillisUscitaRisposta() - stat.getTimeMillisIngressoRisposta();
  144.             if(latenzaRisposta>0){
  145.                 StatisticsCollection.computeLatenza(latenzaRisposta, StatisticsCollection.statisticsCollection.statLatenzaAttraversamentoResponse);
  146.                 if(TipoPdD.APPLICATIVA.equals(stat.getTipoPdD())){
  147.                     StatisticsCollection.computeLatenza(latenzaRisposta, StatisticsCollection.statisticsCollection.statLatenzaAttraversamentoPAResponse);
  148.                 }else if(TipoPdD.DELEGATA.equals(stat.getTipoPdD())){
  149.                     StatisticsCollection.computeLatenza(latenzaRisposta, StatisticsCollection.statisticsCollection.statLatenzaAttraversamentoPDResponse);
  150.                 }  
  151.             }
  152.                
  153.         }
  154.        
  155.        
  156.         // Dimensioni
  157.        
  158.         long inRequestSize = stat.getDimensioneIngressoRichiesta();
  159.         if(inRequestSize>0){
  160.             StatisticsCollection.computeDimensione(inRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggio);
  161.             StatisticsCollection.computeDimensione(inRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioInRequest);
  162.             if(TipoPdD.APPLICATIVA.equals(stat.getTipoPdD())){
  163.                 StatisticsCollection.computeDimensione(inRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPA);
  164.                 StatisticsCollection.computeDimensione(inRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPAInRequest);
  165.             }else if(TipoPdD.DELEGATA.equals(stat.getTipoPdD())){
  166.                 StatisticsCollection.computeDimensione(inRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPD);
  167.                 StatisticsCollection.computeDimensione(inRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPDInRequest);
  168.             }
  169.         }
  170.        
  171.         long outRequestSize = stat.getDimensioneUscitaRichiesta();
  172.         if(outRequestSize>0){
  173.             StatisticsCollection.computeDimensione(outRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggio);
  174.             StatisticsCollection.computeDimensione(outRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioOutRequest);
  175.             if(TipoPdD.APPLICATIVA.equals(stat.getTipoPdD())){
  176.                 StatisticsCollection.computeDimensione(outRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPA);
  177.                 StatisticsCollection.computeDimensione(outRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPAOutRequest);
  178.             }else if(TipoPdD.DELEGATA.equals(stat.getTipoPdD())){
  179.                 StatisticsCollection.computeDimensione(outRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPD);
  180.                 StatisticsCollection.computeDimensione(outRequestSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPDOutRequest);
  181.             }
  182.         }
  183.        
  184.         long inResponseSize = stat.getDimensioneIngressoRisposta();
  185.         if(inResponseSize>0){
  186.             StatisticsCollection.computeDimensione(inResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggio);
  187.             StatisticsCollection.computeDimensione(inResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioInResponse);
  188.             if(TipoPdD.APPLICATIVA.equals(stat.getTipoPdD())){
  189.                 StatisticsCollection.computeDimensione(inResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPA);
  190.                 StatisticsCollection.computeDimensione(inResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPAInResponse);
  191.             }else if(TipoPdD.DELEGATA.equals(stat.getTipoPdD())){
  192.                 StatisticsCollection.computeDimensione(inResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPD);
  193.                 StatisticsCollection.computeDimensione(inResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPDInResponse);
  194.             }
  195.         }
  196.        
  197.         long outResponseSize = stat.getDimensioneUscitaRisposta();
  198.         if(outResponseSize>0){
  199.             StatisticsCollection.computeDimensione(outResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggio);
  200.             StatisticsCollection.computeDimensione(outResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioOutResponse);
  201.             if(TipoPdD.APPLICATIVA.equals(stat.getTipoPdD())){
  202.                 StatisticsCollection.computeDimensione(outResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPA);
  203.                 StatisticsCollection.computeDimensione(outResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPAOutResponse);
  204.             }else if(TipoPdD.DELEGATA.equals(stat.getTipoPdD())){
  205.                 StatisticsCollection.computeDimensione(outResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPD);
  206.                 StatisticsCollection.computeDimensione(outResponseSize, StatisticsCollection.statisticsCollection.statDimensioneMessaggioPDOutResponse);
  207.             }
  208.         }
  209.     }
  210.    
  211.    
  212.     @SuppressWarnings("unused")
  213.     private static boolean needResetForOverSizeLong(){
  214.        
  215.         if(StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamento.tmp_latenzaMediaAttraversamento_sumLatenze>StatisticsCollection.SOGLIA_DIMENSIONE){
  216.             return true;
  217.         }
  218.         if(StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoRequest.tmp_latenzaMediaAttraversamento_sumLatenze>StatisticsCollection.SOGLIA_DIMENSIONE){
  219.             return true;
  220.         }
  221.         if(StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoResponse.tmp_latenzaMediaAttraversamento_sumLatenze>StatisticsCollection.SOGLIA_DIMENSIONE){
  222.             return true;
  223.         }
  224.        
  225.         if(StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPD.tmp_latenzaMediaAttraversamento_sumLatenze>StatisticsCollection.SOGLIA_DIMENSIONE){
  226.             return true;
  227.         }
  228.         if(StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPDRequest.tmp_latenzaMediaAttraversamento_sumLatenze>StatisticsCollection.SOGLIA_DIMENSIONE){
  229.             return true;
  230.         }
  231.         if(StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPDResponse.tmp_latenzaMediaAttraversamento_sumLatenze>StatisticsCollection.SOGLIA_DIMENSIONE){
  232.             return true;
  233.         }
  234.        
  235.         if(StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPA.tmp_latenzaMediaAttraversamento_sumLatenze>StatisticsCollection.SOGLIA_DIMENSIONE){
  236.             return true;
  237.         }
  238.         if(StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPARequest.tmp_latenzaMediaAttraversamento_sumLatenze>StatisticsCollection.SOGLIA_DIMENSIONE){
  239.             return true;
  240.         }
  241.         if(StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPAResponse.tmp_latenzaMediaAttraversamento_sumLatenze>StatisticsCollection.SOGLIA_DIMENSIONE){
  242.             return true;
  243.         }

  244.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggio.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  245.             return true;
  246.         }
  247.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioInRequest.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  248.             return true;
  249.         }
  250.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioOutRequest.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  251.             return true;
  252.         }
  253.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioInResponse.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  254.             return true;
  255.         }
  256.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioOutResponse.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  257.             return true;
  258.         }
  259.        
  260.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPD.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  261.             return true;
  262.         }
  263.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPDInRequest.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  264.             return true;
  265.         }
  266.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPDOutRequest.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  267.             return true;
  268.         }
  269.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPDInResponse.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  270.             return true;
  271.         }
  272.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPDOutResponse.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  273.             return true;
  274.         }

  275.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPA.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  276.             return true;
  277.         }
  278.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPAInRequest.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  279.             return true;
  280.         }
  281.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPAOutRequest.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  282.             return true;
  283.         }
  284.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPAInResponse.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  285.             return true;
  286.         }
  287.         if(StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPAOutResponse.tmp_dimensioneMediaMessaggio_sumDimensioni>StatisticsCollection.SOGLIA_DIMENSIONE){
  288.             return true;
  289.         }
  290.        
  291.         return false;
  292.        
  293.     }
  294.    
  295.    
  296.     public static void reset(){
  297.        
  298.         StatisticsCollection.getStatisticsCollection().dataUltimoRefresh = -1;
  299.        
  300.         StatisticsCollection.getStatisticsCollection().statNumeroTransazioni = new StatisticCount();
  301.         StatisticsCollection.getStatisticsCollection().statNumeroTransazioniPD = new StatisticCount();
  302.         StatisticsCollection.getStatisticsCollection().statNumeroTransazioniPA = new StatisticCount();
  303.        
  304.         StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamento = new StatisticTime();
  305.         StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoRequest = new StatisticTime();
  306.         StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoResponse = new StatisticTime();
  307.         StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPD = new StatisticTime();
  308.         StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPDRequest = new StatisticTime();
  309.         StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPDResponse = new StatisticTime();
  310.         StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPA = new StatisticTime();
  311.         StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPARequest = new StatisticTime();
  312.         StatisticsCollection.getStatisticsCollection().statLatenzaAttraversamentoPAResponse = new StatisticTime();
  313.        
  314.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggio = new StatisticSize();
  315.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioInRequest = new StatisticSize();
  316.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioOutRequest = new StatisticSize();
  317.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioInResponse = new StatisticSize();
  318.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioOutResponse = new StatisticSize();
  319.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioResponse = new StatisticSize();
  320.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPD = new StatisticSize();
  321.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPDInRequest = new StatisticSize();
  322.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPDOutRequest = new StatisticSize();
  323.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPDInResponse = new StatisticSize();
  324.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPDOutResponse = new StatisticSize();
  325.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPA = new StatisticSize();
  326.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPAInRequest = new StatisticSize();
  327.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPAOutRequest = new StatisticSize();
  328.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPAInResponse = new StatisticSize();
  329.         StatisticsCollection.getStatisticsCollection().statDimensioneMessaggioPAOutResponse = new StatisticSize();
  330.     }
  331.        
  332.     private static void incrementCount(EsitoTransazione esito,IProtocolFactory<?> protocollo, StatisticCount statCount){
  333.         statCount.numeroTransazioni++;
  334.         if(isEsitoOk(esito,protocollo)){
  335.             statCount.numeroTransazioni_esitoOK++;
  336.         }else{
  337.             statCount.numeroTransazioni_esitoErrore++;
  338.         }
  339.     }
  340.    
  341.     private static void computeLatenza(long latenza,StatisticTime statTime){
  342.        
  343.         // Minima
  344.         if(statTime.latenzaMinimaAttraversamento<=0 || latenza<statTime.latenzaMinimaAttraversamento)
  345.             statTime.latenzaMinimaAttraversamento = latenza;
  346.        
  347.         // Massima
  348.         if(latenza>statTime.latenzaMassimaAttraversamento)
  349.             statTime.latenzaMassimaAttraversamento = latenza;
  350.        
  351.         // Media
  352.         statTime.tmp_latenzaMediaAttraversamento_sumLatenze+=latenza;
  353.         statTime.tmp_latenzaMediaAttraversamento_countTransazioni++;
  354.         statTime.latenzaMediaAttraversamento = statTime.tmp_latenzaMediaAttraversamento_sumLatenze/statTime.tmp_latenzaMediaAttraversamento_countTransazioni;
  355.         // Effettuo refresh nel controllo iniziale, almeno tutti i dati sono consistenti rispetto all'intervallo temporale
  356. /**     if(statTime.tmp_latenzaMediaAttraversamento_sumLatenze>SOGLIA_DIMENSIONE){
  357. //          // azzero temporanei
  358. //          statTime.tmp_latenzaMediaAttraversamento_sumLatenze=statTime.tmp_latenzaMediaAttraversamento_sumLatenze;
  359. //          statTime.tmp_latenzaMediaAttraversamento_countTransazioni=1;
  360. //      }*/
  361.     }
  362.    
  363.    
  364.    
  365.     private static void computeDimensione(long dimensione,StatisticSize statSize){
  366.        
  367.         // Minima
  368.         if(statSize.dimensioneMinimaMessaggio<=0 || dimensione<statSize.dimensioneMinimaMessaggio)
  369.             statSize.dimensioneMinimaMessaggio = dimensione;
  370.        
  371.         // Massima
  372.         if(dimensione>statSize.dimensioneMassimaMessaggio)
  373.             statSize.dimensioneMassimaMessaggio = dimensione;
  374.        
  375.         // Media
  376.         statSize.tmp_dimensioneMediaMessaggio_sumDimensioni+=dimensione;
  377.         statSize.tmp_dimensioneMediaMessaggio_countTransazioni++;
  378.         statSize.dimensioneMediaMessaggio = statSize.tmp_dimensioneMediaMessaggio_sumDimensioni/statSize.tmp_dimensioneMediaMessaggio_countTransazioni;
  379.         // Effettuo refresh nel controllo iniziale, almeno tutti i dati sono consistenti rispetto all'intervallo temporale
  380. /**     if(statSize.tmp_dimensioneMediaMessaggio_sumDimensioni>SOGLIA_DIMENSIONE){
  381. //          // azzero temporanei
  382. //          statSize.tmp_dimensioneMediaMessaggio_sumDimensioni=statSize.dimensioneMediaMessaggio;
  383. //          statSize.tmp_dimensioneMediaMessaggio_countTransazioni=1;
  384. //      }*/
  385.     }
  386.    
  387.    
  388.    
  389.     /* BEAN */
  390.    
  391.     long dataUltimoRefresh = -1;
  392.    
  393.     StatisticCount statNumeroTransazioni = new StatisticCount();
  394.     StatisticCount statNumeroTransazioniPD = new StatisticCount();
  395.     StatisticCount statNumeroTransazioniPA = new StatisticCount();
  396.    
  397.     StatisticTime statLatenzaAttraversamento = new StatisticTime();
  398.     StatisticTime statLatenzaAttraversamentoRequest = new StatisticTime();
  399.     StatisticTime statLatenzaAttraversamentoResponse = new StatisticTime();
  400.     StatisticTime statLatenzaAttraversamentoPD = new StatisticTime();
  401.     StatisticTime statLatenzaAttraversamentoPDRequest = new StatisticTime();
  402.     StatisticTime statLatenzaAttraversamentoPDResponse = new StatisticTime();
  403.     StatisticTime statLatenzaAttraversamentoPA = new StatisticTime();
  404.     StatisticTime statLatenzaAttraversamentoPARequest = new StatisticTime();
  405.     StatisticTime statLatenzaAttraversamentoPAResponse = new StatisticTime();
  406.    
  407.     StatisticSize statDimensioneMessaggio = new StatisticSize();
  408.     StatisticSize statDimensioneMessaggioInRequest = new StatisticSize();
  409.     StatisticSize statDimensioneMessaggioOutRequest = new StatisticSize();
  410.     StatisticSize statDimensioneMessaggioInResponse = new StatisticSize();
  411.     StatisticSize statDimensioneMessaggioOutResponse = new StatisticSize();
  412.     StatisticSize statDimensioneMessaggioResponse = new StatisticSize();
  413.     StatisticSize statDimensioneMessaggioPD = new StatisticSize();
  414.     StatisticSize statDimensioneMessaggioPDInRequest = new StatisticSize();
  415.     StatisticSize statDimensioneMessaggioPDOutRequest = new StatisticSize();
  416.     StatisticSize statDimensioneMessaggioPDInResponse = new StatisticSize();
  417.     StatisticSize statDimensioneMessaggioPDOutResponse = new StatisticSize();
  418.     StatisticSize statDimensioneMessaggioPA = new StatisticSize();
  419.     StatisticSize statDimensioneMessaggioPAInRequest = new StatisticSize();
  420.     StatisticSize statDimensioneMessaggioPAOutRequest = new StatisticSize();
  421.     StatisticSize statDimensioneMessaggioPAInResponse = new StatisticSize();
  422.     StatisticSize statDimensioneMessaggioPAOutResponse = new StatisticSize();
  423.    
  424.    
  425.     public StatisticSize getStatDimensioneMessaggio() {
  426.         return this.statDimensioneMessaggio;
  427.     }

  428.     public StatisticSize getStatDimensioneMessaggioInRequest() {
  429.         return this.statDimensioneMessaggioInRequest;
  430.     }

  431.     public StatisticSize getStatDimensioneMessaggioOutRequest() {
  432.         return this.statDimensioneMessaggioOutRequest;
  433.     }

  434.     public StatisticSize getStatDimensioneMessaggioInResponse() {
  435.         return this.statDimensioneMessaggioInResponse;
  436.     }

  437.     public StatisticSize getStatDimensioneMessaggioOutResponse() {
  438.         return this.statDimensioneMessaggioOutResponse;
  439.     }

  440.     public StatisticSize getStatDimensioneMessaggioResponse() {
  441.         return this.statDimensioneMessaggioResponse;
  442.     }

  443.     public StatisticSize getStatDimensioneMessaggioPD() {
  444.         return this.statDimensioneMessaggioPD;
  445.     }

  446.     public StatisticSize getStatDimensioneMessaggioPDInRequest() {
  447.         return this.statDimensioneMessaggioPDInRequest;
  448.     }

  449.     public StatisticSize getStatDimensioneMessaggioPDOutRequest() {
  450.         return this.statDimensioneMessaggioPDOutRequest;
  451.     }

  452.     public StatisticSize getStatDimensioneMessaggioPDInResponse() {
  453.         return this.statDimensioneMessaggioPDInResponse;
  454.     }

  455.     public StatisticSize getStatDimensioneMessaggioPDOutResponse() {
  456.         return this.statDimensioneMessaggioPDOutResponse;
  457.     }

  458.     public StatisticSize getStatDimensioneMessaggioPA() {
  459.         return this.statDimensioneMessaggioPA;
  460.     }

  461.     public StatisticSize getStatDimensioneMessaggioPAInRequest() {
  462.         return this.statDimensioneMessaggioPAInRequest;
  463.     }

  464.     public StatisticSize getStatDimensioneMessaggioPAOutRequest() {
  465.         return this.statDimensioneMessaggioPAOutRequest;
  466.     }

  467.     public StatisticSize getStatDimensioneMessaggioPAInResponse() {
  468.         return this.statDimensioneMessaggioPAInResponse;
  469.     }

  470.     public StatisticSize getStatDimensioneMessaggioPAOutResponse() {
  471.         return this.statDimensioneMessaggioPAOutResponse;
  472.     }

  473.     public StatisticCount getStatNumeroTransazioni() {
  474.         return this.statNumeroTransazioni;
  475.     }

  476.     public StatisticCount getStatNumeroTransazioniPD() {
  477.         return this.statNumeroTransazioniPD;
  478.     }

  479.     public StatisticCount getStatNumeroTransazioniPA() {
  480.         return this.statNumeroTransazioniPA;
  481.     }

  482.     public StatisticTime getStatLatenzaAttraversamento() {
  483.         return this.statLatenzaAttraversamento;
  484.     }

  485.     public StatisticTime getStatLatenzaAttraversamentoRequest() {
  486.         return this.statLatenzaAttraversamentoRequest;
  487.     }

  488.     public StatisticTime getStatLatenzaAttraversamentoResponse() {
  489.         return this.statLatenzaAttraversamentoResponse;
  490.     }

  491.     public StatisticTime getStatLatenzaAttraversamentoPD() {
  492.         return this.statLatenzaAttraversamentoPD;
  493.     }

  494.     public StatisticTime getStatLatenzaAttraversamentoPDRequest() {
  495.         return this.statLatenzaAttraversamentoPDRequest;
  496.     }

  497.     public StatisticTime getStatLatenzaAttraversamentoPDResponse() {
  498.         return this.statLatenzaAttraversamentoPDResponse;
  499.     }

  500.     public StatisticTime getStatLatenzaAttraversamentoPA() {
  501.         return this.statLatenzaAttraversamentoPA;
  502.     }

  503.     public StatisticTime getStatLatenzaAttraversamentoPARequest() {
  504.         return this.statLatenzaAttraversamentoPARequest;
  505.     }

  506.     public StatisticTime getStatLatenzaAttraversamentoPAResponse() {
  507.         return this.statLatenzaAttraversamentoPAResponse;
  508.     }

  509.     public long getDataUltimoRefresh() {
  510.         return this.dataUltimoRefresh;
  511.     }
  512.    
  513. }