ErogazioniHelper.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.web.ctrlstat.servlet.aps.erogazioni;

  21. import java.text.MessageFormat;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24. import java.util.Map;

  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpSession;

  27. import org.apache.commons.lang.StringEscapeUtils;
  28. import org.apache.commons.lang.StringUtils;
  29. import org.apache.struts.action.ActionForward;
  30. import org.apache.struts.action.ActionMapping;
  31. import org.openspcoop2.core.commons.CoreException;
  32. import org.openspcoop2.core.commons.Filtri;
  33. import org.openspcoop2.core.commons.ISearch;
  34. import org.openspcoop2.core.commons.Liste;
  35. import org.openspcoop2.core.commons.Search;
  36. import org.openspcoop2.core.commons.SearchUtils;
  37. import org.openspcoop2.core.config.AttributeAuthority;
  38. import org.openspcoop2.core.config.CanaleConfigurazione;
  39. import org.openspcoop2.core.config.CanaliConfigurazione;
  40. import org.openspcoop2.core.config.Connettore;
  41. import org.openspcoop2.core.config.GenericProperties;
  42. import org.openspcoop2.core.config.GestioneToken;
  43. import org.openspcoop2.core.config.InvocazioneServizio;
  44. import org.openspcoop2.core.config.MessageSecurity;
  45. import org.openspcoop2.core.config.PortaApplicativa;
  46. import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
  47. import org.openspcoop2.core.config.PortaDelegata;
  48. import org.openspcoop2.core.config.Property;
  49. import org.openspcoop2.core.config.ServizioApplicativo;
  50. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  51. import org.openspcoop2.core.config.constants.MTOMProcessorType;
  52. import org.openspcoop2.core.config.constants.RuoloContesto;
  53. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  54. import org.openspcoop2.core.config.constants.TipoAutorizzazione;
  55. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  56. import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
  57. import org.openspcoop2.core.constants.CostantiDB;
  58. import org.openspcoop2.core.constants.TipiConnettore;
  59. import org.openspcoop2.core.id.IDFruizione;
  60. import org.openspcoop2.core.id.IDPortaApplicativa;
  61. import org.openspcoop2.core.id.IDPortaDelegata;
  62. import org.openspcoop2.core.id.IDServizio;
  63. import org.openspcoop2.core.id.IDServizioApplicativo;
  64. import org.openspcoop2.core.id.IDSoggetto;
  65. import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
  66. import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
  67. import org.openspcoop2.core.mvc.properties.Config;
  68. import org.openspcoop2.core.mvc.properties.utils.ConfigManager;
  69. import org.openspcoop2.core.mvc.properties.utils.PropertiesSourceConfiguration;
  70. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  71. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  72. import org.openspcoop2.core.registry.ConfigurazioneServizioAzione;
  73. import org.openspcoop2.core.registry.Fruitore;
  74. import org.openspcoop2.core.registry.ProprietaOggetto;
  75. import org.openspcoop2.core.registry.Soggetto;
  76. import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
  77. import org.openspcoop2.core.registry.beans.GruppoSintetico;
  78. import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
  79. import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
  80. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  81. import org.openspcoop2.message.constants.ServiceBinding;
  82. import org.openspcoop2.pdd.config.ConfigurazionePdDReader;
  83. import org.openspcoop2.pdd.config.UrlInvocazioneAPI;
  84. import org.openspcoop2.pdd.core.connettori.ConnettoreUtils;
  85. import org.openspcoop2.pdd.core.token.PolicyGestioneToken;
  86. import org.openspcoop2.pdd.core.token.PolicyNegoziazioneToken;
  87. import org.openspcoop2.pdd.core.token.TokenUtilities;
  88. import org.openspcoop2.pdd.core.token.attribute_authority.AttributeAuthorityUtilities;
  89. import org.openspcoop2.pdd.core.token.attribute_authority.PolicyAttributeAuthority;
  90. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  91. import org.openspcoop2.protocol.registry.RegistroServiziReader;
  92. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  93. import org.openspcoop2.protocol.sdk.ProtocolException;
  94. import org.openspcoop2.protocol.sdk.constants.ArchiveType;
  95. import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
  96. import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
  97. import org.openspcoop2.protocol.sdk.properties.IConsoleDynamicConfiguration;
  98. import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
  99. import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
  100. import org.openspcoop2.protocol.utils.ModIUtils;
  101. import org.openspcoop2.security.message.utils.SecurityUtils;
  102. import org.openspcoop2.utils.certificate.KeystoreParams;
  103. import org.openspcoop2.web.ctrlstat.core.CertificateChecker;
  104. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  105. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  106. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  107. import org.openspcoop2.web.ctrlstat.costanti.InUsoType;
  108. import org.openspcoop2.web.ctrlstat.driver.DriverControlStationException;
  109. import org.openspcoop2.web.ctrlstat.driver.DriverControlStationNotFound;
  110. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneUtilities;
  111. import org.openspcoop2.web.ctrlstat.servlet.apc.api.ApiCostanti;
  112. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCostanti;
  113. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaHelper;
  114. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaUtilities;
  115. import org.openspcoop2.web.ctrlstat.servlet.archivi.ExporterUtils;
  116. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCostanti;
  117. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  118. import org.openspcoop2.web.ctrlstat.servlet.pa.PorteApplicativeCostanti;
  119. import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateCostanti;
  120. import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCostanti;
  121. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  122. import org.openspcoop2.web.lib.mvc.AreaBottoni;
  123. import org.openspcoop2.web.lib.mvc.CheckboxStatusType;
  124. import org.openspcoop2.web.lib.mvc.Costanti;
  125. import org.openspcoop2.web.lib.mvc.DataElement;
  126. import org.openspcoop2.web.lib.mvc.DataElementImage;
  127. import org.openspcoop2.web.lib.mvc.DataElementType;
  128. import org.openspcoop2.web.lib.mvc.ForwardParams;
  129. import org.openspcoop2.web.lib.mvc.GeneralData;
  130. import org.openspcoop2.web.lib.mvc.PageData;
  131. import org.openspcoop2.web.lib.mvc.Parameter;
  132. import org.openspcoop2.web.lib.mvc.ServletUtils;
  133. import org.openspcoop2.web.lib.mvc.TargetType;
  134. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  135. /**
  136.  * ErogazioniHelper
  137.  *
  138.  * @author Andrea Poli (poli@link.it)
  139.  * @author Giuliano Pintori (pintori@link.it)
  140.  * @author $Author$
  141.  * @version $Rev$, $Date$
  142.  *
  143.  */
  144. public class ErogazioniHelper extends AccordiServizioParteSpecificaHelper{

  145.     public ErogazioniHelper(HttpServletRequest request, PageData pd, HttpSession session) throws Exception {
  146.         super(request, pd, session);
  147.     }
  148.     public ErogazioniHelper(ControlStationCore core, HttpServletRequest request, PageData pd, HttpSession session) throws Exception {
  149.         super(core, request, pd, session);
  150.     }

  151.     public void checkGestione(HttpServletRequest request, HttpSession session, ConsoleSearch ricerca, int idLista, String tipologiaParameterName) throws Exception {
  152.         this.checkGestione(request, session, ricerca, idLista, tipologiaParameterName, false);
  153.     }

  154.     public void checkGestione(HttpServletRequest request, HttpSession session, ConsoleSearch ricerca, int idLista, String tipologiaParameterName, boolean addFilterToRicerca) throws Exception {
  155.         String tipologia = this.getParameter(tipologiaParameterName);
  156.         if(tipologia==null) {
  157.             // guardo se sto entrando da altri link fuori dal menu di sinistra
  158.             // in tal caso e' gia' impostato
  159.             tipologia = ServletUtils.getObjectFromSession(request, session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  160.         }

  161.         if(tipologia!=null) {
  162.             if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
  163.                 ServletUtils.setObjectIntoSession(request, session, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  164.                 if(addFilterToRicerca)
  165.                     ricerca.addFilter(idLista, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE);
  166.             }
  167.             else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  168.                 ServletUtils.setObjectIntoSession(request, session, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  169.                
  170.                 boolean filtraSoloEsterni = true;
  171.                 if(addFilterToRicerca) {
  172.                     if(this.apsCore.isMultitenant() && this.apsCore.getMultitenantSoggettiFruizioni()!=null) {
  173.                         switch (this.apsCore.getMultitenantSoggettiFruizioni()) {
  174.                         case SOLO_SOGGETTI_ESTERNI:
  175.                             filtraSoloEsterni = true;
  176.                             break;
  177.                         case ESCLUDI_SOGGETTO_FRUITORE:
  178.                         case TUTTI:
  179.                             filtraSoloEsterni = false;
  180.                             break;
  181.                         }
  182.                     }
  183.                 }
  184.                
  185.                 if(addFilterToRicerca && filtraSoloEsterni)
  186.                     ricerca.addFilter(idLista, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE);
  187.             }
  188.             else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_COMPLETA.equals(tipologia)) {
  189.                 ServletUtils.removeObjectFromSession(request, session, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  190.             }
  191.            
  192.             if(addFilterToRicerca && this.isSoggettoMultitenantSelezionato()) {
  193.                 ricerca.addFilter(idLista, Filtri.FILTRO_SOGGETTO, this.getSoggettoMultitenantSelezionato());
  194.             }
  195.         }
  196.     }

  197.     public boolean isGestioneFruitori(String tipologia) throws Exception {
  198.         boolean gestioneFruitori = false;
  199.         if(tipologia==null) {
  200.             // guardo se sto entrando da altri link fuori dal menu di sinistra in tal caso e' gia' impostato
  201.             tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  202.         }

  203.         if(tipologia!=null && AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  204.             gestioneFruitori = true;
  205.         }

  206.         return gestioneFruitori;
  207.     }

  208.     public DataElement newDataElementStatoApiErogazione(DataElement de, boolean setWidthPx,
  209.             AccordoServizioParteSpecifica asps,AccordoServizioParteComuneSintetico apc, String nomePortaDefault,
  210.             List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa, List<PortaApplicativa> listaPorteApplicativeAssociate) throws Exception {
  211.         int numeroAbilitate = 0;
  212.         int numeroConfigurazioni = 0;
  213.         int numeroConfigurazioniSchedulingDisabilitato = 0;
  214.         boolean allActionRedefined = false;
  215.         String msgControlloAccessiMalConfigurato = null;
  216.         // stato gruppi
  217.         numeroConfigurazioni = listaMappingErogazionePortaApplicativa.size();
  218.        
  219.         if(listaMappingErogazionePortaApplicativa.size()>1) {
  220.             List<String> azioniL = new ArrayList<>();
  221.             Map<String,String> azioni = this.apsCore.getAzioniConLabel(asps, apc, false, true, new ArrayList<>());
  222.             if(azioni != null && azioni.size() > 0)
  223.                 azioniL.addAll(azioni.keySet());
  224.             allActionRedefined = this.allActionsRedefinedMappingErogazione(azioniL, listaMappingErogazionePortaApplicativa);
  225.         }
  226.        
  227.         for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
  228.            
  229.             String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(paAssociata.getTipoSoggettoProprietario());
  230.             boolean modipa = this.isProfiloModIPA(protocollo);
  231.            
  232.             boolean statoPA = paAssociata.getStato().equals(StatoFunzionalita.ABILITATO);
  233.             if(statoPA) {
  234.                 if(!allActionRedefined || !paAssociata.getNome().equals(nomePortaDefault)) {
  235.                     numeroAbilitate ++;
  236.                 }
  237.             }
  238.            
  239.             if(allActionRedefined && paAssociata.getNome().equals(nomePortaDefault)) {
  240.                 // se tutte le azioni sono state ridefinite non devo controllare la porta di default
  241.                 continue;
  242.             }
  243.            
  244.             if(StatoFunzionalita.ABILITATO.equals(paAssociata.getStato()) && msgControlloAccessiMalConfigurato==null){
  245.                 if(TipoAutorizzazione.isAuthenticationRequired(paAssociata.getAutorizzazione())) {
  246.                     if(
  247.                             (paAssociata.getSoggetti()==null || paAssociata.getSoggetti().sizeSoggettoList()<=0)
  248.                             &&
  249.                             (paAssociata.getServiziApplicativiAutorizzati()==null || paAssociata.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()<=0)
  250.                             ) {
  251.                         if(!modipa) {
  252.                             msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TRASPORTO_NO_FRUITORI;
  253.                         }
  254.                         else {
  255.                             msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_CANALE_NO_FRUITORI;
  256.                         }
  257.                         if(listaMappingErogazionePortaApplicativa.size()>1) {
  258.                             for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  259.                                 if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
  260.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  261.                                     break;
  262.                                 }
  263.                             }
  264.                         }
  265.                     }
  266.                 }
  267.                
  268.                 if(msgControlloAccessiMalConfigurato==null &&
  269.                         TipoAutorizzazione.isRolesRequired(paAssociata.getAutorizzazione())) {
  270.                     if(
  271.                             (paAssociata.getRuoli()==null || paAssociata.getRuoli().sizeRuoloList()<=0)
  272.                         ) {
  273.                         if(!modipa) {
  274.                             msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TRASPORTO_NO_RUOLI;
  275.                         }
  276.                         else {
  277.                             msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_CANALE_NO_RUOLI;
  278.                         }
  279.                         if(listaMappingErogazionePortaApplicativa.size()>1) {
  280.                             for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  281.                                 if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
  282.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  283.                                     break;
  284.                                 }
  285.                             }
  286.                         }
  287.                     }
  288.                 }
  289.                
  290.                 if(msgControlloAccessiMalConfigurato==null &&
  291.                         paAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getStato()) &&
  292.                         paAssociata.getAutorizzazioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getAutorizzazioneToken().getAutorizzazioneApplicativi())) {
  293.                     if(modipa) {
  294.                         if (paAssociata.getServiziApplicativiAutorizzati()==null || paAssociata.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()<=0) {
  295.                             msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_MESSAGGIO_NO_FRUITORI;
  296.                         }
  297.                     }
  298.                     else if(
  299.                             paAssociata.getAutorizzazioneToken().getServiziApplicativi()==null ||   (paAssociata.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()<=0)
  300.                         ) {
  301.                         msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_FRUITORI;
  302.                     }
  303.                     if(msgControlloAccessiMalConfigurato!=null) {
  304.                         if(listaMappingErogazionePortaApplicativa.size()>1) {
  305.                             for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  306.                                 if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
  307.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  308.                                     break;
  309.                                 }
  310.                             }
  311.                         }
  312.                     }
  313.                 }
  314.                
  315.                 if(msgControlloAccessiMalConfigurato==null &&
  316.                         paAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getStato()) &&
  317.                         paAssociata.getAutorizzazioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getAutorizzazioneToken().getAutorizzazioneRuoli())) {
  318.                     if(
  319.                             paAssociata.getAutorizzazioneToken().getRuoli()==null ||    (paAssociata.getAutorizzazioneToken().getRuoli().sizeRuoloList()<=0)
  320.                         ) {
  321.                         if(!modipa) {
  322.                             msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_RUOLI;
  323.                         }
  324.                         else {
  325.                             msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_MESSAGGIO_NO_RUOLI;
  326.                         }
  327.                         if(listaMappingErogazionePortaApplicativa.size()>1) {
  328.                             for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  329.                                 if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
  330.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  331.                                     break;
  332.                                 }
  333.                             }
  334.                         }
  335.                     }
  336.                 }
  337.                
  338.                 if(msgControlloAccessiMalConfigurato==null &&
  339.                         paAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getStato()) &&
  340.                         paAssociata.getScope()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getScope().getStato())) {
  341.                     if(
  342.                             (paAssociata.getScope().sizeScopeList()<=0)
  343.                         ) {
  344.                         msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_SCOPE;
  345.                         if(listaMappingErogazionePortaApplicativa.size()>1) {
  346.                             for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  347.                                 if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
  348.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  349.                                     break;
  350.                                 }
  351.                             }
  352.                         }
  353.                     }
  354.                 }
  355.                
  356.                 if(paAssociata.getBehaviour()!=null && paAssociata.sizeServizioApplicativoList()>0) {
  357.                     for (PortaApplicativaServizioApplicativo paSA : paAssociata.getServizioApplicativoList()) {
  358.                         if(paSA!=null && paSA.getDatiConnettore()!=null &&
  359.                                 StatoFunzionalita.DISABILITATO.equals(paSA.getDatiConnettore().getScheduling()) &&
  360.                                 !StatoFunzionalita.DISABILITATO.equals(paSA.getDatiConnettore().getStato())) {
  361.                             numeroConfigurazioniSchedulingDisabilitato++;
  362.                         }
  363.                     }
  364.                 }
  365.             }
  366.         }
  367.        
  368.         return newDataElementStatoApi(de, setWidthPx, msgControlloAccessiMalConfigurato, null, numeroAbilitate, numeroConfigurazioni, numeroConfigurazioniSchedulingDisabilitato, allActionRedefined);
  369.     }
  370.    
  371.     public DataElement newDataElementStatoApiFruizione(DataElement de, boolean setWidthPx,
  372.             AccordoServizioParteSpecifica asps,AccordoServizioParteComuneSintetico apc, String nomePortaDefault,
  373.             List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata, List<PortaDelegata> listaPorteDelegateAssociate) throws Exception {
  374.         int numeroAbilitate = 0;
  375.         int numeroConfigurazioni = 0;
  376.         boolean allActionRedefined = false;
  377.         String msgControlloAccessiMalConfigurato = null;
  378.         // stato gruppi

  379.         numeroConfigurazioni = listaMappingFruzionePortaDelegata.size();
  380.        
  381.         if(listaMappingFruzionePortaDelegata.size()>1) {
  382.             List<String> azioniL = new ArrayList<>();
  383.             Map<String,String> azioni = this.porteDelegateCore.getAzioniConLabel(asps, apc, false, true, new ArrayList<>());
  384.             if(azioni != null && azioni.size() > 0)
  385.                 azioniL.addAll(azioni.keySet());
  386.             allActionRedefined = this.allActionsRedefinedMappingFruizione(azioniL, listaMappingFruzionePortaDelegata);
  387.         }
  388.        
  389.         for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  390.             boolean statoPD = pdAssociata.getStato().equals(StatoFunzionalita.ABILITATO);
  391.             if(statoPD) {
  392.                 if(!allActionRedefined || !pdAssociata.getNome().equals(nomePortaDefault)) {
  393.                     numeroAbilitate ++;
  394.                 }
  395.             }
  396.            
  397.             if(allActionRedefined && pdAssociata.getNome().equals(nomePortaDefault)) {
  398.                 // se tutte le azioni sono state ridefinite non devo controllare la porta di default
  399.                 continue;
  400.             }
  401.            
  402.             if(StatoFunzionalita.ABILITATO.equals(pdAssociata.getStato()) && msgControlloAccessiMalConfigurato==null){
  403.                 if(TipoAutorizzazione.isAuthenticationRequired(pdAssociata.getAutorizzazione())) {
  404.                     if(
  405.                             (pdAssociata.sizeServizioApplicativoList()<=0)
  406.                             ) {
  407.                         msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TRASPORTO_NO_FRUITORI;
  408.                         if(listaMappingFruzionePortaDelegata.size()>1) {
  409.                             for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  410.                                 if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
  411.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  412.                                     break;
  413.                                 }
  414.                             }
  415.                         }
  416.                     }
  417.                 }
  418.                
  419.                 if(msgControlloAccessiMalConfigurato==null &&
  420.                         TipoAutorizzazione.isRolesRequired(pdAssociata.getAutorizzazione())) {
  421.                     if(
  422.                             (pdAssociata.getRuoli()==null || pdAssociata.getRuoli().sizeRuoloList()<=0)
  423.                         ) {
  424.                         msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TRASPORTO_NO_RUOLI;
  425.                         if(listaMappingFruzionePortaDelegata.size()>1) {
  426.                             for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  427.                                 if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
  428.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  429.                                     break;
  430.                                 }
  431.                             }
  432.                         }
  433.                     }
  434.                 }
  435.                
  436.                 if(msgControlloAccessiMalConfigurato==null &&
  437.                         pdAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getStato()) &&
  438.                         pdAssociata.getAutorizzazioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getAutorizzazioneToken().getAutorizzazioneApplicativi())) {
  439.                     if(
  440.                             pdAssociata.getAutorizzazioneToken().getServiziApplicativi()==null ||   (pdAssociata.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()<=0)
  441.                         ) {
  442.                         msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_FRUITORI;
  443.                         if(listaMappingFruzionePortaDelegata.size()>1) {
  444.                             for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  445.                                 if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
  446.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  447.                                     break;
  448.                                 }
  449.                             }
  450.                         }
  451.                     }
  452.                 }
  453.                
  454.                 if(msgControlloAccessiMalConfigurato==null &&
  455.                         pdAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getStato()) &&
  456.                         pdAssociata.getAutorizzazioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getAutorizzazioneToken().getAutorizzazioneRuoli())) {
  457.                     if(
  458.                             pdAssociata.getAutorizzazioneToken().getRuoli()==null || (pdAssociata.getAutorizzazioneToken().getRuoli().sizeRuoloList()<=0)
  459.                         ) {
  460.                         msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_RUOLI;
  461.                         if(listaMappingFruzionePortaDelegata.size()>1) {
  462.                             for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  463.                                 if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
  464.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  465.                                     break;
  466.                                 }
  467.                             }
  468.                         }
  469.                     }
  470.                 }
  471.                
  472.                 if(msgControlloAccessiMalConfigurato==null &&
  473.                         pdAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getStato()) &&
  474.                         pdAssociata.getScope()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getScope().getStato())) {
  475.                     if(
  476.                             (pdAssociata.getScope().sizeScopeList()<=0)
  477.                         ) {
  478.                         msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_SCOPE;
  479.                         if(listaMappingFruzionePortaDelegata.size()>1) {
  480.                             for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  481.                                 if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
  482.                                     msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
  483.                                     break;
  484.                                 }
  485.                             }
  486.                         }
  487.                     }
  488.                 }
  489.             }
  490.         }
  491.        
  492.         return newDataElementStatoApi(de, setWidthPx, msgControlloAccessiMalConfigurato, null, numeroAbilitate, numeroConfigurazioni, -1, allActionRedefined);
  493.     }
  494.    
  495.     private DataElement newDataElementStatoApi(DataElement deParam, boolean setWidthPx, String msgControlloAccessiMalConfiguratoError,  String msgControlloAccessiMalConfiguratoWarning,
  496.             int numeroAbilitate, int numeroConfigurazioni, int numeroConfigurazioniSchedulingDisabilitato,
  497.             boolean allActionRedefined) {
  498.        
  499.         DataElement de = deParam;
  500.         boolean list = false;
  501.         if(de==null) {
  502.             de = new DataElement();
  503.             list = true;
  504.         }
  505.         if(list) {
  506.             de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_STATO_CONFIGURAZIONI);
  507.         }
  508.         de.setType(DataElementType.CHECKBOX);
  509.         if(msgControlloAccessiMalConfiguratoError!=null) {
  510.             de.setStatusType(CheckboxStatusType.DISABILITATO);
  511.             de.setStatusToolTip(msgControlloAccessiMalConfiguratoError);
  512.         }
  513.         else if(msgControlloAccessiMalConfiguratoWarning!=null) {
  514.             de.setStatusType(CheckboxStatusType.WARNING_ONLY);
  515.             de.setStatusToolTip(msgControlloAccessiMalConfiguratoWarning);
  516.         }
  517.         else if(numeroAbilitate == 0) {
  518.             de.setStatusType(CheckboxStatusType.DISABILITATO);
  519.             de.setStatusToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_TUTTE_DISABILITATE_TOOLTIP);
  520.         } else if(
  521.                 (!allActionRedefined && numeroAbilitate == numeroConfigurazioni)
  522.                 ||
  523.                 (allActionRedefined && numeroAbilitate == (numeroConfigurazioni-1)) // escludo la regola che non viene usata poiche' tutte le azioni sono ridefinite
  524.                 ) {
  525.            
  526.             if(numeroConfigurazioniSchedulingDisabilitato>0) {
  527.                 de.setStatusType(CheckboxStatusType.WARNING_ONLY);
  528.                 de.setStatusToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONNETTORI_MULTIPLI_SCHEDULING_DISABILITATO_TOOLTIP);
  529.             }
  530.             else {
  531.                 de.setStatusType(CheckboxStatusType.ABILITATO);
  532.                 de.setStatusToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_TUTTE_ABILITATE_TOOLTIP);
  533.             }
  534.         } else  {
  535.             de.setStatusType(CheckboxStatusType.WARNING_ONLY);
  536.             de.setStatusToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_PARZIALMENTE_ABILITATE_TOOLTIP);
  537.         }
  538.         if(setWidthPx) {
  539.             de.setWidthPx(16);
  540.         }

  541.         return de;
  542.        
  543.     }
  544.    
  545.     public void prepareErogazioniList(ISearch ricerca, List<AccordoServizioParteSpecifica> lista) throws Exception {
  546.         try {

  547.             ServletUtils.addListElementIntoSession(this.request, this.session, ErogazioniCostanti.OBJECT_NAME_ASPS_EROGAZIONI);

  548.             String tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  549.             boolean gestioneFruitori = this.isGestioneFruitori(tipologia);
  550.             boolean visualizzaGruppi = false;

  551.             if(gestioneFruitori)
  552.                 this.pd.setCustomListViewName(ErogazioniCostanti.ASPS_EROGAZIONI_NOME_VISTA_CUSTOM_LISTA_FRUIZIONI);
  553.             else
  554.                 this.pd.setCustomListViewName(ErogazioniCostanti.ASPS_EROGAZIONI_NOME_VISTA_CUSTOM_LISTA_EROGAZIONI);

  555.             boolean showProtocolli = this.core.countProtocolli(this.request, this.session)>1;
  556.             boolean showServiceBinding = true;
  557.             if( !showProtocolli ) {
  558.                 List<String> l = this.core.getProtocolli(this.request, this.session);
  559.                 if(!l.isEmpty()) {
  560.                     IProtocolFactory<?> p = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(l.get(0));
  561.                     if(p.getManifest().getBinding().getRest()==null || p.getManifest().getBinding().getSoap()==null) {
  562.                         showServiceBinding = false;
  563.                     }
  564.                 }
  565.             }
  566.            
  567.             int idLista = Liste.SERVIZI;
  568.             int limit = ricerca.getPageSize(idLista);
  569.             int offset = ricerca.getIndexIniziale(idLista);
  570.             String search = ServletUtils.getSearchFromSession(ricerca, idLista);

  571.             String filterProtocollo = addFilterProtocol(ricerca, idLista, true);
  572.             boolean profiloSelezionato = false;
  573.             String protocolloS = filterProtocollo;
  574.             if(protocolloS==null) {
  575.                 // significa che e' stato selezionato un protocollo nel menu in alto a destra
  576.                 List<String> protocolli = this.core.getProtocolli(this.request, this.session);
  577.                 if(protocolli!=null && protocolli.size()==1) {
  578.                     protocolloS = protocolli.get(0);
  579.                 }
  580.             }
  581.             if( (filterProtocollo!=null &&
  582.                     //!"".equals(filterProtocollo) &&
  583.                     !CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI.equals(filterProtocollo))
  584.                     ||
  585.                 (filterProtocollo==null && protocolloS!=null)
  586.                     ) {
  587.                 profiloSelezionato = true;
  588.             }
  589.            
  590.             String protocolloPerFiltroProprieta = protocolloS;
  591.             // valorizzato con il protocollo nel menu in alto a destra oppure null, controllo se e' stato selezionato nel filtro di ricerca
  592.             if(protocolloPerFiltroProprieta == null) {
  593.                 if(
  594.                         //"".equals(filterProtocollo) ||
  595.                         CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI.equals(filterProtocollo)) {
  596.                     protocolloPerFiltroProprieta = null;
  597.                 } else {
  598.                     protocolloPerFiltroProprieta = filterProtocollo;
  599.                 }
  600.             }
  601.            
  602.             String soggettoPerFiltroProprieta = null;
  603.             if(profiloSelezionato) {
  604.                 // soggetto non selezionato nel menu' in alto a dx
  605.                 if(!this.isSoggettoMultitenantSelezionato()) {
  606.                     soggettoPerFiltroProprieta = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SOGGETTO);
  607.                     if(
  608.                             //"".equals(soggettoPerFiltroProprieta) ||
  609.                             CostantiControlStation.DEFAULT_VALUE_PARAMETRO_SOGGETTO_QUALSIASI.equals(soggettoPerFiltroProprieta)) {
  610.                         soggettoPerFiltroProprieta = null;
  611.                     }
  612.                 } else {
  613.                     soggettoPerFiltroProprieta = this.getSoggettoMultitenantSelezionato();
  614.                 }
  615.             }
  616.            
  617.             // filtri MODIPA da visualizzare solo se non e' stato selezionato un protocollo in alto a dx  (opzione pilota da file di proprieta')
  618.             // oppure e' selezionato MODIPA
  619.             // oppure non e' stato selezionato un protocollo in alto e nessun protocollo nei filtri  (opzione pilota da file di proprieta')
  620.             // oppure MODIPA nei filtri
  621.             boolean profiloModipaSelezionato = false;
  622.             // solo se il protocollo modipa e' caricato faccio la verifica
  623.             if(this.core.getProtocolli().contains(CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_MODIPA)) {
  624.                 List<String> profiloModipaSelezionatoOpzioniAccettate = new ArrayList<>();
  625.                 profiloModipaSelezionatoOpzioniAccettate.add(CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_MODIPA);
  626.                 if(this.core.isModipaFiltroRicercaProfiloQualsiasiVisualizzaDatiModi()) {
  627.                     profiloModipaSelezionatoOpzioniAccettate.add(CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI);
  628.                 }
  629.                 if( (filterProtocollo!=null && profiloModipaSelezionatoOpzioniAccettate.contains(filterProtocollo))
  630.                         ||
  631.                     (filterProtocollo==null && protocolloS!=null && profiloModipaSelezionatoOpzioniAccettate.contains(protocolloS))
  632.                     ) {
  633.                     profiloModipaSelezionato = true;
  634.                 }
  635.             }
  636.            
  637.             if( profiloSelezionato &&
  638.                     (!this.isSoggettoMultitenantSelezionato())) {
  639.                 String filterSoggetto = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SOGGETTO);
  640.                 this.addFilterSoggetto(filterSoggetto,protocolloS,true,true);
  641.             }
  642.                        
  643.             String filterTipoAccordo = null;
  644.             if(showServiceBinding) {
  645.                 filterTipoAccordo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SERVICE_BINDING);
  646.                 boolean postBackServiceBinding = profiloSelezionato // serve se poi si fa vedere le API
  647.                         ||
  648.                         profiloModipaSelezionato; // serve per pilotare la label audience e sulla sicurezza messaggio
  649.                 this.addFilterServiceBinding(filterTipoAccordo,postBackServiceBinding,true);
  650.             }
  651.            
  652.             String filterGruppo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_GRUPPO);
  653.             boolean postBackGruppo = profiloSelezionato; // serve se poi si fa vedere le API
  654.             addFilterGruppo(filterProtocollo, filterGruppo, postBackGruppo);

  655.             if( profiloSelezionato ) {
  656.                 String filterApi = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_API);
  657.                 addFilterApi(filterProtocollo, filterTipoAccordo,filterGruppo, filterApi, false);
  658.             }
  659.            
  660.             CanaliConfigurazione canali = this.confCore.getCanaliConfigurazione(false);
  661.             if(canali!=null && StatoFunzionalita.ABILITATO.equals(canali.getStato())) {
  662.                 String filterCanale = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CANALE);
  663.                 addFilterCanale(canali, filterCanale, false);
  664.             }
  665.            
  666.             if(this.isShowGestioneWorkflowStatoDocumenti() &&
  667.                 this.core.isGestioneWorkflowStatoDocumentiVisualizzaStatoLista()) {
  668.                 String filterStatoAccordo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_STATO_ACCORDO);
  669.                 this.addFilterStatoAccordo(filterStatoAccordo,false);
  670.             }
  671.            
  672.             if(gestioneFruitori) {
  673.                 addFilterSoggettoErogatoreStringaLiberaContains(ricerca, idLista);
  674.             }
  675.            
  676.                        
  677.             // **** filtro connettore ****
  678.            
  679.             this.addFilterSubtitle(ConnettoriCostanti.NAME_SUBTITLE_DATI_CONNETTORE, ConnettoriCostanti.LABEL_SUBTITLE_DATI_CONNETTORE, false);
  680.            
  681.             // filtro tipo connettore con voce IM solo sulle erogazioni
  682.             String filterTipoConnettore = this.addFilterTipoConnettore(ricerca, idLista, !gestioneFruitori);
  683.            
  684.             // filtro plugin
  685.             this.addFilterConnettorePlugin(ricerca, idLista, filterTipoConnettore);
  686.            
  687.             // filtro debug
  688.             if(!this.isModalitaStandard()) {
  689.                 this.addFilterConnettoreDebug(ricerca, idLista, filterTipoConnettore);
  690.             }
  691.            
  692.             // filtro token policy
  693.             this.addFilterConnettoreTokenPolicy(ricerca, idLista, filterTipoConnettore);
  694.            
  695.             // filtro endpoint
  696.             this.addFilterConnettoreEndpoint(ricerca, idLista, filterTipoConnettore);
  697.            
  698.             // filtro keystore
  699.             this.addFilterConnettoreKeystore(ricerca, idLista, filterTipoConnettore);
  700.                        
  701.             // imposto apertura sezione
  702.             this.impostaAperturaSubtitle(ConnettoriCostanti.NAME_SUBTITLE_DATI_CONNETTORE);
  703.                        
  704.             // **** fine filtro connettore ****
  705.            
  706.            
  707.             // **** filtro modi ****
  708.            
  709.             if(profiloModipaSelezionato) {
  710.                 this.addFilterSubtitle(CostantiControlStation.NAME_SUBTITLE_FILTRI_MODIPA, CostantiControlStation.LABEL_SUBTITLE_FILTRI_MODIPA, false);
  711.                
  712.                 // filtro sicurezza canale
  713.                 this.addFilterModISicurezzaCanale(ricerca, idLista);
  714.                
  715.                 // filtro sicurezza messaggio
  716.                 this.addFilterModISicurezzaMessaggio(ricerca, idLista, filterTipoAccordo);
  717.                
  718.                 // filtro sorgente token
  719.                 this.addFilterModIGenerazioneToken(ricerca, idLista);
  720.                
  721.                 // filtro sicurezza canale
  722.                 this.addFilterModIDigestRichiesta(ricerca, idLista);
  723.                
  724.                 // filtro sicurezza canale
  725.                 this.addFilterModIInfoUtente(ricerca, idLista);
  726.                
  727.                 // filtro keystore
  728.                 this.addFilterModIKeystorePath(ricerca, idLista);
  729.                
  730.                 // filtro audience
  731.                 this.addFilterModIAudience(ricerca, idLista, false, filterTipoAccordo, null);
  732.                
  733.                 // imposto apertura sezione
  734.                 this.impostaAperturaSubtitle(CostantiControlStation.NAME_SUBTITLE_FILTRI_MODIPA);
  735.             }
  736.            
  737.             // **** fine filtro modi ****

  738.            
  739.             // **** filtro configurazione ****
  740.            
  741.             this.addFilterSubtitle(CostantiControlStation.NAME_SUBTITLE_DATI_CONFIGURAZIONE, CostantiControlStation.LABEL_SUBTITLE_DATI_CONFIGURAZIONE, false);
  742.            
  743.             // filtro stato
  744.             this.addFilterStatoImplementazioneAPI(ricerca, idLista);
  745.            
  746.             // filtro autenticazione token
  747.             this.addFilterTipoAutenticazioneToken(ricerca, idLista);
  748.            
  749.             // filtro autenticazione trasporto
  750.             boolean modiErogazione = profiloModipaSelezionato && !gestioneFruitori;
  751.             Boolean confPers = ServletUtils.getObjectFromSession(this.request, this.session, Boolean.class, CostantiControlStation.SESSION_PARAMETRO_GESTIONE_CONFIGURAZIONI_PERSONALIZZATE);
  752.             String filterTipoAutenticazioneTrasporto = this.addFilterTipoAutenticazioneTrasporto(ricerca, idLista, true, modiErogazione, confPers);
  753.            
  754.             // filtro plugin autenticazione trasporto
  755.             this.addFilterTipoAutenticazioneTrasportoPlugin(ricerca, idLista, filterTipoAutenticazioneTrasporto, gestioneFruitori);
  756.            
  757.             // filtro stato rate limiting
  758.             this.addFilterConfigurazioneRateLimiting(ricerca, idLista);
  759.            
  760.             // filtro stato validazione
  761.             this.addFilterConfigurazioneValidazione(ricerca, idLista);
  762.            
  763.             // filtro stato caching risposta
  764.             this.addFilterConfigurazioneCacheRisposta(ricerca, idLista);
  765.            
  766.             // filtro stato message security
  767.             this.addFilterConfigurazioneMessageSecurity(ricerca, idLista);
  768.            
  769.             // filtro stato mtom
  770.             this.addFilterConfigurazioneMTOM(ricerca, idLista, filterTipoAccordo);
  771.            
  772.             // filtro trasformazione
  773.             this.addFilterConfigurazioneTrasformazione(ricerca, idLista);
  774.            
  775.             // filtro transazioni
  776.             this.addFilterConfigurazioneTransazioni(ricerca, idLista, false);
  777.            
  778.             // filtro correlazione applicativa
  779.             this.addFilterConfigurazioneCorrelazioneApplicativa(ricerca, idLista);
  780.            
  781.             // filtro registrazione messaggi
  782.             this.addFilterConfigurazioneTipoDump(ricerca, idLista, false);
  783.            
  784.             // filtro cors
  785.             String filterCORS = this.addFilterConfigurazioneCORS(ricerca, idLista);
  786.            
  787.             // filtro cors origin
  788.             this.addFilterConfigurazioneCORSOrigin(ricerca, idLista, filterCORS);
  789.            
  790.             // imposto apertura sezione
  791.             this.impostaAperturaSubtitle(CostantiControlStation.NAME_SUBTITLE_DATI_CONFIGURAZIONE);
  792.            
  793.             // **** fine filtro configurazione ****
  794.            
  795.            
  796.             // **** filtro proprieta ****
  797.            
  798.             List<String> nomiProprieta =null;
  799.             if(gestioneFruitori) {
  800.                 nomiProprieta = this.nomiProprietaPD(protocolloPerFiltroProprieta,soggettoPerFiltroProprieta);
  801.             } else {
  802.                 nomiProprieta = this.nomiProprietaPA(protocolloPerFiltroProprieta,soggettoPerFiltroProprieta);
  803.             }
  804.            
  805.             if(nomiProprieta != null && !nomiProprieta.isEmpty()) {
  806.                 this.addFilterSubtitle(CostantiControlStation.NAME_SUBTITLE_PROPRIETA, CostantiControlStation.LABEL_SUBTITLE_PROPRIETA, false);
  807.                
  808.                 // filtro nome
  809.                 this.addFilterProprietaNome(ricerca, idLista, nomiProprieta);
  810.                
  811.                 // filtro valore
  812.                 this.addFilterProprietaValore(ricerca, idLista, nomiProprieta);
  813.                
  814.                 // imposto apertura sezione
  815.                 this.impostaAperturaSubtitle(CostantiControlStation.NAME_SUBTITLE_PROPRIETA);
  816.             }
  817.            
  818.             // **** fine filtro proprieta ****
  819.            

  820.             boolean showConfigurazionePA = false;
  821.             boolean showConfigurazionePD = false;

  822.             if(tipologia==null) {
  823.                 throw new DriverControlStationException("Parametro TipologiaErogazione non puo' essere vuoto");
  824.             }

  825.             if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
  826.                 showConfigurazionePA = true;
  827.             }
  828.             if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  829.                 showConfigurazionePD = true;
  830.             }

  831.             this.pd.setIndex(offset);
  832.             this.pd.setPageSize(limit);
  833.             this.pd.setNumEntries(ricerca.getNumEntries(idLista));

  834.             List<String> labelLst = new ArrayList<>();
  835.             labelLst.add("");//AccordiServizioParteSpecificaCostanti.LABEL_APS_STATO); // colonna stato
  836.             if(gestioneFruitori) {
  837.                 labelLst.add(ErogazioniCostanti.LABEL_ASPS_FRUIZIONI);
  838.             }
  839.             else {
  840.                 labelLst.add(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI);
  841.             }
  842.            
  843.             if(visualizzaGruppi)
  844.                 labelLst.add(ErogazioniCostanti.LABEL_ASPS_LISTA_EROGAZIONI_COLONNA_CONFIGURAZIONE);
  845.            
  846.             String [] labels = labelLst.toArray(new String[labelLst.size()]);
  847.             this.pd.setLabels(labels);

  848.             // setto la barra del titolo
  849.             List<Parameter> lstParm = new ArrayList<>();

  850.             if(gestioneFruitori) {
  851.                 lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_FRUIZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
  852.             } else {
  853.                 lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
  854.             }
  855.            
  856.             if(gestioneFruitori) {
  857.                 this.pd.setSearchLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_RICERCA_API_FRUIZIONE);
  858.             }
  859.             else {
  860.                 this.pd.setSearchLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_RICERCA_API_EROGAZIONE);
  861.             }
  862.             if(search.equals("")){
  863.                 this.pd.setSearchDescription("");
  864.             }else{
  865.                 lstParm.add(new Parameter(Costanti.PAGE_DATA_TITLE_LABEL_RISULTATI_RICERCA, null));
  866.             }

  867.             // setto la barra del titolo
  868.             ServletUtils.setPageDataTitle(this.pd, lstParm );

  869.             // controllo eventuali risultati ricerca
  870.             if (!search.equals("")) {
  871.                 ServletUtils.enabledPageDataSearch(this.pd, ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, search);
  872.             }

  873.             List<AccordoServizioParteComuneSintetico> listApc = new ArrayList<>();
  874.             List<String> protocolli = new ArrayList<>();
  875.            
  876.             // colleziono i tags registrati
  877.             List<String> tagsDisponibili = this.gruppiCore.getAllGruppiOrdinatiPerDataRegistrazione();
  878.            
  879.             // configurazione dei canali
  880.             CanaliConfigurazione gestioneCanali = this.confCore.getCanaliConfigurazione(false);
  881.             boolean gestioneCanaliEnabled = gestioneCanali != null && org.openspcoop2.core.config.constants.StatoFunzionalita.ABILITATO.equals(gestioneCanali.getStato());
  882.             List<CanaleConfigurazione> canaleList = gestioneCanali != null ? gestioneCanali.getCanaleList() : new ArrayList<>();
  883.             CanaleConfigurazione canaleConfigurazioneDefault = gestioneCanaliEnabled ? this.getCanaleDefault(canaleList) : null;

  884.             if(lista!=null) {
  885.                 for (AccordoServizioParteSpecifica asps : lista) {
  886.                     AccordoServizioParteComuneSintetico apc = this.apcCore.getAccordoServizioSintetico(asps.getIdAccordo());
  887.                     String tipoSoggetto = asps.getTipoSoggettoErogatore();
  888.                     String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tipoSoggetto);
  889.    
  890.                     listApc.add(apc);
  891.                     protocolli.add(protocollo);
  892.                 }
  893.             }


  894.             // preparo i dati
  895.             List<List<DataElement>> dati = new ArrayList<>();

  896.             if(lista!=null) {
  897.                 for (int i = 0; i < lista.size(); i++) {
  898.                     AccordoServizioParteSpecifica asps = lista.get(i);
  899.                     IDServizio idServizio = this.idServizioFactory.getIDServizioFromAccordo(asps);
  900.    
  901.                     String protocollo = protocolli.get(i);
  902.                    
  903.                     Fruitore fruitore = null;
  904.                     IDSoggetto idSoggettoFruitore = null;
  905.                     if(showConfigurazionePD || gestioneFruitori) {
  906.                         fruitore = asps.getFruitore(0); // NOTA: il metodo 'soggettiServizioList' ritorna un unico fruitore in caso di gestioneFruitori abiltata per ogni entry. Crea cioè un accordo con fruitore per ogni fruitore esistente
  907.                         idSoggettoFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
  908.                     }
  909.    
  910.                     List<DataElement> e = new ArrayList<>();
  911.    
  912.                     Parameter pIdsoggErogatore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO_EROGATORE, ""+asps.getIdSoggetto());
  913.                     Parameter pNomeServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SERVIZIO, asps.getNome());
  914.                     Parameter pTipoServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SERVIZIO, asps.getTipo());
  915.                     Parameter pTipoSoggettoFruitore = null;
  916.                     Parameter pNomeSoggettoFruitore = null;
  917.                     if(gestioneFruitori) {
  918.                         pTipoSoggettoFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SOGGETTO_FRUITORE, fruitore.getTipo());
  919.                         pNomeSoggettoFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SOGGETTO_FRUITORE, fruitore.getNome());
  920.                     }
  921.    
  922.                     String uriASPS = this.idServizioFactory.getUriFromAccordo(asps);
  923.            
  924.                     boolean showVerificaCertificati = false;
  925.                     if(gestioneFruitori) {
  926.                         showVerificaCertificati = this.core.isFruizioniVerificaCertificati();
  927.                     }
  928.                     else {
  929.                         showVerificaCertificati = this.core.isErogazioniVerificaCertificati();
  930.                     }
  931.                    
  932.                    
  933.                     // SCHEMA Assegnazione dati -> DataElement:
  934.                     // Data Element 1. colonna 1, riga superiore: Titolo Servizio
  935.                     // Data Element 2. colonna 1, riga inferiore: Metadati Servizio
  936.                     // Data Element 3..n . colonna 2, lista riepilogo configurazioni
  937.    
  938.                     // Titolo Servizio
  939.                     DataElement de = new DataElement();        
  940.                     String labelServizio = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, protocollo);
  941.                     de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_NOME_SERVIZIO);
  942.                     List<Parameter> listParameters = new ArrayList<>();
  943.                     listParameters.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, asps.getId() + ""));
  944.                     listParameters.add(pNomeServizio);
  945.                     listParameters.add(pTipoServizio);
  946.                     listParameters.add(pIdsoggErogatore);
  947.                     if(gestioneFruitori) {
  948.                         listParameters.add(pTipoSoggettoFruitore);
  949.                         listParameters.add(pNomeSoggettoFruitore);
  950.                     }
  951.                     de.setUrl(ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_CHANGE, listParameters.toArray(new Parameter[1]));
  952.                     de.setValue(labelServizio);
  953.                     if(gestioneFruitori) {
  954.                         de.setIdToRemove(uriASPS+"@"+fruitore.getTipo()+"/"+fruitore.getNome());
  955.                     }else {
  956.                         de.setIdToRemove(uriASPS);
  957.                     }
  958.                     de.setType(DataElementType.TITLE);
  959.                     e.add(de);
  960.                    
  961.                     AccordoServizioParteComuneSintetico apc = listApc.get(i);
  962.                     ServiceBinding serviceBinding = this.apcCore.toMessageServiceBinding(apc.getServiceBinding());
  963.                    
  964.                     DataElement dataElementStatoApi = null;
  965.                     String labelCanalePorta = null;
  966.                     // stato gruppi
  967.                     if(showConfigurazionePA) {
  968.                         List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
  969.                         List<PortaApplicativa> listaPorteApplicativeAssociate = new ArrayList<>();
  970.    
  971.                         String nomePortaDefault = null;
  972.                         for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  973.                             PortaApplicativa pa = this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa());
  974.                             if(mappinErogazione.isDefault()) {
  975.                                 nomePortaDefault = mappinErogazione.getIdPortaApplicativa().getNome();
  976.                                 labelCanalePorta = pa.getCanale();
  977.                             }
  978.                             listaPorteApplicativeAssociate.add(pa);
  979.                         }
  980.                        
  981.                         dataElementStatoApi = this.newDataElementStatoApiErogazione(null, true, asps, apc, nomePortaDefault, listaMappingErogazionePortaApplicativa, listaPorteApplicativeAssociate);
  982.                     }
  983.                    
  984.                     if(showConfigurazionePD) {
  985.                         List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);    
  986.                         List<PortaDelegata> listaPorteDelegateAssociate = new ArrayList<>();
  987.    
  988.                         String nomePortaDefault = null;
  989.                         for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  990.                             PortaDelegata pd = this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata());
  991.                             if(mappingFruizione.isDefault()) {
  992.                                 nomePortaDefault = mappingFruizione.getIdPortaDelegata().getNome();
  993.                                 labelCanalePorta = pd.getCanale();
  994.                             }                  
  995.                            
  996.                             listaPorteDelegateAssociate.add(pd);
  997.                         }
  998.                        
  999.                         dataElementStatoApi = this.newDataElementStatoApiFruizione(null, true, asps, apc, nomePortaDefault, listaMappingFruzionePortaDelegata, listaPorteDelegateAssociate);
  1000.                     }
  1001.    
  1002.                     // Metadati Servizio
  1003.                     de = new DataElement();
  1004.                    
  1005.                     String labelAPI = this.getLabelIdAccordo(apc);
  1006.                     String labelServiceBinding = null;
  1007.                     switch (serviceBinding) {
  1008.                     case REST:
  1009.                         labelServiceBinding= CostantiControlStation.LABEL_PARAMETRO_SERVICE_BINDING_REST;
  1010.                         break;
  1011.                     case SOAP:
  1012.                     default:
  1013.                         labelServiceBinding= CostantiControlStation.LABEL_PARAMETRO_SERVICE_BINDING_SOAP;
  1014.                         break;
  1015.                     }
  1016.    
  1017.                     if(gestioneCanaliEnabled) {
  1018.                         if(labelCanalePorta == null) { // default dell'accordo
  1019.                             labelCanalePorta =  apc.getCanale();
  1020.                         }
  1021.                        
  1022.                         if(labelCanalePorta == null) { // default del sistema
  1023.                             labelCanalePorta =  canaleConfigurazioneDefault!=null ? canaleConfigurazioneDefault.getNome() : null;
  1024.                         }
  1025.                        
  1026.                         if(showProtocolli) {
  1027.                             String labelProtocollo =this.getLabelProtocollo(protocollo);
  1028.                             de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_CON_PROFILO_CON_CANALE, labelServiceBinding, labelAPI, labelCanalePorta, labelProtocollo));
  1029.                         } else {
  1030.                             de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_LIST_CON_CANALE, labelServiceBinding, labelAPI, labelCanalePorta));
  1031.                         }
  1032.                     } else {
  1033.                         if(showProtocolli) {
  1034.                             String labelProtocollo =this.getLabelProtocollo(protocollo);
  1035.                             de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_CON_PROFILO, labelServiceBinding, labelAPI, labelProtocollo));
  1036.                         } else {
  1037.                             de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_LIST, labelServiceBinding, labelAPI));
  1038.                         }
  1039.                     }
  1040.                     de.setType(DataElementType.SUBTITLE);
  1041.                     e.add(de);
  1042.                    
  1043.                     // tags
  1044.                     List<GruppoSintetico> gruppo = apc.getGruppo();
  1045.                     if(gruppo != null && !gruppo.isEmpty()) {
  1046.                         for (int j = 0; j < gruppo.size(); j++) {
  1047.                             GruppoSintetico gruppoSintetico = gruppo.get(j);
  1048.                             de = new DataElement();
  1049.                             de.setName(ApiCostanti.PARAMETRO_APC_API_GESTIONE_GRUPPO + "_" + j);
  1050.                             de.setType(DataElementType.BUTTON);
  1051.                             de.setLabel(gruppoSintetico.getNome());
  1052.                            
  1053.                             int indexOf = tagsDisponibili.indexOf(gruppoSintetico.getNome());
  1054.                             if(indexOf == -1)
  1055.                                 indexOf = 0;
  1056.                            
  1057.                             indexOf = indexOf % CostantiControlStation.NUMERO_GRUPPI_CSS;
  1058.                            
  1059.                             de.setStyleClass("label-info-"+indexOf);
  1060.                            
  1061.                             e.add(de);
  1062.                         }
  1063.                     }
  1064.                    
  1065.                    
  1066.                    
  1067.                     if(dataElementStatoApi!=null) {
  1068.                         e.add(dataElementStatoApi);
  1069.                     }
  1070.    
  1071.                     if(visualizzaGruppi) {
  1072.                         // Data Element 3..n . colonna 2, lista riepilogo configurazioni
  1073.                         if(showConfigurazionePA) {
  1074.    
  1075.                             boolean visualizzaMTOM = true;
  1076.                             boolean visualizzaSicurezza = true;
  1077.                             boolean visualizzaCorrelazione = true;
  1078.                             switch (serviceBinding) {
  1079.                             case REST:
  1080.                                 visualizzaMTOM = false;
  1081.                                 visualizzaSicurezza = true;
  1082.                                 visualizzaCorrelazione = true;
  1083.                                 break;
  1084.                             case SOAP:
  1085.                             default:
  1086.                                 visualizzaMTOM = true;
  1087.                                 visualizzaSicurezza = true;
  1088.                                 visualizzaCorrelazione = true;
  1089.                                 break;
  1090.                             }
  1091.    
  1092.                             // Utilizza la configurazione come parent
  1093.                             ServletUtils.setObjectIntoSession(this.request, this.session, PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE, PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT);
  1094.                             List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
  1095.                             List<PortaApplicativa> listaPorteApplicativeAssociate = new ArrayList<>();
  1096.    
  1097.                             for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  1098.                                 listaPorteApplicativeAssociate.add(this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa()));
  1099.                             }
  1100.    
  1101.                             /**                 // controllo accessi
  1102.                             //                  boolean controlloAccessiAbilitato = false;
  1103.                             //                  for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
  1104.                             //                      String statoControlloAccessi = this.getStatoControlloAccessiPortaApplicativa(paAssociata);
  1105.                             //                      
  1106.                             //                      if(statoControlloAccessi.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
  1107.                             //                          controlloAccessiAbilitato = true;
  1108.                             //                          break;
  1109.                             //                      }
  1110.                             //                  }
  1111.                             //
  1112.                             //                  if(controlloAccessiAbilitato) {
  1113.                             //                      de = new DataElement();
  1114.                             //                      de.setType(DataElementType.IMAGE);
  1115.                             //                      de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONTROLLO_ACCESSI);
  1116.                             //                      e.add(de);
  1117.                             //                  }*/
  1118.    
  1119.                             // controllo accessi (tre box: gestioneToken, autenticazione, autorizzazione)
  1120.                             boolean gestioneTokenAbilitato = false;
  1121.                             for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
  1122.                                 String statoGestioneToken = this.getStatoGestioneTokenPortaApplicativa(paAssociata);
  1123.    
  1124.                                 if(statoGestioneToken.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
  1125.                                     gestioneTokenAbilitato = true;
  1126.                                     break;
  1127.                                 }
  1128.                             }
  1129.    
  1130.                             if(gestioneTokenAbilitato) {
  1131.                                 de = new DataElement();
  1132.                                 de.setType(DataElementType.IMAGE);
  1133.                                 de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_GESTIONE_TOKEN);
  1134.                                 e.add(de);
  1135.                             }
  1136.    
  1137.                             boolean autenticazioneAbilitato = false;
  1138.                             for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
  1139.                                 String statoAutenticazione = this.getStatoAutenticazionePortaApplicativa(paAssociata);
  1140.    
  1141.                                 if(statoAutenticazione.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
  1142.                                     autenticazioneAbilitato = true;
  1143.                                     break;
  1144.                                 }
  1145.                             }
  1146.    
  1147.                             if(autenticazioneAbilitato) {
  1148.                                 de = new DataElement();
  1149.                                 de.setType(DataElementType.IMAGE);
  1150.                                 de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTENTICAZIONE);
  1151.                                 e.add(de);
  1152.                             }
  1153.    
  1154.                             boolean autorizzazioneAbilitato = false;
  1155.                             for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
  1156.                                 String statoAutorizzazione = this.getStatoAutorizzazionePortaApplicativa(paAssociata);
  1157.    
  1158.                                 if(statoAutorizzazione.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
  1159.                                     autorizzazioneAbilitato = true;
  1160.                                     break;
  1161.                                 }
  1162.                             }
  1163.    
  1164.                             if(autorizzazioneAbilitato) {
  1165.                                 de = new DataElement();
  1166.                                 de.setType(DataElementType.IMAGE);
  1167.                                 de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTORIZZAZIONE_DIFFERENTE_DA_TRASPORTO_E_TOKEN);
  1168.                                 e.add(de);
  1169.                             }
  1170.    
  1171.                             // validazione contenuti
  1172.                             boolean controlloValidazioneContentuiAbilitato = false;
  1173.                             for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
  1174.                                 String statoValidazione = this.getStatoValidazionePortaApplicativa(paAssociata);
  1175.                                 if(!statoValidazione.equals(PorteDelegateCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_DELEGATE_VALIDAZIONE_DISABILITATO)) {
  1176.                                     controlloValidazioneContentuiAbilitato = true;
  1177.                                     break;
  1178.                                 }
  1179.                             }
  1180.    
  1181.                             if(controlloValidazioneContentuiAbilitato) {
  1182.                                 de = new DataElement();
  1183.                                 de.setType(DataElementType.IMAGE);
  1184.                                 de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI);
  1185.                                 e.add(de);
  1186.                             }
  1187.    
  1188.    
  1189.                             // message security
  1190.                             if(visualizzaSicurezza) {
  1191.                                 boolean controlloMessageSecurityAbilitato = false;
  1192.                                 for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {  
  1193.                                     String statoMessageSecurity = this.getStatoMessageSecurityPortaApplicativa(paAssociata);
  1194.    
  1195.                                     if(statoMessageSecurity.equals(CostantiConfigurazione.ABILITATO.toString())) {
  1196.                                         controlloMessageSecurityAbilitato = true;
  1197.                                         break;
  1198.                                     }
  1199.                                 }
  1200.    
  1201.                                 if(controlloMessageSecurityAbilitato) {
  1202.                                     de = new DataElement();
  1203.                                     de.setType(DataElementType.IMAGE);
  1204.                                     de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MESSAGE_SECURITY);
  1205.                                     e.add(de);
  1206.                                 }
  1207.                             }
  1208.    
  1209.                             //mtom
  1210.                             if(visualizzaMTOM) {
  1211.                                 boolean controlloMTOMAbilitato = false;
  1212.                                 for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
  1213.                                     String statoMTOM = this.getStatoMTOMPortaApplicativa(paAssociata);
  1214.    
  1215.                                     if(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM_ABILITATO.equals(statoMTOM)) {
  1216.                                         controlloMTOMAbilitato = true;
  1217.                                         break;
  1218.                                     }
  1219.    
  1220.                                 }
  1221.    
  1222.                                 if(controlloMTOMAbilitato) {
  1223.                                     de = new DataElement();
  1224.                                     de.setType(DataElementType.IMAGE);
  1225.                                     de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM);
  1226.                                     e.add(de);
  1227.                                 }
  1228.                             }
  1229.    
  1230.                             // correlazione applicativa
  1231.                             if(visualizzaCorrelazione) {
  1232.                                 boolean controlloCorrelazioneApplicativaAbilitato = false;
  1233.                                 for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
  1234.                                     String statoTracciamento = this.getStatoTracciamentoPortaApplicativa(paAssociata);
  1235.    
  1236.    
  1237.                                     if(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA_ABILITATA.equals(statoTracciamento)){
  1238.                                         controlloCorrelazioneApplicativaAbilitato = true;
  1239.                                         break;
  1240.                                     }
  1241.    
  1242.                                 }
  1243.    
  1244.                                 if(controlloCorrelazioneApplicativaAbilitato) {
  1245.                                     de = new DataElement();
  1246.                                     de.setType(DataElementType.IMAGE);
  1247.                                     de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_TRACCIAMENTO);
  1248.                                     e.add(de);
  1249.                                 }
  1250.                             }
  1251.    
  1252.                             // dump
  1253.                             boolean controlloDumpAbilitato = false;
  1254.                             for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
  1255.                                 String statoDump = this.getStatoDumpPortaApplicativa(paAssociata, true);
  1256.                                 if(!statoDump.startsWith(CostantiControlStation.LABEL_PARAMETRO_DUMP_STATO_DEFAULT)){
  1257.                                     controlloDumpAbilitato = true;
  1258.                                     break;
  1259.                                 }
  1260.                             }
  1261.    
  1262.                             if(controlloDumpAbilitato) {
  1263.                                 de = new DataElement();
  1264.                                 de.setType(DataElementType.IMAGE);
  1265.                                 de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE);
  1266.                                 e.add(de);
  1267.                             }
  1268.    
  1269.                         } else if(showConfigurazionePD) {
  1270.    
  1271.                             // Utilizza la configurazione come parent
  1272.                             ServletUtils.setObjectIntoSession(this.request, this.session, PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE, PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT);
  1273.    
  1274.                             List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);    
  1275.                             List<PortaDelegata> listaPorteDelegateAssociate = new ArrayList<>();
  1276.    
  1277.                             for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  1278.                                 listaPorteDelegateAssociate.add(this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata()));
  1279.                             }
  1280.    
  1281.                             boolean visualizzaMTOM = true;
  1282.                             boolean visualizzaSicurezza = true;
  1283.                             boolean visualizzaCorrelazione = true;
  1284.    
  1285.                             switch (serviceBinding) {
  1286.                             case REST:
  1287.                                 visualizzaMTOM = false;
  1288.                                 visualizzaSicurezza = true;
  1289.                                 visualizzaCorrelazione = true;
  1290.                                 break;
  1291.                             case SOAP:
  1292.                             default:
  1293.                                 visualizzaMTOM = true;
  1294.                                 visualizzaSicurezza = true;
  1295.                                 visualizzaCorrelazione = true;
  1296.                                 break;
  1297.                             }
  1298.    
  1299.                             /**                 // controllo accessi
  1300.                             //                  boolean controlloAccessiAbilitato = false;
  1301.                             //                  for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  1302.                             //                      String statoControlloAccessi = this.getStatoControlloAccessiPortaDelegata(pdAssociata);
  1303.                             //                      
  1304.                             //                      if(statoControlloAccessi.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
  1305.                             //                          controlloAccessiAbilitato = true;
  1306.                             //                          break;
  1307.                             //                      }
  1308.                             //                  }
  1309.                             //                  
  1310.                             //                  if(controlloAccessiAbilitato) {
  1311.                             //                      de = new DataElement();
  1312.                             //                      de.setType(DataElementType.IMAGE);
  1313.                             //                      de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONTROLLO_ACCESSI);
  1314.                             //                      e.add(de);
  1315.                             //                  }*/
  1316.    
  1317.                             // controllo accessi (tre box: gestioneToken, autenticazione, autorizzazione)
  1318.                             boolean gestioneTokenAbilitato = false;
  1319.                             for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  1320.                                 String statoGestioneToken = this.getStatoGestioneTokenPortaDelegata(pdAssociata);
  1321.    
  1322.                                 if(statoGestioneToken.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
  1323.                                     gestioneTokenAbilitato = true;
  1324.                                     break;
  1325.                                 }
  1326.                             }
  1327.    
  1328.                             if(gestioneTokenAbilitato) {
  1329.                                 de = new DataElement();
  1330.                                 de.setType(DataElementType.IMAGE);
  1331.                                 de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_GESTIONE_TOKEN);
  1332.                                 e.add(de);
  1333.                             }
  1334.    
  1335.                             boolean autenticazioneAbilitato = false;
  1336.                             for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  1337.                                 String statoAutenticazione = this.getStatoAutenticazionePortaDelegata(pdAssociata);
  1338.    
  1339.                                 if(statoAutenticazione.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
  1340.                                     autenticazioneAbilitato = true;
  1341.                                     break;
  1342.                                 }
  1343.                             }
  1344.    
  1345.                             if(autenticazioneAbilitato) {
  1346.                                 de = new DataElement();
  1347.                                 de.setType(DataElementType.IMAGE);
  1348.                                 de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTENTICAZIONE);
  1349.                                 e.add(de);
  1350.                             }
  1351.    
  1352.                             boolean autorizzazioneAbilitato = false;
  1353.                             for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  1354.                                 String statoAutorizzazione = this.getStatoAutorizzazionePortaDelegata(pdAssociata);
  1355.    
  1356.                                 if(statoAutorizzazione.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
  1357.                                     autorizzazioneAbilitato = true;
  1358.                                     break;
  1359.                                 }
  1360.                             }
  1361.    
  1362.                             if(autorizzazioneAbilitato) {
  1363.                                 de = new DataElement();
  1364.                                 de.setType(DataElementType.IMAGE);
  1365.                                 de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTORIZZAZIONE_DIFFERENTE_DA_TRASPORTO_E_TOKEN);
  1366.                                 e.add(de);
  1367.                             }
  1368.    
  1369.    
  1370.                             // validazione contenuti
  1371.                             boolean controlloValidazioneContentuiAbilitato = false;
  1372.                             for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  1373.                                 String statoValidazione = this.getStatoValidazionePortaDelegata(pdAssociata);
  1374.                                 if(!statoValidazione.equals(PorteDelegateCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_DELEGATE_VALIDAZIONE_DISABILITATO)) {
  1375.                                     controlloValidazioneContentuiAbilitato = true;
  1376.                                     break;
  1377.                                 }
  1378.                             }
  1379.    
  1380.                             if(controlloValidazioneContentuiAbilitato) {
  1381.                                 de = new DataElement();
  1382.                                 de.setType(DataElementType.IMAGE);
  1383.                                 de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_VALIDAZIONE_CONTENUTI);
  1384.                                 e.add(de);
  1385.                             }
  1386.    
  1387.    
  1388.                             // message security
  1389.                             if(visualizzaSicurezza) {
  1390.                                 boolean controlloMessageSecurityAbilitato = false;
  1391.                                 for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  1392.                                     String statoMessageSecurity = this.getStatoMessageSecurityPortaDelegata(pdAssociata);
  1393.    
  1394.                                     if(statoMessageSecurity.equals(CostantiConfigurazione.ABILITATO.toString())) {
  1395.                                         controlloMessageSecurityAbilitato = true;
  1396.                                         break;
  1397.                                     }
  1398.                                 }
  1399.    
  1400.                                 if(controlloMessageSecurityAbilitato) {
  1401.                                     de = new DataElement();
  1402.                                     de.setType(DataElementType.IMAGE);
  1403.                                     de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_MESSAGE_SECURITY);
  1404.                                     e.add(de);
  1405.                                 }
  1406.                             }
  1407.    
  1408.                             //mtom
  1409.                             if(visualizzaMTOM) {
  1410.                                 boolean controlloMTOMAbilitato = false;
  1411.                                 for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  1412.                                     String statoMTOM = this.getStatoMTOMPortaDelegata(pdAssociata);
  1413.    
  1414.                                     if(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_MTOM_ABILITATO.equals(statoMTOM)) {
  1415.                                         controlloMTOMAbilitato = true;
  1416.                                         break;
  1417.                                     }
  1418.    
  1419.                                 }
  1420.    
  1421.                                 if(controlloMTOMAbilitato) {
  1422.                                     de = new DataElement();
  1423.                                     de.setType(DataElementType.IMAGE);
  1424.                                     de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_MTOM);
  1425.                                     e.add(de);
  1426.                                 }
  1427.                             }
  1428.    
  1429.                             // correlazione applicativa
  1430.                             if(visualizzaCorrelazione) {
  1431.                                 boolean controlloCorrelazioneApplicativaAbilitato = false;
  1432.                                 for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  1433.                                     String statoTracciamento = this.getStatoTracciamentoPortaDelegata(pdAssociata);
  1434.    
  1435.    
  1436.                                     if(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CORRELAZIONE_APPLICATIVA_ABILITATA.equals(statoTracciamento)){
  1437.                                         controlloCorrelazioneApplicativaAbilitato = true;
  1438.                                         break;
  1439.                                     }
  1440.    
  1441.                                 }
  1442.    
  1443.                                 if(controlloCorrelazioneApplicativaAbilitato) {
  1444.                                     de = new DataElement();
  1445.                                     de.setType(DataElementType.IMAGE);
  1446.                                     de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CORRELAZIONE_APPLICATIVA);
  1447.                                     e.add(de);
  1448.                                 }
  1449.                             }
  1450.    
  1451.                             // dump
  1452.                             boolean controlloDumpAbilitato = false;
  1453.                             for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
  1454.                                 String statoDump = this.getStatoDumpPortaDelegata(pdAssociata, true);
  1455.                                 if(!statoDump.startsWith(CostantiControlStation.LABEL_PARAMETRO_DUMP_STATO_DEFAULT)){
  1456.                                     controlloDumpAbilitato = true;
  1457.                                     break;
  1458.                                 }
  1459.                             }
  1460.    
  1461.                             if(controlloDumpAbilitato) {
  1462.                                 de = new DataElement();
  1463.                                 de.setType(DataElementType.IMAGE);
  1464.                                 de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_DUMP_CONFIGURAZIONE);
  1465.                                 e.add(de);
  1466.                             }
  1467.                         }
  1468.                     }
  1469.                    
  1470.                     String idServizioButton = gestioneFruitori ? uriASPS+"@"+fruitore.getTipo()+"/"+fruitore.getNome() : uriASPS;
  1471.                    
  1472.                     // In Uso Button
  1473.                     this.addInUsoInfoButton(e,
  1474.                             labelServizio,
  1475.                             idServizioButton,
  1476.                             gestioneFruitori ? InUsoType.FRUIZIONE_INFO : InUsoType.EROGAZIONE_INFO);
  1477.                    
  1478.                     // Verifica Certificati
  1479.                     if(showVerificaCertificati) {
  1480.                        
  1481.                         List<Parameter> listParametersServizioModificaProfilo = null;
  1482.                         List<Parameter> listParametersServizioFruitoriModificaProfilo = null;
  1483.                         listParametersServizioModificaProfilo = new ArrayList<>();
  1484.                         listParametersServizioModificaProfilo.addAll(listParameters);
  1485.                         listParametersServizioModificaProfilo.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_PROFILO, true+""));
  1486.                         listParametersServizioModificaProfilo.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CERTIFICATI_FROM_LISTA, true+""));
  1487.                        
  1488.                         if(gestioneFruitori) {
  1489.                             listParametersServizioFruitoriModificaProfilo = new ArrayList<>();
  1490.                             listParametersServizioFruitoriModificaProfilo.addAll(listParametersServizioModificaProfilo);
  1491.                             Parameter pIdFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_ID, fruitore.getId()+ "");
  1492.                             listParametersServizioFruitoriModificaProfilo.add(pIdFruitore);
  1493.                         }
  1494.                        
  1495.                         if(gestioneFruitori) {
  1496.                             this.addComandoVerificaCertificatiButton(e, labelServizio, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_VERIFICA_CERTIFICATI, listParametersServizioFruitoriModificaProfilo);
  1497.                         }
  1498.                         else {
  1499.                             this.addComandoVerificaCertificatiButton(e, labelServizio, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_VERIFICA_CERTIFICATI, listParametersServizioModificaProfilo);
  1500.                         }
  1501.                     }
  1502.                    
  1503.                     // se e' abilitata l'opzione reset cache per elemento, visualizzo il comando nell'elenco dei comandi disponibili nella lista
  1504.                     if(this.core.isElenchiVisualizzaComandoResetCacheSingoloElemento()){
  1505.                         List<Parameter> listaParametriChange = new ArrayList<>();      
  1506.                         listaParametriChange.addAll(listParameters);
  1507.                        
  1508.                         this.addComandoResetCacheButton(e, labelServizio, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_CHANGE, listaParametriChange);
  1509.                     }
  1510.                    
  1511.                     // Proprieta Button
  1512.                     /**
  1513.                      * troppo costo fare il merge per ogni elemento della lista. Lascio la possibilità di invocare le proprietà sempre.
  1514.                      * ProprietaOggetto pOggetto = null;
  1515.                     if(gestioneFruitori) {
  1516.                         pOggetto = ProprietaOggettoRegistro.mergeProprietaOggetto(fruitore.getProprietaOggetto(), idServizio, idSoggettoFruitore, this.porteDelegateCore, this);
  1517.                     }
  1518.                     else {
  1519.                         pOggetto = ProprietaOggettoRegistro.mergeProprietaOggetto(asps.getProprietaOggetto(), idServizio, this.porteApplicativeCore, this.saCore, this);
  1520.                     }*/
  1521.                     if(gestioneFruitori
  1522.                             /**&& this.existsProprietaOggetto(pOggetto, fruitore.getDescrizione())*/
  1523.                             ) {
  1524.                         this.addProprietaOggettoButton(e, labelServizio, idServizioButton,
  1525.                                 InUsoType.FRUIZIONE);
  1526.                     }
  1527.                     else if(!gestioneFruitori
  1528.                         /**&& this.existsProprietaOggetto(pOggetto, asps.getDescrizione())*/
  1529.                         ) {
  1530.                         this.addProprietaOggettoButton(e, labelServizio, idServizioButton,
  1531.                                 InUsoType.EROGAZIONE);
  1532.                     }
  1533.                    
  1534.                     // aggiungo entry
  1535.                     dati.add(e);
  1536.                 }
  1537.             }

  1538.             this.pd.setDati(dati);
  1539.             this.pd.setAddButton(true);

  1540.             // preparo bottoni
  1541.             if(lista!=null && !lista.isEmpty() &&
  1542.                 this.core.isShowPulsantiImportExport()) {

  1543.                 ExporterUtils exporterUtils = new ExporterUtils(this.archiviCore);
  1544.                 if(exporterUtils.existsAtLeastOneExportMode(ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA, this.request, this.session)){

  1545.                     List<AreaBottoni> bottoni = new ArrayList<>();

  1546.                     AreaBottoni ab = new AreaBottoni();
  1547.                     List<DataElement> otherbott = new ArrayList<>();
  1548.                     DataElement de = new DataElement();
  1549.                     de.setValue(AccordiServizioParteSpecificaCostanti.LABEL_APS_ESPORTA_SELEZIONATI);
  1550.                     if(gestioneFruitori) {
  1551.                         de.setOnClick(AccordiServizioParteSpecificaCostanti.LABEL_FRUIZIONI_ESPORTA_SELEZIONATI_ONCLICK);
  1552.                     }
  1553.                     else {
  1554.                         de.setOnClick(AccordiServizioParteSpecificaCostanti.LABEL_EROGAZIONI_ESPORTA_SELEZIONATI_ONCLICK);
  1555.                     }
  1556.                     de.setDisabilitaAjaxStatus();
  1557.                     otherbott.add(de);
  1558.                     ab.setBottoni(otherbott);
  1559.                     bottoni.add(ab);

  1560.                     this.pd.setAreaBottoni(bottoni);

  1561.                 }
  1562.                
  1563.             }

  1564.         } catch (Exception e) {
  1565.             this.logError("Exception: " + e.getMessage(), e);
  1566.             throw new DriverControlStationException(e);
  1567.         }
  1568.     }

  1569.     public List<List<DataElement>> addErogazioneToDati(List<List<DataElement>> datiPagina, TipoOperazione tipoOp,
  1570.             AccordoServizioParteSpecifica asps, AccordoServizioParteComuneSintetico as, String protocollo,ServiceBinding serviceBinding ,
  1571.             boolean gestioneErogatori, boolean gestioneFruitori,
  1572.             List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa,
  1573.             List<PortaApplicativa> listaPorteApplicativeAssociate,
  1574.             List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata,
  1575.             List<PortaDelegata> listaPorteDelegateAssociate, Fruitore fruitore) throws Exception {

  1576.         boolean visualizzaGruppi = false;

  1577.         if(gestioneFruitori)
  1578.             this.pd.setCustomListViewName(ErogazioniCostanti.ASPS_EROGAZIONI_NOME_VISTA_CUSTOM_FORM_FRUIZIONE);
  1579.         else
  1580.             this.pd.setCustomListViewName(ErogazioniCostanti.ASPS_EROGAZIONI_NOME_VISTA_CUSTOM_FORM_EROGAZIONE);

  1581.         if(asps==null) {
  1582.             throw new DriverControlStationException("Param asps is null");
  1583.         }
  1584.        
  1585.         boolean showProtocolli = this.core.countProtocolli(this.request, this.session)>1;
  1586.         Parameter pNomeServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SERVIZIO, asps.getNome());
  1587.         Parameter pTipoServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SERVIZIO, asps.getTipo());
  1588.         Parameter pIdAsps = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_ASPS, asps.getId()+"");
  1589.         Parameter pId = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, asps.getId()+"");
  1590.         Parameter pIdSoggettoErogatore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO_EROGATORE, asps.getIdSoggetto()+"");
  1591.         Parameter pIdFruitore = null;
  1592.         Parameter pIdSogg = null;
  1593.         Parameter pTipoSoggettoFruitore = null;
  1594.         Parameter pNomeSoggettoFruitore = null;
  1595.         Parameter pIdProviderFruitore = null;
  1596.         if(gestioneFruitori) {
  1597.             pIdFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_ID, fruitore.getId()+ "");
  1598.             pIdSogg = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO, fruitore.getIdSoggetto() + "");
  1599.             pTipoSoggettoFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SOGGETTO_FRUITORE, fruitore.getTipo());
  1600.             pNomeSoggettoFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SOGGETTO_FRUITORE, fruitore.getNome());
  1601.            
  1602.             Long idSoggettoLong = fruitore.getIdSoggetto();
  1603.             if(idSoggettoLong==null) {
  1604.                 idSoggettoLong = this.soggettiCore.getIdSoggetto(fruitore.getNome(), fruitore.getTipo());
  1605.                 pIdSogg = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO, idSoggettoLong + "");
  1606.             }
  1607.             pIdProviderFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PROVIDER_FRUITORE, idSoggettoLong + "");
  1608.        
  1609.         }

  1610.         Soggetto sog = this.soggettiCore.getSoggettoRegistro(asps.getIdSoggetto());
  1611.         boolean isPddEsterna = this.pddCore.isPddEsterna(sog.getPortaDominio());

  1612.         boolean showSoggettoErogatoreInErogazioni = this.core.isMultitenant() &&
  1613.                 !this.isSoggettoMultitenantSelezionato();
  1614.        
  1615.         boolean showSoggettoFruitoreInFruizioni = gestioneFruitori &&  this.core.isMultitenant() &&
  1616.                 !this.isSoggettoMultitenantSelezionato();
  1617.        
  1618.         IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
  1619.        
  1620.         IDSoggetto idSoggettoFruitore = null;
  1621.         if(gestioneFruitori) {
  1622.             idSoggettoFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
  1623.         }
  1624.        
  1625.         IDServizio idAps = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
  1626.         idAps.setPortType(asps.getPortType());
  1627.         idAps.setUriAccordoServizioParteComune(asps.getAccordoServizioParteComune());
  1628.         IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(protocollo);
  1629.         IConsoleDynamicConfiguration consoleDynamicConfiguration = protocolFactory.createDynamicConfigurationConsole();
  1630.         IRegistryReader registryReader = this.apcCore.getRegistryReader(protocolFactory);
  1631.         IConfigIntegrationReader configRegistryReader = this.apcCore.getConfigIntegrationReader(protocolFactory);
  1632.         ConsoleConfiguration consoleConfiguration = null;
  1633.         if(gestioneErogatori) {
  1634.             consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigAccordoServizioParteSpecifica(ConsoleOperationType.CHANGE, this,
  1635.                     registryReader, configRegistryReader, idAps );
  1636.         }
  1637.         else {
  1638.             IDFruizione idFruizione = new IDFruizione();
  1639.             idFruizione.setIdServizio(idAps);
  1640.             idFruizione.setIdFruitore(new IDSoggetto(fruitore.getTipo(), fruitore.getNome()));
  1641.             consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigFruizioneAccordoServizioParteSpecifica(ConsoleOperationType.CHANGE, this,  
  1642.                     registryReader, configRegistryReader, idFruizione);
  1643.         }
  1644.        
  1645.         boolean modificaDatiProfilo = false;
  1646.         if(consoleConfiguration!=null && consoleConfiguration.getConsoleItem()!=null && !consoleConfiguration.getConsoleItem().isEmpty()) {
  1647.             modificaDatiProfilo = true;
  1648.         }
  1649.         boolean modi = this.core.isProfiloModIPA(protocollo);
  1650.        
  1651.         boolean showVerificaCertificati = false;
  1652.         if(gestioneFruitori) {
  1653.             showVerificaCertificati = this.core.isFruizioniVerificaCertificati();
  1654.         }
  1655.         else {
  1656.             showVerificaCertificati = this.core.isErogazioniVerificaCertificati();
  1657.         }
  1658.        
  1659.         boolean showVerificaCertificatiModi = false; // scudo solo per ModI
  1660.         if(modi && modificaDatiProfilo) {
  1661.             if(gestioneFruitori) {
  1662.                 showVerificaCertificatiModi = this.core.isModipaFruizioniVerificaCertificati();
  1663.             }
  1664.             else {
  1665.                 showVerificaCertificatiModi = this.core.isModipaErogazioniVerificaCertificati();
  1666.             }
  1667.         }
  1668.        
  1669.         List<Parameter> listaParametriChange = new ArrayList<>();      
  1670.         listaParametriChange.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, asps.getId() + ""));
  1671.         listaParametriChange.add(pNomeServizio);
  1672.         listaParametriChange.add(pTipoServizio);
  1673.         listaParametriChange.add(pIdSoggettoErogatore);
  1674.         if(gestioneFruitori) {
  1675.             listaParametriChange.add(pTipoSoggettoFruitore);
  1676.             listaParametriChange.add(pNomeSoggettoFruitore);
  1677.             listaParametriChange.add(pIdProviderFruitore);
  1678.         }
  1679.        
  1680.         List<Parameter> listParametersServizioModificaProfiloOrVerificaCertificati = null;
  1681.         List<Parameter> listParametersServizioFruitoriModificaProfiloOrVerificaCertificati = null;
  1682.         if(modificaDatiProfilo || showVerificaCertificati) {
  1683.             listParametersServizioModificaProfiloOrVerificaCertificati = new ArrayList<>();
  1684.             listParametersServizioModificaProfiloOrVerificaCertificati.addAll(listaParametriChange);
  1685.            
  1686.             if(gestioneFruitori) {
  1687.                 listParametersServizioFruitoriModificaProfiloOrVerificaCertificati = new ArrayList<>();
  1688.                 listParametersServizioFruitoriModificaProfiloOrVerificaCertificati.addAll(listParametersServizioModificaProfiloOrVerificaCertificati);
  1689.                 listParametersServizioFruitoriModificaProfiloOrVerificaCertificati.add(pIdFruitore);
  1690.             }
  1691.         }
  1692.        
  1693.         // sezione 1 riepilogo
  1694.         List<DataElement> dati = datiPagina.get(0);
  1695.        
  1696.         ProprietaOggetto pOggetto = this.creaProprietaOggetto(asps, gestioneFruitori, fruitore, idServizio, idSoggettoFruitore);
  1697.        
  1698.         this.impostaComandiMenuContestuale(asps, protocollo, gestioneFruitori, fruitore,
  1699.                 showVerificaCertificati, listaParametriChange,
  1700.                 listParametersServizioModificaProfiloOrVerificaCertificati,
  1701.                 listParametersServizioFruitoriModificaProfiloOrVerificaCertificati, pOggetto, true, false);
  1702.        
  1703.        
  1704.         // Titolo Servizio
  1705.         DataElement de = new DataElement();
  1706.         String labelServizio = this.getLabelIdServizioSenzaErogatore(idServizio);
  1707.         String labelServizioConPortType = labelServizio;
  1708.         if(asps.getPortType()!=null && !"".equals(asps.getPortType()) && !asps.getNome().equals(asps.getPortType())) {
  1709.             labelServizioConPortType = labelServizioConPortType +" ("+asps.getPortType()+")";
  1710.         }
  1711.         de.setLabel(ErogazioniCostanti.LABEL_ASPS_MODIFICA_SERVIZIO_NOME);
  1712.         de.setValue(labelServizioConPortType);
  1713.         de.setStatusValue(labelServizioConPortType);
  1714.         de.setType(DataElementType.TEXT);
  1715.         List<Parameter> listParametersServizioModifica = new ArrayList<>();
  1716.         listParametersServizioModifica.addAll(listaParametriChange);
  1717.         listParametersServizioModifica.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_API, false+""));
  1718.        
  1719.         DataElementImage imageChangeStato = null;
  1720.         if(gestioneErogatori) {        
  1721.             String nomePortaDefault = null;
  1722.             for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  1723.                 if(mappinErogazione.isDefault()) {
  1724.                     nomePortaDefault = mappinErogazione.getIdPortaApplicativa().getNome();
  1725.                 }
  1726.             }
  1727.             this.newDataElementStatoApiErogazione(de, false, asps, as, nomePortaDefault, listaMappingErogazionePortaApplicativa, listaPorteApplicativeAssociate);
  1728.             if(listaMappingErogazionePortaApplicativa.size()==1) {
  1729.                 PortaApplicativa pa = this.porteApplicativeCore.getPortaApplicativa(listaMappingErogazionePortaApplicativa.get(0).getIdPortaApplicativa());
  1730.                 Parameter pIdPorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID, ""+pa.getId());
  1731.                 Parameter pNomePorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME_PORTA, pa.getNome());
  1732.                 Parameter pIdSoggPA = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, pa.getIdSoggetto() + "");
  1733.                 Parameter pFromApi = new Parameter(CostantiControlStation.PARAMETRO_API_PAGE_INFO, Costanti.CHECK_BOX_ENABLED_TRUE);
  1734.                 boolean statoPA = pa.getStato().equals(StatoFunzionalita.ABILITATO);
  1735.                 Parameter pAbilita = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ABILITA,  (statoPA ? Costanti.CHECK_BOX_DISABLED : Costanti.CHECK_BOX_ENABLED_TRUE));
  1736.                 imageChangeStato = new DataElementImage();
  1737.                 imageChangeStato.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_ABILITAZIONE,pIdSoggPA, pNomePorta, pIdPorta,pIdAsps, pAbilita,pFromApi);
  1738.                 String statoMapping = statoPA ? CostantiControlStation.LABEL_PARAMETRO_PORTA_ABILITATO_TOOLTIP : CostantiControlStation.LABEL_PARAMETRO_PORTA_DISABILITATO_TOOLTIP;
  1739.                 imageChangeStato.setToolTip(statoMapping);
  1740.                 imageChangeStato.setImage(statoPA ? CostantiControlStation.ICONA_MODIFICA_TOGGLE_ON : CostantiControlStation.ICONA_MODIFICA_TOGGLE_OFF);
  1741.             }
  1742.         }  
  1743.         if(gestioneFruitori) {      
  1744.             String nomePortaDefault = null;
  1745.             for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  1746.                 if(mappingFruizione.isDefault()) {
  1747.                     nomePortaDefault = mappingFruizione.getIdPortaDelegata().getNome();
  1748.                 }
  1749.             }          
  1750.             this.newDataElementStatoApiFruizione(de, false, asps, as, nomePortaDefault, listaMappingFruzionePortaDelegata, listaPorteDelegateAssociate);    
  1751.             if(listaMappingFruzionePortaDelegata.size()==1) {
  1752.                 PortaDelegata pd = this.porteDelegateCore.getPortaDelegata(listaMappingFruzionePortaDelegata.get(0).getIdPortaDelegata());
  1753.                 Parameter pIdPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID, "" + pd.getId());
  1754.                 Parameter pNomePD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_NOME_PORTA, pd.getNome());
  1755.                 Parameter pIdSoggPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_SOGGETTO, pd.getIdSoggetto() + "");
  1756.                 Parameter pFromApi = new Parameter(CostantiControlStation.PARAMETRO_API_PAGE_INFO, Costanti.CHECK_BOX_ENABLED_TRUE);
  1757.                 boolean statoPD = pd.getStato().equals(StatoFunzionalita.ABILITATO);
  1758.                 Parameter pAbilita = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ABILITA,  (statoPD ? Costanti.CHECK_BOX_DISABLED : Costanti.CHECK_BOX_ENABLED_TRUE));
  1759.                 imageChangeStato = new DataElementImage();
  1760.                 imageChangeStato.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_ABILITAZIONE,pIdPD,pNomePD,pIdSoggPD, pIdAsps, pIdFruitore, pAbilita,pFromApi);
  1761.                 String statoMapping = statoPD ? CostantiControlStation.LABEL_PARAMETRO_PORTA_ABILITATO_TOOLTIP : CostantiControlStation.LABEL_PARAMETRO_PORTA_DISABILITATO_TOOLTIP;
  1762.                 imageChangeStato.setToolTip(statoMapping);
  1763.                 imageChangeStato.setImage(statoPD ? CostantiControlStation.ICONA_MODIFICA_TOGGLE_ON : CostantiControlStation.ICONA_MODIFICA_TOGGLE_OFF);
  1764.             }
  1765.         }
  1766.        
  1767.         DataElementImage imageChangeName = new DataElementImage();
  1768.         imageChangeName.setUrl(
  1769.                 AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE,
  1770.                 listParametersServizioModifica.toArray(new Parameter[1]));
  1771.         imageChangeName.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO,
  1772.                 AccordiServizioParteSpecificaCostanti.LABEL_APS_INFO_GENERALI));
  1773.         imageChangeName.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  1774.        
  1775.         if(imageChangeStato!=null) {
  1776.             de.addImage(imageChangeName);
  1777.         }
  1778.         else {
  1779.             de.setImage(imageChangeName);
  1780.         }
  1781.        
  1782.         boolean descrizioneEmpty = false;
  1783.         if(
  1784.                 (
  1785.                         gestioneFruitori &&
  1786.                         (fruitore.getDescrizione()==null || StringUtils.isEmpty(fruitore.getDescrizione()))
  1787.                 )
  1788.             ||
  1789.                 (
  1790.                     !gestioneFruitori &&
  1791.                     (asps.getDescrizione()==null || StringUtils.isEmpty(asps.getDescrizione()))
  1792.                 )
  1793.         ){
  1794.            
  1795.             descrizioneEmpty = true;
  1796.         }
  1797.        
  1798.         if(descrizioneEmpty) {
  1799.             DataElementImage image = new DataElementImage();
  1800.            
  1801.             List<Parameter> listParametersServizioModificaDescrizione = new ArrayList<>();
  1802.             listParametersServizioModificaDescrizione.addAll(listaParametriChange);
  1803.             listParametersServizioModificaDescrizione.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_DESCRIZIONE, true+""));
  1804.            
  1805.             image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaDescrizione.toArray(new Parameter[1]));
  1806.             image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_AGGIUNGI_DESCRIZIONE_TOOLTIP_CON_PARAMETRO, AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_DESCRIZIONE));
  1807.             image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_AGGIUNGI_DESCRIZIONE);
  1808.             de.addImage(image);
  1809.         }
  1810.        
  1811.         if(imageChangeStato!=null) {
  1812.             de.addImage(imageChangeStato);
  1813.         }
  1814.        
  1815.        
  1816.        
  1817.         dati.add(de);
  1818.        
  1819.         // soggetto erogatore
  1820.         if(gestioneFruitori || showSoggettoErogatoreInErogazioni) {
  1821.             de = new DataElement();
  1822.             de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_SOGGETTO_EROGATORE);
  1823.             de.setValue(this.getLabelNomeSoggetto(protocollo,asps.getTipoSoggettoErogatore(),asps.getNomeSoggettoErogatore()));
  1824.             de.setType(DataElementType.TEXT);
  1825.             dati.add(de);
  1826.            
  1827.             List<Parameter> listParametersServizioModificaSoggettoErogatore = new ArrayList<>();
  1828.             listParametersServizioModificaSoggettoErogatore.addAll(listaParametriChange);
  1829.             listParametersServizioModificaSoggettoErogatore.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_CAMBIA_SOGGETTO_EROGATORE, true+""));
  1830.            
  1831.             DataElementImage image = new DataElementImage();
  1832.             image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaSoggettoErogatore.toArray(new Parameter[1]));
  1833.             image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_CAMBIA_API_TOOLTIP_CON_PARAMETRO,
  1834.                     AccordiServizioParteSpecificaCostanti.LABEL_APS_SOGGETTO_EROGATORE));
  1835.             image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  1836.             image.setTarget(TargetType.SELF);
  1837.             de.addImage(image);
  1838.         }

  1839.         // API
  1840.         de = new DataElement();
  1841.         Parameter pTipoAccordo = AccordiServizioParteComuneUtilities.getParametroAccordoServizio(as);
  1842.         String labelAPI = this.getLabelIdAccordo(as);
  1843.         String labelServiceBinding = null;
  1844.         switch (serviceBinding) {
  1845.         case REST:
  1846.             labelServiceBinding= CostantiControlStation.LABEL_PARAMETRO_SERVICE_BINDING_REST;
  1847.             break;
  1848.         case SOAP:
  1849.         default:
  1850.             labelServiceBinding= CostantiControlStation.LABEL_PARAMETRO_SERVICE_BINDING_SOAP;
  1851.             break;
  1852.         }
  1853.         de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_ACCORDO);
  1854.         de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_EDIT, labelServiceBinding, labelAPI));
  1855.         de.setType(DataElementType.BUTTON);
  1856.        
  1857.         List<String> labelsGruppi = new ArrayList<>();
  1858.         List<String> valuesGruppi = new ArrayList<>();
  1859.        
  1860.         List<GruppoSintetico> gruppi = as.getGruppo();
  1861.         if(gruppi != null) {
  1862.             // colleziono i tags registrati
  1863.             List<String> tagsDisponibili = this.gruppiCore.getAllGruppiOrdinatiPerDataRegistrazione();
  1864.            
  1865.             for (int i = 0; i < gruppi.size(); i++) {
  1866.                 GruppoSintetico gruppo = gruppi.get(i);
  1867.                
  1868.                 int indexOf = tagsDisponibili.indexOf(gruppo.getNome());
  1869.                 if(indexOf == -1)
  1870.                     indexOf = 0;
  1871.                
  1872.                 indexOf = indexOf % CostantiControlStation.NUMERO_GRUPPI_CSS;
  1873.                
  1874.                 labelsGruppi.add(gruppo.getNome());
  1875.                 valuesGruppi.add("label-info-"+ indexOf);
  1876.             }
  1877.         }  
  1878.        
  1879.         de.setLabels(labelsGruppi);
  1880.         de.setValues(valuesGruppi);
  1881.        
  1882.        
  1883.         // Lista di Accordi Compatibili
  1884.         List<AccordoServizioParteComune> asParteComuneCompatibili = null;
  1885.         try{
  1886.             boolean soloAccordiConsistentiRest = false;
  1887.             boolean soloAccordiConsistentiSoap = false;
  1888.             if(!this.isModalitaCompleta()) {
  1889.                 // filtro accordi senza risorse o senza pt/operation
  1890.                 soloAccordiConsistentiRest = true;
  1891.                 soloAccordiConsistentiSoap = true;
  1892.             }
  1893.            
  1894.             List<AccordoServizioParteComune> asParteComuneCompatibiliTmp = this.apsCore.findAccordiParteComuneBySoggettoAndNome(as.getNome(),
  1895.                     new IDSoggetto(as.getSoggettoReferente().getTipo(), as.getSoggettoReferente().getNome()));
  1896.             if(asParteComuneCompatibiliTmp!=null && !asParteComuneCompatibiliTmp.isEmpty()) {
  1897.                 for (AccordoServizioParteComune accordoServizioParteComune : asParteComuneCompatibiliTmp) {
  1898.                     boolean isValid = false;
  1899.                    
  1900.                     if(org.openspcoop2.core.registry.constants.ServiceBinding.REST.equals(accordoServizioParteComune.getServiceBinding())) {
  1901.                         if(soloAccordiConsistentiRest) {
  1902.                             isValid = accordoServizioParteComune.sizeResourceList()>0;
  1903.                         }
  1904.                     }
  1905.                     else {
  1906.                         if(soloAccordiConsistentiSoap) {
  1907.                             if(asps!=null && asps.getPortType()!=null) {
  1908.                                 for (int i = 0; i < accordoServizioParteComune.sizePortTypeList(); i++) {
  1909.                                     if(accordoServizioParteComune.getPortType(i).getNome().equals(asps.getPortType()) &&
  1910.                                         accordoServizioParteComune.getPortType(i).sizeAzioneList()>0) {
  1911.                                         isValid = true;
  1912.                                         break;
  1913.                                     }
  1914.                                 }
  1915.                             }
  1916.                             else {
  1917.                                 isValid = accordoServizioParteComune.sizeAzioneList()>0;
  1918.                             }
  1919.                         }
  1920.                     }
  1921.                    
  1922.                     if(isValid) {
  1923.                         if(asParteComuneCompatibili==null) {
  1924.                             asParteComuneCompatibili = new ArrayList<>();
  1925.                         }
  1926.                         asParteComuneCompatibili.add(accordoServizioParteComune);
  1927.                     }
  1928.                    
  1929.                 }
  1930.             }          
  1931.            
  1932.            
  1933.         }catch(Exception e){
  1934.             ControlStationCore.logError("Errore durante la ricerca degli accordi parte comune compatibili", e);
  1935.         }
  1936.        
  1937.         // lista icone a dx
  1938.         // n.b. iniziare ad aggiungerle da quella che deve stare piu' a dx perche' la regola css float right le allinea al contrario
  1939.        
  1940.         boolean apiImplementataCambiabile = ErogazioniUtilities.isChangeAPIEnabled(asps, this.apsCore);
  1941.         if(apiImplementataCambiabile) {
  1942.             List<Parameter> listParametersServizioModificaApi = new ArrayList<>();
  1943.             listParametersServizioModificaApi.addAll(listaParametriChange);
  1944.             listParametersServizioModificaApi.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_CAMBIA_API, true+""));
  1945.            
  1946.             DataElementImage image = new DataElementImage();
  1947.             image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaApi.toArray(new Parameter[1]));
  1948.             image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_CAMBIA_API_TOOLTIP_CON_PARAMETRO,
  1949.                     AccordiServizioParteSpecificaCostanti.LABEL_APC_COMPOSTO_SOLO_PARTE_COMUNE));
  1950.             image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  1951.             image.setTarget(TargetType.SELF);
  1952.             de.addImage(image);
  1953.         }
  1954.        
  1955.         if(asParteComuneCompatibili!=null && asParteComuneCompatibili.size()>1) {
  1956.             List<Parameter> listParametersServizioModificaApi = new ArrayList<>();
  1957.             listParametersServizioModificaApi.addAll(listaParametriChange);
  1958.             listParametersServizioModificaApi.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_API, true+""));
  1959.            
  1960.             DataElementImage image = new DataElementImage();
  1961.             image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaApi.toArray(new Parameter[1]));
  1962.             image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_UPGRADE_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO,
  1963.                     "Versione "+AccordiServizioParteSpecificaCostanti.LABEL_APC_COMPOSTO_SOLO_PARTE_COMUNE));
  1964.             image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_UPGRADE_CONFIGURAZIONE);
  1965.             image.setTarget(TargetType.SELF);
  1966.             de.addImage(image);
  1967.         }
  1968.        
  1969.         DataElementImage image = new DataElementImage();
  1970.         image.setUrl(ApiCostanti.SERVLET_NAME_APC_API_CHANGE, new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, asps.getIdAccordo() + ""),
  1971.                 new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME, as.getNome()), pTipoAccordo);
  1972.         image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VISUALIZZA_TOOLTIP_CON_PARAMETRO, AccordiServizioParteSpecificaCostanti.LABEL_APC_COMPOSTO_SOLO_PARTE_COMUNE));
  1973.         image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VISUALIZZA);
  1974.         image.setTarget(TargetType.BLANK);
  1975.         image.setDisabilitaAjaxStatus();
  1976.        
  1977.         de.addImage(image);
  1978.         dati.add(de);

  1979.                
  1980.        
  1981.         // ProtocolProperties

  1982.         if(showProtocolli || modificaDatiProfilo) {
  1983.            
  1984.             de = new DataElement();
  1985.             String labelProtocollo =this.getLabelProtocollo(protocollo);
  1986.             de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_PROTOCOLLO);
  1987.             de.setValue(labelProtocollo);
  1988.             de.setType(DataElementType.TEXT);
  1989.                                
  1990.             List<Parameter> listParametersServizioModificaProfilo = new ArrayList<>();
  1991.             if(gestioneFruitori) {
  1992.                 listParametersServizioModificaProfilo.addAll(listParametersServizioFruitoriModificaProfiloOrVerificaCertificati);
  1993.             }
  1994.             else {
  1995.                 listParametersServizioModificaProfilo.addAll(listParametersServizioModificaProfiloOrVerificaCertificati);
  1996.             }
  1997.             listParametersServizioModificaProfilo.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_PROFILO, true+""));
  1998.            
  1999.             if(modificaDatiProfilo) {
  2000.                
  2001.                 image = new DataElementImage();
  2002.                 if(gestioneFruitori) {
  2003.                     image.setUrl(
  2004.                             AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE,
  2005.                             listParametersServizioModificaProfilo.toArray(new Parameter[1]));
  2006.                 }
  2007.                 else {
  2008.                     image.setUrl(
  2009.                             AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE,
  2010.                             listParametersServizioModificaProfilo.toArray(new Parameter[1]));
  2011.                 }
  2012.                 image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO,
  2013.                         AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_PROTOCOLLO));
  2014.                 image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2015.                 de.addImage(image);
  2016.                
  2017.             }
  2018.            
  2019.             if(showVerificaCertificatiModi) {
  2020.                 image = new DataElementImage();
  2021.                 image.setUrl(
  2022.                         ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_VERIFICA_CERTIFICATI,
  2023.                         listParametersServizioModificaProfilo.toArray(new Parameter[1]));
  2024.                 image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO,
  2025.                         AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_PROTOCOLLO));
  2026.                 image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CERTIFICATI);
  2027.                 de.addImage(image);
  2028.                
  2029.             }
  2030.            
  2031.             dati.add(de);
  2032.            
  2033.         }
  2034.        
  2035.        
  2036.         // Fruitore
  2037.         if(showSoggettoFruitoreInFruizioni) {
  2038.             de = new DataElement();
  2039.             de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_SOGGETTO_FRUITORE);
  2040.             de.setValue(this.getLabelNomeSoggetto(protocollo,fruitore.getTipo(),fruitore.getNome()));
  2041.             de.setType(DataElementType.TEXT);
  2042.             dati.add(de);
  2043.         }

  2044.        
  2045.        
  2046.        
  2047.         // Descrizione
  2048.         if(!descrizioneEmpty) {
  2049.            
  2050.             de = new DataElement();
  2051.             de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_DESCRIZIONE);
  2052.             int length = 150;
  2053.             String descrizione = gestioneFruitori ? fruitore.getDescrizione() : asps.getDescrizione();
  2054.             if(descrizione!=null && descrizione.length()>length) {
  2055.                 descrizione = descrizione.substring(0, (length-4)) + " ...";
  2056.             }
  2057.             de.setValue(descrizione!=null ? StringEscapeUtils.escapeHtml(descrizione) : null);
  2058.             de.setToolTip(gestioneFruitori ? fruitore.getDescrizione() : asps.getDescrizione());
  2059.             de.setCopyToClipboard(gestioneFruitori ? fruitore.getDescrizione() : asps.getDescrizione());
  2060.            
  2061.             List<Parameter> listParametersServizioModificaDescrizione = new ArrayList<>();
  2062.             listParametersServizioModificaDescrizione.addAll(listaParametriChange);
  2063.             listParametersServizioModificaDescrizione.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_DESCRIZIONE, true+""));
  2064.                        
  2065.             image = new DataElementImage();
  2066.             image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaDescrizione.toArray(new Parameter[1]));
  2067.             image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_DESCRIZIONE));
  2068.             image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2069.             de.setImage(image);
  2070.            
  2071.             dati.add(de);
  2072.            
  2073.         }
  2074.        
  2075.        
  2076.        
  2077.        
  2078.        
  2079.         // Url Invocazione
  2080.         Parameter paIdSogg = null;
  2081.         Parameter paNomePorta = null;
  2082.         Parameter paIdPorta = null;
  2083.         Parameter paIdAsps = null;
  2084.         Parameter paConfigurazioneDati = null;
  2085.         Parameter paIdProvider = null;
  2086.         Parameter paIdPortaPerSA = null;
  2087.         Parameter paConnettoreDaListaAPS = null;
  2088.         Parameter paConfigurazioneAltroApi = null;
  2089.         IDPortaApplicativa idPA = null;
  2090.         PortaApplicativa paDefault = null;
  2091.         PortaApplicativaServizioApplicativo paSADefault =  null;
  2092.         String canalePorta = null;

  2093.         if(gestioneErogatori) {
  2094.            
  2095.             ServletUtils.setObjectIntoSession(this.request, this.session, PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE, PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT);
  2096.            
  2097.             de = new DataElement();
  2098.             de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_TITOLO_PORTE_APPLICATIVE_DATI_INVOCAZIONE);
  2099.             de.setType(DataElementType.TEXT);
  2100.             String urlInvocazione = "";
  2101.             String urlInvocazioneTooltip = null;

  2102.             if(!isPddEsterna){
  2103.                 idPA = this.porteApplicativeCore.getIDPortaApplicativaAssociataDefault(idServizio);
  2104.                 paDefault = this.porteApplicativeCore.getPortaApplicativa(idPA);
  2105.                 paSADefault = paDefault.getServizioApplicativoList().get(0);

  2106.                 paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
  2107.                 paNomePorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME_PORTA, paDefault.getNome());
  2108.                 paIdPorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID, ""+paDefault.getId());
  2109.                 paIdAsps = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_ASPS, asps.getId()+ "");
  2110.                 paConfigurazioneDati = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_DATI_INVOCAZIONE, Costanti.CHECK_BOX_ENABLED_TRUE);
  2111.                 paIdProvider = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_PROVIDER, paDefault.getIdSoggetto() + "");
  2112.                 paIdPortaPerSA = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_PORTA, ""+paDefault.getId());
  2113.                 paConnettoreDaListaAPS = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORE_DA_LISTA_APS, Costanti.CHECK_BOX_ENABLED_TRUE);
  2114.                 paConfigurazioneAltroApi = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_ALTRO_API, Costanti.CHECK_BOX_ENABLED_TRUE);
  2115.                
  2116.                 boolean analizeProxyPassRules = true;
  2117.                 UrlInvocazioneAPI urlInvocazioneConfig = this.confCore.getConfigurazioneUrlInvocazione(protocollo, RuoloContesto.PORTA_APPLICATIVA, serviceBinding, paDefault.getNome(),
  2118.                         new IDSoggetto(paDefault.getTipoSoggettoProprietario(), paDefault.getNomeSoggettoProprietario()),
  2119.                                 as, paDefault.getCanale(),
  2120.                                 analizeProxyPassRules);
  2121.                 urlInvocazione = urlInvocazioneConfig.getUrl();
  2122.                
  2123.                 UrlInvocazioneAPI urlInvocazioneConfigDefault = this.confCore.getConfigurazioneUrlInvocazione(protocollo, RuoloContesto.PORTA_APPLICATIVA, serviceBinding, paDefault.getNome(),
  2124.                         new IDSoggetto(paDefault.getTipoSoggettoProprietario(), paDefault.getNomeSoggettoProprietario()),
  2125.                                 as, paDefault.getCanale(),
  2126.                                 !analizeProxyPassRules);
  2127.                 if(urlInvocazioneConfigDefault!=null && urlInvocazioneConfigDefault.getUrl()!=null && !urlInvocazioneConfigDefault.getUrl().equals(urlInvocazione)) {
  2128.                     urlInvocazioneTooltip = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_BASE_URL_INVOCAZIONE_INTERNA+": "+ urlInvocazioneConfigDefault.getUrl();
  2129.                 }
  2130.             } else {
  2131.                 urlInvocazione = "-";
  2132.             }
  2133.             de.setValue(urlInvocazione);
  2134.             if(urlInvocazioneTooltip!=null) {
  2135.                 de.setToolTip(urlInvocazioneTooltip);
  2136.             }
  2137.             List<Parameter> listParametersUrlInvocazione = new ArrayList<>();
  2138.             listParametersUrlInvocazione.add(paIdSogg);
  2139.             listParametersUrlInvocazione.add(paNomePorta);
  2140.             listParametersUrlInvocazione.add(paIdPorta);
  2141.             listParametersUrlInvocazione.add(paIdAsps);
  2142.             listParametersUrlInvocazione.add(paConfigurazioneDati);
  2143.            
  2144.             image = new DataElementImage();
  2145.             image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteApplicativeCostanti.LABEL_PARAMETRO_TITOLO_PORTE_APPLICATIVE_DATI_INVOCAZIONE));
  2146.             image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2147.             image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CHANGE, listParametersUrlInvocazione.toArray(new Parameter[1]));
  2148.             de.setImage(image);
  2149.             if(!urlInvocazione.equals("-")) {
  2150.                 de.setCopyToClipboard(urlInvocazione);
  2151.             }
  2152.             dati.add(de);
  2153.            
  2154.             boolean visualizzaConnettore = true;
  2155.             boolean checkConnettore = false;
  2156.             boolean connettoreMultiploEnabled = false;
  2157.             long idConnettore = 1;
  2158.             for (int i = 0; i < listaPorteApplicativeAssociate.size(); i++) {
  2159.                 PortaApplicativa paAssociata = listaPorteApplicativeAssociate.get(i);
  2160.                 MappingErogazionePortaApplicativa mapping = listaMappingErogazionePortaApplicativa.get(i);
  2161.                
  2162.                 if(!mapping.isDefault()) {
  2163.                     PortaApplicativaServizioApplicativo portaApplicativaAssociataServizioApplicativo = paAssociata.getServizioApplicativoList().get(0);
  2164.                     boolean connettoreConfigurazioneRidefinito = this.isConnettoreRidefinito(paDefault, paSADefault, paAssociata, portaApplicativaAssociataServizioApplicativo, paAssociata.getServizioApplicativoList());
  2165.                     if(connettoreConfigurazioneRidefinito) {
  2166.                         visualizzaConnettore = false;
  2167.                         break;
  2168.                     }
  2169.                 } else {
  2170.                     canalePorta = paAssociata.getCanale();
  2171.                 }
  2172.                
  2173.             }
  2174.            
  2175.             if(visualizzaConnettore) {
  2176.                 IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
  2177.                 idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(paDefault.getTipoSoggettoProprietario(), paDefault.getNomeSoggettoProprietario()));
  2178.                 idServizioApplicativo.setNome(paSADefault.getNome());
  2179.                 ServizioApplicativo sa = this.saCore.getServizioApplicativo(idServizioApplicativo);
  2180.                 Connettore connettore = sa.getInvocazioneServizio().getConnettore();
  2181.                 idConnettore = connettore.getId();
  2182.                 checkConnettore = org.openspcoop2.pdd.core.connettori.ConnettoreCheck.checkSupported(connettore);
  2183.                
  2184.                 connettoreMultiploEnabled = paDefault.getBehaviour() != null;

  2185.                
  2186.                 de = new DataElement();
  2187.                
  2188.                 de.setType(DataElementType.TEXT);
  2189.                 InvocazioneServizio is = sa.getInvocazioneServizio();
  2190.                 String urlConnettore = this.getLabelConnettore(sa,is,true);
  2191.                
  2192.                 if(!connettoreMultiploEnabled) {    
  2193.                     de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORE);
  2194.                     de.setValue(formatInfoForView(urlConnettore));
  2195.                     String tooltipConnettore = this.getTooltipConnettore(sa,is,true);
  2196.                     de.setToolTip(tooltipConnettore);
  2197.                 } else {
  2198.                     de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI);
  2199.                     de.setValue(this.getNomiConnettoriMultipliPortaApplicativa(paDefault));
  2200.                     de.setToolTip(this.getToolTipConnettoriMultipliPortaApplicativa(paDefault));
  2201.                 }
  2202.                
  2203.                 boolean visualizzaLinkConfigurazioneConnettore =
  2204.                         (!this.core.isConnettoriMultipliEnabled())
  2205.                         ||
  2206.                         (!connettoreMultiploEnabled );
  2207.                 if(visualizzaLinkConfigurazioneConnettore) {
  2208.                     List<Parameter> listParametersConnettore = new ArrayList<>();
  2209.                     listParametersConnettore.add(paIdProvider);
  2210.                     listParametersConnettore.add(paIdPortaPerSA);
  2211.                     listParametersConnettore.add(paIdAsps);
  2212.                     listParametersConnettore.add(new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SERVIZIO_APPLICATIVO, paSADefault.getNome()));
  2213.                     listParametersConnettore.add(new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO, paSADefault.getIdServizioApplicativo()+""));
  2214.                     listParametersConnettore.add(paConnettoreDaListaAPS);
  2215.                    
  2216.                     image = new DataElementImage();
  2217.                     image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORE));
  2218.                     image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2219.                     image.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ENDPOINT,
  2220.                             listParametersConnettore.toArray(new Parameter[1]));
  2221.                     de.addImage(image);
  2222.                 }

  2223.                 boolean visualizzaLinkCheckConnettore =
  2224.                         checkConnettore &&
  2225.                         (
  2226.                                 (!this.core.isConnettoriMultipliEnabled())
  2227.                                 ||
  2228.                                 ( !connettoreMultiploEnabled )
  2229.                         );
  2230.                 if(visualizzaLinkCheckConnettore) {
  2231.                     List<Parameter> listParametersVerificaConnettore = new ArrayList<>();
  2232.                     paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
  2233.                     listParametersVerificaConnettore.add(paIdSogg);
  2234.                     listParametersVerificaConnettore.add(paIdPorta);
  2235.                     listParametersVerificaConnettore.add(paIdAsps);
  2236.                     listParametersVerificaConnettore.add(paConnettoreDaListaAPS);
  2237.                     listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ID, idConnettore+""));
  2238.                     listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI, false+""));
  2239.                     listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO, false+""));
  2240.                    
  2241.                     image = new DataElementImage();
  2242.                     image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, CostantiControlStation.LABEL_CONFIGURAZIONE_CONNETTIVITA));
  2243.                     image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE);
  2244.                     image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_VERIFICA_CONNETTORE,
  2245.                             listParametersVerificaConnettore.toArray(new Parameter[1]));
  2246.                     de.addImage(image);
  2247.                 }
  2248.                
  2249.                 // link alla configurazione connettori multipli e alla lista dei connettori multipli
  2250.                 if(this.core.isConnettoriMultipliEnabled()) {
  2251.                     List<Parameter> listParametersConfigutazioneConnettoriMultipli = new ArrayList<>();
  2252.                     paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
  2253.                     listParametersConfigutazioneConnettoriMultipli.add(paIdSogg);
  2254.                     listParametersConfigutazioneConnettoriMultipli.add(paIdPorta);
  2255.                     listParametersConfigutazioneConnettoriMultipli.add(paIdAsps);
  2256.                     listParametersConfigutazioneConnettoriMultipli.add(paConnettoreDaListaAPS);
  2257.                     listParametersConfigutazioneConnettoriMultipli.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI, false+""));
  2258.                     listParametersConfigutazioneConnettoriMultipli.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO, false+""));
  2259.                     listParametersConfigutazioneConnettoriMultipli.add(new Parameter(CostantiControlStation.PARAMETRO_ID_CONN_TAB, "0"));
  2260.                    
  2261.                     image = new DataElementImage();
  2262.                     image.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_CONFIGURAZIONE_CONNETTORI_MULTIPLI_TOOLTIP);
  2263.                     image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_CONFIGURAZIONE_CONNETTORI_MULTIPLI);
  2264.                     image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONFIGURAZIONE_CONNETTORI_MULTIPLI,
  2265.                             listParametersConfigutazioneConnettoriMultipli.toArray(new Parameter[1]));
  2266.                     de.addImage(image);
  2267.                    
  2268.                     if(connettoreMultiploEnabled) {
  2269.                         image = new DataElementImage();
  2270.                         image.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_ELENCO_CONNETTORI_MULTIPLI_TOOLTIP);
  2271.                         image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_ELENCO_CONNETTORI_MULTIPLI);
  2272.                         image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_LIST,
  2273.                                 listParametersConfigutazioneConnettoriMultipli.toArray(new Parameter[1]));
  2274.                         de.addImage(image);
  2275.                     }
  2276.                 }
  2277.                
  2278.                 de.setCopyToClipboard(this.getClipBoardUrlConnettore(sa,is));
  2279.                 dati.add(de);
  2280.             }
  2281.            
  2282.             // CORS
  2283.             de = new DataElement();
  2284.             de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CORS);
  2285.             de.setType(DataElementType.TEXT);
  2286.             de.setValue(this.getStatoGestioneCorsPortaApplicativa(paDefault, false));
  2287.             if(!this.isModalitaCompleta()) {
  2288.                 this.setStatoGestioneCORS(de, paDefault.getGestioneCors(), this.confCore.getConfigurazioneGenerale());
  2289.             }
  2290.             paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
  2291.            
  2292.             image = new DataElementImage();
  2293.             image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CORS));
  2294.             image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2295.             image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_GESTIONE_CORS, paIdSogg, paIdPorta, pIdAsps);
  2296.            
  2297.             de.setImage(image);
  2298.             dati.add(de);
  2299.            
  2300.            
  2301.             // Canale
  2302.             CanaliConfigurazione gestioneCanali = this.confCore.getCanaliConfigurazione(false);
  2303.             boolean gestioneCanaliEnabled = gestioneCanali != null && org.openspcoop2.core.config.constants.StatoFunzionalita.ABILITATO.equals(gestioneCanali.getStato());
  2304.             if(gestioneCanaliEnabled) {
  2305.                 List<CanaleConfigurazione> canaleList = gestioneCanali != null ? gestioneCanali.getCanaleList() : new ArrayList<>();
  2306.                 de = new DataElement();
  2307.                 de.setType(DataElementType.TEXT);
  2308.                 de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CANALE);
  2309.                 this.setStatoCanalePorta(de, canalePorta, as.getCanale(), canaleList, true);
  2310.                
  2311.                 image = new DataElementImage();
  2312.                 image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CANALE));
  2313.                 image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2314.                 image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_GESTIONE_CANALE, paIdSogg, paIdPorta, pIdAsps);
  2315.                 de.setImage(image);
  2316.                
  2317.                 dati.add(de);
  2318.             }
  2319.            
  2320.            
  2321.             // Opzioni Avanzate
  2322.            
  2323.             if(!this.isModalitaStandard() && this.apsCore.getMessageEngines()!=null && !this.apsCore.getMessageEngines().isEmpty()) {
  2324.                 de = new DataElement();
  2325.                 de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_OPZIONI_AVANZATE);
  2326.                 de.setType(DataElementType.TEXT);
  2327.                 de.setValue(this.getStatoOpzioniAvanzatePortaApplicativaDefault(paDefault));
  2328.                 if(!this.isModalitaCompleta()) {
  2329.                     this.setStatoOpzioniAvanzatePortaApplicativaDefault(de, paDefault.getOptions());
  2330.                 }
  2331.                 paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
  2332.                
  2333.                 image = new DataElementImage();
  2334.                 image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_OPZIONI_AVANZATE));
  2335.                 image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2336.                 image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CHANGE,paIdSogg, paNomePorta, paIdPorta,pIdAsps,paConfigurazioneAltroApi);
  2337.                
  2338.                 de.setImage(image);
  2339.                 dati.add(de);
  2340.             }
  2341.            
  2342.             // Proprieta
  2343.             this.addProprietaOggetto(dati, pOggetto);
  2344.            
  2345.         }
  2346.        
  2347.         if(gestioneFruitori) {
  2348.            
  2349.             ServletUtils.setObjectIntoSession(this.request, this.session, PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE, PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT);
  2350.            
  2351.             IDSoggetto idFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
  2352.             IDPortaDelegata idPD = this.porteDelegateCore.getIDPortaDelegataAssociataDefault(idServizio, idFruitore);
  2353.             PortaDelegata pdDefault = this.porteDelegateCore.getPortaDelegata(idPD);
  2354.             canalePorta = pdDefault.getCanale();
  2355.                
  2356.             Parameter pIdPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID, "" + pdDefault.getId());
  2357.             Parameter pNomePD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_NOME_PORTA, pdDefault.getNome());
  2358.             Parameter pIdSoggPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_SOGGETTO, pdDefault.getIdSoggetto() + "");
  2359.             Parameter pConfigurazioneDati = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_CONFIGURAZIONE_DATI_INVOCAZIONE, Costanti.CHECK_BOX_ENABLED_TRUE);
  2360.             Parameter pConnettoreDaListaAPS = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_CONNETTORE_DA_LISTA_APS, Costanti.CHECK_BOX_ENABLED_TRUE);
  2361.             Parameter pdConfigurazioneAltroApi = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_CONFIGURAZIONE_ALTRO_API, Costanti.CHECK_BOX_ENABLED_TRUE);
  2362.            
  2363.            
  2364.             // url invocazione
  2365.             de = new DataElement();
  2366.             de.setLabel(PorteDelegateCostanti.LABEL_PARAMETRO_TITOLO_PORTE_DELEGATE_DATI_INVOCAZIONE);
  2367.             de.setType(DataElementType.TEXT);
  2368.             boolean analizeProxyPassRules = true;
  2369.             UrlInvocazioneAPI urlInvocazione = this.confCore.getConfigurazioneUrlInvocazione(protocollo, RuoloContesto.PORTA_DELEGATA, serviceBinding, pdDefault.getNome(), idFruitore,
  2370.                     as, pdDefault.getCanale(),
  2371.                     analizeProxyPassRules);
  2372.             String urlInvocazioneAPI = urlInvocazione.getUrl();
  2373.             de.setValue(urlInvocazioneAPI);
  2374.            
  2375.             UrlInvocazioneAPI urlInvocazioneDefault = this.confCore.getConfigurazioneUrlInvocazione(protocollo, RuoloContesto.PORTA_DELEGATA, serviceBinding, pdDefault.getNome(), idFruitore,
  2376.                     as, pdDefault.getCanale(),
  2377.                     !analizeProxyPassRules);
  2378.             if(urlInvocazioneDefault!=null && urlInvocazioneDefault.getUrl()!=null && !urlInvocazioneDefault.getUrl().equals(urlInvocazioneAPI)) {
  2379.                 de.setToolTip(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_BASE_URL_INVOCAZIONE_INTERNA+": "+urlInvocazioneDefault.getUrl());
  2380.             }
  2381.            
  2382.             List<Parameter> listParametersUrlInvocazione = new ArrayList<>();
  2383.             listParametersUrlInvocazione.add(pIdPD);
  2384.             listParametersUrlInvocazione.add(pNomePD);
  2385.             listParametersUrlInvocazione.add(pIdSoggPD);
  2386.             listParametersUrlInvocazione.add(pIdAsps);
  2387.             listParametersUrlInvocazione.add(pIdFruitore);
  2388.             listParametersUrlInvocazione.add(pConfigurazioneDati);
  2389.             listParametersUrlInvocazione.add(pTipoSoggettoFruitore);
  2390.             listParametersUrlInvocazione.add(pNomeSoggettoFruitore);
  2391.            
  2392.             image = new DataElementImage();
  2393.             image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_CHANGE, listParametersUrlInvocazione.toArray(new Parameter[1]));
  2394.             image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteDelegateCostanti.LABEL_PARAMETRO_TITOLO_PORTE_DELEGATE_DATI_INVOCAZIONE));
  2395.             image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2396.            
  2397.             de.setImage(image);
  2398.             if(!urlInvocazioneAPI.equals("-")) {
  2399.                 de.setCopyToClipboard(urlInvocazioneAPI);
  2400.             }
  2401.             dati.add(de);
  2402.            
  2403.            
  2404.             boolean visualizzaConnettore = true;
  2405.             boolean checkConnettore = false;
  2406.             long idConnettore = 1;
  2407.            
  2408.             for (int i = 0; i < listaPorteDelegateAssociate.size(); i++) {
  2409.                 PortaDelegata pdAssociata = listaPorteDelegateAssociate.get(i);
  2410.                 MappingFruizionePortaDelegata mapping = listaMappingFruzionePortaDelegata.get(i);

  2411.                 List<String> listaAzioni = null;
  2412.                 if(!mapping.isDefault()) {
  2413.                     listaAzioni = pdAssociata.getAzione().getAzioneDelegataList();
  2414.                 }
  2415.                
  2416.                 String azioneConnettore =  null;
  2417.                 if(listaAzioni!=null && !listaAzioni.isEmpty()) {
  2418.                     azioneConnettore = listaAzioni.get(0);
  2419.                 }
  2420.                
  2421.                 boolean connettoreConfigurazioneRidefinito = false;
  2422.                 if(azioneConnettore!=null && !"".equals(azioneConnettore)) {
  2423.                     for (ConfigurazioneServizioAzione check : fruitore.getConfigurazioneAzioneList()) {
  2424.                         if(check.getAzioneList().contains(azioneConnettore)) {
  2425.                             connettoreConfigurazioneRidefinito = true;
  2426.                             break;
  2427.                         }
  2428.                     }
  2429.                 }
  2430.                
  2431.                
  2432.                 if(connettoreConfigurazioneRidefinito) {
  2433.                     visualizzaConnettore = false;
  2434.                     break;
  2435.                 }
  2436.             }
  2437.            
  2438.             if(visualizzaConnettore) {
  2439.                 org.openspcoop2.core.registry.Connettore connettore = fruitore.getConnettore();
  2440.                 idConnettore = connettore.getId();
  2441.                 checkConnettore = org.openspcoop2.pdd.core.connettori.ConnettoreCheck.checkSupported(connettore);
  2442.             }

  2443.             // Connettore
  2444.             if(visualizzaConnettore) {
  2445.                 de = new DataElement();
  2446.                 de.setLabel(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE);
  2447.                 de.setType(DataElementType.TEXT);
  2448.                 org.openspcoop2.core.registry.Connettore connettore = fruitore.getConnettore();
  2449.                 String urlConnettore = this.getLabelConnettore(connettore, true, false);
  2450.                 String tooltipConnettore = this.getLabelConnettore(connettore, true, true);
  2451.                
  2452.                 // Controllo se richiedere il connettore
  2453.                 boolean connettoreStatic = false;
  2454.                 if(gestioneFruitori) {
  2455.                     connettoreStatic = this.apsCore.isConnettoreStatic(protocollo);
  2456.                 }
  2457.                
  2458.                 if(!connettoreStatic) {
  2459.                    
  2460.                     de.setValue(formatInfoForView(urlConnettore));
  2461.                     de.setToolTip(tooltipConnettore);
  2462.                     de.setCopyToClipboard(this.getClipBoardUrlConnettore(connettore));
  2463.                    
  2464.                     List<Parameter> listParametersConnettore = new ArrayList<>();
  2465.                     listParametersConnettore.add(pId);
  2466.                     listParametersConnettore.add(pIdFruitore);
  2467.                     listParametersConnettore.add(pIdSoggettoErogatore);
  2468.                     listParametersConnettore.add(pIdProviderFruitore);
  2469.                     listParametersConnettore.add(pConnettoreDaListaAPS);
  2470.                     listParametersConnettore.add(pTipoSoggettoFruitore);
  2471.                     listParametersConnettore.add(pNomeSoggettoFruitore);
  2472.                     image = new DataElementImage();
  2473.                     image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE));
  2474.                     image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2475.                     image.setUrl(
  2476.                             AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE,
  2477.                             listParametersConnettore.toArray(new Parameter[1])
  2478.                             );
  2479.                     de.addImage(image);
  2480.                    
  2481.                     if(checkConnettore) {
  2482.                         List<Parameter> listParametersVerificaConnettore = new ArrayList<>();
  2483.                         listParametersVerificaConnettore.add(pIdPD);
  2484.                         listParametersVerificaConnettore.add(pIdFruitore);
  2485.                         listParametersVerificaConnettore.add(pIdSoggettoErogatore);
  2486.                         listParametersVerificaConnettore.add(pIdProviderFruitore);
  2487.                         listParametersVerificaConnettore.add(pConnettoreDaListaAPS);
  2488.                         listParametersVerificaConnettore.add(pTipoSoggettoFruitore);
  2489.                         listParametersVerificaConnettore.add(pNomeSoggettoFruitore);
  2490.                         listParametersVerificaConnettore.add(pIdSoggPD);
  2491.                         listParametersVerificaConnettore.add(pIdAsps);
  2492.                         listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ID, idConnettore+""));
  2493.                         listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI, false+""));
  2494.                         listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO, true+""));
  2495.                         image = new DataElementImage();
  2496.                        
  2497.                         image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, CostantiControlStation.LABEL_CONFIGURAZIONE_CONNETTIVITA));
  2498.                         image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE);
  2499.                         image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_VERIFICA_CONNETTORE,
  2500.                                 listParametersVerificaConnettore.toArray(new Parameter[1]));
  2501.                        
  2502.                         de.addImage(image);
  2503.                     }
  2504.                 }
  2505.                 else {
  2506.                     de.setValue("-");
  2507.                 }
  2508.                
  2509.                 dati.add(de);
  2510.             }
  2511.            
  2512.             // CORS
  2513.             de = new DataElement();
  2514.             de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CORS);
  2515.             de.setType(DataElementType.TEXT);
  2516.             de.setValue(this.getStatoGestioneCorsPortaDelegata(pdDefault, false));
  2517.             if(!this.isModalitaCompleta()) {
  2518.                 this.setStatoGestioneCORS(de, pdDefault.getGestioneCors(), this.confCore.getConfigurazioneGenerale());
  2519.             }
  2520.             image = new DataElementImage();
  2521.             image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CORS));
  2522.             image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2523.             image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_GESTIONE_CORS, pIdPD, pNomePD, pIdSoggPD, pIdAsps, pIdFruitore);
  2524.             de.setImage(image);
  2525.             dati.add(de);
  2526.            
  2527.             // Canale
  2528.             CanaliConfigurazione gestioneCanali = this.confCore.getCanaliConfigurazione(false);
  2529.             boolean gestioneCanaliEnabled = gestioneCanali != null && org.openspcoop2.core.config.constants.StatoFunzionalita.ABILITATO.equals(gestioneCanali.getStato());
  2530.             if(gestioneCanaliEnabled) {
  2531.                 List<CanaleConfigurazione> canaleList = gestioneCanali != null ? gestioneCanali.getCanaleList() : new ArrayList<>();
  2532.                 de = new DataElement();
  2533.                 de.setType(DataElementType.TEXT);
  2534.                 de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CANALE);
  2535.                 this.setStatoCanalePorta(de, canalePorta, as.getCanale(), canaleList, false);
  2536.                
  2537.                 image = new DataElementImage();
  2538.                 image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CANALE));
  2539.                 image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2540.                 image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_GESTIONE_CANALE, pIdPD, pNomePD, pIdSoggPD, pIdAsps, pIdFruitore);
  2541.                 de.setImage(image);
  2542.                
  2543.                 dati.add(de);
  2544.             }
  2545.            
  2546.            
  2547.             // Opzioni Avanzate
  2548.            
  2549.             if(!this.isModalitaStandard() && this.apsCore.getMessageEngines()!=null && !this.apsCore.getMessageEngines().isEmpty()) {
  2550.                 de = new DataElement();
  2551.                 de.setLabel(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_OPZIONI_AVANZATE);
  2552.                 de.setType(DataElementType.TEXT);
  2553.                 de.setValue(this.getStatoOpzioniAvanzatePortaDelegataDefault(pdDefault));
  2554.                 if(!this.isModalitaCompleta()) {
  2555.                     this.setStatoOpzioniAvanzatePortaDelegataDefault(de, pdDefault.getOptions());
  2556.                 }
  2557.                 image = new DataElementImage();
  2558.                 image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_OPZIONI_AVANZATE));
  2559.                 image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2560.                 image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_CHANGE,pIdPD,pNomePD,pIdSoggPD, pIdAsps, pIdFruitore, pdConfigurazioneAltroApi);
  2561.                 de.setImage(image);
  2562.                 dati.add(de);
  2563.             }
  2564.            
  2565.             // Proprieta
  2566.             this.addProprietaOggetto(dati, pOggetto);
  2567.         }
  2568.        

  2569.         Parameter pGruppiTrue = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_GESTIONE_GRUPPI,true+"");
  2570.         Parameter pGruppiFalse = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_GESTIONE_GRUPPI,false+"");
  2571.        
  2572.         Parameter pConfigurazioneTrue =new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_GESTIONE_CONFIGURAZIONI,true+"");
  2573.         Parameter pConfigurazioneFalse =new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_GESTIONE_CONFIGURAZIONI,false+"");
  2574.        

  2575.        
  2576.        
  2577.         boolean visualizzazioneTabs = !this.isModalitaCompleta();
  2578.        
  2579.         Parameter pIdTab = new Parameter(CostantiControlStation.PARAMETRO_ID_TAB, "0");
  2580.        
  2581.         // configurazioni
  2582.         de = new DataElement();
  2583.         de.setType(DataElementType.LINK);
  2584.         if(gestioneErogatori)
  2585.             de.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_PORTE_APPLICATIVE_LIST,
  2586.                     pId, pNomeServizio, pTipoServizio, pIdSoggettoErogatore,pConfigurazioneTrue,pGruppiFalse,pIdTab);
  2587.         if(gestioneFruitori)
  2588.             de.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_PORTE_DELEGATE_LIST,  
  2589.                     pId, pIdSogg, pIdSoggettoErogatore, pNomeServizio, pTipoServizio, pIdFruitore,pConfigurazioneTrue,pGruppiFalse,pTipoSoggettoFruitore,pNomeSoggettoFruitore,pIdTab);
  2590.         if(visualizzazioneTabs)
  2591.             de.setValue(ErogazioniCostanti.LABEL_ASPS_GESTIONE_CONFIGURAZIONI_CONFIGURA);          
  2592.         else
  2593.             de.setValue(ErogazioniCostanti.LABEL_ASPS_GESTIONE_CONFIGURAZIONI);
  2594.         de.setIcon(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_GESTIONE_CONFIGURAZIONI);
  2595.         dati.add(de);
  2596.        
  2597.         if(!visualizzazioneTabs) {
  2598.             // Gestione Gruppi
  2599.             de = new DataElement();
  2600.             de.setType(DataElementType.LINK);
  2601.             if(gestioneErogatori)
  2602.                 de.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_PORTE_APPLICATIVE_LIST,
  2603.                         pId, pNomeServizio, pTipoServizio, pIdSoggettoErogatore, pConfigurazioneFalse, pGruppiTrue);
  2604.             if(gestioneFruitori)
  2605.                 de.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_PORTE_DELEGATE_LIST,  
  2606.                         pId, pIdSogg, pIdSoggettoErogatore, pNomeServizio, pTipoServizio, pIdFruitore, pConfigurazioneFalse, pGruppiTrue,pTipoSoggettoFruitore,pNomeSoggettoFruitore);
  2607.             de.setValue(MessageFormat.format(ErogazioniCostanti.LABEL_ASPS_GESTIONE_GRUPPI_CON_PARAMETRO, this.getLabelAzioni(serviceBinding)));
  2608.             de.setIcon(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_GESTIONE_GRUPPI_CON_PARAMETRO);
  2609.             dati.add(de);
  2610.         }
  2611.        
  2612.         if(visualizzaGruppi)
  2613.             this.aggiungiListaConfigurazioni(datiPagina, serviceBinding, gestioneErogatori, listaMappingErogazionePortaApplicativa, listaPorteApplicativeAssociate, listaMappingFruzionePortaDelegata, listaPorteDelegateAssociate,  pIdAsps, pIdFruitore, asps, as);

  2614.         return datiPagina;
  2615.     }
  2616.    
  2617.     @SuppressWarnings("unused")
  2618.     private void aggiungiListaConfigurazioni(List<List<DataElement>> datiPagina, ServiceBinding serviceBinding,
  2619.             boolean gestioneErogatori, List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa,
  2620.             List<PortaApplicativa> listaPorteApplicativeAssociate,
  2621.             List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata,
  2622.             List<PortaDelegata> listaPorteDelegateAssociate,
  2623.             Parameter pIdAsps,
  2624.             Parameter pIdFruitore, AccordoServizioParteSpecifica asps, AccordoServizioParteComuneSintetico as)  throws Exception {

  2625.         Map<String,String> azioni = this.core.getAzioniConLabel(asps, as, false, true, new ArrayList<>());
  2626.         boolean allActionRedefined = false;

  2627.         PropertiesSourceConfiguration propertiesSourceConfiguration = this.core.getMessageSecurityPropertiesSourceConfiguration();
  2628.         ConfigManager configManager = ConfigManager.getinstance(ControlStationCore.getLog());
  2629.         configManager.leggiConfigurazioni(propertiesSourceConfiguration, true);

  2630.         DataElement de = null;
  2631.         // sezione 2 gruppi e funzionalita'

  2632.         if(gestioneErogatori) { // erogazioni
  2633.             boolean visualizzaMTOM = true;
  2634.             boolean visualizzaSicurezza = true;
  2635.             boolean visualizzaCorrelazione = true;
  2636.             switch (serviceBinding) {
  2637.             case REST:
  2638.                 visualizzaMTOM = false;
  2639.                 visualizzaSicurezza = true;
  2640.                 visualizzaCorrelazione = true;
  2641.                 break;
  2642.             case SOAP:
  2643.             default:
  2644.                 visualizzaMTOM = true;
  2645.                 visualizzaSicurezza = true;
  2646.                 visualizzaCorrelazione = true;
  2647.                 break;
  2648.             }

  2649.             if(azioni!=null && azioni.size()>1) {
  2650.                 List<String> azioniL = new ArrayList<>();
  2651.                 if(azioni != null && azioni.size() > 0)
  2652.                     azioniL.addAll(azioni.keySet());
  2653.                 allActionRedefined = this.allActionsRedefinedMappingErogazionePaAssociate(azioniL, listaPorteApplicativeAssociate);
  2654.             }

  2655.             for (int d = 0; d < listaMappingErogazionePortaApplicativa.size() ; d++) {
  2656.                 MappingErogazionePortaApplicativa mapping =listaMappingErogazionePortaApplicativa.get(d);
  2657.                 PortaApplicativa paAssociata = listaPorteApplicativeAssociate.get(d);

  2658.                 // controllo se la configurazione deve essere visualizzata
  2659.                 boolean showConfigurazione = !(mapping.isDefault() && allActionRedefined);

  2660.                 int numeroConfigurazioniAttive = 0;

  2661.                 List<String> labelDisponibili = new ArrayList<>();
  2662.                 List<String> urlDisponibili = new ArrayList<>();

  2663.                 if(showConfigurazione) {
  2664.                     List<DataElement> gruppoList = new ArrayList<>();
  2665.                     Parameter pNomePorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME_PORTA, paAssociata.getNome());
  2666.                     Parameter pIdNome = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME, paAssociata.getNome());
  2667.                     Parameter pIdSoggPA = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, paAssociata.getIdSoggetto() + "");
  2668.                     Parameter pIdPorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID, ""+paAssociata.getId());
  2669.                     Parameter pIdProvider = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_PROVIDER, paAssociata.getIdSoggetto() + "");
  2670.                     Parameter pIdPortaPerSA = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_PORTA, ""+paAssociata.getId());

  2671.                     // nome Gruppo
  2672.                     de = new DataElement();
  2673.                     de.setType(DataElementType.TITLE);
  2674.                     de.setLabel(mapping.getDescrizione());
  2675.                     gruppoList.add(de);

  2676.                     // controllo accessi
  2677.                     boolean controlloAccessiAbilitato = false;
  2678.                     String statoControlloAccessi = this.getStatoControlloAccessiPortaApplicativa(this.apsCore.getProtocolloAssociatoTipoServizio(asps.getTipo()), paAssociata);

  2679.                     if(statoControlloAccessi.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
  2680.                         controlloAccessiAbilitato = true;
  2681.                         numeroConfigurazioniAttive ++ ;
  2682.                     } else {
  2683.                         labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONTROLLO_ACCESSI);
  2684.                         DataElement deTmp = new DataElement();
  2685.                         deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONTROLLO_ACCESSI, pIdSoggPA, pIdPorta, pIdAsps);
  2686.                         urlDisponibili.add(deTmp.getUrl());
  2687.                     }

  2688.                     if(controlloAccessiAbilitato) {
  2689.                         de = new DataElement();
  2690.                         de.setType(DataElementType.SUBTITLE);
  2691.                         de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONTROLLO_ACCESSI);
  2692.                         gruppoList.add(de);

  2693.                         de = new DataElement();
  2694.                         de.setType(DataElementType.TEXT);
  2695.                         de.setLabel(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_GESTIONE_TOKEN);            
  2696.                         de.setValue(this.getStatoGestioneTokenPortaApplicativa(paAssociata));
  2697.                         gruppoList.add(de);

  2698.                         de = new DataElement();
  2699.                         de.setType(DataElementType.TEXT);
  2700.                         de.setLabel(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTENTICAZIONE);            
  2701.                         de.setValue(this.getStatoAutenticazionePortaApplicativa(paAssociata));
  2702.                         gruppoList.add(de);

  2703.                         de = new DataElement();
  2704.                         de.setType(DataElementType.TEXT);
  2705.                         de.setLabel(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTORIZZAZIONE_DIFFERENTE_DA_TRASPORTO_E_TOKEN);            
  2706.                         de.setValue(this.getStatoAutorizzazionePortaApplicativa(paAssociata));
  2707.                         gruppoList.add(de);

  2708.                         de = new DataElement();
  2709.                         de.setType(DataElementType.BUTTON);
  2710.                         de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONTROLLO_ACCESSI, pIdSoggPA, pIdPorta, pIdAsps);
  2711.                         de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2712.                         de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
  2713.                         gruppoList.add(de);
  2714.                     }

  2715.                     // validazione contenuti
  2716.                     boolean validazioneContenutiAbilitato = false;
  2717.                     String statoValidazione = this.getStatoValidazionePortaApplicativa(paAssociata);

  2718.                     if(!statoValidazione.equals(PorteDelegateCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_DELEGATE_VALIDAZIONE_DISABILITATO)) {
  2719.                         validazioneContenutiAbilitato = true;
  2720.                         numeroConfigurazioniAttive ++ ;
  2721.                     } else {
  2722.                         labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI);
  2723.                         DataElement deTmp = new DataElement();
  2724.                         deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI, pIdSoggPA, pIdPorta, pIdAsps);
  2725.                         urlDisponibili.add(deTmp.getUrl());
  2726.                     }

  2727.                     if(validazioneContenutiAbilitato) {
  2728.                         de = new DataElement();
  2729.                         de.setType(DataElementType.SUBTITLE);
  2730.                         de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI);
  2731.                         gruppoList.add(de);

  2732.                         de = new DataElement();
  2733.                         de.setType(DataElementType.TEXT);
  2734.                         de.setLabel(CostantiControlStation.LABEL_PARAMETRO_STATO);              
  2735.                         de.setValue(statoValidazione);
  2736.                         gruppoList.add(de);

  2737.                         String tipoValidazione = this.getTipoValidazionePortaApplicativa(paAssociata);
  2738.                         if(tipoValidazione != null) {
  2739.                             de = new DataElement();
  2740.                             de.setType(DataElementType.TEXT);
  2741.                             de.setLabel(CostantiControlStation.LABEL_PARAMETRO_PORTE_TIPO);            
  2742.                             de.setValue(tipoValidazione);
  2743.                             gruppoList.add(de);
  2744.                         }

  2745.                         de = new DataElement();
  2746.                         de.setType(DataElementType.BUTTON);
  2747.                         de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI, pIdSoggPA, pIdPorta, pIdAsps);
  2748.                         de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2749.                         de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
  2750.                         gruppoList.add(de);
  2751.                     }


  2752.                     // message security
  2753.                     if(visualizzaSicurezza) {
  2754.                         boolean controlloMessageSecurityAbilitato = false;
  2755.                         String statoMessageSecurity = this.getStatoMessageSecurityPortaApplicativa(paAssociata);

  2756.                         if(statoMessageSecurity.equals(CostantiConfigurazione.ABILITATO.toString())) {
  2757.                             controlloMessageSecurityAbilitato = true;
  2758.                             numeroConfigurazioniAttive ++ ;
  2759.                         } else {
  2760.                             labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MESSAGE_SECURITY);
  2761.                             DataElement deTmp = new DataElement();
  2762.                             deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_MESSAGE_SECURITY,pIdSoggPA, pIdPorta, pIdAsps);
  2763.                             urlDisponibili.add(deTmp.getUrl());
  2764.                         }

  2765.                         if(controlloMessageSecurityAbilitato) {
  2766.                             de = new DataElement();
  2767.                             de.setType(DataElementType.SUBTITLE);
  2768.                             de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MESSAGE_SECURITY);
  2769.                             gruppoList.add(de);

  2770.                             de = new DataElement();
  2771.                             de.setType(DataElementType.TEXT);
  2772.                             de.setLabel(CostantiControlStation.LABEL_PARAMETRO_STATO);              
  2773.                             de.setValue(statoMessageSecurity);
  2774.                             gruppoList.add(de);

  2775.                             MessageSecurity messageSecurity = paAssociata.getMessageSecurity();
  2776.                             String requestMode = null;
  2777.                             String responseMode = null;

  2778.                             if(messageSecurity != null) {
  2779.                                 if(messageSecurity.getRequestFlow() != null){
  2780.                                     requestMode = messageSecurity.getRequestFlow().getMode();
  2781.                                 }
  2782.                                 if(messageSecurity.getResponseFlow() != null){
  2783.                                     responseMode = messageSecurity.getResponseFlow().getMode();
  2784.                                 }
  2785.                             }

  2786.                             de = new DataElement();
  2787.                             de.setType(DataElementType.TEXT);
  2788.                             de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RICHIESTA);            


  2789.                             if(StringUtils.isNotEmpty(requestMode)) {
  2790.                                 if(requestMode.equals(CostantiControlStation.VALUE_SICUREZZA_MESSAGGIO_SCHEMA_DEFAULT)) {
  2791.                                     de.setValue(CostantiControlStation.LABEL_SICUREZZA_MESSAGGIO_SCHEMA_CONFIGURAZIONE_MANUALE);
  2792.                                 } else {
  2793.                                     Config configurazione = configManager.getConfigurazione(propertiesSourceConfiguration, requestMode);
  2794.                                     de.setValue(configurazione.getLabel());
  2795.                                 }
  2796.                             } else {
  2797.                                 de.setValue(CostantiControlStation.LABEL_SICUREZZA_MESSAGGIO_SCHEMA_NESSUNO);
  2798.                             }
  2799.                             gruppoList.add(de);

  2800.                             de = new DataElement();
  2801.                             de.setType(DataElementType.TEXT);
  2802.                             de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RISPOSTA);              
  2803.                             if(StringUtils.isNotEmpty(responseMode)) {
  2804.                                 if(responseMode.equals(CostantiControlStation.VALUE_SICUREZZA_MESSAGGIO_SCHEMA_DEFAULT)) {
  2805.                                     de.setValue(CostantiControlStation.LABEL_SICUREZZA_MESSAGGIO_SCHEMA_CONFIGURAZIONE_MANUALE);
  2806.                                 } else {
  2807.                                     Config configurazione = configManager.getConfigurazione(propertiesSourceConfiguration, responseMode);
  2808.                                     de.setValue(configurazione.getLabel());
  2809.                                 }
  2810.                             } else {
  2811.                                 de.setValue(CostantiControlStation.LABEL_SICUREZZA_MESSAGGIO_SCHEMA_NESSUNO);
  2812.                             }
  2813.                             gruppoList.add(de);

  2814.                             de = new DataElement();
  2815.                             de.setType(DataElementType.BUTTON);
  2816.                             de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_MESSAGE_SECURITY,pIdSoggPA, pIdPorta, pIdAsps);
  2817.                             de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2818.                             de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
  2819.                             gruppoList.add(de);
  2820.                         }
  2821.                     }

  2822.                     //mtom
  2823.                     if(visualizzaMTOM) {
  2824.                         boolean controlloMTOMAbilitato = false;
  2825.                         String statoMTOM = this.getStatoMTOMPortaApplicativa(paAssociata);

  2826.                         if(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM_ABILITATO.equals(statoMTOM)) {
  2827.                             controlloMTOMAbilitato = true;
  2828.                             numeroConfigurazioniAttive ++ ;
  2829.                         } else {
  2830.                             labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM);
  2831.                             DataElement deTmp = new DataElement();
  2832.                             deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_MTOM,pIdPorta, pIdSoggPA, pIdAsps);
  2833.                             urlDisponibili.add(deTmp.getUrl());
  2834.                         }

  2835.                         if(controlloMTOMAbilitato) {
  2836.                             de = new DataElement();
  2837.                             de.setType(DataElementType.SUBTITLE);
  2838.                             de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM);
  2839.                             gruppoList.add(de);

  2840.                             de = new DataElement();
  2841.                             de.setType(DataElementType.TEXT);
  2842.                             de.setLabel(CostantiControlStation.LABEL_PARAMETRO_STATO);              
  2843.                             de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM_ABILITATO);
  2844.                             gruppoList.add(de);

  2845.                             de = new DataElement();
  2846.                             de.setType(DataElementType.TEXT);
  2847.                             de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RICHIESTA);
  2848.                             MTOMProcessorType modeReq = this.getProcessorTypeRequestMTOMPortaApplicativa(paAssociata);
  2849.                             if(modeReq != null) {
  2850.                                 de.setValue(modeReq.getValue());
  2851.                             } else {
  2852.                                 de.setValue(MTOMProcessorType.DISABLE.getValue());
  2853.                             }
  2854.                             gruppoList.add(de);

  2855.                             de = new DataElement();
  2856.                             de.setType(DataElementType.TEXT);
  2857.                             de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RISPOSTA);      
  2858.                             MTOMProcessorType modeRes = this.getProcessorTypeResponseMTOMPortaApplicativa(paAssociata);
  2859.                             if(modeRes != null) {
  2860.                                 de.setValue(modeRes.getValue());
  2861.                             } else {
  2862.                                 de.setValue(MTOMProcessorType.DISABLE.getValue());
  2863.                             }
  2864.                             gruppoList.add(de);

  2865.                             de = new DataElement();
  2866.                             de.setType(DataElementType.BUTTON);
  2867.                             de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_MTOM,pIdPorta, pIdSoggPA, pIdAsps);
  2868.                             de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2869.                             de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
  2870.                             gruppoList.add(de);
  2871.                         }
  2872.                     }

  2873.                     // correlazione applicativa
  2874.                     if(visualizzaCorrelazione) {
  2875.                         boolean tracciamentoAbilitato = false;
  2876.                         String statoTracciamento = this.getStatoTracciamentoPortaApplicativa(paAssociata);

  2877.                         if(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA_ABILITATA.equals(statoTracciamento)){
  2878.                             tracciamentoAbilitato = true;
  2879.                             numeroConfigurazioniAttive ++ ;
  2880.                         } else {
  2881.                             labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_TRACCIAMENTO);
  2882.                             DataElement deTmp = new DataElement();
  2883.                             deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA, pIdSoggPA, pIdPorta, pIdNome,pIdAsps);
  2884.                             urlDisponibili.add(deTmp.getUrl());
  2885.                         }

  2886.                         if(tracciamentoAbilitato) {
  2887.                             de = new DataElement();
  2888.                             de.setType(DataElementType.SUBTITLE);
  2889.                             de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_TRACCIAMENTO);
  2890.                             gruppoList.add(de);

  2891.                             if(this.isRidefinitoTransazioniRegistratePortaApplicativa(paAssociata)) {
  2892.                                 de = new DataElement();
  2893.                                 de.setType(DataElementType.TEXT);
  2894.                                 de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_REGISTRAZIONE_ESITI);              
  2895.                                 de.setValue(this.getStatoTransazioniRegistratePortaApplicativa(paAssociata));
  2896.                                 gruppoList.add(de);
  2897.                             }

  2898.                             if(this.isRidefinitoMessaggiDiagnosticiPortaApplicativa(paAssociata)) {
  2899.                                 de = new DataElement();
  2900.                                 de.setType(DataElementType.TEXT);
  2901.                                 de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_MESSAGGI_DIAGNOSTICI);              
  2902.                                 de.setValue(this.getStatoMessaggiDiagnosticiPortaApplicativa(paAssociata));
  2903.                                 gruppoList.add(de);
  2904.                             }

  2905.                             if(this.isEnabledCorrelazioneApplicativaPortaApplicativa(paAssociata)) {
  2906.                                 de = new DataElement();
  2907.                                 de.setType(DataElementType.TEXT);
  2908.                                 de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA);              
  2909.                                 de.setValue(this.getStatoCorrelazioneApplicativaPortaApplicativa(paAssociata));
  2910.                                 gruppoList.add(de);
  2911.                             }

  2912.                             de = new DataElement();
  2913.                             de.setType(DataElementType.BUTTON);
  2914.                             de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA, pIdSoggPA, pIdPorta, pIdNome,pIdAsps);
  2915.                             de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2916.                             de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
  2917.                             gruppoList.add(de);
  2918.                         }
  2919.                     }

  2920.                     // dump
  2921.                     boolean controlloDumpAbilitato = false;
  2922.                     String statoDump = this.getStatoDumpPortaApplicativa(paAssociata, true);
  2923.                     if(!statoDump.startsWith(CostantiControlStation.LABEL_PARAMETRO_DUMP_STATO_DEFAULT)){
  2924.                         controlloDumpAbilitato = true;
  2925.                         numeroConfigurazioniAttive ++ ;
  2926.                     } else {
  2927.                         labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE);
  2928.                         DataElement deTmp = new DataElement();
  2929.                         deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE, pIdSoggPA, pIdPorta, pIdAsps);
  2930.                         urlDisponibili.add(deTmp.getUrl());
  2931.                     }

  2932.                     if(controlloDumpAbilitato) {
  2933.                         de = new DataElement();
  2934.                         de.setType(DataElementType.SUBTITLE);
  2935.                         de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE);
  2936.                         gruppoList.add(de);

  2937.                         de = new DataElement();
  2938.                         de.setType(DataElementType.TEXT);
  2939.                         de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RICHIESTA);            
  2940.                         de.setValue(this.getStatoDumpRichiestaPortaApplicativa(paAssociata, true));
  2941.                         gruppoList.add(de);

  2942.                         de = new DataElement();
  2943.                         de.setType(DataElementType.TEXT);
  2944.                         de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RISPOSTA);              
  2945.                         de.setValue(this.getStatoDumpRispostaPortaApplicativa(paAssociata, true));
  2946.                         gruppoList.add(de);

  2947.                         de = new DataElement();
  2948.                         de.setType(DataElementType.BUTTON);
  2949.                         de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE, pIdSoggPA, pIdPorta, pIdAsps);
  2950.                         de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  2951.                         de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
  2952.                         gruppoList.add(de);
  2953.                     }

  2954.                     // connettore
  2955.                     if(!mapping.isDefault()) {
  2956.                         PortaApplicativaServizioApplicativo portaApplicativaAssociataServizioApplicativo = paAssociata.getServizioApplicativoList().get(0);
  2957.                         boolean connettoreConfigurazioneRidefinito = portaApplicativaAssociataServizioApplicativo.getNome().equals(paAssociata.getNome());

  2958.                         String servletConnettore = PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONNETTORE_DEFAULT;

  2959.                         if(connettoreConfigurazioneRidefinito) {
  2960.                             servletConnettore = PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONNETTORE_RIDEFINITO;
  2961.                             numeroConfigurazioniAttive ++ ;
  2962.                             de = new DataElement();
  2963.                             de.setType(DataElementType.SUBTITLE);
  2964.                             de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORE);
  2965.                             gruppoList.add(de);

  2966.                             ServizioApplicativo sa = this.saCore.getServizioApplicativo(portaApplicativaAssociataServizioApplicativo.getIdServizioApplicativo());
  2967.                             InvocazioneServizio is = sa.getInvocazioneServizio();
  2968.                             Connettore connis = is.getConnettore();

  2969.                             String endpointtype = "";
  2970.                             if ((connis.getCustom()!=null && connis.getCustom()) &&
  2971.                                     !connis.getTipo().equals(TipiConnettore.HTTPS.toString()) &&
  2972.                                     !connis.getTipo().equals(TipiConnettore.FILE.toString()) &&
  2973.                                     !connis.getTipo().equals(TipiConnettore.STATUS.toString())) {
  2974.                                 endpointtype = TipiConnettore.CUSTOM.toString();
  2975.                             } else
  2976.                                 endpointtype = connis.getTipo();

  2977.                             if(StringUtils.isNotEmpty(endpointtype)) {
  2978.                                 de = new DataElement();
  2979.                                 de.setType(DataElementType.TEXT);
  2980.                                 de.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CONNETTORE_ENDPOINT_TYPE);              
  2981.                                 de.setValue(endpointtype);
  2982.                                 gruppoList.add(de);
  2983.                             }

  2984.                             List<Property> cp = connis.getPropertyList();
  2985.                             String urlConnettore = "";
  2986.                             for (int i = 0; i < connis.sizePropertyList(); i++) {
  2987.                                 Property singlecp = cp.get(i);
  2988.                                 if (singlecp.getNome().equals(CostantiDB.CONNETTORE_HTTP_LOCATION)) {
  2989.                                     urlConnettore = singlecp.getValore();
  2990.                                     break;
  2991.                                 }
  2992.                             }

  2993.                             if(StringUtils.isNotEmpty(urlConnettore)) {
  2994.                                 de = new DataElement();
  2995.                                 de.setType(DataElementType.TEXT);
  2996.                                 de.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CONNETTORE_URL);            
  2997.                                 de.setValue(urlConnettore.length() > 20 ? (urlConnettore.substring(0, 17) + "...") : urlConnettore);
  2998.                                 de.setToolTip(urlConnettore);
  2999.                                 gruppoList.add(de);
  3000.                             }

  3001.                             de = new DataElement();
  3002.                             de.setType(DataElementType.BUTTON);
  3003.                             de.setUrl(servletConnettore, pIdSoggPA, pIdPorta, pIdAsps);
  3004.                             de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
  3005.                             de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
  3006.                             gruppoList.add(de);
  3007.                         } else {
  3008.                             labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORE);
  3009.                             DataElement deTmp = new DataElement();
  3010.                             deTmp.setUrl(servletConnettore, pIdSoggPA, pIdPorta, pIdAsps);
  3011.                             urlDisponibili.add(deTmp.getUrl());
  3012.                         }
  3013.                     }

  3014.                     if(this.isModalitaAvanzata()) {
  3015.                         // proprieta'

  3016. /**
  3017.                         //                      // opzioni avanzate
  3018.                         //                      de = new DataElement();
  3019.                         //                      //fix: idsogg e' il soggetto proprietario della porta applicativa, e nn il soggetto virtuale
  3020.                         //                      de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_PROPRIETA_PROTOCOLLO_LIST, pIdSogg, pIdPorta,pIdAsps);
  3021.                         //                      if (contaListe) {
  3022.                         //                          int numProp = paAssociata.sizeProprietaList();
  3023.                         //                          ServletUtils.setDataElementVisualizzaLabel(de, (long) numProp );
  3024.                         //                      } else
  3025.                         //                          ServletUtils.setDataElementVisualizzaLabel(de);
  3026.                         //                      e.add(de);
  3027.                         //
  3028.                         //                  // Altro
  3029.                         //                      de = new DataElement();
  3030.                         //                      de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CHANGE,pIdSogg, pNomePorta, pIdPorta,pIdAsps,pConfigurazioneAltro);
  3031.                         //                      ServletUtils.setDataElementVisualizzaLabel(de);
  3032.                         //                      e.add(de);*/


  3033.                     }


  3034.                     // check box abilitazione
  3035.                     de = new DataElement();
  3036.                     de.setType(DataElementType.CHECKBOX);
  3037.                     boolean statoPA = paAssociata.getStato().equals(StatoFunzionalita.ABILITATO);
  3038.                     String statoMapping = statoPA ? CostantiControlStation.LABEL_PARAMETRO_PORTA_ABILITATO_TOOLTIP : CostantiControlStation.LABEL_PARAMETRO_PORTA_DISABILITATO_TOOLTIP;
  3039.                     de.setToolTip(statoMapping);
  3040.                     de.setSelected(statoPA);
  3041.                     de.setIcon(ErogazioniCostanti.LABEL_ASPS_ABILITA_CONFIGURAZIONE);
  3042.                     Parameter pAbilita = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ABILITA,  (statoPA ? Costanti.CHECK_BOX_DISABLED : Costanti.CHECK_BOX_ENABLED_TRUE));
  3043.                     de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_ABILITAZIONE,pIdSoggPA, pNomePorta, pIdPorta,pIdAsps, pAbilita);
  3044.                     gruppoList.add(de);


  3045.                     // select per modale con configurazioni disponibili
  3046.                     de = new DataElement();
  3047.                     de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUOVA_CONFIGURAZIONE+"_"+ d);
  3048.                     de.setLabel(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI_PARAMETRO_NUOVA_CONFIGURAZIONE);
  3049.                     if(!labelDisponibili.isEmpty()) {
  3050.                         de.setType(DataElementType.SELECT);
  3051.                         de.setValues(urlDisponibili);
  3052.                         de.setLabels(labelDisponibili);
  3053.                         de.setSelected(urlDisponibili.get(0));
  3054.                     } else {
  3055.                         de.setType(DataElementType.HIDDEN);
  3056.                     }
  3057.                     gruppoList.add(de);

  3058.                     // informazioni disegno in testa
  3059.                     de = new DataElement();
  3060.                     de.setType(DataElementType.HIDDEN);
  3061.                     de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUMERO_CONFIGURAZIONI_ATTIVE);
  3062.                     de.setValue(numeroConfigurazioniAttive + "");
  3063.                     gruppoList.add(0,de);

  3064.                     int numeroConfigurazioniDisponibili = labelDisponibili.size();

  3065.                     de = new DataElement();
  3066.                     de.setType(DataElementType.HIDDEN);
  3067.                     de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUMERO_CONFIGURAZIONI_DISPONIBILI);
  3068.                     de.setValue(numeroConfigurazioniDisponibili + "");
  3069.                     gruppoList.add(0,de);

  3070.                     datiPagina.add(gruppoList);
  3071.                 }
  3072.             }

  3073.         } else { // fruizioni
  3074.             boolean visualizzaMTOM = true;
  3075.             boolean visualizzaSicurezza = true;
  3076.             boolean visualizzaCorrelazione = true;

  3077.             switch (serviceBinding) {
  3078.             case REST:
  3079.                 visualizzaMTOM = false;
  3080.                 visualizzaSicurezza = true;
  3081.                 visualizzaCorrelazione = true;
  3082.                 break;
  3083.             case SOAP:
  3084.             default:
  3085.                 visualizzaMTOM = true;
  3086.                 visualizzaSicurezza = true;
  3087.                 visualizzaCorrelazione = true;
  3088.                 break;
  3089.             }

  3090.             if(azioni!=null && azioni.size()>1) {
  3091.                 List<String> azioniL = new ArrayList<>();
  3092.                 if(azioni != null && azioni.size() > 0)
  3093.                     azioniL.addAll(azioni.keySet());
  3094.                 allActionRedefined = this.allActionsRedefinedMappingFruizionePdAssociate(azioniL, listaPorteDelegateAssociate);
  3095.             }


  3096.             for (int d = 0; d < listaMappingFruzionePortaDelegata.size() ; d++) {
  3097.                 MappingFruizionePortaDelegata mapping = listaMappingFruzionePortaDelegata.get(d);
  3098.                 PortaDelegata pdAssociata = listaPorteDelegateAssociate.get(d);

  3099.                 // controllo se la configurazione deve essere visualizzata
  3100.                 boolean showConfigurazione = !(mapping.isDefault() && allActionRedefined);

  3101.                 int numeroConfigurazioniDisponibili = 1;
  3102.                 int numeroConfigurazioniAttive = 0;

  3103.                 if(showConfigurazione) {
  3104.                     List<DataElement> gruppoList = new ArrayList<>();
  3105.                     Parameter pIdPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID, "" + pdAssociata.getId());
  3106.                     Parameter pNomePD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_NOME_PORTA, pdAssociata.getNome());
  3107.                     Parameter pIdSoggPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_SOGGETTO, pdAssociata.getIdSoggetto() + "");

  3108.                     // nome Gruppo
  3109.                     de = new DataElement();
  3110.                     de.setType(DataElementType.TITLE);
  3111.                     de.setLabel(mapping.getDescrizione());
  3112.                     gruppoList.add(de);




  3113.                     // check box abilitazione
  3114.                     de = new DataElement();
  3115.                     de.setType(DataElementType.CHECKBOX);
  3116.                     boolean statoPD = pdAssociata.getStato().equals(StatoFunzionalita.ABILITATO);
  3117.                     String statoMapping = statoPD ? CostantiControlStation.LABEL_PARAMETRO_PORTA_ABILITATO_TOOLTIP : CostantiControlStation.LABEL_PARAMETRO_PORTA_DISABILITATO_TOOLTIP;
  3118.                     de.setToolTip(statoMapping);
  3119.                     de.setSelected(statoPD);
  3120.                     de.setIcon(ErogazioniCostanti.LABEL_ASPS_ABILITA_CONFIGURAZIONE);
  3121.                     Parameter pAbilita = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ABILITA,  (statoPD ? Costanti.CHECK_BOX_DISABLED : Costanti.CHECK_BOX_ENABLED_TRUE));
  3122.                     de.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_ABILITAZIONE,pIdPD,pNomePD,pIdSoggPD, pIdAsps, pIdFruitore, pAbilita);
  3123.                     gruppoList.add(de);


  3124.                     // informazioni disegno in testa
  3125.                     de = new DataElement();
  3126.                     de.setType(DataElementType.HIDDEN);
  3127.                     de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUMERO_CONFIGURAZIONI_ATTIVE);
  3128.                     de.setValue(numeroConfigurazioniAttive + "");
  3129.                     gruppoList.add(0,de);

  3130.                     de = new DataElement();
  3131.                     de.setType(DataElementType.HIDDEN);
  3132.                     de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUMERO_CONFIGURAZIONI_DISPONIBILI);
  3133.                     de.setValue(numeroConfigurazioniDisponibili + "");
  3134.                     gruppoList.add(0,de);

  3135.                     datiPagina.add(gruppoList);
  3136.                 }
  3137.             }
  3138.         }
  3139.     }
  3140.    
  3141.     public void prepareErogazioneChange(TipoOperazione tipoOp, AccordoServizioParteSpecifica asps, IDSoggetto idSoggettoFruitore) throws Exception {
  3142.        
  3143.         String tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  3144.         boolean gestioneFruitori = false;
  3145.         boolean gestioneErogatori = false;
  3146.         if(tipologia!=null) {
  3147.             if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  3148.                 gestioneFruitori = true;
  3149.             }
  3150.             else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
  3151.                 gestioneErogatori = true;
  3152.             }
  3153.         }
  3154.        
  3155.         IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
  3156.         String tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(asps.getTipoSoggettoErogatore());
  3157.         AccordoServizioParteComuneSintetico as = this.apcCore.getAccordoServizioSintetico(asps.getIdAccordo());
  3158.         ServiceBinding serviceBinding = this.apcCore.toMessageServiceBinding(as.getServiceBinding());
  3159.        
  3160.         String tmpTitle = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
  3161.                        
  3162.         List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = new ArrayList<>();
  3163.         List<PortaApplicativa> listaPorteApplicativeAssociate = new ArrayList<>();
  3164.         if(gestioneErogatori) {
  3165.             // lettura delle configurazioni associate
  3166.             listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
  3167.             for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  3168.                 listaPorteApplicativeAssociate.add(this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa()));
  3169.             }
  3170.         }

  3171.         List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata = new ArrayList<>();
  3172.         List<PortaDelegata> listaPorteDelegateAssociate = new ArrayList<>();
  3173.         Fruitore fruitore = null;
  3174.         if(gestioneFruitori) {
  3175.             // In questa modalità ci deve essere un fruitore indirizzato
  3176.             for (Fruitore check : asps.getFruitoreList()) {
  3177.                 if(check.getTipo().equals(idSoggettoFruitore.getTipo()) && check.getNome().equals(idSoggettoFruitore.getNome())) {
  3178.                     fruitore = check;
  3179.                     break;
  3180.                 }
  3181.             }
  3182.             if(fruitore!=null) {
  3183.                 listaMappingFruzionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);    
  3184.                 for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  3185.                     listaPorteDelegateAssociate.add(this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata()));
  3186.                 }
  3187.             }
  3188.         }
  3189.        
  3190.         this.makeMenu();
  3191.        
  3192.         // setto la barra del titolo
  3193.         List<Parameter> lstParm = new ArrayList<>();

  3194.         if(gestioneFruitori) {
  3195.             lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_FRUIZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
  3196.         }
  3197.         else {
  3198.             lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
  3199.         }
  3200.         lstParm.add(new Parameter(tmpTitle, null));

  3201.         // setto la barra del titolo
  3202.         ServletUtils.setPageDataTitle(this.pd, lstParm );

  3203.         List<List<DataElement>> datiPagina = new ArrayList<>();
  3204.         List<DataElement> dati = new ArrayList<>();
  3205.         datiPagina.add(dati);
  3206.         dati.add(ServletUtils.getDataElementForEditModeFinished());

  3207.         String fromAPIPageInfo = this.getParameter(CostantiControlStation.PARAMETRO_API_PAGE_INFO);
  3208.         boolean fromApi = Costanti.CHECK_BOX_ENABLED_TRUE.equalsIgnoreCase(fromAPIPageInfo);
  3209.         if(fromApi) {
  3210.             DataElement de = new DataElement();
  3211.             de.setValue(fromAPIPageInfo);
  3212.             de.setType(DataElementType.HIDDEN);
  3213.             de.setName(CostantiControlStation.PARAMETRO_API_PAGE_INFO);
  3214.             dati.add(de);
  3215.            
  3216.             String nomePorta = this.getParameter(CostantiControlStation.PARAMETRO_NOME_PORTA);
  3217.             de = new DataElement();
  3218.             de.setValue(nomePorta);
  3219.             de.setType(DataElementType.HIDDEN);
  3220.             de.setName(CostantiControlStation.PARAMETRO_NOME_PORTA);
  3221.             dati.add(de);
  3222.            
  3223.             String abilita = this.getParameter(CostantiControlStation.PARAMETRO_ABILITA);
  3224.             de = new DataElement();
  3225.             de.setValue(abilita);
  3226.             de.setType(DataElementType.HIDDEN);
  3227.             de.setName(CostantiControlStation.PARAMETRO_ABILITA);
  3228.             dati.add(de);
  3229.            
  3230.             String idsogg = this.getParameter(CostantiControlStation.PARAMETRO_ID_SOGGETTO);
  3231.             String id = this.getParameter(CostantiControlStation.PARAMETRO_ID);
  3232.            
  3233.             String idFruizione = null;
  3234.             String tipoSoggettoFruitore = null;
  3235.             String nomeSoggettoFruitore = null;
  3236.             if(fruitore!=null) {
  3237.                 idFruizione = fruitore.getId()+"";
  3238.                 tipoSoggettoFruitore = fruitore.getTipo();
  3239.                 nomeSoggettoFruitore = fruitore.getNome();
  3240.             }
  3241.            
  3242.             this.addHiddenFieldsToDati(tipoOp, id, idsogg, id, asps.getId()+"",
  3243.                     idFruizione, tipoSoggettoFruitore, nomeSoggettoFruitore,
  3244.                     dati);
  3245.         }
  3246.         else {
  3247.             this.addHiddenFieldsToDati(tipoOp, asps.getId()+"", null, null, dati);
  3248.         }
  3249.        
  3250.         datiPagina = this.addErogazioneToDati(datiPagina, tipoOp, asps, as, tipoProtocollo, serviceBinding, gestioneErogatori, gestioneFruitori, listaMappingErogazionePortaApplicativa, listaPorteApplicativeAssociate, listaMappingFruzionePortaDelegata, listaPorteDelegateAssociate, fruitore);
  3251.        
  3252.         this.pd.setDati(datiPagina);
  3253.         this.pd.disableEditMode();
  3254.     }
  3255.    
  3256.     public ActionForward prepareErogazioneChangeResetCache(ActionMapping mapping, GeneralData gd, ConsoleSearch ricerca, TipoOperazione tipoOp, AccordoServizioParteSpecifica asps, IDSoggetto idSoggettoFruitore) throws Exception {
  3257.        
  3258.         String tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  3259.         boolean gestioneFruitori = false;
  3260.         boolean gestioneErogatori = false;
  3261.         if(tipologia!=null) {
  3262.             if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  3263.                 gestioneFruitori = true;
  3264.             }
  3265.             else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
  3266.                 gestioneErogatori = true;
  3267.             }
  3268.         }
  3269.        
  3270.         IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
  3271.         String tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(asps.getTipoSoggettoErogatore());
  3272.        
  3273.         String tmpTitle = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
  3274.                        
  3275.         List<PortaApplicativa> listaPorteApplicativeAssociate = new ArrayList<>();
  3276.         if(gestioneErogatori) {
  3277.             // lettura delle configurazioni associate
  3278.             List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
  3279.             for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
  3280.                 listaPorteApplicativeAssociate.add(this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa()));
  3281.             }
  3282.         }

  3283.         List<PortaDelegata> listaPorteDelegateAssociate = new ArrayList<>();
  3284.         Fruitore fruitore = null;
  3285.         if(gestioneFruitori) {
  3286.             // In questa modalità ci deve essere un fruitore indirizzato
  3287.             for (Fruitore check : asps.getFruitoreList()) {
  3288.                 if(check.getTipo().equals(idSoggettoFruitore.getTipo()) && check.getNome().equals(idSoggettoFruitore.getNome())) {
  3289.                     fruitore = check;
  3290.                     break;
  3291.                 }
  3292.             }
  3293.             if(fruitore!=null) {
  3294.                 List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);    
  3295.                 for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
  3296.                     listaPorteDelegateAssociate.add(this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata()));
  3297.                 }
  3298.             }
  3299.         }
  3300.        
  3301.         this.makeMenu();
  3302.        
  3303.         // setto la barra del titolo
  3304.         List<Parameter> lstParm = new ArrayList<>();

  3305.         if(gestioneFruitori) {
  3306.             lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_FRUIZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
  3307.         }
  3308.         else {
  3309.             lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
  3310.         }
  3311.         lstParm.add(new Parameter(tmpTitle, null));

  3312.         // setto la barra del titolo
  3313.         ServletUtils.setPageDataTitle(this.pd, lstParm );

  3314.         String labelServizio = getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
  3315.        
  3316.         this.eseguiResetCacheAspsOFruitore(asps, gestioneFruitori, fruitore, labelServizio);
  3317.        
  3318.         String resetElementoCacheS = this.getParameter(CostantiControlStation.PARAMETRO_ELIMINA_ELEMENTO_DALLA_CACHE);
  3319.         boolean resetElementoCache = ServletUtils.isCheckBoxEnabled(resetElementoCacheS);
  3320.        
  3321.         // reset delle cache richiesto dal link nella lista, torno alla lista
  3322.         if(resetElementoCache) {
  3323.            
  3324.             String userLogin = ServletUtils.getUserLoginFromSession(this.session);  
  3325.            
  3326.             int idLista = Liste.SERVIZI;
  3327.            
  3328.             // poiche' esistono filtri che hanno necessita di postback salvo in sessione
  3329.             List<AccordoServizioParteSpecifica> lista = null;
  3330.             if(!ServletUtils.isSearchDone(this)) {
  3331.                 lista = ServletUtils.getRisultatiRicercaFromSession(this.request, this.session, idLista,  AccordoServizioParteSpecifica.class);
  3332.             }
  3333.            
  3334.             ricerca = this.checkSearchParameters(idLista, ricerca);
  3335.            
  3336.             this.clearFiltroSoggettoByPostBackProtocollo(0, ricerca, idLista);
  3337.                                
  3338.             this.checkGestione(this.request, this.session, ricerca, idLista, tipologia,true);
  3339.            
  3340.             // preparo lista
  3341.             boolean [] permessi = AccordiServizioParteSpecificaUtilities.getPermessiUtente(this);
  3342.            
  3343.             if(lista==null) {
  3344.                 if(this.apsCore.isVisioneOggettiGlobale(userLogin)){
  3345.                     lista = this.apsCore.soggettiServizioList(null, ricerca,permessi, gestioneFruitori, gestioneErogatori);
  3346.                 }else{
  3347.                     lista = this.apsCore.soggettiServizioList(userLogin, ricerca,permessi, gestioneFruitori, gestioneErogatori);
  3348.                 }
  3349.             }

  3350.            
  3351.             if(!this.isPostBackFilterElement()) {
  3352.                 ServletUtils.setRisultatiRicercaIntoSession(this.request, this.session, idLista, lista); // salvo poiche' esistono filtri che hanno necessita di postback
  3353.             }
  3354.            
  3355.             this.prepareErogazioniList(ricerca, lista);
  3356.            
  3357.             // salvo l'oggetto ricerca nella sessione
  3358.             ServletUtils.setSearchObjectIntoSession(this.request, this.session, ricerca);
  3359.            
  3360.             ServletUtils.setGeneralAndPageDataIntoSession(this.request, this.session, gd, this.pd);
  3361.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ErogazioniCostanti.OBJECT_NAME_ASPS_EROGAZIONI, CostantiControlStation.TIPO_OPERAZIONE_RESET_CACHE_ELEMENTO);
  3362.         } else { // reset richiesto dal dettaglio, torno al dettaglio
  3363.             this.prepareErogazioneChange(tipoOp, asps, idSoggettoFruitore);
  3364.             ServletUtils.setGeneralAndPageDataIntoSession(this.request, this.session, gd, this.pd);
  3365.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ErogazioniCostanti.OBJECT_NAME_ASPS_EROGAZIONI, ForwardParams.CHANGE());
  3366.         }
  3367.     }
  3368.    
  3369.     public void eseguiResetCacheAspsOFruitore(AccordoServizioParteSpecifica asps, boolean gestioneFruitori, Fruitore fruitore, String labelServizio)
  3370.             throws DriverControlStationException, DriverControlStationNotFound {
  3371.         // Uso lo stessoAlias
  3372.         List<String> aliases = this.apcCore.getJmxPdDAliases();
  3373.         String alias = null;
  3374.         if(aliases!=null && !aliases.isEmpty()) {
  3375.             alias = aliases.get(0);
  3376.         }
  3377.        
  3378.         long idOjectLong = -1;
  3379.         if(gestioneFruitori) {
  3380.             if(fruitore==null) {
  3381.                 throw new DriverControlStationException("Fruitore non trovato");
  3382.             }
  3383.             idOjectLong = fruitore.getId();
  3384.         }
  3385.         else {
  3386.             idOjectLong = asps.getId();
  3387.         }
  3388.        
  3389.         this.apcCore.invokeJmxMethodAllNodesAndSetResult(this.pd, this.apcCore.getJmxPdDConfigurazioneSistemaNomeRisorsaConfigurazionePdD(alias),
  3390.                 gestioneFruitori ?
  3391.                         this.apcCore.getJmxPdDConfigurazioneSistemaNomeMetodoRipulisciRiferimentiCacheFruizione(alias) :
  3392.                         this.apcCore.getJmxPdDConfigurazioneSistemaNomeMetodoRipulisciRiferimentiCacheErogazione(alias),
  3393.                 MessageFormat.format(CostantiControlStation.LABEL_ELIMINATO_CACHE_SUCCESSO,labelServizio),
  3394.                 MessageFormat.format(CostantiControlStation.LABEL_ELIMINATO_CACHE_FALLITO_PREFIX,labelServizio),
  3395.                 idOjectLong);
  3396.     }
  3397.    
  3398.     public void eseguiResetCacheAspsOFruitore()
  3399.             throws DriverControlStationException, DriverRegistroServiziNotFound, DriverRegistroServiziException, DriverControlStationNotFound {
  3400.         String id = this.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID);
  3401.         long idInt  = Long.parseLong(id);
  3402.         AccordoServizioParteSpecifica asps = this.apsCore.getAccordoServizioParteSpecifica(idInt);
  3403.        
  3404.         String tipoSoggettoFruitore = this.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SOGGETTO_FRUITORE);
  3405.         String nomeSoggettoFruitore = this.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SOGGETTO_FRUITORE);
  3406.         IDSoggetto idSoggettoFruitore = null;
  3407.         if(tipoSoggettoFruitore!=null && !"".equals(tipoSoggettoFruitore) &&
  3408.                 nomeSoggettoFruitore!=null && !"".equals(nomeSoggettoFruitore)) {
  3409.             idSoggettoFruitore = new IDSoggetto(tipoSoggettoFruitore, nomeSoggettoFruitore);
  3410.         }
  3411.        
  3412.         String tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  3413.         boolean gestioneFruitori = false;
  3414.         if(tipologia!=null && AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  3415.             gestioneFruitori = true;
  3416.         }
  3417.        
  3418.         Fruitore fruitore = null;
  3419.         if(gestioneFruitori && idSoggettoFruitore != null) {
  3420.             // In questa modalità ci deve essere un fruitore indirizzato
  3421.             for (Fruitore check : asps.getFruitoreList()) {
  3422.                 if(check.getTipo().equals(idSoggettoFruitore.getTipo()) && check.getNome().equals(idSoggettoFruitore.getNome())) {
  3423.                     fruitore = check;
  3424.                     break;
  3425.                 }
  3426.             }
  3427.         }
  3428.        
  3429.         IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
  3430.         String tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(asps.getTipoSoggettoErogatore());
  3431.         String labelServizio = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
  3432.         this.eseguiResetCacheAspsOFruitore(asps, gestioneFruitori, fruitore, labelServizio);
  3433.     }
  3434.    
  3435.     public boolean estraiElencoInvocazioni(boolean soloModI,
  3436.             AccordoServizioParteSpecifica asps, IDSoggetto idSoggettoFruitore, boolean gestioneFruitori,
  3437.             Fruitore fruitore, IDServizio idServizio, String tipoProtocollo, String nomeApiImpl,
  3438.             List<String> listConnettoriRegistrati, List<String> listPosizioneConnettoriRegistrati,
  3439.             List<org.openspcoop2.core.registry.Connettore> listConnettoriRegistry,
  3440.             List<org.openspcoop2.core.config.Connettore> listConnettoriConfig, List<String> listTokenPolicyValidazione,
  3441.             List<GestioneToken> listTokenPolicyValidazioneConf, List<String> listPosizioneTokenPolicyValidazione,
  3442.             List<String> listTokenPolicyNegoziazione, List<String> listPosizioneTokenPolicyNegoziazione,
  3443.             List<String> listAttributeAuthority, List<String> listPosizioneAttributeAuthority)
  3444.             throws ProtocolException, DriverConfigurazioneException, DriverConfigurazioneNotFound {
  3445.         boolean findConnettoreHttpConPrefissoHttps = false;
  3446.         if(!soloModI) {
  3447.            
  3448.             if(gestioneFruitori) {
  3449.                
  3450.                 boolean connettoreStatic = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(tipoProtocollo).createProtocolVersionManager(null).isStaticRoute();
  3451.                                        
  3452.                 List<MappingFruizionePortaDelegata> listaMappingFruizionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);
  3453.                 for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruizionePortaDelegata) {
  3454.                     PortaDelegata porta = this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata());
  3455.                    
  3456.                     // solo le porte applicative abilitate
  3457.                     if(StatoFunzionalita.DISABILITATO.equals(porta.getStato())) {
  3458.                         continue;
  3459.                     }
  3460.                    
  3461.                     String suffixGruppo = "";
  3462.                     if(!mappingFruizione.isDefault()) {
  3463.                         suffixGruppo = org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
  3464.                         "Gruppo: "+mappingFruizione.getDescrizione();
  3465.                     }
  3466.                     String nomeFruizione = nomeApiImpl+suffixGruppo;
  3467.                    
  3468.                     if(porta.getGestioneToken()!=null && porta.getGestioneToken().getPolicy()!=null && !listTokenPolicyValidazione.contains(porta.getGestioneToken().getPolicy())) {
  3469.                         listTokenPolicyValidazione.add(porta.getGestioneToken().getPolicy());
  3470.                         listTokenPolicyValidazioneConf.add(porta.getGestioneToken());
  3471.                         listPosizioneTokenPolicyValidazione.add(nomeFruizione+
  3472.                                 org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
  3473.                                 "Token Policy Validazione: "+porta.getGestioneToken().getPolicy());
  3474.                     }
  3475.                     if(porta.sizeAttributeAuthorityList()>0) {
  3476.                         for (AttributeAuthority aa : porta.getAttributeAuthorityList()) {
  3477.                             if(!listAttributeAuthority.contains(aa.getNome())) {
  3478.                                 listAttributeAuthority.add(aa.getNome());
  3479.                                 listPosizioneAttributeAuthority.add(nomeFruizione+
  3480.                                         org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
  3481.                                         "Attribute Authority: "+aa.getNome());
  3482.                             }
  3483.                         }
  3484.                     }
  3485.                    
  3486.                     if(!connettoreStatic) {
  3487.                         org.openspcoop2.core.registry.Connettore connettore = null;
  3488.                         if(mappingFruizione.isDefault()) {
  3489.                             connettore = fruitore.getConnettore();
  3490.                         }
  3491.                         else {
  3492.                             if(porta.getAzione()!=null && porta.getAzione().sizeAzioneDelegataList()>0) {
  3493.                                 for (String az : porta.getAzione().getAzioneDelegataList()) {
  3494.                                     for(ConfigurazioneServizioAzione config : fruitore.getConfigurazioneAzioneList()) {
  3495.                                         if(config.getAzioneList().contains(az)) {
  3496.                                             connettore = config.getConnettore();
  3497.                                             break;
  3498.                                         }
  3499.                                     }
  3500.                                     if(connettore!=null) {
  3501.                                         break;
  3502.                                     }
  3503.                                 }
  3504.                             }
  3505.                         }
  3506.                        
  3507.                         if(connettore!=null) {
  3508.                             TipiConnettore tipo = TipiConnettore.toEnumFromName(connettore.getTipo());
  3509.                             if( (!findConnettoreHttpConPrefissoHttps && TipiConnettore.HTTP.equals(tipo))
  3510.                                     ||
  3511.                                 TipiConnettore.HTTPS.equals(tipo) ) {
  3512.                                
  3513.                                 String nomeConnettore = connettore.getNome();
  3514.                                 if(listConnettoriRegistrati.contains(nomeConnettore)) {
  3515.                                     continue;
  3516.                                 }
  3517.                                
  3518.                                 String tokenPolicy = ConnettoreUtils.getNegoziazioneTokenPolicyConnettore(connettore);
  3519.                                 if(tokenPolicy!=null && StringUtils.isNotEmpty(tokenPolicy) && !listTokenPolicyNegoziazione.contains(tokenPolicy)) {
  3520.                                     listTokenPolicyNegoziazione.add(tokenPolicy);
  3521.                                     listPosizioneTokenPolicyNegoziazione.add(nomeFruizione +
  3522.                                             org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
  3523.                                             "Token Policy Negoziazione: "+tokenPolicy);
  3524.                                 }
  3525.                                
  3526.                                 if( TipiConnettore.HTTP.equals(tipo) ) {
  3527.                                     String endpoint = ConnettoreUtils.getEndpointConnettore(connettore, false);
  3528.                                     if(endpoint!=null) {
  3529.                                         findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
  3530.                                     }
  3531.                                 }
  3532.                                 else {
  3533.                                     listConnettoriRegistry.add(connettore);
  3534.                                     listConnettoriRegistrati.add(nomeConnettore);
  3535.                                     listPosizioneConnettoriRegistrati.add(nomeFruizione);
  3536.                                 }
  3537.                             }
  3538.                         }
  3539.                     }
  3540.                 }
  3541.             }
  3542.             else {
  3543.                 List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
  3544.                 for(MappingErogazionePortaApplicativa mappingErogazione : listaMappingErogazionePortaApplicativa) {
  3545.                     PortaApplicativa porta = this.porteApplicativeCore.getPortaApplicativa(mappingErogazione.getIdPortaApplicativa());
  3546.                    
  3547.                     // solo le porte applicative abilitate
  3548.                     if(StatoFunzionalita.DISABILITATO.equals(porta.getStato())) {
  3549.                         continue;
  3550.                     }
  3551.                    
  3552.                     String suffixGruppo = "";
  3553.                     if(!mappingErogazione.isDefault()) {
  3554.                         suffixGruppo = org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
  3555.                                 "Gruppo: "+mappingErogazione.getDescrizione();
  3556.                     }
  3557.                     String nomeErogazione = nomeApiImpl+suffixGruppo;
  3558.                    
  3559.                     if(porta.getGestioneToken()!=null && porta.getGestioneToken().getPolicy()!=null && !listTokenPolicyValidazione.contains(porta.getGestioneToken().getPolicy())) {
  3560.                         listTokenPolicyValidazione.add(porta.getGestioneToken().getPolicy());
  3561.                         listTokenPolicyValidazioneConf.add(porta.getGestioneToken());
  3562.                         listPosizioneTokenPolicyValidazione.add(nomeErogazione+
  3563.                                 org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
  3564.                                 "Token Policy Validazione: "+porta.getGestioneToken().getPolicy());
  3565.                     }
  3566.                     if(porta.sizeAttributeAuthorityList()>0) {
  3567.                         for (AttributeAuthority aa : porta.getAttributeAuthorityList()) {
  3568.                             if(!listAttributeAuthority.contains(aa.getNome())) {
  3569.                                 listAttributeAuthority.add(aa.getNome());
  3570.                                 listPosizioneAttributeAuthority.add(nomeErogazione+
  3571.                                     org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
  3572.                                     "Attribute Authority: "+aa.getNome());
  3573.                             }
  3574.                         }
  3575.                     }
  3576.                    
  3577.                     boolean connettoreMultiploEnabled = porta.getBehaviour() != null;
  3578.                    
  3579.                     for (PortaApplicativaServizioApplicativo paSA : porta.getServizioApplicativoList()) {
  3580.                         IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
  3581.                         idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(porta.getTipoSoggettoProprietario(), porta.getNomeSoggettoProprietario()));
  3582.                         idServizioApplicativo.setNome(paSA.getNome());
  3583.                         ServizioApplicativo sa = this.saCore.getServizioApplicativo(idServizioApplicativo);
  3584.                        
  3585.                         InvocazioneServizio is = sa.getInvocazioneServizio();
  3586.                         if(is!=null) {
  3587.                             org.openspcoop2.core.config.Connettore connettore = is.getConnettore();
  3588.                             if(connettore!=null) {
  3589.                                 TipiConnettore tipo = TipiConnettore.toEnumFromName(connettore.getTipo());
  3590.                                 if( (!findConnettoreHttpConPrefissoHttps && TipiConnettore.HTTP.equals(tipo))
  3591.                                         ||
  3592.                                     TipiConnettore.HTTPS.equals(tipo) ) {
  3593.                                    
  3594.                                     String nomeConnettore = connettore.getNome();
  3595.                                     if(listConnettoriRegistrati.contains(nomeConnettore)) {
  3596.                                         continue;
  3597.                                     }
  3598.                                    
  3599.                                     if(connettoreMultiploEnabled && paSA.getDatiConnettore()!=null &&
  3600.                                         // solo le porte applicative abilitate
  3601.                                         StatoFunzionalita.DISABILITATO.equals(paSA.getDatiConnettore().getStato())) {
  3602.                                         continue;
  3603.                                     }
  3604.                                    
  3605.                                     String nomeErogazioneConnettore = nomeErogazione;
  3606.                                     if(connettoreMultiploEnabled && paSA.getDatiConnettore()!=null &&
  3607.                                         paSA.getDatiConnettore().getNome()!=null) {
  3608.                                         nomeErogazioneConnettore = nomeErogazioneConnettore +
  3609.                                                 org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
  3610.                                                 "Connettore Multiplo: "+paSA.getDatiConnettore().getNome();
  3611.                                     }
  3612.                                    
  3613.                                     String tokenPolicy = ConnettoreUtils.getNegoziazioneTokenPolicyConnettore(connettore);
  3614.                                     if(tokenPolicy!=null && StringUtils.isNotEmpty(tokenPolicy) && !listTokenPolicyNegoziazione.contains(tokenPolicy)) {
  3615.                                         listTokenPolicyNegoziazione.add(tokenPolicy);
  3616.                                         listPosizioneTokenPolicyNegoziazione.add(nomeErogazioneConnettore +
  3617.                                                 org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
  3618.                                                 "Token Policy Negoziazione: "+tokenPolicy);
  3619.                                     }
  3620.                                    
  3621.                                     if( TipiConnettore.HTTP.equals(tipo) ) {
  3622.                                         String endpoint = ConnettoreUtils.getEndpointConnettore(connettore, false);
  3623.                                         if(endpoint!=null) {
  3624.                                             findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
  3625.                                         }
  3626.                                     }
  3627.                                     else {
  3628.                                         listConnettoriConfig.add(connettore);
  3629.                                         listConnettoriRegistrati.add(nomeConnettore);
  3630.                                         listPosizioneConnettoriRegistrati.add(nomeErogazioneConnettore);
  3631.                                     }
  3632.                                 }
  3633.                             }
  3634.                         }
  3635.                     }
  3636.                                    
  3637.                 }
  3638.             }
  3639.         }
  3640.         return findConnettoreHttpConPrefissoHttps;
  3641.     }
  3642.    
  3643.     public void eseguiVerificaCertificati(AccordoServizioParteSpecifica asps, String alias, boolean gestioneFruitori,
  3644.             Fruitore fruitore, List<String> aliases, String nomeApiImpl, boolean sicurezzaModi, boolean messageSecurity,
  3645.             List<String> listConnettoriRegistrati, List<String> listPosizioneConnettoriRegistrati,
  3646.             List<org.openspcoop2.core.registry.Connettore> listConnettoriRegistry,
  3647.             List<org.openspcoop2.core.config.Connettore> listConnettoriConfig, List<String> listTokenPolicyValidazione,
  3648.             List<GestioneToken> listTokenPolicyValidazioneConf, List<String> listPosizioneTokenPolicyValidazione,
  3649.             List<String> listTokenPolicyNegoziazione, List<String> listPosizioneTokenPolicyNegoziazione,
  3650.             List<String> listAttributeAuthority, List<String> listPosizioneAttributeAuthority,
  3651.             boolean findConnettoreHttpConPrefissoHttps, boolean sceltaClusterId)
  3652.             throws Exception {
  3653.         if(alias==null && !sceltaClusterId) {
  3654.             alias = CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI;
  3655.         }
  3656.                                                
  3657.         // -- verifica
  3658.         List<String> aliasesForCheck = new ArrayList<>();
  3659.         boolean all = false;
  3660.         if(aliases.size()==1) {
  3661.             aliasesForCheck.add(aliases.get(0));
  3662.         }
  3663.         else if(CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI.equals(alias)) {
  3664.             aliasesForCheck.addAll(aliases);
  3665.             all = true;
  3666.         }
  3667.         else {
  3668.             aliasesForCheck.add(alias);
  3669.         }
  3670.        
  3671.         CertificateChecker certificateChecker = null;
  3672.         if(all) {
  3673.             certificateChecker = this.apsCore.getJmxPdDCertificateChecker();
  3674.         }
  3675.         else {
  3676.             certificateChecker = this.apsCore.newJmxPdDCertificateChecker(aliasesForCheck);
  3677.         }
  3678.         StringBuilder sbDetailsError = new StringBuilder();
  3679.        
  3680.         int sogliaWarningGiorni = this.apsCore.getVerificaCertificatiWarningExpirationDays();
  3681.        
  3682.         String posizioneErrore = null;
  3683.         String extraErrore = null;
  3684.        
  3685.         // verifica modi
  3686.         StringBuilder sbDetailsWarningModi = new StringBuilder();
  3687.         String posizioneWarningModi = null;
  3688.         if(sicurezzaModi) {
  3689.             if(gestioneFruitori) {
  3690.                 org.openspcoop2.core.registry.Connettore connettore = null;
  3691.                 certificateChecker.checkFruizione(sbDetailsError, sbDetailsWarningModi,
  3692.                         false, connettore,
  3693.                         sicurezzaModi,
  3694.                         false,
  3695.                         asps, fruitore,
  3696.                         sogliaWarningGiorni);
  3697.             }
  3698.             else {
  3699.                 org.openspcoop2.core.config.Connettore connettore = null;
  3700.                 certificateChecker.checkErogazione(sbDetailsError, sbDetailsWarningModi,
  3701.                         false, connettore,
  3702.                         sicurezzaModi,
  3703.                         false,
  3704.                         asps,
  3705.                         sogliaWarningGiorni);
  3706.             }
  3707.             if(sbDetailsError.length()>0) {
  3708.                 posizioneErrore = nomeApiImpl;
  3709.             }
  3710.             else if(sbDetailsWarningModi.length()>0) {
  3711.                 posizioneWarningModi = nomeApiImpl;
  3712.             }
  3713.         }
  3714.                
  3715.         // verifica connettori https
  3716.         StringBuilder sbDetailsWarningConnettoriHttps = new StringBuilder();
  3717.         String posizioneWarningConnettoriHttps = null;
  3718.         boolean connettoreSsl = !listConnettoriRegistrati.isEmpty();
  3719.         if(sbDetailsError.length()<=0 && connettoreSsl) {
  3720.             if(gestioneFruitori) {
  3721.                 for (int i = 0; i < listConnettoriRegistry.size(); i++) {
  3722.                     org.openspcoop2.core.registry.Connettore connettore = listConnettoriRegistry.get(i);
  3723.                     String posizione = listPosizioneConnettoriRegistrati.get(i);
  3724.                    
  3725.                     StringBuilder sbDetailsWarningConnettoriHttpsSecured = new StringBuilder();
  3726.                     certificateChecker.checkFruizione(sbDetailsError, sbDetailsWarningConnettoriHttpsSecured,
  3727.                             connettoreSsl, connettore,
  3728.                             false,
  3729.                             false,
  3730.                             asps, fruitore,
  3731.                             sogliaWarningGiorni);
  3732.                     if(sbDetailsError.length()>0) {
  3733.                         posizioneErrore = posizione;
  3734.                         break;
  3735.                     }
  3736.                     else if(sbDetailsWarningConnettoriHttps.length()<=0 && sbDetailsWarningConnettoriHttpsSecured.length()>0) {
  3737.                         posizioneWarningModi = nomeApiImpl;
  3738.                         sbDetailsWarningConnettoriHttps.append(sbDetailsWarningConnettoriHttpsSecured.toString());
  3739.                     }
  3740.                 }
  3741.             }
  3742.             else {
  3743.                 for (int i = 0; i < listConnettoriConfig.size(); i++) {
  3744.                     org.openspcoop2.core.config.Connettore connettore = listConnettoriConfig.get(i);
  3745.                     String posizione = listPosizioneConnettoriRegistrati.get(i);
  3746.                    
  3747.                     StringBuilder sbDetailsWarningConnettoriHttpsSecured = new StringBuilder();
  3748.                     certificateChecker.checkErogazione(sbDetailsError, sbDetailsWarningConnettoriHttpsSecured,
  3749.                             connettoreSsl, connettore,
  3750.                             false,
  3751.                             false,
  3752.                             asps,
  3753.                             sogliaWarningGiorni);
  3754.                     if(sbDetailsError.length()>0) {
  3755.                         posizioneErrore = posizione;
  3756.                         break;
  3757.                     }
  3758.                     else if(sbDetailsWarningConnettoriHttps.length()<=0 && sbDetailsWarningConnettoriHttpsSecured.length()>0) {
  3759.                         posizioneWarningModi = nomeApiImpl;
  3760.                         sbDetailsWarningConnettoriHttps.append(sbDetailsWarningConnettoriHttpsSecured.toString()); // tengo solo un warning alla volta, come per gli errori
  3761.                     }
  3762.                 }
  3763.             }
  3764.         }
  3765.                                        
  3766.         // verifica token policy validazione
  3767.         StringBuilder sbDetailsWarningTokenPolicyValidazione = new StringBuilder();
  3768.         String posizioneWarningTokenPolicyValidazione = null;
  3769.         if(sbDetailsError.length()<=0 && listTokenPolicyValidazione!=null && !listTokenPolicyValidazione.isEmpty()) {
  3770.             for (int j = 0; j < listTokenPolicyValidazione.size(); j++) {
  3771.                 GestioneToken policy = listTokenPolicyValidazioneConf.get(j);
  3772.                 String posizione = listPosizioneTokenPolicyValidazione.get(j);
  3773.                 GenericProperties gp = this.confCore.getGenericProperties(policy.getPolicy(), org.openspcoop2.pdd.core.token.Costanti.TIPOLOGIA, false);
  3774.                 if(gp!=null) {
  3775.                     PolicyGestioneToken policyToken = TokenUtilities.convertTo(gp, policy);
  3776.                     boolean httpsDynamicDiscovery = policyToken.isDynamicDiscovery();
  3777.                     boolean httpsValidazioneJwt = false;
  3778.                     boolean httpsIntrospection = false;
  3779.                     boolean httpsUserInfo = false;
  3780.                     boolean validazioneJwt = false;
  3781.                     if(!policyToken.isDynamicDiscovery()) {
  3782.                         httpsValidazioneJwt = policyToken.isValidazioneJWT() && policyToken.isValidazioneJWTLocationHttp();
  3783.                         httpsIntrospection = policyToken.isIntrospection();
  3784.                         httpsUserInfo = policyToken.isUserInfo();
  3785.                         validazioneJwt = policyToken.isValidazioneJWT();
  3786.                     }
  3787.                     boolean forwardToJwt = policyToken.isForwardToken();
  3788.                    
  3789.                     if(httpsDynamicDiscovery &&
  3790.                         !policyToken.isEndpointHttps(false, false)) {
  3791.                         httpsDynamicDiscovery = false;
  3792.                        
  3793.                         String endpoint = policyToken.getDynamicDiscoveryEndpoint();
  3794.                         if(endpoint!=null && StringUtils.isNotEmpty(endpoint) &&
  3795.                             !findConnettoreHttpConPrefissoHttps) {
  3796.                             findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
  3797.                         }
  3798.                     }
  3799.                     if(httpsValidazioneJwt &&
  3800.                         !policyToken.isEndpointHttps(false, false)) {
  3801.                         httpsValidazioneJwt = false;
  3802.                        
  3803.                         String endpoint = policyToken.getValidazioneJWTLocation();
  3804.                         if(endpoint!=null && StringUtils.isNotEmpty(endpoint) &&
  3805.                             !findConnettoreHttpConPrefissoHttps) {
  3806.                             findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
  3807.                         }
  3808.                     }
  3809.                     if(httpsIntrospection &&
  3810.                         !policyToken.isEndpointHttps(true,false)) {
  3811.                         httpsIntrospection = false;
  3812.                        
  3813.                         String endpoint = policyToken.getIntrospectionEndpoint();
  3814.                         if(endpoint!=null && StringUtils.isNotEmpty(endpoint) &&
  3815.                             !findConnettoreHttpConPrefissoHttps) {
  3816.                             findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
  3817.                         }
  3818.                     }
  3819.                     if(httpsUserInfo &&
  3820.                         !policyToken.isEndpointHttps(false,true)) {
  3821.                         httpsUserInfo = false;
  3822.                        
  3823.                         String endpoint = policyToken.getUserInfoEndpoint();
  3824.                         if(endpoint!=null && StringUtils.isNotEmpty(endpoint) &&
  3825.                             !findConnettoreHttpConPrefissoHttps) {
  3826.                             findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
  3827.                         }
  3828.                     }
  3829.                    
  3830.                     if(validazioneJwt) {
  3831.                         try {
  3832.                             String tokenType = policyToken.getTipoToken();
  3833.                             KeystoreParams keystoreParams = null;
  3834.                             if(org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_TYPE_JWS.equals(tokenType) ||
  3835.                                     org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_TYPE_JWE.equals(tokenType)) {
  3836.                                 keystoreParams = TokenUtilities.getValidazioneJwtKeystoreParams(policyToken);
  3837.                             }
  3838.                             if(keystoreParams==null) {
  3839.                                 validazioneJwt = false;
  3840.                             }
  3841.                         }catch(Exception t) {
  3842.                             throw new DriverConfigurazioneException(t.getMessage(),t);
  3843.                         }
  3844.                     }
  3845.                    
  3846.                     if(forwardToJwt) {
  3847.                         try {
  3848.                             KeystoreParams keystoreParams = null;
  3849.                             if(policyToken.isForwardTokenInformazioniRaccolte()) {
  3850.                                 String forwardInformazioniRaccolteMode = policyToken.getForwardTokenInformazioniRaccolteMode();
  3851.                                 if(org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_INFO_RACCOLTE_MODE_OP2_JWS.equals(forwardInformazioniRaccolteMode) ||
  3852.                                         org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_INFO_RACCOLTE_MODE_JWS.equals(forwardInformazioniRaccolteMode) ||
  3853.                                         org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_INFO_RACCOLTE_MODE_JWE.equals(forwardInformazioniRaccolteMode)) {
  3854.                                     keystoreParams = TokenUtilities.getForwardToJwtKeystoreParams(policyToken);
  3855.                                 }
  3856.                             }
  3857.                             if(keystoreParams==null) {
  3858.                                 forwardToJwt = false;
  3859.                             }
  3860.                         }catch(Exception t) {
  3861.                             throw new DriverConfigurazioneException(t.getMessage(),t);
  3862.                         }
  3863.                     }
  3864.                    
  3865.                     if(httpsIntrospection || httpsUserInfo || validazioneJwt || forwardToJwt) {
  3866.                         StringBuilder sbDetailsWarningTokenPolicyValidazioneSecured = new StringBuilder();
  3867.                         certificateChecker.checkTokenPolicyValidazione(sbDetailsError, sbDetailsWarningTokenPolicyValidazioneSecured,
  3868.                                 httpsDynamicDiscovery, httpsValidazioneJwt, httpsIntrospection, httpsUserInfo,
  3869.                                 validazioneJwt, forwardToJwt,
  3870.                                 gp,
  3871.                                 sogliaWarningGiorni);
  3872.                         if(sbDetailsWarningTokenPolicyValidazione.length()<=0 && sbDetailsWarningTokenPolicyValidazioneSecured.length()>0) {
  3873.                             posizioneWarningTokenPolicyValidazione = posizione;
  3874.                             sbDetailsWarningTokenPolicyValidazione.append(sbDetailsWarningTokenPolicyValidazioneSecured.toString()); // tengo solo un warning alla volta, come per gli errori
  3875.                         }
  3876.                     }
  3877.                 }
  3878.                 if(sbDetailsError.length()>0) {
  3879.                     posizioneErrore = posizione;
  3880.                     break;
  3881.                 }
  3882.             }
  3883.         }
  3884.        
  3885.         // verifica token policy negoziazione
  3886.         StringBuilder sbDetailsWarningTokenPolicyNegoziazione = new StringBuilder();
  3887.         String posizioneWarningTokenPolicyNegoziazione = null;
  3888.         if(sbDetailsError.length()<=0 && listTokenPolicyNegoziazione!=null && !listTokenPolicyNegoziazione.isEmpty()) {
  3889.             for (int j = 0; j < listTokenPolicyNegoziazione.size(); j++) {
  3890.                 String policy = listTokenPolicyNegoziazione.get(j);
  3891.                 String posizione = listPosizioneTokenPolicyNegoziazione.get(j);
  3892.                 GenericProperties gp = this.confCore.getGenericProperties(policy, org.openspcoop2.pdd.core.token.Costanti.TIPOLOGIA_RETRIEVE, false);
  3893.                 if(gp!=null) {
  3894.                     PolicyNegoziazioneToken policyNegoziazione = TokenUtilities.convertTo(gp);
  3895.                    
  3896.                     boolean https = false;
  3897.                     String endpoint = policyNegoziazione.getEndpoint();
  3898.                     if(StringUtils.isNotEmpty(endpoint)) {
  3899.                         if(policyNegoziazione.isEndpointHttps()) {
  3900.                             https = true;
  3901.                         }
  3902.                         else if(endpoint!=null && !findConnettoreHttpConPrefissoHttps) {
  3903.                             findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
  3904.                         }
  3905.                     }
  3906.                                                        
  3907.                     boolean signedJwt = false;
  3908.                     KeystoreParams keystoreParams = null;
  3909.                     try {
  3910.                         if(policyNegoziazione.isRfc7523x509Grant()) {
  3911.                             // JWS Compact              
  3912.                             keystoreParams = TokenUtilities.getSignedJwtKeystoreParams(policyNegoziazione);
  3913.                         }
  3914.                     }catch(Exception t) {
  3915.                         throw new DriverConfigurazioneException(t.getMessage(),t);
  3916.                     }
  3917.                    
  3918.                     boolean riferimentoApplicativoModi = keystoreParams!=null && org.openspcoop2.pdd.core.token.Costanti.KEYSTORE_TYPE_APPLICATIVO_MODI_VALUE.equalsIgnoreCase(keystoreParams.getPath());
  3919.                     boolean riferimentoFruizioneModi = keystoreParams!=null && org.openspcoop2.pdd.core.token.Costanti.KEYSTORE_TYPE_FRUIZIONE_MODI_VALUE.equalsIgnoreCase(keystoreParams.getPath());
  3920.                     if(keystoreParams!=null &&
  3921.                             !riferimentoApplicativoModi &&
  3922.                             !riferimentoFruizioneModi) {
  3923.                         signedJwt = true;
  3924.                     }
  3925.                    
  3926.                     if(https || signedJwt) {
  3927.                         StringBuilder sbDetailsWarningTokenPolicyNegoziazioneSecured = new StringBuilder();
  3928.                         certificateChecker.checkTokenPolicyNegoziazione(sbDetailsError, sbDetailsWarningTokenPolicyNegoziazioneSecured,
  3929.                             https, signedJwt,
  3930.                             gp,
  3931.                             sogliaWarningGiorni);
  3932.                         if(sbDetailsWarningTokenPolicyNegoziazione.length()<=0 && sbDetailsWarningTokenPolicyNegoziazioneSecured.length()>0) {
  3933.                             posizioneWarningTokenPolicyNegoziazione = posizione;
  3934.                             sbDetailsWarningTokenPolicyNegoziazione.append(sbDetailsWarningTokenPolicyNegoziazioneSecured.toString()); // tengo solo un warning alla volta, come per gli errori
  3935.                         }
  3936.                     }
  3937.                 }
  3938.                 if(sbDetailsError.length()>0) {
  3939.                     posizioneErrore = posizione;
  3940.                     break;
  3941.                 }
  3942.             }
  3943.         }
  3944.        
  3945.         // attribute authority
  3946.         StringBuilder sbDetailsWarningAttributeAuthority = new StringBuilder();
  3947.         String posizioneWarningAttributeAuthority = null;
  3948.         if(sbDetailsError.length()<=0 && listAttributeAuthority!=null && !listAttributeAuthority.isEmpty()) {
  3949.             for (int j = 0; j < listAttributeAuthority.size(); j++) {
  3950.                 String aa = listAttributeAuthority.get(j);
  3951.                 String posizione = listPosizioneAttributeAuthority.get(j);
  3952.                 GenericProperties gp = this.confCore.getGenericProperties(aa, org.openspcoop2.pdd.core.token.Costanti.ATTRIBUTE_AUTHORITY, false);
  3953.                 if(gp!=null) {
  3954.                     PolicyAttributeAuthority policyAA = AttributeAuthorityUtilities.convertTo(gp);
  3955.                    
  3956.                     boolean https = false;
  3957.                     String endpoint = policyAA.getEndpoint();
  3958.                     if(StringUtils.isNotEmpty(endpoint)) {
  3959.                         if(policyAA.isEndpointHttps()) {
  3960.                             https = true;
  3961.                         }
  3962.                         else if(endpoint!=null && !findConnettoreHttpConPrefissoHttps) {
  3963.                             findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
  3964.                         }
  3965.                     }
  3966.                                                        
  3967.                     boolean jwtRichiesta = false;
  3968.                     try {
  3969.                         KeystoreParams keystoreParams = null;
  3970.                         if(policyAA.isRequestJws()) {
  3971.                             // JWS Compact              
  3972.                             keystoreParams = AttributeAuthorityUtilities.getRequestJwsKeystoreParams(policyAA);
  3973.                         }
  3974.                         if(keystoreParams!=null) {
  3975.                             jwtRichiesta = true;
  3976.                         }
  3977.                     }catch(Exception t) {
  3978.                         throw new DriverConfigurazioneException(t.getMessage(),t);
  3979.                     }
  3980.                    
  3981.                     boolean jwtRisposta = false;
  3982.                     try {
  3983.                         KeystoreParams truststoreParams = null;
  3984.                         if(policyAA.isResponseJws()) {
  3985.                             // JWS Compact              
  3986.                             truststoreParams = AttributeAuthorityUtilities.getResponseJwsKeystoreParams(policyAA);
  3987.                         }
  3988.                         if(truststoreParams!=null) {
  3989.                             jwtRisposta = true;
  3990.                         }
  3991.                     }catch(Exception t) {
  3992.                         throw new DriverConfigurazioneException(t.getMessage(),t);
  3993.                     }
  3994.                    
  3995.                     if(https || jwtRichiesta || jwtRisposta) {
  3996.                         StringBuilder sbDetailsWarningAttributeAuthorityDebug = new StringBuilder();
  3997.                         certificateChecker.checkAttributeAuthority(sbDetailsError, sbDetailsWarningAttributeAuthorityDebug,
  3998.                             https, jwtRichiesta, jwtRisposta,
  3999.                             gp,
  4000.                             sogliaWarningGiorni);
  4001.                         if(sbDetailsWarningAttributeAuthority.length()<=0 && sbDetailsWarningAttributeAuthorityDebug.length()>0) {
  4002.                             posizioneWarningAttributeAuthority = posizione;
  4003.                             sbDetailsWarningAttributeAuthority.append(sbDetailsWarningAttributeAuthorityDebug.toString()); // tengo solo un warning alla volta, come per gli errori
  4004.                         }
  4005.                     }
  4006.                 }
  4007.                 if(sbDetailsError.length()>0) {
  4008.                     posizioneErrore = posizione;
  4009.                     break;
  4010.                 }
  4011.             }
  4012.         }
  4013.                
  4014.         // verifica certificati jvm
  4015.         StringBuilder sbDetailsWarningCertificatiJvm = new StringBuilder();
  4016.         String posizioneWarningCertificatiJvm = null;
  4017.         String extraWarningCertificatiJvm = null;
  4018.         if(sbDetailsError.length()<=0 && findConnettoreHttpConPrefissoHttps) {
  4019.             certificateChecker.checkConfigurazioneJvm(sbDetailsError, sbDetailsWarningCertificatiJvm, sogliaWarningGiorni);
  4020.             if(sbDetailsError.length()>0) {
  4021.                 posizioneErrore = nomeApiImpl;
  4022.                 extraErrore = "Configurazione https nella JVM";
  4023.             }
  4024.             else if(sbDetailsWarningCertificatiJvm.length()>0) {
  4025.                 posizioneWarningCertificatiJvm = nomeApiImpl;
  4026.                 extraWarningCertificatiJvm = "Configurazione https nella JVM";
  4027.             }
  4028.         }
  4029.        
  4030.         // lasciare in ultima posizione poichè non viene generato un id univoco per poi formattare l'output
  4031.         // verifica message security
  4032.         StringBuilder sbDetailsWarningMessageSecurity = new StringBuilder();
  4033.         String posizioneWarningMessageSecurity = null;
  4034.         if(sbDetailsError.length()<=0 && messageSecurity) {
  4035.             if(gestioneFruitori) {
  4036.                 org.openspcoop2.core.registry.Connettore connettore = null;
  4037.                 certificateChecker.checkFruizione(sbDetailsError, sbDetailsWarningMessageSecurity,
  4038.                         false, connettore,
  4039.                         false,
  4040.                         messageSecurity,
  4041.                         asps, fruitore,
  4042.                         sogliaWarningGiorni);
  4043.             }
  4044.             else {
  4045.                 org.openspcoop2.core.config.Connettore connettore = null;
  4046.                 certificateChecker.checkErogazione(sbDetailsError, sbDetailsWarningMessageSecurity,
  4047.                         false, connettore,
  4048.                         false,
  4049.                         messageSecurity,
  4050.                         asps,
  4051.                         sogliaWarningGiorni);
  4052.             }
  4053.             if(sbDetailsError.length()>0) {
  4054.                 posizioneErrore = nomeApiImpl;
  4055.             }
  4056.             else if(sbDetailsWarningMessageSecurity.length()>0) {
  4057.                 posizioneWarningMessageSecurity = nomeApiImpl;
  4058.             }
  4059.         }
  4060.        
  4061.         // analisi warning
  4062.         String warning = null;
  4063.         String posizioneWarning = null;
  4064.         String extraWarning = null;
  4065.         if(sbDetailsError.length()<=0) {
  4066.             if(sbDetailsWarningModi.length()>0) {
  4067.                 warning = sbDetailsWarningModi.toString();
  4068.                 posizioneWarning = posizioneWarningModi;
  4069.             }
  4070.             else if(sbDetailsWarningConnettoriHttps.length()>0) {
  4071.                 warning = sbDetailsWarningConnettoriHttps.toString();
  4072.                 posizioneWarning = posizioneWarningConnettoriHttps;
  4073.             }
  4074.             else if(sbDetailsWarningTokenPolicyValidazione.length()>0) {
  4075.                 warning = sbDetailsWarningTokenPolicyValidazione.toString();
  4076.                 posizioneWarning = posizioneWarningTokenPolicyValidazione;
  4077.             }
  4078.             else if(sbDetailsWarningTokenPolicyNegoziazione.length()>0) {
  4079.                 warning = sbDetailsWarningTokenPolicyNegoziazione.toString();
  4080.                 posizioneWarning = posizioneWarningTokenPolicyNegoziazione;
  4081.             }
  4082.             else if(sbDetailsWarningAttributeAuthority.length()>0) {
  4083.                 warning = sbDetailsWarningAttributeAuthority.toString();
  4084.                 posizioneWarning = posizioneWarningAttributeAuthority;
  4085.             }
  4086.             else if(sbDetailsWarningCertificatiJvm.length()>0) {
  4087.                 warning = sbDetailsWarningCertificatiJvm.toString();
  4088.                 posizioneWarning = posizioneWarningCertificatiJvm;
  4089.                 extraWarning = extraWarningCertificatiJvm;
  4090.             }
  4091.             else if(sbDetailsWarningMessageSecurity.length()>0) {
  4092.                 warning = sbDetailsWarningMessageSecurity.toString();
  4093.                 posizioneWarning = posizioneWarningMessageSecurity;
  4094.             }
  4095.         }
  4096.                                    
  4097.         // esito
  4098.         List<String> formatIds = new ArrayList<>();
  4099.         formatIds.add(RegistroServiziReader.ID_CONFIGURAZIONE_CONNETTORE_HTTPS);
  4100.         formatIds.add(RegistroServiziReader.ID_CONFIGURAZIONE_FIRMA_MODI);
  4101.         formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_TOKEN_VALIDAZIONE_JWT);
  4102.         formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_TOKEN_VALIDAZIONE_FORWARD_TO_JWT);
  4103.         formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_TOKEN_NEGOZIAZIONE_SIGNED_JWT);
  4104.         formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_ATTRIBUTE_AUTHORITY_JWT_RICHIESTA);
  4105.         formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_ATTRIBUTE_AUTHORITY_JWT_RISPOSTA);
  4106.         //formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_RICHIESTA_MESSAGE_SECURITY); // lasciare in ultima posizione poichè non viene generato un id univoco
  4107.         this.apsCore.formatVerificaCertificatiEsito(this.pd, formatIds,
  4108.                 (sbDetailsError.length()>0 ? sbDetailsError.toString() : null), extraErrore, posizioneErrore,
  4109.                 warning, extraWarning, posizioneWarning,
  4110.                 false);
  4111.     }
  4112.    
  4113.     public boolean eseguiVerificaCertificati(boolean soloModI,
  4114.             AccordoServizioParteSpecifica asps, IDSoggetto idSoggettoFruitore, String alias, boolean gestioneFruitori,
  4115.             boolean gestioneErogatori, Fruitore fruitore, IDServizio idServizio, String tipoProtocollo,
  4116.             List<DataElement> dati) throws Exception {
  4117.        
  4118.         // Prendo la lista di aliases
  4119.         List<String> aliases = this.apsCore.getJmxPdDAliases();
  4120.         if(aliases==null || aliases.isEmpty()){
  4121.             throw new CoreException("Pagina non prevista, la sezione configurazione non permette di accedere a questa pagina, se la configurazione non e' corretta");
  4122.         }
  4123.        
  4124.         // -- raccolgo dati
  4125.         String nomeApiImpl = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
  4126.        
  4127.         IDServizio idAps = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
  4128.         IDSoggetto idFruitore = null;
  4129.         if(gestioneFruitori) {
  4130.             idFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
  4131.         }
  4132.        
  4133.         boolean modi = this.apsCore.isProfiloModIPA(tipoProtocollo);
  4134.         boolean sicurezzaModi = false;
  4135.         if(modi) {
  4136.             idAps.setPortType(asps.getPortType());
  4137.             idAps.setUriAccordoServizioParteComune(asps.getAccordoServizioParteComune());
  4138.             IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(tipoProtocollo);
  4139.             IConsoleDynamicConfiguration consoleDynamicConfiguration = protocolFactory.createDynamicConfigurationConsole();
  4140.             IRegistryReader registryReader = this.apsCore.getRegistryReader(protocolFactory);
  4141.             IConfigIntegrationReader configRegistryReader = this.apsCore.getConfigIntegrationReader(protocolFactory);
  4142.             ConsoleConfiguration consoleConfiguration = null;
  4143.             if(!gestioneFruitori) {
  4144.                 consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigAccordoServizioParteSpecifica(ConsoleOperationType.CHANGE, this,
  4145.                         registryReader, configRegistryReader, idAps );
  4146.             }
  4147.             else {
  4148.                 IDFruizione idFruizioneObject = new IDFruizione();
  4149.                 idFruizioneObject.setIdServizio(idAps);
  4150.                 idFruizioneObject.setIdFruitore(idFruitore);
  4151.                 consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigFruizioneAccordoServizioParteSpecifica(ConsoleOperationType.CHANGE, this,  
  4152.                         registryReader, configRegistryReader, idFruizioneObject);
  4153.             }
  4154.             if(consoleConfiguration!=null && consoleConfiguration.getConsoleItem()!=null && !consoleConfiguration.getConsoleItem().isEmpty()) {
  4155.                 sicurezzaModi = true;
  4156.             }
  4157.             if(sicurezzaModi) {
  4158.                 boolean includeRemoteStore = false;
  4159.                 boolean checkModeFruizioneKeystoreId = gestioneFruitori;
  4160.                 if(gestioneFruitori && fruitore.sizeProtocolPropertyList()>0) {
  4161.                     sicurezzaModi = ModIUtils.existsStoreConfig(fruitore.getProtocolPropertyList(), includeRemoteStore, checkModeFruizioneKeystoreId);
  4162.                 }
  4163.                 else if(gestioneErogatori && asps.sizeProtocolPropertyList()>0) {
  4164.                     sicurezzaModi = ModIUtils.existsStoreConfig(asps.getProtocolPropertyList(), includeRemoteStore, checkModeFruizioneKeystoreId);
  4165.                 }
  4166.             }
  4167.         }
  4168.        
  4169.         boolean messageSecurity = false;
  4170.         if(gestioneFruitori) {
  4171.             List<MappingFruizionePortaDelegata> list = this.apsCore.serviziFruitoriMappingList(idFruitore,idServizio, new Search(true));
  4172.             if(list!=null && !list.isEmpty()) {
  4173.                 for (MappingFruizionePortaDelegata mappingFruizionePortaDelegata : list) {
  4174.                     PortaDelegata pd = this.porteDelegateCore.getPortaDelegata(mappingFruizionePortaDelegata.getIdPortaDelegata());
  4175.                     List<KeystoreParams> listKeystoreParams = SecurityUtils.readRequestKeystoreParams(pd);
  4176.                     if(listKeystoreParams!=null && !listKeystoreParams.isEmpty()) {
  4177.                         messageSecurity = true;
  4178.                         break;
  4179.                     }
  4180.                     listKeystoreParams = SecurityUtils.readResponseKeystoreParams(pd);
  4181.                     if(listKeystoreParams!=null && !listKeystoreParams.isEmpty()) {
  4182.                         messageSecurity = true;
  4183.                         break;
  4184.                     }
  4185.                 }
  4186.             }
  4187.         }
  4188.         else {
  4189.             List<MappingErogazionePortaApplicativa> list = this.apsCore.mappingServiziPorteAppList(idServizio, new Search(true));
  4190.             if(list!=null && !list.isEmpty()) {
  4191.                 for (MappingErogazionePortaApplicativa mappingErogazionePortaApplicativa : list) {
  4192.                     PortaApplicativa pa = this.porteApplicativeCore.getPortaApplicativa(mappingErogazionePortaApplicativa.getIdPortaApplicativa());
  4193.                     List<KeystoreParams> listKeystoreParams = SecurityUtils.readRequestKeystoreParams(pa);
  4194.                     if(listKeystoreParams!=null && !listKeystoreParams.isEmpty()) {
  4195.                         messageSecurity = true;
  4196.                         break;
  4197.                     }
  4198.                     listKeystoreParams = SecurityUtils.readResponseKeystoreParams(pa);
  4199.                     if(listKeystoreParams!=null && !listKeystoreParams.isEmpty()) {
  4200.                         messageSecurity = true;
  4201.                         break;
  4202.                     }
  4203.                 }
  4204.             }
  4205.         }
  4206.        
  4207.         List<String> listConnettoriRegistrati = new ArrayList<>();
  4208.         List<String> listPosizioneConnettoriRegistrati = new ArrayList<>();
  4209.         List<org.openspcoop2.core.registry.Connettore> listConnettoriRegistry = new ArrayList<>();
  4210.         List<org.openspcoop2.core.config.Connettore> listConnettoriConfig = new ArrayList<>();
  4211.        
  4212.         List<String> listTokenPolicyValidazione = new ArrayList<>();
  4213.         List<GestioneToken> listTokenPolicyValidazioneConf = new ArrayList<>();
  4214.         List<String> listPosizioneTokenPolicyValidazione = new ArrayList<>();
  4215.        
  4216.         List<String> listTokenPolicyNegoziazione = new ArrayList<>();
  4217.         List<String> listPosizioneTokenPolicyNegoziazione = new ArrayList<>();
  4218.        
  4219.         List<String> listAttributeAuthority = new ArrayList<>();
  4220.         List<String> listPosizioneAttributeAuthority = new ArrayList<>();
  4221.        
  4222.         boolean findConnettoreHttpConPrefissoHttps = this.estraiElencoInvocazioni(soloModI, asps, idSoggettoFruitore, gestioneFruitori, fruitore, idServizio, tipoProtocollo,
  4223.                 nomeApiImpl, listConnettoriRegistrati, listPosizioneConnettoriRegistrati, listConnettoriRegistry,
  4224.                 listConnettoriConfig, listTokenPolicyValidazione, listTokenPolicyValidazioneConf,
  4225.                 listPosizioneTokenPolicyValidazione, listTokenPolicyNegoziazione,
  4226.                 listPosizioneTokenPolicyNegoziazione, listAttributeAuthority, listPosizioneAttributeAuthority);
  4227.        
  4228.        
  4229.         boolean verificaCertificatiEffettuata = false;
  4230.        
  4231.         if(listConnettoriRegistrati.isEmpty() &&
  4232.                 listTokenPolicyValidazione.isEmpty() &&
  4233.                 listTokenPolicyNegoziazione.isEmpty() &&
  4234.                 listAttributeAuthority.isEmpty() &&
  4235.                 !findConnettoreHttpConPrefissoHttps &&
  4236.                 !sicurezzaModi&&
  4237.                 !messageSecurity) {
  4238.             this.pd.setMessage(CostantiControlStation.LABEL_VERIFICA_CERTIFICATI_NON_PRESENTI,
  4239.                     Costanti.MESSAGE_TYPE_INFO);
  4240.            
  4241.             this.pd.disableEditMode();
  4242.            
  4243.             verificaCertificatiEffettuata = true;
  4244.         }
  4245.         else {
  4246.            
  4247.             boolean sceltaClusterId = this.apsCore.isVerificaCertificatiSceltaClusterId();
  4248.            
  4249.             if(aliases.size()==1 || alias!=null || !sceltaClusterId) {
  4250.                
  4251.                 this.eseguiVerificaCertificati(asps, alias, gestioneFruitori, fruitore, aliases,
  4252.                         nomeApiImpl, sicurezzaModi, messageSecurity, listConnettoriRegistrati, listPosizioneConnettoriRegistrati,
  4253.                         listConnettoriRegistry, listConnettoriConfig, listTokenPolicyValidazione,
  4254.                         listTokenPolicyValidazioneConf, listPosizioneTokenPolicyValidazione,
  4255.                         listTokenPolicyNegoziazione, listPosizioneTokenPolicyNegoziazione, listAttributeAuthority,
  4256.                         listPosizioneAttributeAuthority, findConnettoreHttpConPrefissoHttps, sceltaClusterId);

  4257.                 this.pd.disableEditMode();
  4258.                
  4259.                 verificaCertificatiEffettuata = true;
  4260.                
  4261.             } else {
  4262.                
  4263.                 DataElement deTestConnettivita = new DataElement();
  4264.                 deTestConnettivita.setType(DataElementType.TITLE);
  4265.                 deTestConnettivita.setLabel(ErogazioniCostanti.LABEL_ASPS_VERIFICA_CERTIFICATI);
  4266.                 dati.add(deTestConnettivita);
  4267.                
  4268.                 this.addVerificaCertificatoSceltaAlias(aliases, dati);  
  4269.             }
  4270.            
  4271.         }
  4272.         return verificaCertificatiEffettuata;
  4273.     }

  4274. }