Converter.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.monitor.rs.server.api.impl.utils;

  21. import java.sql.Connection;
  22. import java.util.ArrayList;
  23. import java.util.List;

  24. import org.apache.commons.lang.StringUtils;
  25. import org.joda.time.DateTime;
  26. import org.openspcoop2.core.eventi.constants.TipoSeverita;
  27. import org.openspcoop2.core.eventi.utils.SeveritaConverter;
  28. import org.openspcoop2.core.id.IDServizio;
  29. import org.openspcoop2.core.id.IDServizioApplicativo;
  30. import org.openspcoop2.core.monitor.rs.server.config.ServerProperties;
  31. import org.openspcoop2.core.monitor.rs.server.config.SoggettiConfig;
  32. import org.openspcoop2.core.monitor.rs.server.model.DetailTransazione;
  33. import org.openspcoop2.core.monitor.rs.server.model.Evento;
  34. import org.openspcoop2.core.monitor.rs.server.model.InfoImplementazioneApi;
  35. import org.openspcoop2.core.monitor.rs.server.model.ItemTransazione;
  36. import org.openspcoop2.core.monitor.rs.server.model.PDNDOrganizationExternalId;
  37. import org.openspcoop2.core.monitor.rs.server.model.PDNDOrganizationInfo;
  38. import org.openspcoop2.core.monitor.rs.server.model.PDNDOrganizationInfoItemTransazione;
  39. import org.openspcoop2.core.monitor.rs.server.model.Riepilogo;
  40. import org.openspcoop2.core.monitor.rs.server.model.RiepilogoApiItem;
  41. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  42. import org.openspcoop2.core.transazioni.CredenzialeMittente;
  43. import org.openspcoop2.core.transazioni.DumpMessaggio;
  44. import org.openspcoop2.core.transazioni.constants.TipoMessaggio;
  45. import org.openspcoop2.core.transazioni.utils.CredenzialiMittente;
  46. import org.openspcoop2.core.transazioni.utils.credenziali.CredenzialeTokenClient;
  47. import org.openspcoop2.generic_project.expression.SortOrder;
  48. import org.openspcoop2.generic_project.utils.ServiceManagerProperties;
  49. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  50. import org.openspcoop2.protocol.sdk.constants.RuoloMessaggio;
  51. import org.openspcoop2.protocol.sdk.diagnostica.DriverMsgDiagnosticiNotFoundException;
  52. import org.openspcoop2.protocol.sdk.diagnostica.FiltroRicercaDiagnosticiConPaginazione;
  53. import org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico;
  54. import org.openspcoop2.protocol.sdk.tracciamento.DriverTracciamentoNotFoundException;
  55. import org.openspcoop2.protocol.sdk.tracciamento.Traccia;
  56. import org.openspcoop2.utils.UtilsException;
  57. import org.openspcoop2.utils.beans.BlackListElement;
  58. import org.openspcoop2.utils.service.beans.DiagnosticoSeveritaEnum;
  59. import org.openspcoop2.utils.service.beans.ProfiloEnum;
  60. import org.openspcoop2.utils.service.beans.TransazioneExt;
  61. import org.openspcoop2.utils.service.beans.TransazioneRuoloEnum;
  62. import org.openspcoop2.utils.service.beans.utils.ProfiloUtils;
  63. import org.openspcoop2.utils.service.fault.jaxrs.FaultCode;
  64. import org.openspcoop2.web.monitor.core.core.PddMonitorProperties;
  65. import org.openspcoop2.web.monitor.eventi.bean.EventoBean;
  66. import org.openspcoop2.web.monitor.statistiche.bean.ConfigurazioneGenerale;
  67. import org.openspcoop2.web.monitor.statistiche.constants.CostantiConfigurazioni;
  68. import org.openspcoop2.web.monitor.transazioni.bean.TransazioneBean;
  69. import org.openspcoop2.web.monitor.transazioni.dao.TransazioniService;
  70. import org.openspcoop2.web.monitor.transazioni.datamodel.TransazioniDM;
  71. import org.slf4j.Logger;

  72. /**
  73.  * Converter
  74.  *
  75.  * @author $Author$
  76.  * @version $Rev$, $Date$
  77.  *
  78.  */
  79. public class Converter {

  80.     public static String toProtocollo(ProfiloEnum profilo) throws UtilsException {
  81.         if(profilo==null) {
  82.             return ServerProperties.getInstance().getProtocolloDefault();
  83.         }
  84.         return ProfiloUtils.toProtocollo(profilo);
  85.     }
  86.    
  87.     public static Integer toOffset(Integer offset) {
  88.         return offset!=null ? offset : 0;
  89.     }
  90.     public static Integer toLimit(Integer limit) {
  91.         return limit!=null ? limit : 25;
  92.     }
  93.     public static SortOrder toSortOrder(String sort) {
  94.         if(StringUtils.isNotEmpty(sort)) {
  95.             if(sort.startsWith("+")) {
  96.                 return SortOrder.ASC;
  97.             }
  98.             else if(sort.startsWith("-")) {
  99.                 return SortOrder.DESC;
  100.             }
  101.         }
  102.         return SortOrder.DESC;
  103.     }
  104.     public static String toSortField(String sort) {
  105.         if(StringUtils.isNotEmpty(sort)) {
  106.             String sortParam = sort;
  107.             if(sort.startsWith("+") || sort.startsWith("-")) {
  108.                 sortParam = sort.substring(1);
  109.             }
  110.             if(TransazioniDM.COL_DATA_LATENZA_TOTALE.equals(sortParam)){
  111.                 return sortParam;
  112.             } else if(TransazioniDM.COL_DATA_LATENZA_SERVIZIO.equals(sortParam)){
  113.                 return sortParam;
  114.             } else if(TransazioniDM.COL_DATA_INGRESSO_RICHIESTA.equals(sortParam)){
  115.                 return sortParam;
  116.             }
  117.             else {
  118.                 FaultCode.RICHIESTA_NON_VALIDA.throwException("Sort parameter '"+sort+"' non valido");
  119.             }
  120.         }
  121.         return TransazioniDM.COL_DATA_INGRESSO_RICHIESTA;
  122.     }
  123.    
  124.     public static DetailTransazione toTransazioneExt(TransazioneBean transazioneDB, TransazioniService transazioniService,
  125.             Connection con, ServiceManagerProperties smp,
  126.             Logger log) throws Exception {
  127.         org.openspcoop2.pdd.logger.traccia.Converter converter = new org.openspcoop2.pdd.logger.traccia.Converter(log);
  128.        
  129.         PddMonitorProperties govwayMonitorProperties = PddMonitorProperties.getInstance(log);
  130.        
  131.         Traccia tracciaRichiesta = null;
  132.         try {
  133.             tracciaRichiesta = govwayMonitorProperties.getDriverTracciamento(con,smp).getTraccia(transazioneDB.getIdTransazione(), RuoloMessaggio.RICHIESTA);
  134.         }catch(DriverTracciamentoNotFoundException notFound) {}
  135.        
  136.         Traccia tracciaRisposta = null;
  137.         try {
  138.             tracciaRisposta = govwayMonitorProperties.getDriverTracciamento(con,smp).getTraccia(transazioneDB.getIdTransazione(), RuoloMessaggio.RISPOSTA);
  139.         }catch(DriverTracciamentoNotFoundException notFound) {}
  140.        
  141.         FiltroRicercaDiagnosticiConPaginazione filter = new FiltroRicercaDiagnosticiConPaginazione();
  142.         filter.setIdTransazione(transazioneDB.getIdTransazione());
  143.         List<MsgDiagnostico> messaggiDiagnostici = null;
  144.         try {
  145.             messaggiDiagnostici = govwayMonitorProperties.getDriverMsgDiagnostici(con,smp).getMessaggiDiagnostici(filter);
  146.         }catch(DriverMsgDiagnosticiNotFoundException notFound) {}

  147.         CredenzialiMittente credenzialiMittente = Converter.convertToCredenzialiMittente(transazioneDB);        
  148.        
  149.         if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_INGRESSO_DUMP_BINARIO)) {
  150.             DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_INGRESSO_DUMP_BINARIO);
  151.             if(dumpMessaggio!=null) {
  152.                 transazioneDB.addDumpMessaggio(dumpMessaggio);
  153.             }
  154.         }
  155.         else if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_INGRESSO)) {
  156.             DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_INGRESSO);
  157.             if(dumpMessaggio!=null) {
  158.                 transazioneDB.addDumpMessaggio(dumpMessaggio);
  159.             }
  160.         }
  161.        
  162.         if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_USCITA_DUMP_BINARIO)) {
  163.             DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_USCITA_DUMP_BINARIO);
  164.             if(dumpMessaggio!=null) {
  165.                 transazioneDB.addDumpMessaggio(dumpMessaggio);
  166.             }
  167.         }
  168.         else if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_USCITA)) {
  169.             DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_USCITA);
  170.             if(dumpMessaggio!=null) {
  171.                 transazioneDB.addDumpMessaggio(dumpMessaggio);
  172.             }
  173.         }
  174.        
  175.         if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_INGRESSO_DUMP_BINARIO)) {
  176.             DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_INGRESSO_DUMP_BINARIO);
  177.             if(dumpMessaggio!=null) {
  178.                 transazioneDB.addDumpMessaggio(dumpMessaggio);
  179.             }
  180.         }
  181.         else if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_INGRESSO)) {
  182.             DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_INGRESSO);
  183.             if(dumpMessaggio!=null) {
  184.                 transazioneDB.addDumpMessaggio(dumpMessaggio);
  185.             }
  186.         }
  187.        
  188.         if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_USCITA_DUMP_BINARIO)) {
  189.             DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_USCITA_DUMP_BINARIO);
  190.             if(dumpMessaggio!=null) {
  191.                 transazioneDB.addDumpMessaggio(dumpMessaggio);
  192.             }
  193.         }
  194.         else if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_USCITA)) {
  195.             DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_USCITA);
  196.             if(dumpMessaggio!=null) {
  197.                 transazioneDB.addDumpMessaggio(dumpMessaggio);
  198.             }
  199.         }
  200.        
  201.         TransazioneExt transazioneExt = converter.toTransazioneExt(transazioneDB, credenzialiMittente, tracciaRichiesta, tracciaRisposta, messaggiDiagnostici);
  202.        
  203.         // aggiunto campi supplementari
  204.        
  205.         DetailTransazione detail = new DetailTransazione();
  206.        
  207.         if(transazioneExt.getRichiesta()!=null) {
  208.             detail.setData(transazioneExt.getRichiesta().getDataRicezione());
  209.         }
  210.         if(transazioneExt.getRichiesta()!=null && transazioneExt.getRichiesta().getDataConsegna()!=null &&
  211.                 transazioneExt.getRisposta()!=null && transazioneExt.getRisposta().getDataAccettazione()!=null) {
  212.             long dataRisposta = transazioneExt.getRisposta().getDataAccettazione().getMillis();
  213.             long dataRichiesta = transazioneExt.getRichiesta().getDataConsegna().getMillis();
  214.             detail.setLatenzaServizio(dataRisposta-dataRichiesta);
  215.         }
  216.         if(transazioneExt.getRichiesta()!=null && transazioneExt.getRichiesta().getDataAccettazione()!=null &&
  217.                 transazioneExt.getRisposta()!=null && transazioneExt.getRisposta().getDataConsegna()!=null) {
  218.             long dataRisposta = transazioneExt.getRisposta().getDataConsegna().getMillis();
  219.             long dataRichiesta = transazioneExt.getRichiesta().getDataAccettazione().getMillis();
  220.             detail.setLatenzaTotale(dataRisposta-dataRichiesta);
  221.         }
  222.        
  223.         String pdndOrganizationName = transazioneDB.getPdndOrganizationName();
  224.         String pdndOrganizationCategory = transazioneDB.getPdndOrganizationCategory();
  225.         String pdndExternalId = transazioneDB.getPdndOrganizationExternalId();
  226.         if(StringUtils.isNotEmpty(pdndOrganizationName) || StringUtils.isNotEmpty(pdndOrganizationCategory) || StringUtils.isNotEmpty(pdndExternalId)) {
  227.             PDNDOrganizationInfo pdndOrganizationInfo = new PDNDOrganizationInfo();
  228.             pdndOrganizationInfo.setNome(pdndOrganizationName);
  229.             pdndOrganizationInfo.setCategoria(pdndOrganizationCategory);
  230.             if(StringUtils.isNotEmpty(pdndExternalId) && pdndExternalId.contains(" ")) {
  231.                 try {
  232.                     int indexOf = pdndExternalId.indexOf(" ");
  233.                     String origin = pdndExternalId.substring(0, indexOf);
  234.                     String code = pdndExternalId.replaceFirst(origin+" ","");
  235.                     PDNDOrganizationExternalId extId = new PDNDOrganizationExternalId();
  236.                     extId.setOrigine(origin);
  237.                     extId.setCodice(code);
  238.                     pdndOrganizationInfo.setExternalId(extId);
  239.                 }
  240.                 catch(Exception e) {
  241.                     // ignore
  242.                 }
  243.             }
  244.             detail.setPdndOrganization(pdndOrganizationInfo);
  245.         }
  246.        
  247.         String richiedente = transazioneDB.getLabelRichiedenteConFruitore();
  248.         if(StringUtils.isNotEmpty(richiedente)) {
  249.             detail.setRichiedente(richiedente);
  250.         }
  251.         String dettaglioErrore = transazioneDB.getDettaglioErrore(messaggiDiagnostici);
  252.         if(StringUtils.isNotEmpty(dettaglioErrore)) {
  253.             detail.setDettaglioErrore(dettaglioErrore);
  254.         }
  255.                
  256.         List<BlackListElement> metodiEsclusi = new ArrayList<>();
  257.         metodiEsclusi.add(new BlackListElement("setData", DateTime.class));
  258.         metodiEsclusi.add(new BlackListElement("setLatenzaServizio", Long.class));
  259.         metodiEsclusi.add(new BlackListElement("setLatenzaTotale", Long.class));
  260.         metodiEsclusi.add(new BlackListElement("setPdndOrganization", PDNDOrganizationInfo.class));
  261.         metodiEsclusi.add(new BlackListElement("setRichiedente", String.class));
  262.         metodiEsclusi.add(new BlackListElement("setDettaglioErrore", String.class));
  263.         org.openspcoop2.utils.beans.BeanUtils.copy(log, detail, transazioneExt, metodiEsclusi, true);
  264.        
  265.         // Se presenti, finiscono come informazione del token in detail.getMittente().getInformazioniToken()
  266.         /*
  267.         if(detail.getMittente()!=null) {
  268.             detail.getMittente().setUtente(null);
  269.             detail.getMittente().setClient(null);
  270.         }
  271.         */
  272.        
  273.         return detail;
  274.     }
  275.    
  276.     public static ItemTransazione toItemTransazione(TransazioneBean transazioneDB, Logger log)  throws Exception {
  277.    
  278.         CredenzialiMittente credenzialiMittente = Converter.convertToCredenzialiMittente(transazioneDB);        
  279.        
  280.         org.openspcoop2.pdd.logger.traccia.Converter converter = new org.openspcoop2.pdd.logger.traccia.Converter(log);
  281.         if(transazioneDB.getGruppiLabel()!=null && !"".equals(transazioneDB.getGruppiLabel())) {
  282.             // converto voce originale
  283.             transazioneDB.setGruppi(transazioneDB.getGruppiLabel());
  284.         }
  285.         if(transazioneDB.getSocketClientAddress()==null && transazioneDB.getSocketClientAddressLabel()!=null) {
  286.             // converto voce originale
  287.             transazioneDB.setSocketClientAddress(transazioneDB.getSocketClientAddressLabel());
  288.         }
  289.         if(transazioneDB.getTransportClientAddress()==null && transazioneDB.getTransportClientAddressLabel()!=null) {
  290.             // converto voce originale
  291.             transazioneDB.setTransportClientAddress(transazioneDB.getTransportClientAddressLabel());
  292.         }
  293.         TransazioneExt transazione = converter.toTransazioneExt(transazioneDB, credenzialiMittente, null, null, null);
  294.    
  295.         // elimino i campi non previsti in un ItemTransazione
  296.         if(transazione.getRichiesta()!=null) {
  297.             transazione.getRichiesta().setContenutiIngresso(null);
  298.             transazione.getRichiesta().setContenutiUscita(null);
  299.             transazione.getRichiesta().setDuplicatiMessaggio(null);
  300.             transazione.getRichiesta().setTraccia(null);
  301.             transazione.getRichiesta().setDataRicezioneAcquisita(null);
  302.             transazione.getRichiesta().setDataConsegnaEffettuata(null);
  303.         }
  304.         if(transazione.getRisposta()!=null) {
  305.             transazione.getRisposta().setContenutiIngresso(null);
  306.             transazione.getRisposta().setContenutiUscita(null);
  307.             transazione.getRisposta().setDuplicatiMessaggio(null);
  308.             transazione.getRisposta().setTraccia(null);
  309.             transazione.getRisposta().setFaultConsegna(null);
  310.             transazione.getRisposta().setFaultConsegnaFormato(null);
  311.             transazione.getRisposta().setFaultRicezione(null);
  312.             transazione.getRisposta().setFaultRicezioneFormato(null);
  313.             transazione.getRisposta().setDettagliErrore(null);
  314.             transazione.getRisposta().setDataRicezioneAcquisita(null);
  315.             if(transazione.getRisposta().getDataConsegnaEffettuata()!=null) { // inverto
  316.                 transazione.getRisposta().setDataConsegna(transazione.getRisposta().getDataConsegnaEffettuata());
  317.             }
  318.             transazione.getRisposta().setDataConsegnaEffettuata(null);
  319.         }
  320.         if(transazione.getApi()!=null) {
  321.             transazione.getApi().setProfiloCollaborazione(null);
  322.             transazione.getApi().setIdAsincrono(null);
  323.         }
  324.         if(transazione.getMittente()!=null) {
  325.             transazione.getMittente().setCredenziali(null);
  326.             transazione.getMittente().setToken(null);
  327.             transazione.getMittente().setInformazioniToken(null);
  328.         }
  329.        
  330.         // aggiunto campi supplementari
  331.         ItemTransazione item = new ItemTransazione();
  332.         if(transazione.getRichiesta()!=null) {
  333.             item.setData(transazione.getRichiesta().getDataRicezione());
  334.         }
  335.         if(transazione.getRichiesta()!=null && transazione.getRichiesta().getDataConsegna()!=null &&
  336.                 transazione.getRisposta()!=null && transazione.getRisposta().getDataAccettazione()!=null) {
  337.             long dataRisposta = transazione.getRisposta().getDataAccettazione().getMillis();
  338.             long dataRichiesta = transazione.getRichiesta().getDataConsegna().getMillis();
  339.             item.setLatenzaServizio(dataRisposta-dataRichiesta);
  340.         }
  341.         if(transazione.getRichiesta()!=null && transazione.getRichiesta().getDataAccettazione()!=null &&
  342.                 transazione.getRisposta()!=null && transazione.getRisposta().getDataConsegna()!=null) {
  343.             long dataRisposta = transazione.getRisposta().getDataConsegna().getMillis();
  344.             long dataRichiesta = transazione.getRichiesta().getDataAccettazione().getMillis();
  345.             item.setLatenzaTotale(dataRisposta-dataRichiesta);
  346.         }
  347.        
  348.         String pdndOrganizationName = transazioneDB.getPdndOrganizationName();
  349.         if(StringUtils.isNotEmpty(pdndOrganizationName)) {
  350.             PDNDOrganizationInfoItemTransazione pdndOrganizationInfo = new PDNDOrganizationInfoItemTransazione();
  351.             pdndOrganizationInfo.setNome(pdndOrganizationName);
  352.             item.setPdndOrganization(pdndOrganizationInfo);
  353.         }
  354.        
  355.         String richiedente = transazioneDB.getLabelRichiedenteConFruitore();
  356.         if(StringUtils.isNotEmpty(richiedente)) {
  357.             item.setRichiedente(richiedente);
  358.         }
  359.        
  360.         List<BlackListElement> metodiEsclusi = new ArrayList<>();
  361.         metodiEsclusi.add(new BlackListElement("setData", DateTime.class));
  362.         metodiEsclusi.add(new BlackListElement("setLatenzaServizio", Long.class));
  363.         metodiEsclusi.add(new BlackListElement("setLatenzaTotale", Long.class));
  364.         metodiEsclusi.add(new BlackListElement("setPdndOrganization", PDNDOrganizationInfoItemTransazione.class));
  365.         metodiEsclusi.add(new BlackListElement("setRichiedente", String.class));
  366.         org.openspcoop2.utils.beans.BeanUtils.copy(log, item, transazione, metodiEsclusi, true );
  367.                
  368.         return item;
  369.     }
  370.    
  371.     private static CredenzialiMittente convertToCredenzialiMittente(TransazioneBean transazioneDB) {
  372.         CredenzialiMittente credenzialiMittente = new CredenzialiMittente();
  373.         if(transazioneDB.getTrasportoMittenteLabel()!=null) {
  374.             CredenzialeMittente credenziale = new CredenzialeMittente();
  375.             credenziale.setCredenziale(transazioneDB.getTrasportoMittenteLabel());
  376.             credenzialiMittente.setTrasporto(credenziale);
  377.         }
  378.         if(transazioneDB.getTokenSubjectLabel()!=null) {
  379.             CredenzialeMittente credenziale = new CredenzialeMittente();
  380.             credenziale.setCredenziale(transazioneDB.getTokenSubjectLabel());
  381.             credenzialiMittente.setTokenSubject(credenziale);
  382.         }
  383.         if(transazioneDB.getTokenIssuerLabel()!=null) {
  384.             CredenzialeMittente credenziale = new CredenzialeMittente();
  385.             credenziale.setCredenziale(transazioneDB.getTokenIssuerLabel());
  386.             credenzialiMittente.setTokenIssuer(credenziale);
  387.         }
  388.         if(transazioneDB.getTokenClientIdLabel()!=null) {
  389.             CredenzialeMittente credenziale = new CredenzialeMittente();
  390.             String clientId = transazioneDB.getTokenClientIdLabel();
  391.             IDServizioApplicativo idSA = transazioneDB.getTokenClient();
  392.             if(idSA!=null) {
  393.                 CredenzialeTokenClient credToken = new CredenzialeTokenClient(clientId, idSA);
  394.                 try {
  395.                     credenziale.setCredenziale(credToken.getCredenziale());
  396.                 }catch(Throwable t) {
  397.                     credenziale.setCredenziale(clientId);
  398.                 }
  399.             }
  400.             else {
  401.                 credenziale.setCredenziale(clientId);
  402.             }
  403.             credenzialiMittente.setTokenClientId(credenziale);
  404.         }
  405.         if(transazioneDB.getTokenUsernameLabel()!=null) {
  406.             CredenzialeMittente credenziale = new CredenzialeMittente();
  407.             credenziale.setCredenziale(transazioneDB.getTokenUsernameLabel());
  408.             credenzialiMittente.setTokenUsername(credenziale);
  409.         }
  410.         if(transazioneDB.getTokenMailLabel()!=null) {
  411.             CredenzialeMittente credenziale = new CredenzialeMittente();
  412.             credenziale.setCredenziale(transazioneDB.getTokenMailLabel());
  413.             credenzialiMittente.setTokenEMail(credenziale);
  414.         }
  415.         return credenzialiMittente;
  416.     }
  417.    
  418.     public static Evento toEvento(EventoBean eventoDB, Logger log) throws Exception {
  419.         Evento evento = new Evento();
  420.        
  421.         if(eventoDB.getSeverita()>=0) {
  422.             TipoSeverita tipo = SeveritaConverter.toSeverita(eventoDB.getSeverita());
  423.             evento.setSeverita(Enums.toDiagnosticoSeverita.get(tipo));
  424.         }
  425.         evento.setOrigine(eventoDB.getIdConfigurazione());
  426.         if(eventoDB.getOraRegistrazione()!=null) {
  427.             evento.setOraRegistrazione(new DateTime(eventoDB.getOraRegistrazione().getTime()));
  428.         }
  429.        
  430.         List<BlackListElement> metodiEsclusi = new ArrayList<>();
  431.         metodiEsclusi.add(new BlackListElement("setSeverita", DiagnosticoSeveritaEnum.class));
  432.         metodiEsclusi.add(new BlackListElement("setOrigine", String.class));
  433.         metodiEsclusi.add(new BlackListElement("setOraRegistrazione", DateTime.class));
  434.         org.openspcoop2.utils.beans.BeanUtils.copy(log, evento, eventoDB, metodiEsclusi, true);
  435.         return evento;
  436.     }
  437.    
  438.     public static RiepilogoApiItem toRiepilogoApiItem(ConfigurazioneGenerale configurazioneDB, Logger log) throws Exception {
  439.         RiepilogoApiItem riepilogo = new RiepilogoApiItem();
  440.         riepilogo.setErogatore(configurazioneDB.getErogatore());
  441.         riepilogo.setFruitore(configurazioneDB.getFruitore());
  442.        
  443.         String nomeAPI = configurazioneDB.getServizio();
  444.         if(nomeAPI!=null) {
  445.             String [] tmp = nomeAPI.split(" v");
  446.             String tipoNome = tmp[0];
  447.             if(tipoNome.contains("/")) {
  448.                 riepilogo.setTipo(tipoNome.split("/")[0]);
  449.                 riepilogo.setNome(tipoNome.split("/")[1]);
  450.             }
  451.             else {
  452.                 riepilogo.setNome(tipoNome);
  453.             }
  454.             String versione = tmp[1];
  455.             riepilogo.setVersione(Integer.parseInt(versione));
  456.         }
  457.        
  458.         return riepilogo;
  459.     }
  460.    
  461.     public static Riepilogo toRiepilogo(List<ConfigurazioneGenerale> listDB_infoGenerali_right, List<ConfigurazioneGenerale> listDB_infoServizi_left ,
  462.             ConfigurazioneGenerale soggettiOperativi, Logger log) throws Exception {
  463.         Riepilogo riepilogo = new Riepilogo();
  464.        
  465.         if(listDB_infoGenerali_right!=null && !listDB_infoGenerali_right.isEmpty()) {
  466.             for (ConfigurazioneGenerale configurazioneGenerale : listDB_infoGenerali_right) {
  467.                 if(CostantiConfigurazioni.CONF_SOGGETTI_ESTERNI_LABEL.equals(configurazioneGenerale.getLabel())) {
  468.                     riepilogo.setSoggettiDominioEsterno(Integer.valueOf(configurazioneGenerale.getValue()));
  469.                 }
  470.                 else if(CostantiConfigurazioni.CONF_SOGGETTI_OPERATIVI_LABEL.equals(configurazioneGenerale.getLabel())) {
  471.                     riepilogo.setSoggettiDominioInterno(Integer.valueOf(configurazioneGenerale.getValue()));
  472.                 }
  473.                 else if(CostantiConfigurazioni.CONF_SERVIZI_APPLICATIVI_LABEL.equals(configurazioneGenerale.getLabel())) {
  474.                     riepilogo.setApplicativi(Integer.valueOf(configurazioneGenerale.getValue()));
  475.                 }
  476.             }
  477.         }
  478.        
  479.         if(listDB_infoServizi_left!=null && !listDB_infoServizi_left.isEmpty()) {
  480.             for (ConfigurazioneGenerale configurazioneGenerale : listDB_infoServizi_left) {
  481.                 if(CostantiConfigurazioni.CONF_ASPC_LABEL.equals(configurazioneGenerale.getLabel())) {
  482.                     riepilogo.setApi(Integer.valueOf(configurazioneGenerale.getValue()));
  483.                 }
  484.                 else if(CostantiConfigurazioni.CONF_ASPS_LABEL.equals(configurazioneGenerale.getLabel())) {
  485.                     riepilogo.setErogazioni(Integer.valueOf(configurazioneGenerale.getValue()));
  486.                 }
  487.                 else if(CostantiConfigurazioni.CONF_FRUIZIONI_SERVIZIO_LABEL.equals(configurazioneGenerale.getLabel())) {
  488.                     riepilogo.setFruizioni(Integer.valueOf(configurazioneGenerale.getValue()));
  489.                 }
  490.             }
  491.         }
  492.        
  493.         if(riepilogo.getSoggettiDominioInterno()==null) {
  494.             // mutitenant disabilitato
  495.             if(soggettiOperativi!=null) {
  496.                 riepilogo.setSoggettiDominioInterno(Integer.valueOf(soggettiOperativi.getValue()));
  497.             }
  498.         }
  499.        
  500.         return riepilogo;
  501.     }
  502.    
  503.     public static InfoImplementazioneApi toInfoImplementazioneApi(List<ConfigurazioneGenerale> listDB_infoServizi_left , Logger log) throws Exception {
  504.         InfoImplementazioneApi info = new InfoImplementazioneApi();
  505.        
  506.         if(listDB_infoServizi_left!=null && !listDB_infoServizi_left.isEmpty()) {
  507.             for (ConfigurazioneGenerale configurazioneGenerale : listDB_infoServizi_left) {
  508.                 if(CostantiConfigurazioni.CONF_ASPS_LABEL.equals(configurazioneGenerale.getLabel())) {
  509.                     info.setErogazioni(Integer.valueOf(configurazioneGenerale.getValue()));
  510.                 }
  511.                 else if(CostantiConfigurazioni.CONF_FRUIZIONI_SERVIZIO_LABEL.equals(configurazioneGenerale.getLabel())) {
  512.                     info.setFruizioni(Integer.valueOf(configurazioneGenerale.getValue()));
  513.                 }
  514.                 else if(CostantiConfigurazioni.CONF_AZIONI_LABEL.equals(configurazioneGenerale.getLabel())) {
  515.                     info.setAzioni(Integer.valueOf(configurazioneGenerale.getValue()));
  516.                 }
  517.             }
  518.         }
  519.        
  520.         return info;
  521.     }
  522.    
  523.     public static IDServizio toIDServizio(TransazioneRuoloEnum tipo, ProfiloEnum profilo, String soggetto,
  524.             String soggettoRemoto, String nomeServizio, String tipoServizio, Integer versioneServizio) throws Exception {
  525.         String protocollo = Converter.toProtocollo(profilo);
  526.         ProtocolFactoryManager protocolFactoryManager = ProtocolFactoryManager.getInstance();
  527.         String tipoSoggetto = protocolFactoryManager.getDefaultOrganizationTypes().get(protocollo);
  528.         String tipoServizioEffettivo = tipoServizio !=null ? tipoServizio : protocolFactoryManager._getServiceTypes().get(protocollo).get(0);
  529.         String nomeSoggettoLocale = soggetto;
  530.         if(nomeSoggettoLocale==null) {
  531.             ServerProperties serverProperties = ServerProperties.getInstance();
  532.             if(serverProperties.useSoggettoDefault()) {
  533.                 nomeSoggettoLocale = serverProperties.getSoggettoDefaultIfEnabled(protocollo);
  534.             }
  535.             else {
  536.                 throw FaultCode.RICHIESTA_NON_VALIDA.toException("Soggetto locale non indicato; parametro obbligatorio");
  537.             }
  538.         }
  539.         if(!SoggettiConfig.existsIdentificativoPorta(tipoSoggetto, nomeSoggettoLocale)) {
  540.             throw FaultCode.RICHIESTA_NON_VALIDA.toException("Il soggetto locale indicato non esiste");
  541.         }
  542.         String nomeSoggettoErogatore = null;
  543.         switch (tipo) {
  544.         case EROGAZIONE:
  545.             nomeSoggettoErogatore = nomeSoggettoLocale;
  546.             break;
  547.         case FRUIZIONE:
  548.             if(StringUtils.isNotBlank(soggettoRemoto)) {
  549.                 nomeSoggettoErogatore = soggettoRemoto;
  550.             }
  551.             else {
  552.                 FaultCode.RICHIESTA_NON_VALIDA.throwException("Parametro 'soggettoRemoto' รจ obbligatorio per il dettaglio di una fruizione");
  553.             }
  554.             break;
  555.         default:
  556.             break;
  557.         }
  558.         IDServizio idServizio =
  559.                 IDServizioFactory.getInstance().getIDServizioFromValues(tipoServizioEffettivo, nomeServizio, tipoSoggetto, nomeSoggettoErogatore,
  560.                         versioneServizio==null ? 1 : versioneServizio);
  561.         return idServizio;
  562.     }
  563. }