StatisticsUtils.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.monitor.engine.statistic;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- import org.openspcoop2.core.constants.TipoPdD;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.plugins.utils.FilterUtils;
- import org.openspcoop2.core.statistiche.StatisticaContenuti;
- import org.openspcoop2.core.transazioni.Transazione;
- import org.openspcoop2.core.transazioni.constants.PddRuolo;
- import org.openspcoop2.core.transazioni.dao.ITransazioneServiceSearch;
- import org.openspcoop2.generic_project.beans.AliasTableComplexField;
- import org.openspcoop2.generic_project.beans.ComplexField;
- import org.openspcoop2.generic_project.beans.ConstantField;
- import org.openspcoop2.generic_project.beans.Function;
- import org.openspcoop2.generic_project.beans.FunctionField;
- import org.openspcoop2.generic_project.beans.IAliasTableField;
- import org.openspcoop2.generic_project.beans.IField;
- import org.openspcoop2.generic_project.beans.UnionExpression;
- import org.openspcoop2.generic_project.beans.UnixTimestampIntervalField;
- import org.openspcoop2.generic_project.exception.ExpressionException;
- import org.openspcoop2.generic_project.exception.ExpressionNotImplementedException;
- import org.openspcoop2.generic_project.expression.IExpression;
- import org.openspcoop2.generic_project.expression.impl.sql.ISQLFieldConverter;
- import org.openspcoop2.monitor.engine.constants.Costanti;
- import org.openspcoop2.monitor.engine.exceptions.EngineException;
- import org.openspcoop2.monitor.engine.transaction.TransactionContentUtils;
- import org.openspcoop2.monitor.engine.utils.ContentFormatter;
- import org.openspcoop2.monitor.sdk.statistic.StatisticFilterName;
- import org.openspcoop2.monitor.sdk.statistic.StatisticResourceFilter;
- import org.openspcoop2.utils.date.DateUtils;
- import org.openspcoop2.utils.sql.SQLQueryObjectException;
- /**
- * StatisticsUtils
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class StatisticsUtils {
-
- public static Long readLongValue(Map<String, Object> row, String alias){
- Object object = row.get(alias);
- if(object!=null){
- if(object instanceof org.apache.commons.lang.ObjectUtils.Null){
- return null;
- }
- else{
- return (Long) object;
- }
- }
- return null;
- }
-
- public static void setExpressionNotNullDate(ITransazioneServiceSearch transazioneSearchDAO, IExpression expr, Date data, Date dateNext, TipoPdD tipoPdD, StatisticBean stat,
- ISQLFieldConverter fieldConverter) throws Exception{
- StatisticsUtils.setExpressionEngine(transazioneSearchDAO, expr, data, dateNext, tipoPdD,
- true, false,
- stat, fieldConverter,
- false,
- null,null);
- }
- public static void setExpressionNullDate(ITransazioneServiceSearch transazioneSearchDAO, IExpression expr, Date data, Date dateNext, TipoPdD tipoPdD, StatisticBean stat,
- ISQLFieldConverter fieldConverter) throws Exception{
- StatisticsUtils.setExpressionEngine(transazioneSearchDAO, expr, data, dateNext, tipoPdD,
- false, true,
- stat, fieldConverter,
- false,
- null,null);
- }
- public static void setExpression(ITransazioneServiceSearch transazioneSearchDAO, IExpression expr, Date data, Date dateNext, TipoPdD tipoPdD, boolean setNotNullDate, StatisticBean stat,
- ISQLFieldConverter fieldConverter) throws Exception{
- StatisticsUtils.setExpressionEngine(transazioneSearchDAO, expr, data, dateNext, tipoPdD,
- setNotNullDate, false,
- stat, fieldConverter,
- false,
- null,null);
- }
- public static void setExpressionByStato(ITransazioneServiceSearch transazioneSearchDAO, IExpression expr, Date data, Date dateNext, TipoPdD tipoPdD, boolean setNotNullDate, StatisticBean stat,
- ISQLFieldConverter fieldConverter) throws Exception{
- StatisticsUtils.setExpressionEngine(transazioneSearchDAO, expr, data, dateNext, tipoPdD,
- setNotNullDate, false,
- stat, fieldConverter,
- true,
- null,null);
- }
- public static void setExpressionStatsPersonalizzate(ITransazioneServiceSearch transazioneSearchDAO, IExpression expr, Date data, Date dateNext, TipoPdD tipoPdD, boolean setNotNullDate, StatisticBean stat,
- ISQLFieldConverter fieldConverter,
- List<AliasFilter> aliases,
- String idRisorsa,
- StatisticResourceFilter ... risorseFiltri) throws Exception{
- StatisticsUtils.setExpressionEngine(transazioneSearchDAO, expr, data, dateNext, tipoPdD,
- setNotNullDate, false,
- stat, fieldConverter,
- false,
- aliases,idRisorsa,
- risorseFiltri);
- }
- private static void setExpressionEngine(ITransazioneServiceSearch transazioneSearchDAO, IExpression expr, Date data, Date dateNext, TipoPdD tipoPdD,
- boolean setNotNullDate, boolean setNullDate,
- StatisticBean stat, ISQLFieldConverter fieldConverter,
- boolean groupByStato,
- List<AliasFilter> aliases, String idRisorsa,
- StatisticResourceFilter ... risorseFiltri) throws Exception{
-
- expr.and();
-
- // indice
- //expr.between(Transazione.model().DATA_INGRESSO_RICHIESTA, data , dateNext); between is inclusive!
- expr.between(Transazione.model().DATA_INGRESSO_RICHIESTA, DateUtils.incredementDate1MsIf999(data) , dateNext);
- expr.isNotNull(Transazione.model().DATA_INGRESSO_RICHIESTA);
-
- if(TipoPdD.DELEGATA.equals(tipoPdD)){
- expr.equals(Transazione.model().PDD_RUOLO, PddRuolo.DELEGATA);
- }else{
- expr.equals(Transazione.model().PDD_RUOLO, PddRuolo.APPLICATIVA);
- }
- expr.isNotNull(Transazione.model().PDD_RUOLO);
-
- expr.isNotNull(Transazione.model().ESITO_CONTESTO);
-
- if(stat!=null){
- // condizioni di group by messe anche in equals
- // expr.equals(Transazione.model().PDD_CODICE,stat.getIdPorta());
- // expr.equals(Transazione.model().TIPO_SOGGETTO_FRUITORE, stat.getMittente()!=null ? stat.getMittente().getTipo() : null);
- // expr.equals(Transazione.model().NOME_SOGGETTO_FRUITORE, stat.getMittente()!=null ? stat.getMittente().getNome() : null);
- // expr.equals(Transazione.model().TIPO_SOGGETTO_EROGATORE, stat.getDestinatario()!=null ? stat.getDestinatario().getTipo() : null);
- // expr.equals(Transazione.model().NOME_SOGGETTO_EROGATORE, stat.getDestinatario()!=null ? stat.getDestinatario().getNome() : null);
- // expr.equals(Transazione.model().TIPO_SERVIZIO, stat.getTipoServizio());
- // expr.equals(Transazione.model().NOME_SERVIZIO, stat.getServizio());
- // expr.equals(Transazione.model().AZIONE, stat.getAzione());
- // Gestisco i possibili valori null con '-'.
- // Sono state prese le informazioni anche con null poichè senno non venivano contate nelle statistiche le transazioni che non possedevano info sui servizi. (es porta delegata non trovata)
- String pddCodice = stat.getIdPorta();
- StatisticsUtils.setCondition(expr, pddCodice, Transazione.model().PDD_CODICE);
- String tipoMittente = stat.getMittente()!=null ? stat.getMittente().getTipo() : null;
- StatisticsUtils.setCondition(expr, tipoMittente, Transazione.model().TIPO_SOGGETTO_FRUITORE);
- String nomeMittente = stat.getMittente()!=null ? stat.getMittente().getNome() : null;
- StatisticsUtils.setCondition(expr, nomeMittente, Transazione.model().NOME_SOGGETTO_FRUITORE);
- String tipoDestinatario = stat.getDestinatario()!=null ? stat.getDestinatario().getTipo() : null;
- StatisticsUtils.setCondition(expr, tipoDestinatario, Transazione.model().TIPO_SOGGETTO_EROGATORE);
- String nomeDestinatario = stat.getDestinatario()!=null ? stat.getDestinatario().getNome() : null;
- StatisticsUtils.setCondition(expr, nomeDestinatario, Transazione.model().NOME_SOGGETTO_EROGATORE);
- String tipoServizio = stat.getTipoServizio();
- StatisticsUtils.setCondition(expr, tipoServizio, Transazione.model().TIPO_SERVIZIO);
- String nomeServizio = stat.getServizio();
- StatisticsUtils.setCondition(expr, nomeServizio, Transazione.model().NOME_SERVIZIO);
- Integer versioneServizio = stat.getVersioneServizio();
- StatisticsUtils.setCondition(expr, versioneServizio, Transazione.model().VERSIONE_SERVIZIO);
- String azione = stat.getAzione();
- StatisticsUtils.setCondition(expr, azione, Transazione.model().AZIONE);
-
-
- // if(TipoPdD.DELEGATA.equals(tipoPdD)){
- // Nella consultazione delle statistiche si utilizzano sempre gli applicativi fruitori come informazione fornita.
- if(Costanti.SERVIZIO_APPLICATIVO_ANONIMO.equals(stat.getServizioApplicativo()) || stat.getServizioApplicativo()==null || Costanti.INFORMAZIONE_NON_DISPONIBILE.equals(stat.getServizioApplicativo())){
- expr.isNull(Transazione.model().SERVIZIO_APPLICATIVO_FRUITORE);
- }
- else{
- expr.equals(Transazione.model().SERVIZIO_APPLICATIVO_FRUITORE,stat.getServizioApplicativo());
- }
- // }else{
- // if(Costanti.SERVIZIO_APPLICATIVO_ANONIMO.equals(stat.getServizioApplicativo()) || stat.getServizioApplicativo()==null){
- // expr.isNull(Transazione.model().SERVIZIO_APPLICATIVO_EROGATORE);
- // }
- // else{
- // expr.equals(Transazione.model().SERVIZIO_APPLICATIVO_EROGATORE,stat.getServizioApplicativo());
- // }
- // }
-
- String trasportoMittente = stat.getTrasportoMittente();
- StatisticsUtils.setCondition(expr, trasportoMittente, Transazione.model().TRASPORTO_MITTENTE);
-
- String tokenIssuer = stat.getTokenIssuer();
- StatisticsUtils.setCondition(expr, tokenIssuer, Transazione.model().TOKEN_ISSUER);
- String tokenClientId = stat.getTokenClientId();
- StatisticsUtils.setCondition(expr, tokenClientId, Transazione.model().TOKEN_CLIENT_ID);
- String tokenSubject = stat.getTokenSubject();
- StatisticsUtils.setCondition(expr, tokenSubject, Transazione.model().TOKEN_SUBJECT);
- String tokenUsername = stat.getTokenUsername();
- StatisticsUtils.setCondition(expr, tokenUsername, Transazione.model().TOKEN_USERNAME);
- String tokenMail = stat.getTokenMail();
- StatisticsUtils.setCondition(expr, tokenMail, Transazione.model().TOKEN_MAIL);
-
- String clientAddress = stat.getClientAddress();
- StatisticsUtils.setCondition(expr, clientAddress, Transazione.model().CLIENT_ADDRESS);
-
- String gruppo = stat.getGruppo();
- StatisticsUtils.setCondition(expr, gruppo, Transazione.model().GRUPPI);
-
- String uriApi = stat.getApi();
- StatisticsUtils.setCondition(expr, uriApi, Transazione.model().URI_API);
-
- String clusterId = stat.getClusterId();
- StatisticsUtils.setCondition(expr, clusterId, Transazione.model().CLUSTER_ID);
-
- expr.equals(Transazione.model().ESITO, stat.getEsito()!=null ? stat.getEsito() : -1);
-
- String esitoContesto = stat.getEsitoContesto();
- StatisticsUtils.setCondition(expr, esitoContesto, Transazione.model().ESITO_CONTESTO);
- }
- else{
- // Gestisco i possibili valori null con '-'.
- // Sono state prese le informazioni anche con null poichè senno non venivano contate nelle statistiche le transazioni che non possedevano info sui servizi. (es porta delegata non trovata)
- // expr.isNotNull(Transazione.model().PDD_CODICE);
- // expr.isNotNull(Transazione.model().TIPO_SOGGETTO_FRUITORE);
- // expr.isNotNull(Transazione.model().NOME_SOGGETTO_FRUITORE);
- // expr.isNotNull(Transazione.model().TIPO_SOGGETTO_EROGATORE);
- // expr.isNotNull(Transazione.model().NOME_SOGGETTO_EROGATORE);
- // expr.isNotNull(Transazione.model().TIPO_SERVIZIO);
- // expr.isNotNull(Transazione.model().NOME_SERVIZIO);
- // expr.isNotNull(Transazione.model().VERSIONE_SERVIZIO);
- }
-
- if(setNotNullDate){
- expr.isNotNull(Transazione.model().DATA_USCITA_RICHIESTA);
- expr.isNotNull(Transazione.model().DATA_INGRESSO_RISPOSTA);
- expr.isNotNull(Transazione.model().DATA_USCITA_RISPOSTA);
- }
- else if(setNullDate) {
- IExpression exprNullDate = transazioneSearchDAO.newExpression();
- exprNullDate.isNotNull(Transazione.model().DATA_USCITA_RICHIESTA);
- exprNullDate.isNotNull(Transazione.model().DATA_INGRESSO_RISPOSTA);
- exprNullDate.isNotNull(Transazione.model().DATA_USCITA_RISPOSTA);
- exprNullDate.and();
- expr.not(exprNullDate);
- }
- if(idRisorsa!=null){
- expr.equals(Transazione.model().DUMP_MESSAGGIO.CONTENUTO.NOME,idRisorsa);
- }
- if(risorseFiltri!=null && risorseFiltri.length>0){
- for (int i = 0; i < risorseFiltri.length; i++) {
- AliasFilter af = new AliasFilter();
- IAliasTableField atf = new AliasTableComplexField((ComplexField)Transazione.model().DUMP_MESSAGGIO.CONTENUTO.NOME, FilterUtils.getNextAliasStatisticsTable());
- //System.out.println("FILTRO["+i+"]= ("+af.getAliasTable()+") "+risorseFiltri[i]);
- af.setNomeFiltro(atf);
- af.setStatisticFilterName(risorseFiltri[i].getStatisticFilterName());
- aliases.add(af);
- expr.equals(atf,risorseFiltri[i].getResourceID());
- }
- }
-
- // ** GROUP BY **
- expr.addGroupBy(Transazione.model().PDD_RUOLO);
- expr.addGroupBy(Transazione.model().PDD_CODICE);
- expr.addGroupBy(Transazione.model().TIPO_SOGGETTO_FRUITORE);
- expr.addGroupBy(Transazione.model().NOME_SOGGETTO_FRUITORE);
- expr.addGroupBy(Transazione.model().TIPO_SOGGETTO_EROGATORE);
- expr.addGroupBy(Transazione.model().NOME_SOGGETTO_EROGATORE);
- expr.addGroupBy(Transazione.model().TIPO_SERVIZIO);
- expr.addGroupBy(Transazione.model().NOME_SERVIZIO);
- expr.addGroupBy(Transazione.model().VERSIONE_SERVIZIO);
- expr.addGroupBy(Transazione.model().AZIONE);
- // Nella consultazione delle statistiche si utilizzano sempre gli applicativi fruitori come informazione fornita.
- // if(TipoPdD.DELEGATA.equals(tipoPdD)){
- expr.addGroupBy(Transazione.model().SERVIZIO_APPLICATIVO_FRUITORE);
- // }else{
- // expr.addGroupBy(Transazione.model().SERVIZIO_APPLICATIVO_EROGATORE);
- // }
- expr.addGroupBy(Transazione.model().TRASPORTO_MITTENTE);
- expr.addGroupBy(Transazione.model().TOKEN_ISSUER);
- expr.addGroupBy(Transazione.model().TOKEN_CLIENT_ID);
- expr.addGroupBy(Transazione.model().TOKEN_SUBJECT);
- expr.addGroupBy(Transazione.model().TOKEN_USERNAME);
- expr.addGroupBy(Transazione.model().TOKEN_MAIL);
- expr.addGroupBy(Transazione.model().CLIENT_ADDRESS);
- expr.addGroupBy(Transazione.model().GRUPPI);
- expr.addGroupBy(Transazione.model().URI_API);
- expr.addGroupBy(Transazione.model().CLUSTER_ID);
- expr.addGroupBy(Transazione.model().ESITO);
- expr.addGroupBy(Transazione.model().ESITO_CONTESTO);
- if(groupByStato){
- expr.addGroupBy(Transazione.model().STATO);
- }
- if(idRisorsa!=null){
- expr.addGroupBy(Transazione.model().DUMP_MESSAGGIO.CONTENUTO.NOME);
- expr.addGroupBy(Transazione.model().DUMP_MESSAGGIO.CONTENUTO.VALORE);
- }
- if(aliases!=null && aliases.size()>0){
- for (AliasFilter aliasFilter : aliases) {
- IAliasTableField afName = aliasFilter.getNomeFiltro();
- expr.addGroupBy(afName);
-
- String tableAlias = afName.getAliasTable();
- IAliasTableField afValue = new AliasTableComplexField((ComplexField)Transazione.model().DUMP_MESSAGGIO.CONTENUTO.VALORE, tableAlias);
- aliasFilter.setValoreFiltro(afValue);
-
- expr.addGroupBy(afValue);
- }
- }
- }
-
- private static void setCondition(IExpression expr, String value,IField field) throws ExpressionNotImplementedException, ExpressionException{
- if(value==null || "".equals(value) || Costanti.INFORMAZIONE_NON_DISPONIBILE.equals(value)){
- expr.isNull(field);
- }
- else{
- expr.equals(field,value);
- }
- }
-
- private static void setCondition(IExpression expr, Integer value,IField field) throws ExpressionNotImplementedException, ExpressionException{
- if(value==null || value.intValue() == Costanti.INFORMAZIONE_VERSIONE_NON_DISPONIBILE.intValue()){
- expr.equals(field,Costanti.INFORMAZIONE_VERSIONE_NON_DISPONIBILE);
- }
- else{
- expr.equals(field,value);
- }
- }
-
- public static void addSelectUnionField(UnionExpression expr, ISQLFieldConverter fieldConverter) throws Exception {
- addSelectUnionField(expr, fieldConverter,
- false,
- null, null);
- }
- public static void addSelectUnionField(UnionExpression expr, ISQLFieldConverter fieldConverter,
- boolean groupByStato,
- List<AliasFilter> aliases, String idRisorsa) throws Exception {
- expr.addSelectField(Transazione.model().PDD_RUOLO, fieldConverter.toColumn(Transazione.model().PDD_RUOLO, false));
- expr.addSelectField(Transazione.model().PDD_CODICE, fieldConverter.toColumn(Transazione.model().PDD_CODICE, false));
- expr.addSelectField(Transazione.model().TIPO_SOGGETTO_FRUITORE, fieldConverter.toColumn(Transazione.model().TIPO_SOGGETTO_FRUITORE, false));
- expr.addSelectField(Transazione.model().NOME_SOGGETTO_FRUITORE, fieldConverter.toColumn(Transazione.model().NOME_SOGGETTO_FRUITORE, false));
- expr.addSelectField(Transazione.model().TIPO_SOGGETTO_EROGATORE, fieldConverter.toColumn(Transazione.model().TIPO_SOGGETTO_EROGATORE, false));
- expr.addSelectField(Transazione.model().NOME_SOGGETTO_EROGATORE, fieldConverter.toColumn(Transazione.model().NOME_SOGGETTO_EROGATORE, false));
- expr.addSelectField(Transazione.model().TIPO_SERVIZIO, fieldConverter.toColumn(Transazione.model().TIPO_SERVIZIO, false));
- expr.addSelectField(Transazione.model().NOME_SERVIZIO, fieldConverter.toColumn(Transazione.model().NOME_SERVIZIO, false));
- expr.addSelectField(Transazione.model().VERSIONE_SERVIZIO, fieldConverter.toColumn(Transazione.model().VERSIONE_SERVIZIO, false));
- expr.addSelectField(Transazione.model().AZIONE, fieldConverter.toColumn(Transazione.model().AZIONE, false));
- // Nella consultazione delle statistiche si utilizzano sempre gli applicativi fruitori come informazione fornita.
- // if(TipoPdD.DELEGATA.equals(tipoPdD)){
- expr.addSelectField(Transazione.model().SERVIZIO_APPLICATIVO_FRUITORE, fieldConverter.toColumn(Transazione.model().SERVIZIO_APPLICATIVO_FRUITORE, false));
- // }else{
- // expr.addSelectField(Transazione.model().SERVIZIO_APPLICATIVO_EROGATORE, fieldConverter.toColumn(Transazione.model().SERVIZIO_APPLICATIVO_EROGATORE, false));
- // }
- expr.addSelectField(Transazione.model().TRASPORTO_MITTENTE, fieldConverter.toColumn(Transazione.model().TRASPORTO_MITTENTE, false));
- expr.addSelectField(Transazione.model().TOKEN_ISSUER, fieldConverter.toColumn(Transazione.model().TOKEN_ISSUER, false));
- expr.addSelectField(Transazione.model().TOKEN_CLIENT_ID, fieldConverter.toColumn(Transazione.model().TOKEN_CLIENT_ID, false));
- expr.addSelectField(Transazione.model().TOKEN_SUBJECT, fieldConverter.toColumn(Transazione.model().TOKEN_SUBJECT, false));
- expr.addSelectField(Transazione.model().TOKEN_USERNAME, fieldConverter.toColumn(Transazione.model().TOKEN_USERNAME, false));
- expr.addSelectField(Transazione.model().TOKEN_MAIL, fieldConverter.toColumn(Transazione.model().TOKEN_MAIL, false));
- expr.addSelectField(Transazione.model().CLIENT_ADDRESS, fieldConverter.toColumn(Transazione.model().CLIENT_ADDRESS, false));
- expr.addSelectField(Transazione.model().GRUPPI, fieldConverter.toColumn(Transazione.model().GRUPPI, false));
- expr.addSelectField(Transazione.model().URI_API, fieldConverter.toColumn(Transazione.model().URI_API, false));
- expr.addSelectField(Transazione.model().CLUSTER_ID, fieldConverter.toColumn(Transazione.model().CLUSTER_ID, false));
- expr.addSelectField(Transazione.model().ESITO, fieldConverter.toColumn(Transazione.model().ESITO, false));
- expr.addSelectField(Transazione.model().ESITO_CONTESTO, fieldConverter.toColumn(Transazione.model().ESITO_CONTESTO, false));
- if(groupByStato){
- expr.addSelectField(Transazione.model().STATO, fieldConverter.toColumn(Transazione.model().STATO, false));
- }
- if(idRisorsa!=null){
- expr.addSelectField(Transazione.model().DUMP_MESSAGGIO.CONTENUTO.NOME, fieldConverter.toColumn(Transazione.model().DUMP_MESSAGGIO.CONTENUTO.NOME, false));
- expr.addSelectField(Transazione.model().DUMP_MESSAGGIO.CONTENUTO.VALORE, fieldConverter.toColumn(Transazione.model().DUMP_MESSAGGIO.CONTENUTO.VALORE, false));
- }
- if(aliases!=null && aliases.size()>0){
- for (AliasFilter aliasFilter : aliases) {
- IAliasTableField afName = aliasFilter.getNomeFiltro();
- expr.addSelectField(afName, afName.getFieldName());
-
- String tableAlias = afName.getAliasTable();
- IAliasTableField afValue = new AliasTableComplexField((ComplexField)Transazione.model().DUMP_MESSAGGIO.CONTENUTO.VALORE, tableAlias);
- aliasFilter.setValoreFiltro(afValue);
-
- expr.addSelectField(afValue, afValue.getFieldName());
- }
- }
- }
-
- public static void addSelectFieldCountTransaction(List<FunctionField> selectList) throws ExpressionException{
-
- // Numero Transazioni
- FunctionField fCount = new FunctionField(
- //Transazione.model().ID_TRANSAZIONE,
- Transazione.model().DATA_INGRESSO_RICHIESTA, // piu' efficiente
- //Function.COUNT_DISTINCT,
- Function.COUNT,
- "richieste");
- selectList.add(fCount);
-
- }
-
- public static void addSelectFieldSizeTransaction(TipoPdD tipoPdD,List<FunctionField> selectList) throws ExpressionException{
-
- // Dimensione Transazioni
- FunctionField fSum1 = null, fSum2= null, fSum3= null, fSum4= null;
-
- fSum1 = new FunctionField(Transazione.model().RICHIESTA_INGRESSO_BYTES, Function.SUM, "message_bytes_in_richiesta");
- fSum2 = new FunctionField(Transazione.model().RICHIESTA_USCITA_BYTES, Function.SUM, "message_bytes_out_richiesta");
- fSum3 = new FunctionField(Transazione.model().RISPOSTA_INGRESSO_BYTES, Function.SUM, "message_bytes_in_risposta");
- fSum4 = new FunctionField(Transazione.model().RISPOSTA_USCITA_BYTES, Function.SUM, "message_bytes_out_risposta");
- selectList.add(fSum1);
- selectList.add(fSum2);
- selectList.add(fSum3);
- selectList.add(fSum4);
- }
-
- public static void addSelectFunctionFieldLatencyTransaction(TipoPdD tipoPdD,ISQLFieldConverter fieldConverter,
- List<FunctionField> selectFunctionList) throws ExpressionException, SQLQueryObjectException{
- _addSelectFieldLatencyTransaction(tipoPdD, fieldConverter, selectFunctionList, null);
- }
- public static void addSelectConstantFieldLatencyTransaction(TipoPdD tipoPdD,ISQLFieldConverter fieldConverter,
- List<ConstantField> selectConstantList) throws ExpressionException, SQLQueryObjectException{
- _addSelectFieldLatencyTransaction(tipoPdD, fieldConverter, null, selectConstantList);
- }
- private static void _addSelectFieldLatencyTransaction(TipoPdD tipoPdD,ISQLFieldConverter fieldConverter,
- List<FunctionField> selectFunctionList,
- List<ConstantField> selectConstantList) throws ExpressionException, SQLQueryObjectException{
-
- if(selectFunctionList!=null) {
-
- // Latenza Totale
- UnixTimestampIntervalField latenzaTotale = new UnixTimestampIntervalField("unix_latenza_totale", fieldConverter, true,
- Transazione.model().DATA_USCITA_RISPOSTA, Transazione.model().DATA_INGRESSO_RICHIESTA);
- FunctionField fLatenzaTotaleAvg = new FunctionField(latenzaTotale, Function.AVG, "latenza_totale");
- selectFunctionList.add(fLatenzaTotaleAvg);
-
- // Latenza Servizio
- UnixTimestampIntervalField latenzaServizio = new UnixTimestampIntervalField("unix_latenza_servizio", fieldConverter, true,
- Transazione.model().DATA_INGRESSO_RISPOSTA, Transazione.model().DATA_USCITA_RICHIESTA);
- FunctionField fLatenzaServizioAvg = new FunctionField(latenzaServizio, Function.AVG, "latenza_servizio");
- selectFunctionList.add(fLatenzaServizioAvg);
-
- // Latenza Gateway Richiesta
- UnixTimestampIntervalField latenzaPortaRichiesta = new UnixTimestampIntervalField("unix_latenza_richiesta", fieldConverter, true,
- Transazione.model().DATA_USCITA_RICHIESTA, Transazione.model().DATA_INGRESSO_RICHIESTA);
- FunctionField fLatenzaPortaRichiestaAvg = new FunctionField(latenzaPortaRichiesta, Function.AVG, "latenza_porta_richiesta");
- selectFunctionList.add(fLatenzaPortaRichiestaAvg);
-
- // Latenza Gateway Risposta
- UnixTimestampIntervalField latenzaPortaRisposta = new UnixTimestampIntervalField("unix_latenza_risposta", fieldConverter, true,
- Transazione.model().DATA_USCITA_RISPOSTA, Transazione.model().DATA_INGRESSO_RISPOSTA);
- FunctionField fLatenzaPortaRispostaAvg = new FunctionField(latenzaPortaRisposta, Function.AVG, "latenza_porta_risposta");
- selectFunctionList.add(fLatenzaPortaRispostaAvg);
-
- }
- else {
-
- // Latenza Totale
- ConstantField latenzaTotale = new ConstantField("latenza_totale", Costanti.INFORMAZIONE_LATENZA_NON_DISPONIBILE, Long.class);
- selectConstantList.add(latenzaTotale);
-
- // Latenza Servizio
- ConstantField latenzaServizio = new ConstantField("latenza_servizio", Costanti.INFORMAZIONE_LATENZA_NON_DISPONIBILE, Long.class);
- selectConstantList.add(latenzaServizio);
-
- // Latenza Gateway Richiesta
- ConstantField latenzaPortaRichiesta = new ConstantField("latenza_porta_richiesta", Costanti.INFORMAZIONE_LATENZA_NON_DISPONIBILE, Long.class);
- selectConstantList.add(latenzaPortaRichiesta);
-
- // Latenza Gateway Risposta
- ConstantField latenzaPortaRisposta = new ConstantField("latenza_porta_risposta", Costanti.INFORMAZIONE_LATENZA_NON_DISPONIBILE, Long.class);
- selectConstantList.add(latenzaPortaRisposta);
- }
-
- }
-
- public static StatisticBean readStatisticBean(StatisticBean stat,Map<String, Object> row, ISQLFieldConverter fieldConverter, boolean useFieldConverter) throws ExpressionException{
-
- stat.setIdPorta(StatisticsUtils.getValueFromMap(Transazione.model().PDD_CODICE,row,fieldConverter,useFieldConverter));
- String TipoPortaS = StatisticsUtils.getValueFromMap(Transazione.model().PDD_RUOLO,row,fieldConverter,useFieldConverter);
- TipoPdD tipo = TipoPdD.toTipoPdD(TipoPortaS);
- stat.setTipoPorta(tipo);
-
- /*
- String sa= null;
- Object saObject = null;
- // Nella consultazione delle statistiche si utilizzano sempre gli applicativi fruitori come informazione fornita.
- // if(tipo.equals(TipoPdD.DELEGATA)){
- saObject = row.get(Transazione.model().SERVIZIO_APPLICATIVO_FRUITORE.getFieldName());
- // }else{
- // saObject = row.get(Transazione.model().SERVIZIO_APPLICATIVO_EROGATORE.getFieldName());
- // }
- if(saObject!=null){
- if(saObject instanceof org.apache.commons.lang.ObjectUtils.Null){
- sa = null;
- }
- else{
- sa = (String) saObject;
- }
- }
- stat.setServizioApplicativo(sa != null ? sa : Costanti.SERVIZIO_APPLICATIVO_ANONIMO);
- */
- // Registrare nelle statistiche il valore 'Anonimo' porta ad avere informazioni non corrette nella distribuzione per applicativo sulle erogazioni.
- // L'errore avviene poichè è richiesto il group by sul nomeApplicativo, tipoSoggettoProprietario, nomeSoggettoProprietario
- // poichè un applicativo viene identificato univocamente se si considera sia il nome dell'applicativo che il soggetto proprietario.
- // Il group by sulle fruizioni, se si usa l'informazione anonima, non porta problemi perchè l'entry anonima sarà 1 sempre, essendo il soggetto fruitore uno solo (Soggetto locale impostato).
- // Il group by sulle erogazioni produrrà invece più entry anonime se si hanno più soggetto che la invocano senza un applicativo specifico.
- stat.setServizioApplicativo(StatisticsUtils.getValueFromMap(Transazione.model().SERVIZIO_APPLICATIVO_FRUITORE,row,fieldConverter,useFieldConverter));
-
- stat.setTrasportoMittente(StatisticsUtils.getValueFromMap(Transazione.model().TRASPORTO_MITTENTE,row,fieldConverter,useFieldConverter));
-
- stat.setTokenIssuer(StatisticsUtils.getValueFromMap(Transazione.model().TOKEN_ISSUER,row,fieldConverter,useFieldConverter));
- stat.setTokenClientId(StatisticsUtils.getValueFromMap(Transazione.model().TOKEN_CLIENT_ID,row,fieldConverter,useFieldConverter));
- stat.setTokenSubject(StatisticsUtils.getValueFromMap(Transazione.model().TOKEN_SUBJECT,row,fieldConverter,useFieldConverter));
- stat.setTokenUsername(StatisticsUtils.getValueFromMap(Transazione.model().TOKEN_USERNAME,row,fieldConverter,useFieldConverter));
- stat.setTokenMail(StatisticsUtils.getValueFromMap(Transazione.model().TOKEN_MAIL,row,fieldConverter,useFieldConverter));
-
- stat.setClientAddress(StatisticsUtils.getValueFromMap(Transazione.model().CLIENT_ADDRESS,row,fieldConverter,useFieldConverter));
-
- stat.setGruppo(StatisticsUtils.getValueFromMap(Transazione.model().GRUPPI,row,fieldConverter,useFieldConverter));
-
- stat.setApi(StatisticsUtils.getValueFromMap(Transazione.model().URI_API,row,fieldConverter,useFieldConverter));
-
- stat.setClusterId(StatisticsUtils.getValueFromMap(Transazione.model().CLUSTER_ID,row,fieldConverter,useFieldConverter));
-
- // stat.setMittente(new IDSoggetto((String)row.get(Transazione.model().TIPO_SOGGETTO_FRUITORE.getFieldName()), (String)row.get(Transazione.model().NOME_SOGGETTO_FRUITORE .getFieldName())));
- // stat.setDestinatario(new IDSoggetto((String)row.get(Transazione.model().TIPO_SOGGETTO_EROGATORE.getFieldName()),(String)row.get(Transazione.model().NOME_SOGGETTO_EROGATORE.getFieldName())));
- // stat.setTipoServizio((String)row.get(Transazione.model().TIPO_SERVIZIO.getFieldName()));
- // stat.setServizio((String)row.get(Transazione.model().NOME_SERVIZIO.getFieldName()));
- // Object azObject = row.get(Transazione.model().AZIONE.getFieldName());
- // String az = null;
- // if(azObject!=null && !(azObject instanceof org.apache.commons.lang.ObjectUtils.Null)){
- // az = (String) azObject;
- // }
- // stat.setAzione(az != null ? az : " ");
-
- // Gestisco i possibili valori null con '-'.
- // Sono state prese le informazioni anche con null poichè senno non venivano contate nelle statistiche le transazioni che non possedevano info sui servizi. (es porta delegata non trovata)
- stat.setMittente(new IDSoggetto(StatisticsUtils.getValueFromMap(Transazione.model().TIPO_SOGGETTO_FRUITORE,row,fieldConverter,useFieldConverter),
- StatisticsUtils.getValueFromMap(Transazione.model().NOME_SOGGETTO_FRUITORE,row,fieldConverter,useFieldConverter)));
-
- stat.setDestinatario(new IDSoggetto(StatisticsUtils.getValueFromMap(Transazione.model().TIPO_SOGGETTO_EROGATORE,row,fieldConverter,useFieldConverter),
- StatisticsUtils.getValueFromMap(Transazione.model().NOME_SOGGETTO_EROGATORE,row,fieldConverter,useFieldConverter)));
-
- stat.setTipoServizio(StatisticsUtils.getValueFromMap(Transazione.model().TIPO_SERVIZIO,row,fieldConverter,useFieldConverter));
- stat.setServizio(StatisticsUtils.getValueFromMap(Transazione.model().NOME_SERVIZIO,row,fieldConverter,useFieldConverter));
- stat.setVersioneServizio(StatisticsUtils.getIntegerValueFromMap(Transazione.model().VERSIONE_SERVIZIO,row,false,fieldConverter,useFieldConverter));
-
- stat.setAzione(StatisticsUtils.getValueFromMap(Transazione.model().AZIONE,row,fieldConverter,useFieldConverter));
-
- stat.setEsito(StatisticsUtils.getIntegerValueFromMap(Transazione.model().ESITO,row,true,fieldConverter,useFieldConverter));
-
- stat.setEsitoContesto(StatisticsUtils.getValueFromMap(Transazione.model().ESITO_CONTESTO,row,fieldConverter,useFieldConverter));
-
- return stat;
- }
- private static String getValueFromMap(IField field, Map<String, Object> row, ISQLFieldConverter fieldConverter, boolean useFieldConverter) throws ExpressionException{
- String nomeKeyMappa = null;
- if(useFieldConverter) {
- nomeKeyMappa = fieldConverter.toColumn(field, false);
- }
- else {
- nomeKeyMappa = field.getFieldName();
- }
- Object tmpObject = row.get(nomeKeyMappa);
- String tmp = null;
- if(tmpObject!=null && !(tmpObject instanceof org.apache.commons.lang.ObjectUtils.Null)){
- tmp = (String) tmpObject;
- }
- if(tmp!=null && !"".equals(tmp)){
- return tmp;
- }
- else{
- return Costanti.INFORMAZIONE_NON_DISPONIBILE;
- }
- }
- private static Integer getIntegerValueFromMap(IField field, Map<String, Object> row, boolean acceptZeroValue, ISQLFieldConverter fieldConverter, boolean useFieldConverter) throws ExpressionException{
- String nomeKeyMappa = null;
- if(useFieldConverter) {
- nomeKeyMappa = fieldConverter.toColumn(field, false);
- }
- else {
- nomeKeyMappa = field.getFieldName();
- }
- Object tmpObject = row.get(nomeKeyMappa);
- Integer tmp = null;
- if(tmpObject!=null && !(tmpObject instanceof org.apache.commons.lang.ObjectUtils.Null)){
- tmp = (Integer) tmpObject;
- }
- if(tmp!=null && tmp.intValue()>0){
- return tmp;
- }
- else if(tmp!=null && tmp.intValue()==0 && acceptZeroValue) {
- return tmp;
- }
- else{
- return Costanti.INFORMAZIONE_VERSIONE_NON_DISPONIBILE;
- }
- }
-
- public static void updateStatisticBeanCountTransactionInfo(StatisticBean stat,Map<String, Object> row){
-
- Long tmp = StatisticsUtils.readLongValue(row, "richieste");
- if(tmp!=null){
- stat.setRichieste(tmp);
- }
- }
-
- public static void updateStatisticBeanSizeTransactionInfo(StatisticBean stat,Map<String, Object> row){
-
- long messageBytesInRequest = 0;
- Long tmp = StatisticsUtils.readLongValue(row, "message_bytes_in_richiesta");
- if(tmp!=null){
- messageBytesInRequest = tmp.longValue();
- }
- long messageBytesOutRequest = 0;
- tmp = StatisticsUtils.readLongValue(row, "message_bytes_out_richiesta");
- if(tmp!=null){
- messageBytesOutRequest = tmp.longValue();
- }
- long messageBytesInResponse = 0;
- tmp = StatisticsUtils.readLongValue(row, "message_bytes_in_risposta");
- if(tmp!=null){
- messageBytesInResponse = tmp.longValue();
- }
- long messageBytesOutResponse = 0;
- tmp = StatisticsUtils.readLongValue(row, "message_bytes_out_risposta");
- if(tmp!=null){
- messageBytesOutResponse = tmp.longValue();
- }
-
- switch (stat.getTipoPorta()) {
- case DELEGATA:
- stat.setBytesBandaInterna(messageBytesInRequest+messageBytesOutResponse);
- stat.setBytesBandaEsterna(messageBytesOutRequest+messageBytesInResponse);
- break;
- default:
- stat.setBytesBandaInterna(messageBytesOutRequest+messageBytesInResponse);
- stat.setBytesBandaEsterna(messageBytesInRequest+messageBytesOutResponse);
- break;
- }
- stat.setBytesBandaTotale(stat.getBytesBandaInterna()+stat.getBytesBandaEsterna());
-
- }
-
- public static void updateStatisticsBeanLatencyTransactionInfo(StatisticBean stat,Map<String, Object> row){
- // Latenza Totale
- long latenzaTotaleValue = -1;
- Long tmp = StatisticsUtils.readLongValue(row, "latenza_totale");
- if(tmp!=null){
- latenzaTotaleValue = tmp.longValue();
- }
- stat.setLatenzaTotale(latenzaTotaleValue);
-
- // Latenza Servizio
- long latenzaServizioValue = -1;
- tmp = StatisticsUtils.readLongValue(row, "latenza_servizio");
- if(tmp!=null){
- latenzaServizioValue = tmp.longValue();
- }
- stat.setLatenzaServizio(latenzaServizioValue);
-
- // Latenza Gateway
- long latenzaPortaRichiestaValue = -1;
- tmp = StatisticsUtils.readLongValue(row, "latenza_porta_richiesta");
- if(tmp!=null){
- latenzaPortaRichiestaValue = tmp.longValue();
- }
- long latenzaPortaRispostaValue = -1;
- tmp = StatisticsUtils.readLongValue(row, "latenza_porta_risposta");
- if(tmp!=null){
- latenzaPortaRispostaValue = tmp.longValue();
- }
- long latenzaPortaValue = -1;
- if(latenzaPortaRichiestaValue>=0){
- latenzaPortaValue = latenzaPortaRichiestaValue;
- if(latenzaPortaRispostaValue>=0){
- latenzaPortaValue = latenzaPortaValue + latenzaPortaRispostaValue;
- }
- }
- else{
- if(latenzaPortaRispostaValue>=0){
- latenzaPortaValue = latenzaPortaRispostaValue;
- }
- }
- stat.setLatenzaPorta(latenzaPortaValue);
- }
-
- public static void fillStatisticsContenutiByStato(String idStatisticaPersonalizzata,StatisticaContenuti statisticaContenuti,Map<String, Object> row) throws EngineException{
- String aliasValore = Transazione.model().STATO.getFieldName();
- Object oValore = row.get(aliasValore);
- String valore = null;
- if(oValore!=null && oValore instanceof String){
- String s = (String) oValore;
- if(!"".equals(s)){
- valore = s;
- }
- else{
- valore = org.openspcoop2.monitor.engine.constants.Costanti.TRANSAZIONE_SENZA_STATO;
- }
- }else{
- valore = org.openspcoop2.monitor.engine.constants.Costanti.TRANSAZIONE_SENZA_STATO;
- }
- StatisticsUtils.setRisorsaValore(statisticaContenuti, idStatisticaPersonalizzata, valore);
- }
-
- public static void fillStatisticsContenuti(String idStatisticaPersonalizzata,StatisticaContenuti statisticaContenuti,Map<String, Object> row,
- List<AliasFilter> aliases,RisorsaSemplice risorsaSemplice) throws EngineException{
-
- String risorsaNome = null;
- if(risorsaSemplice.getIdStatistica()!=null){
- risorsaNome = idStatisticaPersonalizzata+"-"+risorsaSemplice.getIdStatistica();
- }
- else{
- risorsaNome = idStatisticaPersonalizzata;
- }
-
- String aliasValore = Transazione.model().DUMP_MESSAGGIO.getBaseField().getFieldName()+"."+
- Transazione.model().DUMP_MESSAGGIO.CONTENUTO.getBaseField().getFieldName()+"."+
- Transazione.model().DUMP_MESSAGGIO.CONTENUTO.VALORE.getFieldName();
-
- StatisticsUtils.setRisorsaValore(statisticaContenuti, risorsaNome, (String)row.get(aliasValore));
-
-
- // java.util.Iterator<String> itS = row.keySet().iterator();
- // while (itS.hasNext()) {
- // String key = (String) itS.next();
- // System.out.println("ESEMPIO KEY["+key+"]");
- // }
-
- if(aliases.size()>0){
- for (int i = 0; i < aliases.size(); i++) {
- AliasFilter af = aliases.get(i);
- IAliasTableField afName = af.getNomeFiltro();
- IAliasTableField afValore = af.getValoreFiltro();
-
- String aliasFiltroNome = afName.getAliasTable()+"."+
- Transazione.model().DUMP_MESSAGGIO.CONTENUTO.NOME.getFieldName();
- String aliasFiltroValore = afValore.getAliasTable()+"."+
- Transazione.model().DUMP_MESSAGGIO.CONTENUTO.VALORE.getFieldName();
-
- StatisticsUtils.setFiltro(statisticaContenuti,
- af.getStatisticFilterName(),
- (String)row.get(aliasFiltroNome),
- (String)row.get(aliasFiltroValore));
-
- }
- }
-
- }
-
- public static void fillStatisticsContenuti(String idStatistica,StatisticaContenuti statisticaContenuti,RisorsaAggregata risorsaAggregata) throws EngineException{
-
- StatisticsUtils.setRisorsaValore(statisticaContenuti, idStatistica, risorsaAggregata.getValoreRisorsaAggregata());
- if(risorsaAggregata.getFiltri()!=null && risorsaAggregata.getFiltri().size()>0){
- for (int i = 0; i < risorsaAggregata.getFiltri().size(); i++) {
- String nome = risorsaAggregata.getFiltri().get(i).getResourceID();
- String valore = ContentFormatter.toString(risorsaAggregata.getFiltri().get(i).getValue());
-
- StatisticsUtils.setFiltro(statisticaContenuti,
- risorsaAggregata.getFiltri().get(i).getStatisticFilterName(),
- nome,
- valore);
-
- }
- }
- }
-
- private static void setRisorsaValore(StatisticaContenuti statisticaContenuti,String risorsaNome,String valore) throws EngineException{
- if(valore.length()>TransactionContentUtils.SOGLIA_VALUE_TOO_LONG){
- throw new EngineException("Valore fornito per il contenuto statistico ["+risorsaNome
- +"] è troppo grande (>"+TransactionContentUtils.SOGLIA_VALUE_TOO_LONG+") per essere utilizzato come informazione statistica. Valore fornito: "+valore);
- }
- if(TransactionContentUtils.KEY_COMPRESSED.equals(valore)){
- throw new EngineException("Una risorsa compressa è stata fornita per il contenuto statistico ["+risorsaNome
- +"]; questo tipo di risorsa non è utilizzabile come informazione statistica");
- }
- if(TransactionContentUtils.KEY_VALUE_TOO_LONG.equals(valore)){
- throw new EngineException("Una risorsa con valore > "+TransactionContentUtils.SOGLIA_VALUE_TOO_LONG+
- " caratteri è stata fornita per il contenuto statistico ["+risorsaNome
- +"]; questo tipo di risorsa non è utilizzabile come informazione statistica");
- }
- statisticaContenuti.setRisorsaNome(risorsaNome);
- statisticaContenuti.setRisorsaValore(valore);
- }
-
- private static void setFiltro(StatisticaContenuti statisticaContenuti,StatisticFilterName filterName,
- String nome,String valore) throws EngineException{
-
- if(nome.length()>255){
- throw new EngineException("Nome assegnato a "+filterName.name()+" ("+nome
- +") è troppo grande (>255)");
- }
- if(valore.length()>TransactionContentUtils.SOGLIA_VALUE_TOO_LONG){
- throw new EngineException("Valore fornito per "+filterName.name()+" ["+nome
- +"] è troppo grande (>"+TransactionContentUtils.SOGLIA_VALUE_TOO_LONG+") per essere utilizzato come filtro. Valore fornito: "+valore);
- }
- if(TransactionContentUtils.KEY_COMPRESSED.equals(valore)){
- throw new EngineException("Una risorsa compressa è stata fornita per "+filterName.name()+" ["+nome
- +"]; questo tipo di risorsa non è utilizzabile come valore per un filtro");
- }
- if(TransactionContentUtils.KEY_VALUE_TOO_LONG.equals(valore)){
- throw new EngineException("Una risorsa con valore > "+TransactionContentUtils.SOGLIA_VALUE_TOO_LONG+" caratteri è stata fornita per "+
- filterName.name()+" ["+nome
- +"]; questo tipo di risorsa non è utilizzabile come valore per un filtro");
- }
-
- switch (filterName) {
- case FILTER_1:
- statisticaContenuti.setFiltroNome1(nome);
- statisticaContenuti.setFiltroValore1(valore);
- break;
- case FILTER_2:
- statisticaContenuti.setFiltroNome2(nome);
- statisticaContenuti.setFiltroValore2(valore);
- break;
- case FILTER_3:
- statisticaContenuti.setFiltroNome3(nome);
- statisticaContenuti.setFiltroValore3(valore);
- break;
- case FILTER_4:
- statisticaContenuti.setFiltroNome4(nome);
- statisticaContenuti.setFiltroValore4(valore);
- break;
- case FILTER_5:
- statisticaContenuti.setFiltroNome5(nome);
- statisticaContenuti.setFiltroValore5(valore);
- break;
- case FILTER_6:
- statisticaContenuti.setFiltroNome6(nome);
- statisticaContenuti.setFiltroValore6(valore);
- break;
- case FILTER_7:
- statisticaContenuti.setFiltroNome7(nome);
- statisticaContenuti.setFiltroValore7(valore);
- break;
- case FILTER_8:
- statisticaContenuti.setFiltroNome8(nome);
- statisticaContenuti.setFiltroValore8(valore);
- break;
- case FILTER_9:
- statisticaContenuti.setFiltroNome9(nome);
- statisticaContenuti.setFiltroValore9(valore);
- break;
- case FILTER_10:
- statisticaContenuti.setFiltroNome10(nome);
- statisticaContenuti.setFiltroValore10(valore);
- break;
- }
- }
-
- public static String buildKey(StatisticaContenuti statisticaContenuti){
- StringBuilder bf = new StringBuilder();
-
- bf.append(statisticaContenuti.getRisorsaNome());
- bf.append("=");
- bf.append(statisticaContenuti.getRisorsaValore());
-
- if(statisticaContenuti.getFiltroNome1()!=null){
- bf.append(statisticaContenuti.getFiltroNome1());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore1());
- }
-
- if(statisticaContenuti.getFiltroNome2()!=null){
- bf.append(statisticaContenuti.getFiltroNome2());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore2());
- }
-
- if(statisticaContenuti.getFiltroNome3()!=null){
- bf.append(statisticaContenuti.getFiltroNome3());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore3());
- }
-
- if(statisticaContenuti.getFiltroNome4()!=null){
- bf.append(statisticaContenuti.getFiltroNome4());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore4());
- }
-
- if(statisticaContenuti.getFiltroNome5()!=null){
- bf.append(statisticaContenuti.getFiltroNome5());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore5());
- }
-
- if(statisticaContenuti.getFiltroNome6()!=null){
- bf.append(statisticaContenuti.getFiltroNome6());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore6());
- }
-
- if(statisticaContenuti.getFiltroNome7()!=null){
- bf.append(statisticaContenuti.getFiltroNome7());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore7());
- }
-
- if(statisticaContenuti.getFiltroNome8()!=null){
- bf.append(statisticaContenuti.getFiltroNome8());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore8());
- }
-
- if(statisticaContenuti.getFiltroNome9()!=null){
- bf.append(statisticaContenuti.getFiltroNome9());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore9());
- }
-
- if(statisticaContenuti.getFiltroNome10()!=null){
- bf.append(statisticaContenuti.getFiltroNome10());
- bf.append("=");
- bf.append(statisticaContenuti.getFiltroValore10());
- }
-
- return bf.toString();
-
- }
- }