CustomStatisticsSdkGenerator.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 org.openspcoop2.core.commons.dao.DAOFactory;
- import org.openspcoop2.monitor.sdk.condition.IFilter;
- import org.openspcoop2.monitor.sdk.constants.StatisticType;
- import org.openspcoop2.monitor.sdk.exceptions.StatisticException;
- import org.openspcoop2.monitor.sdk.statistic.IStatistic;
- import org.openspcoop2.monitor.sdk.statistic.StatisticResourceFilter;
- import org.openspcoop2.monitor.sdk.statistic.StatisticFilter;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.slf4j.Logger;
- import org.openspcoop2.core.constants.TipoPdD;
- import org.openspcoop2.utils.TipiDatabase;
- /**
- * CustomStatisticsSdkGenerator
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class CustomStatisticsSdkGenerator implements IStatistic {
- private StatisticBean statistic;
-
- private StatisticType statisticType;
-
- private AbstractStatistiche abstractStatisticheCore;
-
- protected CustomStatisticsSdkGenerator(StatisticBean stat, StatisticType statisticType, AbstractStatistiche abstractStatisticheCore) {
- this.statistic = stat;
- this.statisticType = statisticType;
- this.abstractStatisticheCore = abstractStatisticheCore;
- }
- @Override
- public TipoPdD getTipoPorta(){
- return this.statistic.getTipoPorta();
- }
-
- @Override
- public String getIdentificativoPorta(){
- return this.statistic.getIdPorta();
- }
- @Override
- public String getTipoSoggettoMittente() {
- if(this.statistic.getMittente()!=null)
- return this.statistic.getMittente().getTipo();
- else
- return null;
- }
- @Override
- public String getSoggettoMittente() {
- if(this.statistic.getMittente()!=null)
- return this.statistic.getMittente().getNome();
- else
- return null;
- }
-
- @Override
- public String getTipoSoggettoDestinatario() {
- if(this.statistic.getDestinatario()!=null)
- return this.statistic.getDestinatario().getTipo();
- else
- return null;
- }
- @Override
- public String getSoggettoDestinatario() {
- if(this.statistic.getDestinatario()!=null)
- return this.statistic.getDestinatario().getNome();
- else
- return null;
- }
-
- @Override
- public String getTipoServizio() {
- return this.statistic.getTipoServizio();
- }
- @Override
- public String getServizio() {
- return this.statistic.getServizio();
- }
- @Override
- public Integer getVersioneServizio() {
- return this.statistic.getVersioneServizio();
- }
-
- @Override
- public String getAzione() {
- return this.statistic.getAzione();
- }
-
- @Override
- public String getServizioApplicativo() {
- return this.statistic.getServizioApplicativo();
- }
-
- @Override
- public String getIdentificativoAutenticato() {
- return this.statistic.getTrasportoMittente();
- }
-
- @Override
- public String getTokenInfoIssuer(){
- return this.statistic.getTokenIssuer();
- }
- @Override
- public String getTokenInfoClientId(){
- return this.statistic.getTokenClientId();
- }
- @Override
- public String getTokenInfoSubject(){
- return this.statistic.getTokenSubject();
- }
- @Override
- public String getTokenInfoUsername(){
- return this.statistic.getTokenUsername();
- }
- @Override
- public String getTokenInfoEmail(){
- return this.statistic.getTokenMail();
- }
-
- @Override
- public String getClientAddress(){
- return this.statistic.getClientAddress();
- }
-
- @Override
- public String getGruppo(){
- return this.statistic.getGruppo();
- }
-
- @Override
- public String getApi(){
- return this.statistic.getApi();
- }
-
- @Override
- public String getClusterId() {
- return this.statistic.getClusterId();
- }
-
- @Override
- public TipiDatabase getDatabaseType(){
- return this.abstractStatisticheCore.getDatabaseType();
- }
-
- @Override
- public StatisticType getStatisticType(){
- return this.statisticType;
- }
-
- @Override
- public Logger getLogger(){
- return this.abstractStatisticheCore.logger;
- }
-
- @Override
- public DAOFactory getDAOFactory() throws StatisticException{
- try{
- return DAOFactory.getInstance(this.abstractStatisticheCore.logger);
- }catch(Exception e){
- throw new StatisticException(e.getMessage(),e);
- }
- }
-
- public StatisticBean getStatistic() {
- return this.statistic;
- }
- public AbstractStatistiche getAbstractStatisticheCore() {
- return this.abstractStatisticheCore;
- }
-
-
- private int numeroVolteCreazioneStatisticaSemplice = 0;
-
- @Override
- public void createStatistics(String idRisorsa) throws StatisticException {
- this.createStatistics(idRisorsa, new StatisticResourceFilter[0]);
- }
-
- @Override
- public void createStatistics(String idRisorsa, StatisticResourceFilter... idRisorseFiltri)
- throws StatisticException {
- if(idRisorsa==null){
- throw new StatisticException("IdResource undefined");
- }
- if(this.numeroVolteCreazioneStatisticaSemplice>0){
- throw new StatisticException("It is not allowed to generate more of a statistic without providing the identifier of the statistic (use method createStatistics(idStatistic,String idResource, ...))");
- }
-
- RisorsaSemplice risorsa = new RisorsaSemplice();
- risorsa.setIdRisorsa(idRisorsa);
- if(idRisorseFiltri!=null && idRisorseFiltri.length>0){
- for (int i = 0; i < idRisorseFiltri.length; i++) {
- risorsa.getFiltri().add(idRisorseFiltri[i]);
- }
- }
-
- this.abstractStatisticheCore.generaStatisticaPersonalizzata(this.statistic, risorsa);
-
- this.numeroVolteCreazioneStatisticaSemplice++;
-
- }
-
-
- private List<String> idStatistiche = new ArrayList<>();
- private List<String> idRisorse = new ArrayList<>();
- private Map<String, String> mapIdRisorsaToIdStatistica = new HashMap<>();
-
- @Override
- public void createStatistics(String idStatistica,String idRisorsa) throws StatisticException{
- this.createStatistics(idStatistica, idRisorsa, new StatisticResourceFilter[0]);
- }
-
- @Override
- public void createStatistics(String idStatistica,String idRisorsa, StatisticResourceFilter ... idRisorseFiltri) throws StatisticException{
-
- if(idStatistica==null || "".equals(idStatistica)){
- throw new StatisticException("IdStatistic undefined");
- }
- if(this.idStatistiche.contains(idStatistica)){
- throw new StatisticException("IdStatistic ["+idStatistica+"] already used");
- }
- if(idRisorsa==null || "".equals(idRisorsa)){
- throw new StatisticException("IdResource undefined");
- }
- if(this.idRisorse.contains(idRisorsa)){
- throw new StatisticException("IdResource ["+idRisorsa+"] already used for statistic with id: "+this.mapIdRisorsaToIdStatistica.get(idRisorsa));
- }
-
- RisorsaSemplice risorsa = new RisorsaSemplice();
- risorsa.setIdStatistica(idStatistica);
- risorsa.setIdRisorsa(idRisorsa);
- if(idRisorseFiltri!=null && idRisorseFiltri.length>0){
- for (int i = 0; i < idRisorseFiltri.length; i++) {
- risorsa.getFiltri().add(idRisorseFiltri[i]);
- }
- }
-
- this.abstractStatisticheCore.generaStatisticaPersonalizzata(this.statistic, risorsa);
-
- this.idStatistiche.add(idStatistica);
- this.idRisorse.add(idRisorsa);
- this.mapIdRisorsaToIdStatistica.put(idRisorsa, idStatistica);
- }
-
-
-
-
- //private List<String> valoreRisorseAggregate = new ArrayList<>();
-
- @Override
- public void createStatistics(IFilter filtro, String valoreRisorsaAggregata)
- throws StatisticException {
- this.createStatistics(filtro, valoreRisorsaAggregata, new StatisticFilter[0]);
- }
- @Override
- public void createStatistics(IFilter filtro, String valoreRisorsaAggregata,
- StatisticFilter... filtriRicerca) throws StatisticException {
-
- if(filtro==null){
- throw new StatisticException("Filter undefined");
- }
- if(valoreRisorsaAggregata==null || "".equals(valoreRisorsaAggregata)){
- throw new StatisticException("AggregateResourceValue undefined");
- }
- // Posso implementare più statistiche con lo stesso valore di risorsa aggregata se cambio il filtro
- // TODO: Lavorare sul controllare che tutta la coppia valoreRisorsaAggregata - filtro non sia già usata
- // if(this.valoreRisorseAggregate.contains(valoreRisorsaAggregata)){
- // throw new StatisticException("AggregateResourceValue ["+valoreRisorsaAggregata+"] already used");
- // }
-
- RisorsaAggregata risorsa = new RisorsaAggregata();
- risorsa.setFiltro(filtro);
- try{
- risorsa.setValoreRisorsaAggregata(valoreRisorsaAggregata);
- }catch(Exception e){
- throw new StatisticException(e.getMessage(),e);
- }
- if(filtriRicerca!=null && filtriRicerca.length>0){
- for (int i = 0; i < filtriRicerca.length; i++) {
- risorsa.getFiltri().add(filtriRicerca[i]);
- }
- }
-
- this.abstractStatisticheCore.generaStatisticaPersonalizzata(this.statistic, risorsa);
-
- //this.valoreRisorseAggregate.add(valoreRisorsaAggregata);
- }
-
-
-
-
- public void createStatisticsByStato(){
- this.abstractStatisticheCore.generaStatisticaPersonalizzataByStato(this.statistic);
- }
- }