ErogazioniHelper.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.openspcoop2.core.commons.CoreException;
import org.openspcoop2.core.commons.Filtri;
import org.openspcoop2.core.commons.ISearch;
import org.openspcoop2.core.commons.Liste;
import org.openspcoop2.core.commons.Search;
import org.openspcoop2.core.commons.SearchUtils;
import org.openspcoop2.core.config.AttributeAuthority;
import org.openspcoop2.core.config.CanaleConfigurazione;
import org.openspcoop2.core.config.CanaliConfigurazione;
import org.openspcoop2.core.config.Connettore;
import org.openspcoop2.core.config.GenericProperties;
import org.openspcoop2.core.config.GestioneToken;
import org.openspcoop2.core.config.InvocazioneServizio;
import org.openspcoop2.core.config.MessageSecurity;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
import org.openspcoop2.core.config.PortaDelegata;
import org.openspcoop2.core.config.Property;
import org.openspcoop2.core.config.ServizioApplicativo;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.constants.MTOMProcessorType;
import org.openspcoop2.core.config.constants.RuoloContesto;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
import org.openspcoop2.core.config.constants.TipoAutorizzazione;
import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
import org.openspcoop2.core.constants.CostantiDB;
import org.openspcoop2.core.constants.TipiConnettore;
import org.openspcoop2.core.id.IDFruizione;
import org.openspcoop2.core.id.IDPortaApplicativa;
import org.openspcoop2.core.id.IDPortaDelegata;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDServizioApplicativo;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
import org.openspcoop2.core.mvc.properties.Config;
import org.openspcoop2.core.mvc.properties.utils.ConfigManager;
import org.openspcoop2.core.mvc.properties.utils.PropertiesSourceConfiguration;
import org.openspcoop2.core.registry.AccordoServizioParteComune;
import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
import org.openspcoop2.core.registry.ConfigurazioneServizioAzione;
import org.openspcoop2.core.registry.Fruitore;
import org.openspcoop2.core.registry.ProprietaOggetto;
import org.openspcoop2.core.registry.Soggetto;
import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
import org.openspcoop2.core.registry.beans.GruppoSintetico;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
import org.openspcoop2.core.registry.driver.IDServizioFactory;
import org.openspcoop2.message.constants.ServiceBinding;
import org.openspcoop2.pdd.config.ConfigurazionePdDReader;
import org.openspcoop2.pdd.config.UrlInvocazioneAPI;
import org.openspcoop2.pdd.core.connettori.ConnettoreUtils;
import org.openspcoop2.pdd.core.token.PolicyGestioneToken;
import org.openspcoop2.pdd.core.token.PolicyNegoziazioneToken;
import org.openspcoop2.pdd.core.token.TokenUtilities;
import org.openspcoop2.pdd.core.token.attribute_authority.AttributeAuthorityUtilities;
import org.openspcoop2.pdd.core.token.attribute_authority.PolicyAttributeAuthority;
import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
import org.openspcoop2.protocol.registry.RegistroServiziReader;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.constants.ArchiveType;
import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
import org.openspcoop2.protocol.sdk.properties.IConsoleDynamicConfiguration;
import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
import org.openspcoop2.protocol.utils.ModIUtils;
import org.openspcoop2.security.message.utils.SecurityUtils;
import org.openspcoop2.utils.certificate.KeystoreParams;
import org.openspcoop2.web.ctrlstat.core.CertificateChecker;
import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
import org.openspcoop2.web.ctrlstat.costanti.InUsoType;
import org.openspcoop2.web.ctrlstat.driver.DriverControlStationException;
import org.openspcoop2.web.ctrlstat.driver.DriverControlStationNotFound;
import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneUtilities;
import org.openspcoop2.web.ctrlstat.servlet.apc.api.ApiCostanti;
import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCostanti;
import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaHelper;
import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaUtilities;
import org.openspcoop2.web.ctrlstat.servlet.archivi.ExporterUtils;
import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCostanti;
import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
import org.openspcoop2.web.ctrlstat.servlet.pa.PorteApplicativeCostanti;
import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateCostanti;
import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCostanti;
import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
import org.openspcoop2.web.lib.mvc.AreaBottoni;
import org.openspcoop2.web.lib.mvc.CheckboxStatusType;
import org.openspcoop2.web.lib.mvc.Costanti;
import org.openspcoop2.web.lib.mvc.DataElement;
import org.openspcoop2.web.lib.mvc.DataElementImage;
import org.openspcoop2.web.lib.mvc.DataElementType;
import org.openspcoop2.web.lib.mvc.ForwardParams;
import org.openspcoop2.web.lib.mvc.GeneralData;
import org.openspcoop2.web.lib.mvc.PageData;
import org.openspcoop2.web.lib.mvc.Parameter;
import org.openspcoop2.web.lib.mvc.ServletUtils;
import org.openspcoop2.web.lib.mvc.TargetType;
import org.openspcoop2.web.lib.mvc.TipoOperazione;
/**
* ErogazioniHelper
*
* @author Andrea Poli (poli@link.it)
* @author Giuliano Pintori (pintori@link.it)
* @author $Author$
* @version $Rev$, $Date$
*
*/
public class ErogazioniHelper extends AccordiServizioParteSpecificaHelper{
public ErogazioniHelper(HttpServletRequest request, PageData pd, HttpSession session) throws Exception {
super(request, pd, session);
}
public ErogazioniHelper(ControlStationCore core, HttpServletRequest request, PageData pd, HttpSession session) throws Exception {
super(core, request, pd, session);
}
public void checkGestione(HttpServletRequest request, HttpSession session, ConsoleSearch ricerca, int idLista, String tipologiaParameterName) throws Exception {
this.checkGestione(request, session, ricerca, idLista, tipologiaParameterName, false);
}
public void checkGestione(HttpServletRequest request, HttpSession session, ConsoleSearch ricerca, int idLista, String tipologiaParameterName, boolean addFilterToRicerca) throws Exception {
String tipologia = this.getParameter(tipologiaParameterName);
if(tipologia==null) {
// guardo se sto entrando da altri link fuori dal menu di sinistra
// in tal caso e' gia' impostato
tipologia = ServletUtils.getObjectFromSession(request, session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
}
if(tipologia!=null) {
if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
ServletUtils.setObjectIntoSession(request, session, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
if(addFilterToRicerca)
ricerca.addFilter(idLista, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE);
}
else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
ServletUtils.setObjectIntoSession(request, session, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
boolean filtraSoloEsterni = true;
if(addFilterToRicerca) {
if(this.apsCore.isMultitenant() && this.apsCore.getMultitenantSoggettiFruizioni()!=null) {
switch (this.apsCore.getMultitenantSoggettiFruizioni()) {
case SOLO_SOGGETTI_ESTERNI:
filtraSoloEsterni = true;
break;
case ESCLUDI_SOGGETTO_FRUITORE:
case TUTTI:
filtraSoloEsterni = false;
break;
}
}
}
if(addFilterToRicerca && filtraSoloEsterni)
ricerca.addFilter(idLista, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE);
}
else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_COMPLETA.equals(tipologia)) {
ServletUtils.removeObjectFromSession(request, session, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
}
if(addFilterToRicerca && this.isSoggettoMultitenantSelezionato()) {
ricerca.addFilter(idLista, Filtri.FILTRO_SOGGETTO, this.getSoggettoMultitenantSelezionato());
}
}
}
public boolean isGestioneFruitori(String tipologia) throws Exception {
boolean gestioneFruitori = false;
if(tipologia==null) {
// guardo se sto entrando da altri link fuori dal menu di sinistra in tal caso e' gia' impostato
tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
}
if(tipologia!=null && AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
gestioneFruitori = true;
}
return gestioneFruitori;
}
public DataElement newDataElementStatoApiErogazione(DataElement de, boolean setWidthPx,
AccordoServizioParteSpecifica asps,AccordoServizioParteComuneSintetico apc, String nomePortaDefault,
List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa, List<PortaApplicativa> listaPorteApplicativeAssociate) throws Exception {
int numeroAbilitate = 0;
int numeroConfigurazioni = 0;
int numeroConfigurazioniSchedulingDisabilitato = 0;
boolean allActionRedefined = false;
String msgControlloAccessiMalConfigurato = null;
// stato gruppi
numeroConfigurazioni = listaMappingErogazionePortaApplicativa.size();
if(listaMappingErogazionePortaApplicativa.size()>1) {
List<String> azioniL = new ArrayList<>();
Map<String,String> azioni = this.apsCore.getAzioniConLabel(asps, apc, false, true, new ArrayList<>());
if(azioni != null && azioni.size() > 0)
azioniL.addAll(azioni.keySet());
allActionRedefined = this.allActionsRedefinedMappingErogazione(azioniL, listaMappingErogazionePortaApplicativa);
}
for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(paAssociata.getTipoSoggettoProprietario());
boolean modipa = this.isProfiloModIPA(protocollo);
boolean statoPA = paAssociata.getStato().equals(StatoFunzionalita.ABILITATO);
if(statoPA) {
if(!allActionRedefined || !paAssociata.getNome().equals(nomePortaDefault)) {
numeroAbilitate ++;
}
}
if(allActionRedefined && paAssociata.getNome().equals(nomePortaDefault)) {
// se tutte le azioni sono state ridefinite non devo controllare la porta di default
continue;
}
if(StatoFunzionalita.ABILITATO.equals(paAssociata.getStato()) && msgControlloAccessiMalConfigurato==null){
if(TipoAutorizzazione.isAuthenticationRequired(paAssociata.getAutorizzazione())) {
if(
(paAssociata.getSoggetti()==null || paAssociata.getSoggetti().sizeSoggettoList()<=0)
&&
(paAssociata.getServiziApplicativiAutorizzati()==null || paAssociata.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()<=0)
) {
if(!modipa) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TRASPORTO_NO_FRUITORI;
}
else {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_CANALE_NO_FRUITORI;
}
if(listaMappingErogazionePortaApplicativa.size()>1) {
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
if(msgControlloAccessiMalConfigurato==null &&
TipoAutorizzazione.isRolesRequired(paAssociata.getAutorizzazione())) {
if(
(paAssociata.getRuoli()==null || paAssociata.getRuoli().sizeRuoloList()<=0)
) {
if(!modipa) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TRASPORTO_NO_RUOLI;
}
else {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_CANALE_NO_RUOLI;
}
if(listaMappingErogazionePortaApplicativa.size()>1) {
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
if(msgControlloAccessiMalConfigurato==null &&
paAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getStato()) &&
paAssociata.getAutorizzazioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getAutorizzazioneToken().getAutorizzazioneApplicativi())) {
if(modipa) {
if (paAssociata.getServiziApplicativiAutorizzati()==null || paAssociata.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()<=0) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_MESSAGGIO_NO_FRUITORI;
}
}
else if(
paAssociata.getAutorizzazioneToken().getServiziApplicativi()==null || (paAssociata.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()<=0)
) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_FRUITORI;
}
if(msgControlloAccessiMalConfigurato!=null) {
if(listaMappingErogazionePortaApplicativa.size()>1) {
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
if(msgControlloAccessiMalConfigurato==null &&
paAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getStato()) &&
paAssociata.getAutorizzazioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getAutorizzazioneToken().getAutorizzazioneRuoli())) {
if(
paAssociata.getAutorizzazioneToken().getRuoli()==null || (paAssociata.getAutorizzazioneToken().getRuoli().sizeRuoloList()<=0)
) {
if(!modipa) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_RUOLI;
}
else {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_MESSAGGIO_NO_RUOLI;
}
if(listaMappingErogazionePortaApplicativa.size()>1) {
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
if(msgControlloAccessiMalConfigurato==null &&
paAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getStato()) &&
paAssociata.getScope()!=null && StatoFunzionalita.ABILITATO.equals(paAssociata.getScope().getStato())) {
if(
(paAssociata.getScope().sizeScopeList()<=0)
) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_SCOPE;
if(listaMappingErogazionePortaApplicativa.size()>1) {
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
if(mappinErogazione.getIdPortaApplicativa().getNome().equals(paAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappinErogazione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
if(paAssociata.getBehaviour()!=null && paAssociata.sizeServizioApplicativoList()>0) {
for (PortaApplicativaServizioApplicativo paSA : paAssociata.getServizioApplicativoList()) {
if(paSA!=null && paSA.getDatiConnettore()!=null &&
StatoFunzionalita.DISABILITATO.equals(paSA.getDatiConnettore().getScheduling()) &&
!StatoFunzionalita.DISABILITATO.equals(paSA.getDatiConnettore().getStato())) {
numeroConfigurazioniSchedulingDisabilitato++;
}
}
}
}
}
return newDataElementStatoApi(de, setWidthPx, msgControlloAccessiMalConfigurato, null, numeroAbilitate, numeroConfigurazioni, numeroConfigurazioniSchedulingDisabilitato, allActionRedefined);
}
public DataElement newDataElementStatoApiFruizione(DataElement de, boolean setWidthPx,
AccordoServizioParteSpecifica asps,AccordoServizioParteComuneSintetico apc, String nomePortaDefault,
List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata, List<PortaDelegata> listaPorteDelegateAssociate) throws Exception {
int numeroAbilitate = 0;
int numeroConfigurazioni = 0;
boolean allActionRedefined = false;
String msgControlloAccessiMalConfigurato = null;
// stato gruppi
numeroConfigurazioni = listaMappingFruzionePortaDelegata.size();
if(listaMappingFruzionePortaDelegata.size()>1) {
List<String> azioniL = new ArrayList<>();
Map<String,String> azioni = this.porteDelegateCore.getAzioniConLabel(asps, apc, false, true, new ArrayList<>());
if(azioni != null && azioni.size() > 0)
azioniL.addAll(azioni.keySet());
allActionRedefined = this.allActionsRedefinedMappingFruizione(azioniL, listaMappingFruzionePortaDelegata);
}
for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
boolean statoPD = pdAssociata.getStato().equals(StatoFunzionalita.ABILITATO);
if(statoPD) {
if(!allActionRedefined || !pdAssociata.getNome().equals(nomePortaDefault)) {
numeroAbilitate ++;
}
}
if(allActionRedefined && pdAssociata.getNome().equals(nomePortaDefault)) {
// se tutte le azioni sono state ridefinite non devo controllare la porta di default
continue;
}
if(StatoFunzionalita.ABILITATO.equals(pdAssociata.getStato()) && msgControlloAccessiMalConfigurato==null){
if(TipoAutorizzazione.isAuthenticationRequired(pdAssociata.getAutorizzazione())) {
if(
(pdAssociata.sizeServizioApplicativoList()<=0)
) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TRASPORTO_NO_FRUITORI;
if(listaMappingFruzionePortaDelegata.size()>1) {
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
if(msgControlloAccessiMalConfigurato==null &&
TipoAutorizzazione.isRolesRequired(pdAssociata.getAutorizzazione())) {
if(
(pdAssociata.getRuoli()==null || pdAssociata.getRuoli().sizeRuoloList()<=0)
) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TRASPORTO_NO_RUOLI;
if(listaMappingFruzionePortaDelegata.size()>1) {
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
if(msgControlloAccessiMalConfigurato==null &&
pdAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getStato()) &&
pdAssociata.getAutorizzazioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getAutorizzazioneToken().getAutorizzazioneApplicativi())) {
if(
pdAssociata.getAutorizzazioneToken().getServiziApplicativi()==null || (pdAssociata.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()<=0)
) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_FRUITORI;
if(listaMappingFruzionePortaDelegata.size()>1) {
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
if(msgControlloAccessiMalConfigurato==null &&
pdAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getStato()) &&
pdAssociata.getAutorizzazioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getAutorizzazioneToken().getAutorizzazioneRuoli())) {
if(
pdAssociata.getAutorizzazioneToken().getRuoli()==null || (pdAssociata.getAutorizzazioneToken().getRuoli().sizeRuoloList()<=0)
) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_RUOLI;
if(listaMappingFruzionePortaDelegata.size()>1) {
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
if(msgControlloAccessiMalConfigurato==null &&
pdAssociata.getGestioneToken()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getStato()) &&
pdAssociata.getScope()!=null && StatoFunzionalita.ABILITATO.equals(pdAssociata.getScope().getStato())) {
if(
(pdAssociata.getScope().sizeScopeList()<=0)
) {
msgControlloAccessiMalConfigurato = ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONTROLLO_ACCESSO_AUTORIZZAZIONE_TOKEN_NO_SCOPE;
if(listaMappingFruzionePortaDelegata.size()>1) {
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
if(mappingFruizione.getIdPortaDelegata().getNome().equals(pdAssociata.getNome())) {
msgControlloAccessiMalConfigurato = "(Gruppo: '"+mappingFruizione.getDescrizione()+"') "+ msgControlloAccessiMalConfigurato;
break;
}
}
}
}
}
}
}
return newDataElementStatoApi(de, setWidthPx, msgControlloAccessiMalConfigurato, null, numeroAbilitate, numeroConfigurazioni, -1, allActionRedefined);
}
private DataElement newDataElementStatoApi(DataElement deParam, boolean setWidthPx, String msgControlloAccessiMalConfiguratoError, String msgControlloAccessiMalConfiguratoWarning,
int numeroAbilitate, int numeroConfigurazioni, int numeroConfigurazioniSchedulingDisabilitato,
boolean allActionRedefined) {
DataElement de = deParam;
boolean list = false;
if(de==null) {
de = new DataElement();
list = true;
}
if(list) {
de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_STATO_CONFIGURAZIONI);
}
de.setType(DataElementType.CHECKBOX);
if(msgControlloAccessiMalConfiguratoError!=null) {
de.setStatusType(CheckboxStatusType.DISABILITATO);
de.setStatusToolTip(msgControlloAccessiMalConfiguratoError);
}
else if(msgControlloAccessiMalConfiguratoWarning!=null) {
de.setStatusType(CheckboxStatusType.WARNING_ONLY);
de.setStatusToolTip(msgControlloAccessiMalConfiguratoWarning);
}
else if(numeroAbilitate == 0) {
de.setStatusType(CheckboxStatusType.DISABILITATO);
de.setStatusToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_TUTTE_DISABILITATE_TOOLTIP);
} else if(
(!allActionRedefined && numeroAbilitate == numeroConfigurazioni)
||
(allActionRedefined && numeroAbilitate == (numeroConfigurazioni-1)) // escludo la regola che non viene usata poiche' tutte le azioni sono ridefinite
) {
if(numeroConfigurazioniSchedulingDisabilitato>0) {
de.setStatusType(CheckboxStatusType.WARNING_ONLY);
de.setStatusToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_CONNETTORI_MULTIPLI_SCHEDULING_DISABILITATO_TOOLTIP);
}
else {
de.setStatusType(CheckboxStatusType.ABILITATO);
de.setStatusToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_TUTTE_ABILITATE_TOOLTIP);
}
} else {
de.setStatusType(CheckboxStatusType.WARNING_ONLY);
de.setStatusToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_STATO_CONFIGURAZIONI_PARZIALMENTE_ABILITATE_TOOLTIP);
}
if(setWidthPx) {
de.setWidthPx(16);
}
return de;
}
public void prepareErogazioniList(ISearch ricerca, List<AccordoServizioParteSpecifica> lista) throws Exception {
try {
ServletUtils.addListElementIntoSession(this.request, this.session, ErogazioniCostanti.OBJECT_NAME_ASPS_EROGAZIONI);
String tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
boolean gestioneFruitori = this.isGestioneFruitori(tipologia);
boolean visualizzaGruppi = false;
if(gestioneFruitori)
this.pd.setCustomListViewName(ErogazioniCostanti.ASPS_EROGAZIONI_NOME_VISTA_CUSTOM_LISTA_FRUIZIONI);
else
this.pd.setCustomListViewName(ErogazioniCostanti.ASPS_EROGAZIONI_NOME_VISTA_CUSTOM_LISTA_EROGAZIONI);
boolean showProtocolli = this.core.countProtocolli(this.request, this.session)>1;
boolean showServiceBinding = true;
if( !showProtocolli ) {
List<String> l = this.core.getProtocolli(this.request, this.session);
if(!l.isEmpty()) {
IProtocolFactory<?> p = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(l.get(0));
if(p.getManifest().getBinding().getRest()==null || p.getManifest().getBinding().getSoap()==null) {
showServiceBinding = false;
}
}
}
int idLista = Liste.SERVIZI;
int limit = ricerca.getPageSize(idLista);
int offset = ricerca.getIndexIniziale(idLista);
String search = ServletUtils.getSearchFromSession(ricerca, idLista);
String filterProtocollo = addFilterProtocol(ricerca, idLista, true);
boolean profiloSelezionato = false;
String protocolloS = filterProtocollo;
if(protocolloS==null) {
// significa che e' stato selezionato un protocollo nel menu in alto a destra
List<String> protocolli = this.core.getProtocolli(this.request, this.session);
if(protocolli!=null && protocolli.size()==1) {
protocolloS = protocolli.get(0);
}
}
if( (filterProtocollo!=null &&
//!"".equals(filterProtocollo) &&
!CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI.equals(filterProtocollo))
||
(filterProtocollo==null && protocolloS!=null)
) {
profiloSelezionato = true;
}
String protocolloPerFiltroProprieta = protocolloS;
// valorizzato con il protocollo nel menu in alto a destra oppure null, controllo se e' stato selezionato nel filtro di ricerca
if(protocolloPerFiltroProprieta == null) {
if(
//"".equals(filterProtocollo) ||
CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI.equals(filterProtocollo)) {
protocolloPerFiltroProprieta = null;
} else {
protocolloPerFiltroProprieta = filterProtocollo;
}
}
String soggettoPerFiltroProprieta = null;
if(profiloSelezionato) {
// soggetto non selezionato nel menu' in alto a dx
if(!this.isSoggettoMultitenantSelezionato()) {
soggettoPerFiltroProprieta = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SOGGETTO);
if(
//"".equals(soggettoPerFiltroProprieta) ||
CostantiControlStation.DEFAULT_VALUE_PARAMETRO_SOGGETTO_QUALSIASI.equals(soggettoPerFiltroProprieta)) {
soggettoPerFiltroProprieta = null;
}
} else {
soggettoPerFiltroProprieta = this.getSoggettoMultitenantSelezionato();
}
}
// filtri MODIPA da visualizzare solo se non e' stato selezionato un protocollo in alto a dx (opzione pilota da file di proprieta')
// oppure e' selezionato MODIPA
// oppure non e' stato selezionato un protocollo in alto e nessun protocollo nei filtri (opzione pilota da file di proprieta')
// oppure MODIPA nei filtri
boolean profiloModipaSelezionato = false;
// solo se il protocollo modipa e' caricato faccio la verifica
if(this.core.getProtocolli().contains(CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_MODIPA)) {
List<String> profiloModipaSelezionatoOpzioniAccettate = new ArrayList<>();
profiloModipaSelezionatoOpzioniAccettate.add(CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_MODIPA);
if(this.core.isModipaFiltroRicercaProfiloQualsiasiVisualizzaDatiModi()) {
profiloModipaSelezionatoOpzioniAccettate.add(CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI);
}
if( (filterProtocollo!=null && profiloModipaSelezionatoOpzioniAccettate.contains(filterProtocollo))
||
(filterProtocollo==null && protocolloS!=null && profiloModipaSelezionatoOpzioniAccettate.contains(protocolloS))
) {
profiloModipaSelezionato = true;
}
}
if( profiloSelezionato &&
(!this.isSoggettoMultitenantSelezionato())) {
String filterSoggetto = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SOGGETTO);
this.addFilterSoggetto(filterSoggetto,protocolloS,true,true);
}
String filterTipoAccordo = null;
if(showServiceBinding) {
filterTipoAccordo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SERVICE_BINDING);
boolean postBackServiceBinding = profiloSelezionato // serve se poi si fa vedere le API
||
profiloModipaSelezionato; // serve per pilotare la label audience e sulla sicurezza messaggio
this.addFilterServiceBinding(filterTipoAccordo,postBackServiceBinding,true);
}
String filterGruppo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_GRUPPO);
boolean postBackGruppo = profiloSelezionato; // serve se poi si fa vedere le API
addFilterGruppo(filterProtocollo, filterGruppo, postBackGruppo);
if( profiloSelezionato ) {
String filterApi = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_API);
addFilterApi(filterProtocollo, filterTipoAccordo,filterGruppo, filterApi, false);
}
CanaliConfigurazione canali = this.confCore.getCanaliConfigurazione(false);
if(canali!=null && StatoFunzionalita.ABILITATO.equals(canali.getStato())) {
String filterCanale = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CANALE);
addFilterCanale(canali, filterCanale, false);
}
if(this.isShowGestioneWorkflowStatoDocumenti() &&
this.core.isGestioneWorkflowStatoDocumentiVisualizzaStatoLista()) {
String filterStatoAccordo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_STATO_ACCORDO);
this.addFilterStatoAccordo(filterStatoAccordo,false);
}
if(gestioneFruitori) {
addFilterSoggettoErogatoreStringaLiberaContains(ricerca, idLista);
}
// **** filtro connettore ****
this.addFilterSubtitle(ConnettoriCostanti.NAME_SUBTITLE_DATI_CONNETTORE, ConnettoriCostanti.LABEL_SUBTITLE_DATI_CONNETTORE, false);
// filtro tipo connettore con voce IM solo sulle erogazioni
String filterTipoConnettore = this.addFilterTipoConnettore(ricerca, idLista, !gestioneFruitori);
// filtro plugin
this.addFilterConnettorePlugin(ricerca, idLista, filterTipoConnettore);
// filtro debug
if(!this.isModalitaStandard()) {
this.addFilterConnettoreDebug(ricerca, idLista, filterTipoConnettore);
}
// filtro token policy
this.addFilterConnettoreTokenPolicy(ricerca, idLista, filterTipoConnettore);
// filtro endpoint
this.addFilterConnettoreEndpoint(ricerca, idLista, filterTipoConnettore);
// filtro keystore
this.addFilterConnettoreKeystore(ricerca, idLista, filterTipoConnettore);
// imposto apertura sezione
this.impostaAperturaSubtitle(ConnettoriCostanti.NAME_SUBTITLE_DATI_CONNETTORE);
// **** fine filtro connettore ****
// **** filtro modi ****
if(profiloModipaSelezionato) {
this.addFilterSubtitle(CostantiControlStation.NAME_SUBTITLE_FILTRI_MODIPA, CostantiControlStation.LABEL_SUBTITLE_FILTRI_MODIPA, false);
// filtro sicurezza canale
this.addFilterModISicurezzaCanale(ricerca, idLista);
// filtro sicurezza messaggio
this.addFilterModISicurezzaMessaggio(ricerca, idLista, filterTipoAccordo);
// filtro sorgente token
this.addFilterModIGenerazioneToken(ricerca, idLista);
// filtro sicurezza canale
this.addFilterModIDigestRichiesta(ricerca, idLista);
// filtro sicurezza canale
this.addFilterModIInfoUtente(ricerca, idLista);
// filtro keystore
this.addFilterModIKeystorePath(ricerca, idLista);
// filtro audience
this.addFilterModIAudience(ricerca, idLista, false, filterTipoAccordo, null);
// imposto apertura sezione
this.impostaAperturaSubtitle(CostantiControlStation.NAME_SUBTITLE_FILTRI_MODIPA);
}
// **** fine filtro modi ****
// **** filtro configurazione ****
this.addFilterSubtitle(CostantiControlStation.NAME_SUBTITLE_DATI_CONFIGURAZIONE, CostantiControlStation.LABEL_SUBTITLE_DATI_CONFIGURAZIONE, false);
// filtro stato
this.addFilterStatoImplementazioneAPI(ricerca, idLista);
// filtro autenticazione token
this.addFilterTipoAutenticazioneToken(ricerca, idLista);
// filtro autenticazione trasporto
boolean modiErogazione = profiloModipaSelezionato && !gestioneFruitori;
Boolean confPers = ServletUtils.getObjectFromSession(this.request, this.session, Boolean.class, CostantiControlStation.SESSION_PARAMETRO_GESTIONE_CONFIGURAZIONI_PERSONALIZZATE);
String filterTipoAutenticazioneTrasporto = this.addFilterTipoAutenticazioneTrasporto(ricerca, idLista, true, modiErogazione, confPers);
// filtro plugin autenticazione trasporto
this.addFilterTipoAutenticazioneTrasportoPlugin(ricerca, idLista, filterTipoAutenticazioneTrasporto, gestioneFruitori);
// filtro stato rate limiting
this.addFilterConfigurazioneRateLimiting(ricerca, idLista);
// filtro stato validazione
this.addFilterConfigurazioneValidazione(ricerca, idLista);
// filtro stato caching risposta
this.addFilterConfigurazioneCacheRisposta(ricerca, idLista);
// filtro stato message security
this.addFilterConfigurazioneMessageSecurity(ricerca, idLista);
// filtro stato mtom
this.addFilterConfigurazioneMTOM(ricerca, idLista, filterTipoAccordo);
// filtro trasformazione
this.addFilterConfigurazioneTrasformazione(ricerca, idLista);
// filtro transazioni
this.addFilterConfigurazioneTransazioni(ricerca, idLista, false);
// filtro correlazione applicativa
this.addFilterConfigurazioneCorrelazioneApplicativa(ricerca, idLista);
// filtro registrazione messaggi
this.addFilterConfigurazioneTipoDump(ricerca, idLista, false);
// filtro cors
String filterCORS = this.addFilterConfigurazioneCORS(ricerca, idLista);
// filtro cors origin
this.addFilterConfigurazioneCORSOrigin(ricerca, idLista, filterCORS);
// imposto apertura sezione
this.impostaAperturaSubtitle(CostantiControlStation.NAME_SUBTITLE_DATI_CONFIGURAZIONE);
// **** fine filtro configurazione ****
// **** filtro proprieta ****
List<String> nomiProprieta =null;
if(gestioneFruitori) {
nomiProprieta = this.nomiProprietaPD(protocolloPerFiltroProprieta,soggettoPerFiltroProprieta);
} else {
nomiProprieta = this.nomiProprietaPA(protocolloPerFiltroProprieta,soggettoPerFiltroProprieta);
}
if(nomiProprieta != null && !nomiProprieta.isEmpty()) {
this.addFilterSubtitle(CostantiControlStation.NAME_SUBTITLE_PROPRIETA, CostantiControlStation.LABEL_SUBTITLE_PROPRIETA, false);
// filtro nome
this.addFilterProprietaNome(ricerca, idLista, nomiProprieta);
// filtro valore
this.addFilterProprietaValore(ricerca, idLista, nomiProprieta);
// imposto apertura sezione
this.impostaAperturaSubtitle(CostantiControlStation.NAME_SUBTITLE_PROPRIETA);
}
// **** fine filtro proprieta ****
boolean showConfigurazionePA = false;
boolean showConfigurazionePD = false;
if(tipologia==null) {
throw new DriverControlStationException("Parametro TipologiaErogazione non puo' essere vuoto");
}
if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
showConfigurazionePA = true;
}
if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
showConfigurazionePD = true;
}
this.pd.setIndex(offset);
this.pd.setPageSize(limit);
this.pd.setNumEntries(ricerca.getNumEntries(idLista));
List<String> labelLst = new ArrayList<>();
labelLst.add("");//AccordiServizioParteSpecificaCostanti.LABEL_APS_STATO); // colonna stato
if(gestioneFruitori) {
labelLst.add(ErogazioniCostanti.LABEL_ASPS_FRUIZIONI);
}
else {
labelLst.add(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI);
}
if(visualizzaGruppi)
labelLst.add(ErogazioniCostanti.LABEL_ASPS_LISTA_EROGAZIONI_COLONNA_CONFIGURAZIONE);
String [] labels = labelLst.toArray(new String[labelLst.size()]);
this.pd.setLabels(labels);
// setto la barra del titolo
List<Parameter> lstParm = new ArrayList<>();
if(gestioneFruitori) {
lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_FRUIZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
} else {
lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
}
if(gestioneFruitori) {
this.pd.setSearchLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_RICERCA_API_FRUIZIONE);
}
else {
this.pd.setSearchLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_RICERCA_API_EROGAZIONE);
}
if(search.equals("")){
this.pd.setSearchDescription("");
}else{
lstParm.add(new Parameter(Costanti.PAGE_DATA_TITLE_LABEL_RISULTATI_RICERCA, null));
}
// setto la barra del titolo
ServletUtils.setPageDataTitle(this.pd, lstParm );
// controllo eventuali risultati ricerca
if (!search.equals("")) {
ServletUtils.enabledPageDataSearch(this.pd, ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, search);
}
List<AccordoServizioParteComuneSintetico> listApc = new ArrayList<>();
List<String> protocolli = new ArrayList<>();
// colleziono i tags registrati
List<String> tagsDisponibili = this.gruppiCore.getAllGruppiOrdinatiPerDataRegistrazione();
// configurazione dei canali
CanaliConfigurazione gestioneCanali = this.confCore.getCanaliConfigurazione(false);
boolean gestioneCanaliEnabled = gestioneCanali != null && org.openspcoop2.core.config.constants.StatoFunzionalita.ABILITATO.equals(gestioneCanali.getStato());
List<CanaleConfigurazione> canaleList = gestioneCanali != null ? gestioneCanali.getCanaleList() : new ArrayList<>();
CanaleConfigurazione canaleConfigurazioneDefault = gestioneCanaliEnabled ? this.getCanaleDefault(canaleList) : null;
if(lista!=null) {
for (AccordoServizioParteSpecifica asps : lista) {
AccordoServizioParteComuneSintetico apc = this.apcCore.getAccordoServizioSintetico(asps.getIdAccordo());
String tipoSoggetto = asps.getTipoSoggettoErogatore();
String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tipoSoggetto);
listApc.add(apc);
protocolli.add(protocollo);
}
}
// preparo i dati
List<List<DataElement>> dati = new ArrayList<>();
if(lista!=null) {
for (int i = 0; i < lista.size(); i++) {
AccordoServizioParteSpecifica asps = lista.get(i);
IDServizio idServizio = this.idServizioFactory.getIDServizioFromAccordo(asps);
String protocollo = protocolli.get(i);
Fruitore fruitore = null;
IDSoggetto idSoggettoFruitore = null;
if(showConfigurazionePD || gestioneFruitori) {
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
idSoggettoFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
}
List<DataElement> e = new ArrayList<>();
Parameter pIdsoggErogatore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO_EROGATORE, ""+asps.getIdSoggetto());
Parameter pNomeServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SERVIZIO, asps.getNome());
Parameter pTipoServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SERVIZIO, asps.getTipo());
Parameter pTipoSoggettoFruitore = null;
Parameter pNomeSoggettoFruitore = null;
if(gestioneFruitori) {
pTipoSoggettoFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SOGGETTO_FRUITORE, fruitore.getTipo());
pNomeSoggettoFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SOGGETTO_FRUITORE, fruitore.getNome());
}
String uriASPS = this.idServizioFactory.getUriFromAccordo(asps);
boolean showVerificaCertificati = false;
if(gestioneFruitori) {
showVerificaCertificati = this.core.isFruizioniVerificaCertificati();
}
else {
showVerificaCertificati = this.core.isErogazioniVerificaCertificati();
}
// SCHEMA Assegnazione dati -> DataElement:
// Data Element 1. colonna 1, riga superiore: Titolo Servizio
// Data Element 2. colonna 1, riga inferiore: Metadati Servizio
// Data Element 3..n . colonna 2, lista riepilogo configurazioni
// Titolo Servizio
DataElement de = new DataElement();
String labelServizio = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, protocollo);
de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_NOME_SERVIZIO);
List<Parameter> listParameters = new ArrayList<>();
listParameters.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, asps.getId() + ""));
listParameters.add(pNomeServizio);
listParameters.add(pTipoServizio);
listParameters.add(pIdsoggErogatore);
if(gestioneFruitori) {
listParameters.add(pTipoSoggettoFruitore);
listParameters.add(pNomeSoggettoFruitore);
}
de.setUrl(ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_CHANGE, listParameters.toArray(new Parameter[1]));
de.setValue(labelServizio);
if(gestioneFruitori) {
de.setIdToRemove(uriASPS+"@"+fruitore.getTipo()+"/"+fruitore.getNome());
}else {
de.setIdToRemove(uriASPS);
}
de.setType(DataElementType.TITLE);
e.add(de);
AccordoServizioParteComuneSintetico apc = listApc.get(i);
ServiceBinding serviceBinding = this.apcCore.toMessageServiceBinding(apc.getServiceBinding());
DataElement dataElementStatoApi = null;
String labelCanalePorta = null;
// stato gruppi
if(showConfigurazionePA) {
List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
List<PortaApplicativa> listaPorteApplicativeAssociate = new ArrayList<>();
String nomePortaDefault = null;
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
PortaApplicativa pa = this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa());
if(mappinErogazione.isDefault()) {
nomePortaDefault = mappinErogazione.getIdPortaApplicativa().getNome();
labelCanalePorta = pa.getCanale();
}
listaPorteApplicativeAssociate.add(pa);
}
dataElementStatoApi = this.newDataElementStatoApiErogazione(null, true, asps, apc, nomePortaDefault, listaMappingErogazionePortaApplicativa, listaPorteApplicativeAssociate);
}
if(showConfigurazionePD) {
List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);
List<PortaDelegata> listaPorteDelegateAssociate = new ArrayList<>();
String nomePortaDefault = null;
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
PortaDelegata pd = this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata());
if(mappingFruizione.isDefault()) {
nomePortaDefault = mappingFruizione.getIdPortaDelegata().getNome();
labelCanalePorta = pd.getCanale();
}
listaPorteDelegateAssociate.add(pd);
}
dataElementStatoApi = this.newDataElementStatoApiFruizione(null, true, asps, apc, nomePortaDefault, listaMappingFruzionePortaDelegata, listaPorteDelegateAssociate);
}
// Metadati Servizio
de = new DataElement();
String labelAPI = this.getLabelIdAccordo(apc);
String labelServiceBinding = null;
switch (serviceBinding) {
case REST:
labelServiceBinding= CostantiControlStation.LABEL_PARAMETRO_SERVICE_BINDING_REST;
break;
case SOAP:
default:
labelServiceBinding= CostantiControlStation.LABEL_PARAMETRO_SERVICE_BINDING_SOAP;
break;
}
if(gestioneCanaliEnabled) {
if(labelCanalePorta == null) { // default dell'accordo
labelCanalePorta = apc.getCanale();
}
if(labelCanalePorta == null) { // default del sistema
labelCanalePorta = canaleConfigurazioneDefault!=null ? canaleConfigurazioneDefault.getNome() : null;
}
if(showProtocolli) {
String labelProtocollo =this.getLabelProtocollo(protocollo);
de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_CON_PROFILO_CON_CANALE, labelServiceBinding, labelAPI, labelCanalePorta, labelProtocollo));
} else {
de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_LIST_CON_CANALE, labelServiceBinding, labelAPI, labelCanalePorta));
}
} else {
if(showProtocolli) {
String labelProtocollo =this.getLabelProtocollo(protocollo);
de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_CON_PROFILO, labelServiceBinding, labelAPI, labelProtocollo));
} else {
de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_LIST, labelServiceBinding, labelAPI));
}
}
de.setType(DataElementType.SUBTITLE);
e.add(de);
// tags
List<GruppoSintetico> gruppo = apc.getGruppo();
if(gruppo != null && !gruppo.isEmpty()) {
for (int j = 0; j < gruppo.size(); j++) {
GruppoSintetico gruppoSintetico = gruppo.get(j);
de = new DataElement();
de.setName(ApiCostanti.PARAMETRO_APC_API_GESTIONE_GRUPPO + "_" + j);
de.setType(DataElementType.BUTTON);
de.setLabel(gruppoSintetico.getNome());
int indexOf = tagsDisponibili.indexOf(gruppoSintetico.getNome());
if(indexOf == -1)
indexOf = 0;
indexOf = indexOf % CostantiControlStation.NUMERO_GRUPPI_CSS;
de.setStyleClass("label-info-"+indexOf);
e.add(de);
}
}
if(dataElementStatoApi!=null) {
e.add(dataElementStatoApi);
}
if(visualizzaGruppi) {
// Data Element 3..n . colonna 2, lista riepilogo configurazioni
if(showConfigurazionePA) {
boolean visualizzaMTOM = true;
boolean visualizzaSicurezza = true;
boolean visualizzaCorrelazione = true;
switch (serviceBinding) {
case REST:
visualizzaMTOM = false;
visualizzaSicurezza = true;
visualizzaCorrelazione = true;
break;
case SOAP:
default:
visualizzaMTOM = true;
visualizzaSicurezza = true;
visualizzaCorrelazione = true;
break;
}
// Utilizza la configurazione come parent
ServletUtils.setObjectIntoSession(this.request, this.session, PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE, PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT);
List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
List<PortaApplicativa> listaPorteApplicativeAssociate = new ArrayList<>();
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
listaPorteApplicativeAssociate.add(this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa()));
}
/** // controllo accessi
// boolean controlloAccessiAbilitato = false;
// for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
// String statoControlloAccessi = this.getStatoControlloAccessiPortaApplicativa(paAssociata);
//
// if(statoControlloAccessi.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
// controlloAccessiAbilitato = true;
// break;
// }
// }
//
// if(controlloAccessiAbilitato) {
// de = new DataElement();
// de.setType(DataElementType.IMAGE);
// de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONTROLLO_ACCESSI);
// e.add(de);
// }*/
// controllo accessi (tre box: gestioneToken, autenticazione, autorizzazione)
boolean gestioneTokenAbilitato = false;
for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
String statoGestioneToken = this.getStatoGestioneTokenPortaApplicativa(paAssociata);
if(statoGestioneToken.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
gestioneTokenAbilitato = true;
break;
}
}
if(gestioneTokenAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_GESTIONE_TOKEN);
e.add(de);
}
boolean autenticazioneAbilitato = false;
for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
String statoAutenticazione = this.getStatoAutenticazionePortaApplicativa(paAssociata);
if(statoAutenticazione.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
autenticazioneAbilitato = true;
break;
}
}
if(autenticazioneAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTENTICAZIONE);
e.add(de);
}
boolean autorizzazioneAbilitato = false;
for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
String statoAutorizzazione = this.getStatoAutorizzazionePortaApplicativa(paAssociata);
if(statoAutorizzazione.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
autorizzazioneAbilitato = true;
break;
}
}
if(autorizzazioneAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTORIZZAZIONE_DIFFERENTE_DA_TRASPORTO_E_TOKEN);
e.add(de);
}
// validazione contenuti
boolean controlloValidazioneContentuiAbilitato = false;
for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
String statoValidazione = this.getStatoValidazionePortaApplicativa(paAssociata);
if(!statoValidazione.equals(PorteDelegateCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_DELEGATE_VALIDAZIONE_DISABILITATO)) {
controlloValidazioneContentuiAbilitato = true;
break;
}
}
if(controlloValidazioneContentuiAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI);
e.add(de);
}
// message security
if(visualizzaSicurezza) {
boolean controlloMessageSecurityAbilitato = false;
for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
String statoMessageSecurity = this.getStatoMessageSecurityPortaApplicativa(paAssociata);
if(statoMessageSecurity.equals(CostantiConfigurazione.ABILITATO.toString())) {
controlloMessageSecurityAbilitato = true;
break;
}
}
if(controlloMessageSecurityAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MESSAGE_SECURITY);
e.add(de);
}
}
//mtom
if(visualizzaMTOM) {
boolean controlloMTOMAbilitato = false;
for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
String statoMTOM = this.getStatoMTOMPortaApplicativa(paAssociata);
if(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM_ABILITATO.equals(statoMTOM)) {
controlloMTOMAbilitato = true;
break;
}
}
if(controlloMTOMAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM);
e.add(de);
}
}
// correlazione applicativa
if(visualizzaCorrelazione) {
boolean controlloCorrelazioneApplicativaAbilitato = false;
for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
String statoTracciamento = this.getStatoTracciamentoPortaApplicativa(paAssociata);
if(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA_ABILITATA.equals(statoTracciamento)){
controlloCorrelazioneApplicativaAbilitato = true;
break;
}
}
if(controlloCorrelazioneApplicativaAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_TRACCIAMENTO);
e.add(de);
}
}
// dump
boolean controlloDumpAbilitato = false;
for (PortaApplicativa paAssociata : listaPorteApplicativeAssociate) {
String statoDump = this.getStatoDumpPortaApplicativa(paAssociata, true);
if(!statoDump.startsWith(CostantiControlStation.LABEL_PARAMETRO_DUMP_STATO_DEFAULT)){
controlloDumpAbilitato = true;
break;
}
}
if(controlloDumpAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE);
e.add(de);
}
} else if(showConfigurazionePD) {
// Utilizza la configurazione come parent
ServletUtils.setObjectIntoSession(this.request, this.session, PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE, PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT);
List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);
List<PortaDelegata> listaPorteDelegateAssociate = new ArrayList<>();
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
listaPorteDelegateAssociate.add(this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata()));
}
boolean visualizzaMTOM = true;
boolean visualizzaSicurezza = true;
boolean visualizzaCorrelazione = true;
switch (serviceBinding) {
case REST:
visualizzaMTOM = false;
visualizzaSicurezza = true;
visualizzaCorrelazione = true;
break;
case SOAP:
default:
visualizzaMTOM = true;
visualizzaSicurezza = true;
visualizzaCorrelazione = true;
break;
}
/** // controllo accessi
// boolean controlloAccessiAbilitato = false;
// for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
// String statoControlloAccessi = this.getStatoControlloAccessiPortaDelegata(pdAssociata);
//
// if(statoControlloAccessi.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
// controlloAccessiAbilitato = true;
// break;
// }
// }
//
// if(controlloAccessiAbilitato) {
// de = new DataElement();
// de.setType(DataElementType.IMAGE);
// de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONTROLLO_ACCESSI);
// e.add(de);
// }*/
// controllo accessi (tre box: gestioneToken, autenticazione, autorizzazione)
boolean gestioneTokenAbilitato = false;
for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
String statoGestioneToken = this.getStatoGestioneTokenPortaDelegata(pdAssociata);
if(statoGestioneToken.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
gestioneTokenAbilitato = true;
break;
}
}
if(gestioneTokenAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_GESTIONE_TOKEN);
e.add(de);
}
boolean autenticazioneAbilitato = false;
for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
String statoAutenticazione = this.getStatoAutenticazionePortaDelegata(pdAssociata);
if(statoAutenticazione.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
autenticazioneAbilitato = true;
break;
}
}
if(autenticazioneAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTENTICAZIONE);
e.add(de);
}
boolean autorizzazioneAbilitato = false;
for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
String statoAutorizzazione = this.getStatoAutorizzazionePortaDelegata(pdAssociata);
if(statoAutorizzazione.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
autorizzazioneAbilitato = true;
break;
}
}
if(autorizzazioneAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTORIZZAZIONE_DIFFERENTE_DA_TRASPORTO_E_TOKEN);
e.add(de);
}
// validazione contenuti
boolean controlloValidazioneContentuiAbilitato = false;
for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
String statoValidazione = this.getStatoValidazionePortaDelegata(pdAssociata);
if(!statoValidazione.equals(PorteDelegateCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_DELEGATE_VALIDAZIONE_DISABILITATO)) {
controlloValidazioneContentuiAbilitato = true;
break;
}
}
if(controlloValidazioneContentuiAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_VALIDAZIONE_CONTENUTI);
e.add(de);
}
// message security
if(visualizzaSicurezza) {
boolean controlloMessageSecurityAbilitato = false;
for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
String statoMessageSecurity = this.getStatoMessageSecurityPortaDelegata(pdAssociata);
if(statoMessageSecurity.equals(CostantiConfigurazione.ABILITATO.toString())) {
controlloMessageSecurityAbilitato = true;
break;
}
}
if(controlloMessageSecurityAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_MESSAGE_SECURITY);
e.add(de);
}
}
//mtom
if(visualizzaMTOM) {
boolean controlloMTOMAbilitato = false;
for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
String statoMTOM = this.getStatoMTOMPortaDelegata(pdAssociata);
if(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_MTOM_ABILITATO.equals(statoMTOM)) {
controlloMTOMAbilitato = true;
break;
}
}
if(controlloMTOMAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_MTOM);
e.add(de);
}
}
// correlazione applicativa
if(visualizzaCorrelazione) {
boolean controlloCorrelazioneApplicativaAbilitato = false;
for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
String statoTracciamento = this.getStatoTracciamentoPortaDelegata(pdAssociata);
if(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CORRELAZIONE_APPLICATIVA_ABILITATA.equals(statoTracciamento)){
controlloCorrelazioneApplicativaAbilitato = true;
break;
}
}
if(controlloCorrelazioneApplicativaAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CORRELAZIONE_APPLICATIVA);
e.add(de);
}
}
// dump
boolean controlloDumpAbilitato = false;
for (PortaDelegata pdAssociata : listaPorteDelegateAssociate) {
String statoDump = this.getStatoDumpPortaDelegata(pdAssociata, true);
if(!statoDump.startsWith(CostantiControlStation.LABEL_PARAMETRO_DUMP_STATO_DEFAULT)){
controlloDumpAbilitato = true;
break;
}
}
if(controlloDumpAbilitato) {
de = new DataElement();
de.setType(DataElementType.IMAGE);
de.setValue(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_DUMP_CONFIGURAZIONE);
e.add(de);
}
}
}
String idServizioButton = gestioneFruitori ? uriASPS+"@"+fruitore.getTipo()+"/"+fruitore.getNome() : uriASPS;
// In Uso Button
this.addInUsoInfoButton(e,
labelServizio,
idServizioButton,
gestioneFruitori ? InUsoType.FRUIZIONE_INFO : InUsoType.EROGAZIONE_INFO);
// Verifica Certificati
if(showVerificaCertificati) {
List<Parameter> listParametersServizioModificaProfilo = null;
List<Parameter> listParametersServizioFruitoriModificaProfilo = null;
listParametersServizioModificaProfilo = new ArrayList<>();
listParametersServizioModificaProfilo.addAll(listParameters);
listParametersServizioModificaProfilo.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_PROFILO, true+""));
listParametersServizioModificaProfilo.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CERTIFICATI_FROM_LISTA, true+""));
if(gestioneFruitori) {
listParametersServizioFruitoriModificaProfilo = new ArrayList<>();
listParametersServizioFruitoriModificaProfilo.addAll(listParametersServizioModificaProfilo);
Parameter pIdFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_ID, fruitore.getId()+ "");
listParametersServizioFruitoriModificaProfilo.add(pIdFruitore);
}
if(gestioneFruitori) {
this.addComandoVerificaCertificatiButton(e, labelServizio, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_VERIFICA_CERTIFICATI, listParametersServizioFruitoriModificaProfilo);
}
else {
this.addComandoVerificaCertificatiButton(e, labelServizio, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_VERIFICA_CERTIFICATI, listParametersServizioModificaProfilo);
}
}
// se e' abilitata l'opzione reset cache per elemento, visualizzo il comando nell'elenco dei comandi disponibili nella lista
if(this.core.isElenchiVisualizzaComandoResetCacheSingoloElemento()){
List<Parameter> listaParametriChange = new ArrayList<>();
listaParametriChange.addAll(listParameters);
this.addComandoResetCacheButton(e, labelServizio, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_CHANGE, listaParametriChange);
}
// Proprieta Button
/**
* troppo costo fare il merge per ogni elemento della lista. Lascio la possibilità di invocare le proprietà sempre.
* ProprietaOggetto pOggetto = null;
if(gestioneFruitori) {
pOggetto = ProprietaOggettoRegistro.mergeProprietaOggetto(fruitore.getProprietaOggetto(), idServizio, idSoggettoFruitore, this.porteDelegateCore, this);
}
else {
pOggetto = ProprietaOggettoRegistro.mergeProprietaOggetto(asps.getProprietaOggetto(), idServizio, this.porteApplicativeCore, this.saCore, this);
}*/
if(gestioneFruitori
/**&& this.existsProprietaOggetto(pOggetto, fruitore.getDescrizione())*/
) {
this.addProprietaOggettoButton(e, labelServizio, idServizioButton,
InUsoType.FRUIZIONE);
}
else if(!gestioneFruitori
/**&& this.existsProprietaOggetto(pOggetto, asps.getDescrizione())*/
) {
this.addProprietaOggettoButton(e, labelServizio, idServizioButton,
InUsoType.EROGAZIONE);
}
// aggiungo entry
dati.add(e);
}
}
this.pd.setDati(dati);
this.pd.setAddButton(true);
// preparo bottoni
if(lista!=null && !lista.isEmpty() &&
this.core.isShowPulsantiImportExport()) {
ExporterUtils exporterUtils = new ExporterUtils(this.archiviCore);
if(exporterUtils.existsAtLeastOneExportMode(ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA, this.request, this.session)){
List<AreaBottoni> bottoni = new ArrayList<>();
AreaBottoni ab = new AreaBottoni();
List<DataElement> otherbott = new ArrayList<>();
DataElement de = new DataElement();
de.setValue(AccordiServizioParteSpecificaCostanti.LABEL_APS_ESPORTA_SELEZIONATI);
if(gestioneFruitori) {
de.setOnClick(AccordiServizioParteSpecificaCostanti.LABEL_FRUIZIONI_ESPORTA_SELEZIONATI_ONCLICK);
}
else {
de.setOnClick(AccordiServizioParteSpecificaCostanti.LABEL_EROGAZIONI_ESPORTA_SELEZIONATI_ONCLICK);
}
de.setDisabilitaAjaxStatus();
otherbott.add(de);
ab.setBottoni(otherbott);
bottoni.add(ab);
this.pd.setAreaBottoni(bottoni);
}
}
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new DriverControlStationException(e);
}
}
public List<List<DataElement>> addErogazioneToDati(List<List<DataElement>> datiPagina, TipoOperazione tipoOp,
AccordoServizioParteSpecifica asps, AccordoServizioParteComuneSintetico as, String protocollo,ServiceBinding serviceBinding ,
boolean gestioneErogatori, boolean gestioneFruitori,
List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa,
List<PortaApplicativa> listaPorteApplicativeAssociate,
List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata,
List<PortaDelegata> listaPorteDelegateAssociate, Fruitore fruitore) throws Exception {
boolean visualizzaGruppi = false;
if(gestioneFruitori)
this.pd.setCustomListViewName(ErogazioniCostanti.ASPS_EROGAZIONI_NOME_VISTA_CUSTOM_FORM_FRUIZIONE);
else
this.pd.setCustomListViewName(ErogazioniCostanti.ASPS_EROGAZIONI_NOME_VISTA_CUSTOM_FORM_EROGAZIONE);
if(asps==null) {
throw new DriverControlStationException("Param asps is null");
}
boolean showProtocolli = this.core.countProtocolli(this.request, this.session)>1;
Parameter pNomeServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SERVIZIO, asps.getNome());
Parameter pTipoServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SERVIZIO, asps.getTipo());
Parameter pIdAsps = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_ASPS, asps.getId()+"");
Parameter pId = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, asps.getId()+"");
Parameter pIdSoggettoErogatore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO_EROGATORE, asps.getIdSoggetto()+"");
Parameter pIdFruitore = null;
Parameter pIdSogg = null;
Parameter pTipoSoggettoFruitore = null;
Parameter pNomeSoggettoFruitore = null;
Parameter pIdProviderFruitore = null;
if(gestioneFruitori) {
pIdFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_ID, fruitore.getId()+ "");
pIdSogg = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO, fruitore.getIdSoggetto() + "");
pTipoSoggettoFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SOGGETTO_FRUITORE, fruitore.getTipo());
pNomeSoggettoFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SOGGETTO_FRUITORE, fruitore.getNome());
Long idSoggettoLong = fruitore.getIdSoggetto();
if(idSoggettoLong==null) {
idSoggettoLong = this.soggettiCore.getIdSoggetto(fruitore.getNome(), fruitore.getTipo());
pIdSogg = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO, idSoggettoLong + "");
}
pIdProviderFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PROVIDER_FRUITORE, idSoggettoLong + "");
}
Soggetto sog = this.soggettiCore.getSoggettoRegistro(asps.getIdSoggetto());
boolean isPddEsterna = this.pddCore.isPddEsterna(sog.getPortaDominio());
boolean showSoggettoErogatoreInErogazioni = this.core.isMultitenant() &&
!this.isSoggettoMultitenantSelezionato();
boolean showSoggettoFruitoreInFruizioni = gestioneFruitori && this.core.isMultitenant() &&
!this.isSoggettoMultitenantSelezionato();
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
IDSoggetto idSoggettoFruitore = null;
if(gestioneFruitori) {
idSoggettoFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
}
IDServizio idAps = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
idAps.setPortType(asps.getPortType());
idAps.setUriAccordoServizioParteComune(asps.getAccordoServizioParteComune());
IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(protocollo);
IConsoleDynamicConfiguration consoleDynamicConfiguration = protocolFactory.createDynamicConfigurationConsole();
IRegistryReader registryReader = this.apcCore.getRegistryReader(protocolFactory);
IConfigIntegrationReader configRegistryReader = this.apcCore.getConfigIntegrationReader(protocolFactory);
ConsoleConfiguration consoleConfiguration = null;
if(gestioneErogatori) {
consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigAccordoServizioParteSpecifica(ConsoleOperationType.CHANGE, this,
registryReader, configRegistryReader, idAps );
}
else {
IDFruizione idFruizione = new IDFruizione();
idFruizione.setIdServizio(idAps);
idFruizione.setIdFruitore(new IDSoggetto(fruitore.getTipo(), fruitore.getNome()));
consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigFruizioneAccordoServizioParteSpecifica(ConsoleOperationType.CHANGE, this,
registryReader, configRegistryReader, idFruizione);
}
boolean modificaDatiProfilo = false;
if(consoleConfiguration!=null && consoleConfiguration.getConsoleItem()!=null && !consoleConfiguration.getConsoleItem().isEmpty()) {
modificaDatiProfilo = true;
}
boolean modi = this.core.isProfiloModIPA(protocollo);
boolean showVerificaCertificati = false;
if(gestioneFruitori) {
showVerificaCertificati = this.core.isFruizioniVerificaCertificati();
}
else {
showVerificaCertificati = this.core.isErogazioniVerificaCertificati();
}
boolean showVerificaCertificatiModi = false; // scudo solo per ModI
if(modi && modificaDatiProfilo) {
if(gestioneFruitori) {
showVerificaCertificatiModi = this.core.isModipaFruizioniVerificaCertificati();
}
else {
showVerificaCertificatiModi = this.core.isModipaErogazioniVerificaCertificati();
}
}
List<Parameter> listaParametriChange = new ArrayList<>();
listaParametriChange.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, asps.getId() + ""));
listaParametriChange.add(pNomeServizio);
listaParametriChange.add(pTipoServizio);
listaParametriChange.add(pIdSoggettoErogatore);
if(gestioneFruitori) {
listaParametriChange.add(pTipoSoggettoFruitore);
listaParametriChange.add(pNomeSoggettoFruitore);
listaParametriChange.add(pIdProviderFruitore);
}
List<Parameter> listParametersServizioModificaProfiloOrVerificaCertificati = null;
List<Parameter> listParametersServizioFruitoriModificaProfiloOrVerificaCertificati = null;
if(modificaDatiProfilo || showVerificaCertificati) {
listParametersServizioModificaProfiloOrVerificaCertificati = new ArrayList<>();
listParametersServizioModificaProfiloOrVerificaCertificati.addAll(listaParametriChange);
if(gestioneFruitori) {
listParametersServizioFruitoriModificaProfiloOrVerificaCertificati = new ArrayList<>();
listParametersServizioFruitoriModificaProfiloOrVerificaCertificati.addAll(listParametersServizioModificaProfiloOrVerificaCertificati);
listParametersServizioFruitoriModificaProfiloOrVerificaCertificati.add(pIdFruitore);
}
}
// sezione 1 riepilogo
List<DataElement> dati = datiPagina.get(0);
ProprietaOggetto pOggetto = this.creaProprietaOggetto(asps, gestioneFruitori, fruitore, idServizio, idSoggettoFruitore);
this.impostaComandiMenuContestuale(asps, protocollo, gestioneFruitori, fruitore,
showVerificaCertificati, listaParametriChange,
listParametersServizioModificaProfiloOrVerificaCertificati,
listParametersServizioFruitoriModificaProfiloOrVerificaCertificati, pOggetto, true, false);
// Titolo Servizio
DataElement de = new DataElement();
String labelServizio = this.getLabelIdServizioSenzaErogatore(idServizio);
String labelServizioConPortType = labelServizio;
if(asps.getPortType()!=null && !"".equals(asps.getPortType()) && !asps.getNome().equals(asps.getPortType())) {
labelServizioConPortType = labelServizioConPortType +" ("+asps.getPortType()+")";
}
de.setLabel(ErogazioniCostanti.LABEL_ASPS_MODIFICA_SERVIZIO_NOME);
de.setValue(labelServizioConPortType);
de.setStatusValue(labelServizioConPortType);
de.setType(DataElementType.TEXT);
List<Parameter> listParametersServizioModifica = new ArrayList<>();
listParametersServizioModifica.addAll(listaParametriChange);
listParametersServizioModifica.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_API, false+""));
DataElementImage imageChangeStato = null;
if(gestioneErogatori) {
String nomePortaDefault = null;
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
if(mappinErogazione.isDefault()) {
nomePortaDefault = mappinErogazione.getIdPortaApplicativa().getNome();
}
}
this.newDataElementStatoApiErogazione(de, false, asps, as, nomePortaDefault, listaMappingErogazionePortaApplicativa, listaPorteApplicativeAssociate);
if(listaMappingErogazionePortaApplicativa.size()==1) {
PortaApplicativa pa = this.porteApplicativeCore.getPortaApplicativa(listaMappingErogazionePortaApplicativa.get(0).getIdPortaApplicativa());
Parameter pIdPorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID, ""+pa.getId());
Parameter pNomePorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME_PORTA, pa.getNome());
Parameter pIdSoggPA = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, pa.getIdSoggetto() + "");
Parameter pFromApi = new Parameter(CostantiControlStation.PARAMETRO_API_PAGE_INFO, Costanti.CHECK_BOX_ENABLED_TRUE);
boolean statoPA = pa.getStato().equals(StatoFunzionalita.ABILITATO);
Parameter pAbilita = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ABILITA, (statoPA ? Costanti.CHECK_BOX_DISABLED : Costanti.CHECK_BOX_ENABLED_TRUE));
imageChangeStato = new DataElementImage();
imageChangeStato.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_ABILITAZIONE,pIdSoggPA, pNomePorta, pIdPorta,pIdAsps, pAbilita,pFromApi);
String statoMapping = statoPA ? CostantiControlStation.LABEL_PARAMETRO_PORTA_ABILITATO_TOOLTIP : CostantiControlStation.LABEL_PARAMETRO_PORTA_DISABILITATO_TOOLTIP;
imageChangeStato.setToolTip(statoMapping);
imageChangeStato.setImage(statoPA ? CostantiControlStation.ICONA_MODIFICA_TOGGLE_ON : CostantiControlStation.ICONA_MODIFICA_TOGGLE_OFF);
}
}
if(gestioneFruitori) {
String nomePortaDefault = null;
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
if(mappingFruizione.isDefault()) {
nomePortaDefault = mappingFruizione.getIdPortaDelegata().getNome();
}
}
this.newDataElementStatoApiFruizione(de, false, asps, as, nomePortaDefault, listaMappingFruzionePortaDelegata, listaPorteDelegateAssociate);
if(listaMappingFruzionePortaDelegata.size()==1) {
PortaDelegata pd = this.porteDelegateCore.getPortaDelegata(listaMappingFruzionePortaDelegata.get(0).getIdPortaDelegata());
Parameter pIdPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID, "" + pd.getId());
Parameter pNomePD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_NOME_PORTA, pd.getNome());
Parameter pIdSoggPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_SOGGETTO, pd.getIdSoggetto() + "");
Parameter pFromApi = new Parameter(CostantiControlStation.PARAMETRO_API_PAGE_INFO, Costanti.CHECK_BOX_ENABLED_TRUE);
boolean statoPD = pd.getStato().equals(StatoFunzionalita.ABILITATO);
Parameter pAbilita = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ABILITA, (statoPD ? Costanti.CHECK_BOX_DISABLED : Costanti.CHECK_BOX_ENABLED_TRUE));
imageChangeStato = new DataElementImage();
imageChangeStato.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_ABILITAZIONE,pIdPD,pNomePD,pIdSoggPD, pIdAsps, pIdFruitore, pAbilita,pFromApi);
String statoMapping = statoPD ? CostantiControlStation.LABEL_PARAMETRO_PORTA_ABILITATO_TOOLTIP : CostantiControlStation.LABEL_PARAMETRO_PORTA_DISABILITATO_TOOLTIP;
imageChangeStato.setToolTip(statoMapping);
imageChangeStato.setImage(statoPD ? CostantiControlStation.ICONA_MODIFICA_TOGGLE_ON : CostantiControlStation.ICONA_MODIFICA_TOGGLE_OFF);
}
}
DataElementImage imageChangeName = new DataElementImage();
imageChangeName.setUrl(
AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE,
listParametersServizioModifica.toArray(new Parameter[1]));
imageChangeName.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO,
AccordiServizioParteSpecificaCostanti.LABEL_APS_INFO_GENERALI));
imageChangeName.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
if(imageChangeStato!=null) {
de.addImage(imageChangeName);
}
else {
de.setImage(imageChangeName);
}
boolean descrizioneEmpty = false;
if(
(
gestioneFruitori &&
(fruitore.getDescrizione()==null || StringUtils.isEmpty(fruitore.getDescrizione()))
)
||
(
!gestioneFruitori &&
(asps.getDescrizione()==null || StringUtils.isEmpty(asps.getDescrizione()))
)
){
descrizioneEmpty = true;
}
if(descrizioneEmpty) {
DataElementImage image = new DataElementImage();
List<Parameter> listParametersServizioModificaDescrizione = new ArrayList<>();
listParametersServizioModificaDescrizione.addAll(listaParametriChange);
listParametersServizioModificaDescrizione.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_DESCRIZIONE, true+""));
image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaDescrizione.toArray(new Parameter[1]));
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_AGGIUNGI_DESCRIZIONE_TOOLTIP_CON_PARAMETRO, AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_DESCRIZIONE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_AGGIUNGI_DESCRIZIONE);
de.addImage(image);
}
if(imageChangeStato!=null) {
de.addImage(imageChangeStato);
}
dati.add(de);
// soggetto erogatore
if(gestioneFruitori || showSoggettoErogatoreInErogazioni) {
de = new DataElement();
de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_SOGGETTO_EROGATORE);
de.setValue(this.getLabelNomeSoggetto(protocollo,asps.getTipoSoggettoErogatore(),asps.getNomeSoggettoErogatore()));
de.setType(DataElementType.TEXT);
dati.add(de);
List<Parameter> listParametersServizioModificaSoggettoErogatore = new ArrayList<>();
listParametersServizioModificaSoggettoErogatore.addAll(listaParametriChange);
listParametersServizioModificaSoggettoErogatore.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_CAMBIA_SOGGETTO_EROGATORE, true+""));
DataElementImage image = new DataElementImage();
image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaSoggettoErogatore.toArray(new Parameter[1]));
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_CAMBIA_API_TOOLTIP_CON_PARAMETRO,
AccordiServizioParteSpecificaCostanti.LABEL_APS_SOGGETTO_EROGATORE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setTarget(TargetType.SELF);
de.addImage(image);
}
// API
de = new DataElement();
Parameter pTipoAccordo = AccordiServizioParteComuneUtilities.getParametroAccordoServizio(as);
String labelAPI = this.getLabelIdAccordo(as);
String labelServiceBinding = null;
switch (serviceBinding) {
case REST:
labelServiceBinding= CostantiControlStation.LABEL_PARAMETRO_SERVICE_BINDING_REST;
break;
case SOAP:
default:
labelServiceBinding= CostantiControlStation.LABEL_PARAMETRO_SERVICE_BINDING_SOAP;
break;
}
de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_ACCORDO);
de.setValue(MessageFormat.format(ErogazioniCostanti.MESSAGE_METADATI_SERVIZIO_EROGAZIONI_EDIT, labelServiceBinding, labelAPI));
de.setType(DataElementType.BUTTON);
List<String> labelsGruppi = new ArrayList<>();
List<String> valuesGruppi = new ArrayList<>();
List<GruppoSintetico> gruppi = as.getGruppo();
if(gruppi != null) {
// colleziono i tags registrati
List<String> tagsDisponibili = this.gruppiCore.getAllGruppiOrdinatiPerDataRegistrazione();
for (int i = 0; i < gruppi.size(); i++) {
GruppoSintetico gruppo = gruppi.get(i);
int indexOf = tagsDisponibili.indexOf(gruppo.getNome());
if(indexOf == -1)
indexOf = 0;
indexOf = indexOf % CostantiControlStation.NUMERO_GRUPPI_CSS;
labelsGruppi.add(gruppo.getNome());
valuesGruppi.add("label-info-"+ indexOf);
}
}
de.setLabels(labelsGruppi);
de.setValues(valuesGruppi);
// Lista di Accordi Compatibili
List<AccordoServizioParteComune> asParteComuneCompatibili = null;
try{
boolean soloAccordiConsistentiRest = false;
boolean soloAccordiConsistentiSoap = false;
if(!this.isModalitaCompleta()) {
// filtro accordi senza risorse o senza pt/operation
soloAccordiConsistentiRest = true;
soloAccordiConsistentiSoap = true;
}
List<AccordoServizioParteComune> asParteComuneCompatibiliTmp = this.apsCore.findAccordiParteComuneBySoggettoAndNome(as.getNome(),
new IDSoggetto(as.getSoggettoReferente().getTipo(), as.getSoggettoReferente().getNome()));
if(asParteComuneCompatibiliTmp!=null && !asParteComuneCompatibiliTmp.isEmpty()) {
for (AccordoServizioParteComune accordoServizioParteComune : asParteComuneCompatibiliTmp) {
boolean isValid = false;
if(org.openspcoop2.core.registry.constants.ServiceBinding.REST.equals(accordoServizioParteComune.getServiceBinding())) {
if(soloAccordiConsistentiRest) {
isValid = accordoServizioParteComune.sizeResourceList()>0;
}
}
else {
if(soloAccordiConsistentiSoap) {
if(asps!=null && asps.getPortType()!=null) {
for (int i = 0; i < accordoServizioParteComune.sizePortTypeList(); i++) {
if(accordoServizioParteComune.getPortType(i).getNome().equals(asps.getPortType()) &&
accordoServizioParteComune.getPortType(i).sizeAzioneList()>0) {
isValid = true;
break;
}
}
}
else {
isValid = accordoServizioParteComune.sizeAzioneList()>0;
}
}
}
if(isValid) {
if(asParteComuneCompatibili==null) {
asParteComuneCompatibili = new ArrayList<>();
}
asParteComuneCompatibili.add(accordoServizioParteComune);
}
}
}
}catch(Exception e){
ControlStationCore.logError("Errore durante la ricerca degli accordi parte comune compatibili", e);
}
// lista icone a dx
// n.b. iniziare ad aggiungerle da quella che deve stare piu' a dx perche' la regola css float right le allinea al contrario
boolean apiImplementataCambiabile = ErogazioniUtilities.isChangeAPIEnabled(asps, this.apsCore);
if(apiImplementataCambiabile) {
List<Parameter> listParametersServizioModificaApi = new ArrayList<>();
listParametersServizioModificaApi.addAll(listaParametriChange);
listParametersServizioModificaApi.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_CAMBIA_API, true+""));
DataElementImage image = new DataElementImage();
image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaApi.toArray(new Parameter[1]));
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_CAMBIA_API_TOOLTIP_CON_PARAMETRO,
AccordiServizioParteSpecificaCostanti.LABEL_APC_COMPOSTO_SOLO_PARTE_COMUNE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setTarget(TargetType.SELF);
de.addImage(image);
}
if(asParteComuneCompatibili!=null && asParteComuneCompatibili.size()>1) {
List<Parameter> listParametersServizioModificaApi = new ArrayList<>();
listParametersServizioModificaApi.addAll(listaParametriChange);
listParametersServizioModificaApi.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_API, true+""));
DataElementImage image = new DataElementImage();
image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaApi.toArray(new Parameter[1]));
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_UPGRADE_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO,
"Versione "+AccordiServizioParteSpecificaCostanti.LABEL_APC_COMPOSTO_SOLO_PARTE_COMUNE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_UPGRADE_CONFIGURAZIONE);
image.setTarget(TargetType.SELF);
de.addImage(image);
}
DataElementImage image = new DataElementImage();
image.setUrl(ApiCostanti.SERVLET_NAME_APC_API_CHANGE, new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, asps.getIdAccordo() + ""),
new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME, as.getNome()), pTipoAccordo);
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VISUALIZZA_TOOLTIP_CON_PARAMETRO, AccordiServizioParteSpecificaCostanti.LABEL_APC_COMPOSTO_SOLO_PARTE_COMUNE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VISUALIZZA);
image.setTarget(TargetType.BLANK);
image.setDisabilitaAjaxStatus();
de.addImage(image);
dati.add(de);
// ProtocolProperties
if(showProtocolli || modificaDatiProfilo) {
de = new DataElement();
String labelProtocollo =this.getLabelProtocollo(protocollo);
de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_PROTOCOLLO);
de.setValue(labelProtocollo);
de.setType(DataElementType.TEXT);
List<Parameter> listParametersServizioModificaProfilo = new ArrayList<>();
if(gestioneFruitori) {
listParametersServizioModificaProfilo.addAll(listParametersServizioFruitoriModificaProfiloOrVerificaCertificati);
}
else {
listParametersServizioModificaProfilo.addAll(listParametersServizioModificaProfiloOrVerificaCertificati);
}
listParametersServizioModificaProfilo.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_PROFILO, true+""));
if(modificaDatiProfilo) {
image = new DataElementImage();
if(gestioneFruitori) {
image.setUrl(
AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE,
listParametersServizioModificaProfilo.toArray(new Parameter[1]));
}
else {
image.setUrl(
AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE,
listParametersServizioModificaProfilo.toArray(new Parameter[1]));
}
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO,
AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_PROTOCOLLO));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.addImage(image);
}
if(showVerificaCertificatiModi) {
image = new DataElementImage();
image.setUrl(
ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_VERIFICA_CERTIFICATI,
listParametersServizioModificaProfilo.toArray(new Parameter[1]));
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO,
AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_PROTOCOLLO));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CERTIFICATI);
de.addImage(image);
}
dati.add(de);
}
// Fruitore
if(showSoggettoFruitoreInFruizioni) {
de = new DataElement();
de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_APS_SOGGETTO_FRUITORE);
de.setValue(this.getLabelNomeSoggetto(protocollo,fruitore.getTipo(),fruitore.getNome()));
de.setType(DataElementType.TEXT);
dati.add(de);
}
// Descrizione
if(!descrizioneEmpty) {
de = new DataElement();
de.setLabel(AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_DESCRIZIONE);
int length = 150;
String descrizione = gestioneFruitori ? fruitore.getDescrizione() : asps.getDescrizione();
if(descrizione!=null && descrizione.length()>length) {
descrizione = descrizione.substring(0, (length-4)) + " ...";
}
de.setValue(descrizione!=null ? StringEscapeUtils.escapeHtml(descrizione) : null);
de.setToolTip(gestioneFruitori ? fruitore.getDescrizione() : asps.getDescrizione());
List<Parameter> listParametersServizioModificaDescrizione = new ArrayList<>();
listParametersServizioModificaDescrizione.addAll(listaParametriChange);
listParametersServizioModificaDescrizione.add(new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_DESCRIZIONE, true+""));
image = new DataElementImage();
image.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, listParametersServizioModificaDescrizione.toArray(new Parameter[1]));
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, AccordiServizioParteSpecificaCostanti.LABEL_PARAMETRO_APS_DESCRIZIONE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.setImage(image);
dati.add(de);
}
// Url Invocazione
Parameter paIdSogg = null;
Parameter paNomePorta = null;
Parameter paIdPorta = null;
Parameter paIdAsps = null;
Parameter paConfigurazioneDati = null;
Parameter paIdProvider = null;
Parameter paIdPortaPerSA = null;
Parameter paConnettoreDaListaAPS = null;
Parameter paConfigurazioneAltroApi = null;
IDPortaApplicativa idPA = null;
PortaApplicativa paDefault = null;
PortaApplicativaServizioApplicativo paSADefault = null;
String canalePorta = null;
if(gestioneErogatori) {
ServletUtils.setObjectIntoSession(this.request, this.session, PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE, PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT);
de = new DataElement();
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_TITOLO_PORTE_APPLICATIVE_DATI_INVOCAZIONE);
de.setType(DataElementType.TEXT);
String urlInvocazione = "";
String urlInvocazioneTooltip = null;
if(!isPddEsterna){
idPA = this.porteApplicativeCore.getIDPortaApplicativaAssociataDefault(idServizio);
paDefault = this.porteApplicativeCore.getPortaApplicativa(idPA);
paSADefault = paDefault.getServizioApplicativoList().get(0);
paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
paNomePorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME_PORTA, paDefault.getNome());
paIdPorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID, ""+paDefault.getId());
paIdAsps = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_ASPS, asps.getId()+ "");
paConfigurazioneDati = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_DATI_INVOCAZIONE, Costanti.CHECK_BOX_ENABLED_TRUE);
paIdProvider = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_PROVIDER, paDefault.getIdSoggetto() + "");
paIdPortaPerSA = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_PORTA, ""+paDefault.getId());
paConnettoreDaListaAPS = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORE_DA_LISTA_APS, Costanti.CHECK_BOX_ENABLED_TRUE);
paConfigurazioneAltroApi = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_ALTRO_API, Costanti.CHECK_BOX_ENABLED_TRUE);
boolean analizeProxyPassRules = true;
UrlInvocazioneAPI urlInvocazioneConfig = this.confCore.getConfigurazioneUrlInvocazione(protocollo, RuoloContesto.PORTA_APPLICATIVA, serviceBinding, paDefault.getNome(),
new IDSoggetto(paDefault.getTipoSoggettoProprietario(), paDefault.getNomeSoggettoProprietario()),
as, paDefault.getCanale(),
analizeProxyPassRules);
urlInvocazione = urlInvocazioneConfig.getUrl();
UrlInvocazioneAPI urlInvocazioneConfigDefault = this.confCore.getConfigurazioneUrlInvocazione(protocollo, RuoloContesto.PORTA_APPLICATIVA, serviceBinding, paDefault.getNome(),
new IDSoggetto(paDefault.getTipoSoggettoProprietario(), paDefault.getNomeSoggettoProprietario()),
as, paDefault.getCanale(),
!analizeProxyPassRules);
if(urlInvocazioneConfigDefault!=null && urlInvocazioneConfigDefault.getUrl()!=null && !urlInvocazioneConfigDefault.getUrl().equals(urlInvocazione)) {
urlInvocazioneTooltip = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_BASE_URL_INVOCAZIONE_INTERNA+": "+ urlInvocazioneConfigDefault.getUrl();
}
} else {
urlInvocazione = "-";
}
de.setValue(urlInvocazione);
if(urlInvocazioneTooltip!=null) {
de.setToolTip(urlInvocazioneTooltip);
}
List<Parameter> listParametersUrlInvocazione = new ArrayList<>();
listParametersUrlInvocazione.add(paIdSogg);
listParametersUrlInvocazione.add(paNomePorta);
listParametersUrlInvocazione.add(paIdPorta);
listParametersUrlInvocazione.add(paIdAsps);
listParametersUrlInvocazione.add(paConfigurazioneDati);
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteApplicativeCostanti.LABEL_PARAMETRO_TITOLO_PORTE_APPLICATIVE_DATI_INVOCAZIONE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CHANGE, listParametersUrlInvocazione.toArray(new Parameter[1]));
de.setImage(image);
dati.add(de);
boolean visualizzaConnettore = true;
boolean checkConnettore = false;
boolean connettoreMultiploEnabled = false;
long idConnettore = 1;
for (int i = 0; i < listaPorteApplicativeAssociate.size(); i++) {
PortaApplicativa paAssociata = listaPorteApplicativeAssociate.get(i);
MappingErogazionePortaApplicativa mapping = listaMappingErogazionePortaApplicativa.get(i);
if(!mapping.isDefault()) {
PortaApplicativaServizioApplicativo portaApplicativaAssociataServizioApplicativo = paAssociata.getServizioApplicativoList().get(0);
boolean connettoreConfigurazioneRidefinito = this.isConnettoreRidefinito(paDefault, paSADefault, paAssociata, portaApplicativaAssociataServizioApplicativo, paAssociata.getServizioApplicativoList());
if(connettoreConfigurazioneRidefinito) {
visualizzaConnettore = false;
break;
}
} else {
canalePorta = paAssociata.getCanale();
}
}
if(visualizzaConnettore) {
IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(paDefault.getTipoSoggettoProprietario(), paDefault.getNomeSoggettoProprietario()));
idServizioApplicativo.setNome(paSADefault.getNome());
ServizioApplicativo sa = this.saCore.getServizioApplicativo(idServizioApplicativo);
Connettore connettore = sa.getInvocazioneServizio().getConnettore();
idConnettore = connettore.getId();
checkConnettore = org.openspcoop2.pdd.core.connettori.ConnettoreCheck.checkSupported(connettore);
connettoreMultiploEnabled = paDefault.getBehaviour() != null;
de = new DataElement();
de.setType(DataElementType.TEXT);
InvocazioneServizio is = sa.getInvocazioneServizio();
String urlConnettore = this.getLabelConnettore(sa,is,true);
if(!connettoreMultiploEnabled) {
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORE);
de.setValue(formatInfoForView(urlConnettore));
String tooltipConnettore = this.getTooltipConnettore(sa,is,true);
de.setToolTip(tooltipConnettore);
} else {
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI);
de.setValue(this.getNomiConnettoriMultipliPortaApplicativa(paDefault));
de.setToolTip(this.getToolTipConnettoriMultipliPortaApplicativa(paDefault));
}
boolean visualizzaLinkConfigurazioneConnettore =
(!this.core.isConnettoriMultipliEnabled())
||
(!connettoreMultiploEnabled );
if(visualizzaLinkConfigurazioneConnettore) {
List<Parameter> listParametersConnettore = new ArrayList<>();
listParametersConnettore.add(paIdProvider);
listParametersConnettore.add(paIdPortaPerSA);
listParametersConnettore.add(paIdAsps);
listParametersConnettore.add(new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SERVIZIO_APPLICATIVO, paSADefault.getNome()));
listParametersConnettore.add(new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO, paSADefault.getIdServizioApplicativo()+""));
listParametersConnettore.add(paConnettoreDaListaAPS);
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ENDPOINT,
listParametersConnettore.toArray(new Parameter[1]));
de.addImage(image);
}
boolean visualizzaLinkCheckConnettore =
checkConnettore &&
(
(!this.core.isConnettoriMultipliEnabled())
||
( !connettoreMultiploEnabled )
);
if(visualizzaLinkCheckConnettore) {
List<Parameter> listParametersVerificaConnettore = new ArrayList<>();
paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
listParametersVerificaConnettore.add(paIdSogg);
listParametersVerificaConnettore.add(paIdPorta);
listParametersVerificaConnettore.add(paIdAsps);
listParametersVerificaConnettore.add(paConnettoreDaListaAPS);
listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ID, idConnettore+""));
listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI, false+""));
listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO, false+""));
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, CostantiControlStation.LABEL_CONFIGURAZIONE_CONNETTIVITA));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE);
image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_VERIFICA_CONNETTORE,
listParametersVerificaConnettore.toArray(new Parameter[1]));
de.addImage(image);
}
// link alla configurazione connettori multipli e alla lista dei connettori multipli
if(this.core.isConnettoriMultipliEnabled()) {
List<Parameter> listParametersConfigutazioneConnettoriMultipli = new ArrayList<>();
paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
listParametersConfigutazioneConnettoriMultipli.add(paIdSogg);
listParametersConfigutazioneConnettoriMultipli.add(paIdPorta);
listParametersConfigutazioneConnettoriMultipli.add(paIdAsps);
listParametersConfigutazioneConnettoriMultipli.add(paConnettoreDaListaAPS);
listParametersConfigutazioneConnettoriMultipli.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI, false+""));
listParametersConfigutazioneConnettoriMultipli.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO, false+""));
listParametersConfigutazioneConnettoriMultipli.add(new Parameter(CostantiControlStation.PARAMETRO_ID_CONN_TAB, "0"));
image = new DataElementImage();
image.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_CONFIGURAZIONE_CONNETTORI_MULTIPLI_TOOLTIP);
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_CONFIGURAZIONE_CONNETTORI_MULTIPLI);
image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONFIGURAZIONE_CONNETTORI_MULTIPLI,
listParametersConfigutazioneConnettoriMultipli.toArray(new Parameter[1]));
de.addImage(image);
if(connettoreMultiploEnabled) {
image = new DataElementImage();
image.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_ELENCO_CONNETTORI_MULTIPLI_TOOLTIP);
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_ELENCO_CONNETTORI_MULTIPLI);
image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_LIST,
listParametersConfigutazioneConnettoriMultipli.toArray(new Parameter[1]));
de.addImage(image);
}
}
dati.add(de);
}
// CORS
de = new DataElement();
de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CORS);
de.setType(DataElementType.TEXT);
de.setValue(this.getStatoGestioneCorsPortaApplicativa(paDefault, false));
if(!this.isModalitaCompleta()) {
this.setStatoGestioneCORS(de, paDefault.getGestioneCors(), this.confCore.getConfigurazioneGenerale());
}
paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CORS));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_GESTIONE_CORS, paIdSogg, paIdPorta, pIdAsps);
de.setImage(image);
dati.add(de);
// Canale
CanaliConfigurazione gestioneCanali = this.confCore.getCanaliConfigurazione(false);
boolean gestioneCanaliEnabled = gestioneCanali != null && org.openspcoop2.core.config.constants.StatoFunzionalita.ABILITATO.equals(gestioneCanali.getStato());
if(gestioneCanaliEnabled) {
List<CanaleConfigurazione> canaleList = gestioneCanali != null ? gestioneCanali.getCanaleList() : new ArrayList<>();
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CANALE);
this.setStatoCanalePorta(de, canalePorta, as.getCanale(), canaleList, true);
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CANALE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_GESTIONE_CANALE, paIdSogg, paIdPorta, pIdAsps);
de.setImage(image);
dati.add(de);
}
// Opzioni Avanzate
if(!this.isModalitaStandard() && this.apsCore.getMessageEngines()!=null && !this.apsCore.getMessageEngines().isEmpty()) {
de = new DataElement();
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_OPZIONI_AVANZATE);
de.setType(DataElementType.TEXT);
de.setValue(this.getStatoOpzioniAvanzatePortaApplicativaDefault(paDefault));
if(!this.isModalitaCompleta()) {
this.setStatoOpzioniAvanzatePortaApplicativaDefault(de, paDefault.getOptions());
}
paIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, asps.getIdSoggetto() + "");
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_OPZIONI_AVANZATE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CHANGE,paIdSogg, paNomePorta, paIdPorta,pIdAsps,paConfigurazioneAltroApi);
de.setImage(image);
dati.add(de);
}
// Proprieta
this.addProprietaOggetto(dati, pOggetto);
}
if(gestioneFruitori) {
ServletUtils.setObjectIntoSession(this.request, this.session, PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE, PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT);
IDSoggetto idFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
IDPortaDelegata idPD = this.porteDelegateCore.getIDPortaDelegataAssociataDefault(idServizio, idFruitore);
PortaDelegata pdDefault = this.porteDelegateCore.getPortaDelegata(idPD);
canalePorta = pdDefault.getCanale();
Parameter pIdPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID, "" + pdDefault.getId());
Parameter pNomePD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_NOME_PORTA, pdDefault.getNome());
Parameter pIdSoggPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_SOGGETTO, pdDefault.getIdSoggetto() + "");
Parameter pConfigurazioneDati = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_CONFIGURAZIONE_DATI_INVOCAZIONE, Costanti.CHECK_BOX_ENABLED_TRUE);
Parameter pConnettoreDaListaAPS = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_CONNETTORE_DA_LISTA_APS, Costanti.CHECK_BOX_ENABLED_TRUE);
Parameter pdConfigurazioneAltroApi = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_CONFIGURAZIONE_ALTRO_API, Costanti.CHECK_BOX_ENABLED_TRUE);
// url invocazione
de = new DataElement();
de.setLabel(PorteDelegateCostanti.LABEL_PARAMETRO_TITOLO_PORTE_DELEGATE_DATI_INVOCAZIONE);
de.setType(DataElementType.TEXT);
boolean analizeProxyPassRules = true;
UrlInvocazioneAPI urlInvocazione = this.confCore.getConfigurazioneUrlInvocazione(protocollo, RuoloContesto.PORTA_DELEGATA, serviceBinding, pdDefault.getNome(), idFruitore,
as, pdDefault.getCanale(),
analizeProxyPassRules);
String urlInvocazioneAPI = urlInvocazione.getUrl();
de.setValue(urlInvocazioneAPI);
UrlInvocazioneAPI urlInvocazioneDefault = this.confCore.getConfigurazioneUrlInvocazione(protocollo, RuoloContesto.PORTA_DELEGATA, serviceBinding, pdDefault.getNome(), idFruitore,
as, pdDefault.getCanale(),
!analizeProxyPassRules);
if(urlInvocazioneDefault!=null && urlInvocazioneDefault.getUrl()!=null && !urlInvocazioneDefault.getUrl().equals(urlInvocazioneAPI)) {
de.setToolTip(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_BASE_URL_INVOCAZIONE_INTERNA+": "+urlInvocazioneDefault.getUrl());
}
List<Parameter> listParametersUrlInvocazione = new ArrayList<>();
listParametersUrlInvocazione.add(pIdPD);
listParametersUrlInvocazione.add(pNomePD);
listParametersUrlInvocazione.add(pIdSoggPD);
listParametersUrlInvocazione.add(pIdAsps);
listParametersUrlInvocazione.add(pIdFruitore);
listParametersUrlInvocazione.add(pConfigurazioneDati);
listParametersUrlInvocazione.add(pTipoSoggettoFruitore);
listParametersUrlInvocazione.add(pNomeSoggettoFruitore);
image = new DataElementImage();
image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_CHANGE, listParametersUrlInvocazione.toArray(new Parameter[1]));
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteDelegateCostanti.LABEL_PARAMETRO_TITOLO_PORTE_DELEGATE_DATI_INVOCAZIONE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.setImage(image);
dati.add(de);
boolean visualizzaConnettore = true;
boolean checkConnettore = false;
long idConnettore = 1;
for (int i = 0; i < listaPorteDelegateAssociate.size(); i++) {
PortaDelegata pdAssociata = listaPorteDelegateAssociate.get(i);
MappingFruizionePortaDelegata mapping = listaMappingFruzionePortaDelegata.get(i);
List<String> listaAzioni = null;
if(!mapping.isDefault()) {
listaAzioni = pdAssociata.getAzione().getAzioneDelegataList();
}
String azioneConnettore = null;
if(listaAzioni!=null && !listaAzioni.isEmpty()) {
azioneConnettore = listaAzioni.get(0);
}
boolean connettoreConfigurazioneRidefinito = false;
if(azioneConnettore!=null && !"".equals(azioneConnettore)) {
for (ConfigurazioneServizioAzione check : fruitore.getConfigurazioneAzioneList()) {
if(check.getAzioneList().contains(azioneConnettore)) {
connettoreConfigurazioneRidefinito = true;
break;
}
}
}
if(connettoreConfigurazioneRidefinito) {
visualizzaConnettore = false;
break;
}
}
if(visualizzaConnettore) {
org.openspcoop2.core.registry.Connettore connettore = fruitore.getConnettore();
idConnettore = connettore.getId();
checkConnettore = org.openspcoop2.pdd.core.connettori.ConnettoreCheck.checkSupported(connettore);
}
// Connettore
if(visualizzaConnettore) {
de = new DataElement();
de.setLabel(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE);
de.setType(DataElementType.TEXT);
org.openspcoop2.core.registry.Connettore connettore = fruitore.getConnettore();
String urlConnettore = this.getLabelConnettore(connettore, true, false);
String tooltipConnettore = this.getLabelConnettore(connettore, true, true);
// Controllo se richiedere il connettore
boolean connettoreStatic = false;
if(gestioneFruitori) {
connettoreStatic = this.apsCore.isConnettoreStatic(protocollo);
}
if(!connettoreStatic) {
de.setValue(formatInfoForView(urlConnettore));
de.setToolTip(tooltipConnettore);
List<Parameter> listParametersConnettore = new ArrayList<>();
listParametersConnettore.add(pId);
listParametersConnettore.add(pIdFruitore);
listParametersConnettore.add(pIdSoggettoErogatore);
listParametersConnettore.add(pIdProviderFruitore);
listParametersConnettore.add(pConnettoreDaListaAPS);
listParametersConnettore.add(pTipoSoggettoFruitore);
listParametersConnettore.add(pNomeSoggettoFruitore);
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setUrl(
AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE,
listParametersConnettore.toArray(new Parameter[1])
);
de.addImage(image);
if(checkConnettore) {
List<Parameter> listParametersVerificaConnettore = new ArrayList<>();
listParametersVerificaConnettore.add(pIdPD);
listParametersVerificaConnettore.add(pIdFruitore);
listParametersVerificaConnettore.add(pIdSoggettoErogatore);
listParametersVerificaConnettore.add(pIdProviderFruitore);
listParametersVerificaConnettore.add(pConnettoreDaListaAPS);
listParametersVerificaConnettore.add(pTipoSoggettoFruitore);
listParametersVerificaConnettore.add(pNomeSoggettoFruitore);
listParametersVerificaConnettore.add(pIdSoggPD);
listParametersVerificaConnettore.add(pIdAsps);
listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ID, idConnettore+""));
listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI, false+""));
listParametersVerificaConnettore.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO, true+""));
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, CostantiControlStation.LABEL_CONFIGURAZIONE_CONNETTIVITA));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_VERIFICA_CONFIGURAZIONE);
image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_VERIFICA_CONNETTORE,
listParametersVerificaConnettore.toArray(new Parameter[1]));
de.addImage(image);
}
}
else {
de.setValue("-");
}
dati.add(de);
}
// CORS
de = new DataElement();
de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CORS);
de.setType(DataElementType.TEXT);
de.setValue(this.getStatoGestioneCorsPortaDelegata(pdDefault, false));
if(!this.isModalitaCompleta()) {
this.setStatoGestioneCORS(de, pdDefault.getGestioneCors(), this.confCore.getConfigurazioneGenerale());
}
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CORS));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_GESTIONE_CORS, pIdPD, pNomePD, pIdSoggPD, pIdAsps, pIdFruitore);
de.setImage(image);
dati.add(de);
// Canale
CanaliConfigurazione gestioneCanali = this.confCore.getCanaliConfigurazione(false);
boolean gestioneCanaliEnabled = gestioneCanali != null && org.openspcoop2.core.config.constants.StatoFunzionalita.ABILITATO.equals(gestioneCanali.getStato());
if(gestioneCanaliEnabled) {
List<CanaleConfigurazione> canaleList = gestioneCanali != null ? gestioneCanali.getCanaleList() : new ArrayList<>();
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CANALE);
this.setStatoCanalePorta(de, canalePorta, as.getCanale(), canaleList, false);
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CANALE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_GESTIONE_CANALE, pIdPD, pNomePD, pIdSoggPD, pIdAsps, pIdFruitore);
de.setImage(image);
dati.add(de);
}
// Opzioni Avanzate
if(!this.isModalitaStandard() && this.apsCore.getMessageEngines()!=null && !this.apsCore.getMessageEngines().isEmpty()) {
de = new DataElement();
de.setLabel(PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_OPZIONI_AVANZATE);
de.setType(DataElementType.TEXT);
de.setValue(this.getStatoOpzioniAvanzatePortaDelegataDefault(pdDefault));
if(!this.isModalitaCompleta()) {
this.setStatoOpzioniAvanzatePortaDelegataDefault(de, pdDefault.getOptions());
}
image = new DataElementImage();
image.setToolTip(MessageFormat.format(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP_CON_PARAMETRO, PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_OPZIONI_AVANZATE));
image.setImage(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
image.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_CHANGE,pIdPD,pNomePD,pIdSoggPD, pIdAsps, pIdFruitore, pdConfigurazioneAltroApi);
de.setImage(image);
dati.add(de);
}
// Proprieta
this.addProprietaOggetto(dati, pOggetto);
}
Parameter pGruppiTrue = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_GESTIONE_GRUPPI,true+"");
Parameter pGruppiFalse = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_GESTIONE_GRUPPI,false+"");
Parameter pConfigurazioneTrue =new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_GESTIONE_CONFIGURAZIONI,true+"");
Parameter pConfigurazioneFalse =new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_GESTIONE_CONFIGURAZIONI,false+"");
boolean visualizzazioneTabs = !this.isModalitaCompleta();
Parameter pIdTab = new Parameter(CostantiControlStation.PARAMETRO_ID_TAB, "0");
// configurazioni
de = new DataElement();
de.setType(DataElementType.LINK);
if(gestioneErogatori)
de.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_PORTE_APPLICATIVE_LIST,
pId, pNomeServizio, pTipoServizio, pIdSoggettoErogatore,pConfigurazioneTrue,pGruppiFalse,pIdTab);
if(gestioneFruitori)
de.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_PORTE_DELEGATE_LIST,
pId, pIdSogg, pIdSoggettoErogatore, pNomeServizio, pTipoServizio, pIdFruitore,pConfigurazioneTrue,pGruppiFalse,pTipoSoggettoFruitore,pNomeSoggettoFruitore,pIdTab);
if(visualizzazioneTabs)
de.setValue(ErogazioniCostanti.LABEL_ASPS_GESTIONE_CONFIGURAZIONI_CONFIGURA);
else
de.setValue(ErogazioniCostanti.LABEL_ASPS_GESTIONE_CONFIGURAZIONI);
de.setIcon(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_GESTIONE_CONFIGURAZIONI);
dati.add(de);
if(!visualizzazioneTabs) {
// Gestione Gruppi
de = new DataElement();
de.setType(DataElementType.LINK);
if(gestioneErogatori)
de.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_PORTE_APPLICATIVE_LIST,
pId, pNomeServizio, pTipoServizio, pIdSoggettoErogatore, pConfigurazioneFalse, pGruppiTrue);
if(gestioneFruitori)
de.setUrl(AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_PORTE_DELEGATE_LIST,
pId, pIdSogg, pIdSoggettoErogatore, pNomeServizio, pTipoServizio, pIdFruitore, pConfigurazioneFalse, pGruppiTrue,pTipoSoggettoFruitore,pNomeSoggettoFruitore);
de.setValue(MessageFormat.format(ErogazioniCostanti.LABEL_ASPS_GESTIONE_GRUPPI_CON_PARAMETRO, this.getLabelAzioni(serviceBinding)));
de.setIcon(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_GESTIONE_GRUPPI_CON_PARAMETRO);
dati.add(de);
}
if(visualizzaGruppi)
this.aggiungiListaConfigurazioni(datiPagina, serviceBinding, gestioneErogatori, listaMappingErogazionePortaApplicativa, listaPorteApplicativeAssociate, listaMappingFruzionePortaDelegata, listaPorteDelegateAssociate, pIdAsps, pIdFruitore, asps, as);
return datiPagina;
}
@SuppressWarnings("unused")
private void aggiungiListaConfigurazioni(List<List<DataElement>> datiPagina, ServiceBinding serviceBinding,
boolean gestioneErogatori, List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa,
List<PortaApplicativa> listaPorteApplicativeAssociate,
List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata,
List<PortaDelegata> listaPorteDelegateAssociate,
Parameter pIdAsps,
Parameter pIdFruitore, AccordoServizioParteSpecifica asps, AccordoServizioParteComuneSintetico as) throws Exception {
Map<String,String> azioni = this.core.getAzioniConLabel(asps, as, false, true, new ArrayList<>());
boolean allActionRedefined = false;
PropertiesSourceConfiguration propertiesSourceConfiguration = this.core.getMessageSecurityPropertiesSourceConfiguration();
ConfigManager configManager = ConfigManager.getinstance(ControlStationCore.getLog());
configManager.leggiConfigurazioni(propertiesSourceConfiguration, true);
DataElement de = null;
// sezione 2 gruppi e funzionalita'
if(gestioneErogatori) { // erogazioni
boolean visualizzaMTOM = true;
boolean visualizzaSicurezza = true;
boolean visualizzaCorrelazione = true;
switch (serviceBinding) {
case REST:
visualizzaMTOM = false;
visualizzaSicurezza = true;
visualizzaCorrelazione = true;
break;
case SOAP:
default:
visualizzaMTOM = true;
visualizzaSicurezza = true;
visualizzaCorrelazione = true;
break;
}
if(azioni!=null && azioni.size()>1) {
List<String> azioniL = new ArrayList<>();
if(azioni != null && azioni.size() > 0)
azioniL.addAll(azioni.keySet());
allActionRedefined = this.allActionsRedefinedMappingErogazionePaAssociate(azioniL, listaPorteApplicativeAssociate);
}
for (int d = 0; d < listaMappingErogazionePortaApplicativa.size() ; d++) {
MappingErogazionePortaApplicativa mapping =listaMappingErogazionePortaApplicativa.get(d);
PortaApplicativa paAssociata = listaPorteApplicativeAssociate.get(d);
// controllo se la configurazione deve essere visualizzata
boolean showConfigurazione = !(mapping.isDefault() && allActionRedefined);
int numeroConfigurazioniAttive = 0;
List<String> labelDisponibili = new ArrayList<>();
List<String> urlDisponibili = new ArrayList<>();
if(showConfigurazione) {
List<DataElement> gruppoList = new ArrayList<>();
Parameter pNomePorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME_PORTA, paAssociata.getNome());
Parameter pIdNome = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME, paAssociata.getNome());
Parameter pIdSoggPA = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, paAssociata.getIdSoggetto() + "");
Parameter pIdPorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID, ""+paAssociata.getId());
Parameter pIdProvider = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_PROVIDER, paAssociata.getIdSoggetto() + "");
Parameter pIdPortaPerSA = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_PORTA, ""+paAssociata.getId());
// nome Gruppo
de = new DataElement();
de.setType(DataElementType.TITLE);
de.setLabel(mapping.getDescrizione());
gruppoList.add(de);
// controllo accessi
boolean controlloAccessiAbilitato = false;
String statoControlloAccessi = this.getStatoControlloAccessiPortaApplicativa(this.apsCore.getProtocolloAssociatoTipoServizio(asps.getTipo()), paAssociata);
if(statoControlloAccessi.equals(CostantiControlStation.DEFAULT_VALUE_ABILITATO)) {
controlloAccessiAbilitato = true;
numeroConfigurazioniAttive ++ ;
} else {
labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONTROLLO_ACCESSI);
DataElement deTmp = new DataElement();
deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONTROLLO_ACCESSI, pIdSoggPA, pIdPorta, pIdAsps);
urlDisponibili.add(deTmp.getUrl());
}
if(controlloAccessiAbilitato) {
de = new DataElement();
de.setType(DataElementType.SUBTITLE);
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONTROLLO_ACCESSI);
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_GESTIONE_TOKEN);
de.setValue(this.getStatoGestioneTokenPortaApplicativa(paAssociata));
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTENTICAZIONE);
de.setValue(this.getStatoAutenticazionePortaApplicativa(paAssociata));
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTORIZZAZIONE_DIFFERENTE_DA_TRASPORTO_E_TOKEN);
de.setValue(this.getStatoAutorizzazionePortaApplicativa(paAssociata));
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.BUTTON);
de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONTROLLO_ACCESSI, pIdSoggPA, pIdPorta, pIdAsps);
de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
gruppoList.add(de);
}
// validazione contenuti
boolean validazioneContenutiAbilitato = false;
String statoValidazione = this.getStatoValidazionePortaApplicativa(paAssociata);
if(!statoValidazione.equals(PorteDelegateCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_DELEGATE_VALIDAZIONE_DISABILITATO)) {
validazioneContenutiAbilitato = true;
numeroConfigurazioniAttive ++ ;
} else {
labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI);
DataElement deTmp = new DataElement();
deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI, pIdSoggPA, pIdPorta, pIdAsps);
urlDisponibili.add(deTmp.getUrl());
}
if(validazioneContenutiAbilitato) {
de = new DataElement();
de.setType(DataElementType.SUBTITLE);
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI);
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_STATO);
de.setValue(statoValidazione);
gruppoList.add(de);
String tipoValidazione = this.getTipoValidazionePortaApplicativa(paAssociata);
if(tipoValidazione != null) {
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_PORTE_TIPO);
de.setValue(tipoValidazione);
gruppoList.add(de);
}
de = new DataElement();
de.setType(DataElementType.BUTTON);
de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_VALIDAZIONE_CONTENUTI, pIdSoggPA, pIdPorta, pIdAsps);
de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
gruppoList.add(de);
}
// message security
if(visualizzaSicurezza) {
boolean controlloMessageSecurityAbilitato = false;
String statoMessageSecurity = this.getStatoMessageSecurityPortaApplicativa(paAssociata);
if(statoMessageSecurity.equals(CostantiConfigurazione.ABILITATO.toString())) {
controlloMessageSecurityAbilitato = true;
numeroConfigurazioniAttive ++ ;
} else {
labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MESSAGE_SECURITY);
DataElement deTmp = new DataElement();
deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_MESSAGE_SECURITY,pIdSoggPA, pIdPorta, pIdAsps);
urlDisponibili.add(deTmp.getUrl());
}
if(controlloMessageSecurityAbilitato) {
de = new DataElement();
de.setType(DataElementType.SUBTITLE);
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MESSAGE_SECURITY);
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_STATO);
de.setValue(statoMessageSecurity);
gruppoList.add(de);
MessageSecurity messageSecurity = paAssociata.getMessageSecurity();
String requestMode = null;
String responseMode = null;
if(messageSecurity != null) {
if(messageSecurity.getRequestFlow() != null){
requestMode = messageSecurity.getRequestFlow().getMode();
}
if(messageSecurity.getResponseFlow() != null){
responseMode = messageSecurity.getResponseFlow().getMode();
}
}
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RICHIESTA);
if(StringUtils.isNotEmpty(requestMode)) {
if(requestMode.equals(CostantiControlStation.VALUE_SICUREZZA_MESSAGGIO_SCHEMA_DEFAULT)) {
de.setValue(CostantiControlStation.LABEL_SICUREZZA_MESSAGGIO_SCHEMA_CONFIGURAZIONE_MANUALE);
} else {
Config configurazione = configManager.getConfigurazione(propertiesSourceConfiguration, requestMode);
de.setValue(configurazione.getLabel());
}
} else {
de.setValue(CostantiControlStation.LABEL_SICUREZZA_MESSAGGIO_SCHEMA_NESSUNO);
}
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RISPOSTA);
if(StringUtils.isNotEmpty(responseMode)) {
if(responseMode.equals(CostantiControlStation.VALUE_SICUREZZA_MESSAGGIO_SCHEMA_DEFAULT)) {
de.setValue(CostantiControlStation.LABEL_SICUREZZA_MESSAGGIO_SCHEMA_CONFIGURAZIONE_MANUALE);
} else {
Config configurazione = configManager.getConfigurazione(propertiesSourceConfiguration, responseMode);
de.setValue(configurazione.getLabel());
}
} else {
de.setValue(CostantiControlStation.LABEL_SICUREZZA_MESSAGGIO_SCHEMA_NESSUNO);
}
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.BUTTON);
de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_MESSAGE_SECURITY,pIdSoggPA, pIdPorta, pIdAsps);
de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
gruppoList.add(de);
}
}
//mtom
if(visualizzaMTOM) {
boolean controlloMTOMAbilitato = false;
String statoMTOM = this.getStatoMTOMPortaApplicativa(paAssociata);
if(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM_ABILITATO.equals(statoMTOM)) {
controlloMTOMAbilitato = true;
numeroConfigurazioniAttive ++ ;
} else {
labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM);
DataElement deTmp = new DataElement();
deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_MTOM,pIdPorta, pIdSoggPA, pIdAsps);
urlDisponibili.add(deTmp.getUrl());
}
if(controlloMTOMAbilitato) {
de = new DataElement();
de.setType(DataElementType.SUBTITLE);
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM);
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_STATO);
de.setValue(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM_ABILITATO);
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RICHIESTA);
MTOMProcessorType modeReq = this.getProcessorTypeRequestMTOMPortaApplicativa(paAssociata);
if(modeReq != null) {
de.setValue(modeReq.getValue());
} else {
de.setValue(MTOMProcessorType.DISABLE.getValue());
}
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RISPOSTA);
MTOMProcessorType modeRes = this.getProcessorTypeResponseMTOMPortaApplicativa(paAssociata);
if(modeRes != null) {
de.setValue(modeRes.getValue());
} else {
de.setValue(MTOMProcessorType.DISABLE.getValue());
}
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.BUTTON);
de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_MTOM,pIdPorta, pIdSoggPA, pIdAsps);
de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
gruppoList.add(de);
}
}
// correlazione applicativa
if(visualizzaCorrelazione) {
boolean tracciamentoAbilitato = false;
String statoTracciamento = this.getStatoTracciamentoPortaApplicativa(paAssociata);
if(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA_ABILITATA.equals(statoTracciamento)){
tracciamentoAbilitato = true;
numeroConfigurazioniAttive ++ ;
} else {
labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_TRACCIAMENTO);
DataElement deTmp = new DataElement();
deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA, pIdSoggPA, pIdPorta, pIdNome,pIdAsps);
urlDisponibili.add(deTmp.getUrl());
}
if(tracciamentoAbilitato) {
de = new DataElement();
de.setType(DataElementType.SUBTITLE);
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_TRACCIAMENTO);
gruppoList.add(de);
if(this.isRidefinitoTransazioniRegistratePortaApplicativa(paAssociata)) {
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_REGISTRAZIONE_ESITI);
de.setValue(this.getStatoTransazioniRegistratePortaApplicativa(paAssociata));
gruppoList.add(de);
}
if(this.isRidefinitoMessaggiDiagnosticiPortaApplicativa(paAssociata)) {
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_MESSAGGI_DIAGNOSTICI);
de.setValue(this.getStatoMessaggiDiagnosticiPortaApplicativa(paAssociata));
gruppoList.add(de);
}
if(this.isEnabledCorrelazioneApplicativaPortaApplicativa(paAssociata)) {
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA);
de.setValue(this.getStatoCorrelazioneApplicativaPortaApplicativa(paAssociata));
gruppoList.add(de);
}
de = new DataElement();
de.setType(DataElementType.BUTTON);
de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CORRELAZIONE_APPLICATIVA, pIdSoggPA, pIdPorta, pIdNome,pIdAsps);
de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
gruppoList.add(de);
}
}
// dump
boolean controlloDumpAbilitato = false;
String statoDump = this.getStatoDumpPortaApplicativa(paAssociata, true);
if(!statoDump.startsWith(CostantiControlStation.LABEL_PARAMETRO_DUMP_STATO_DEFAULT)){
controlloDumpAbilitato = true;
numeroConfigurazioniAttive ++ ;
} else {
labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE);
DataElement deTmp = new DataElement();
deTmp.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE, pIdSoggPA, pIdPorta, pIdAsps);
urlDisponibili.add(deTmp.getUrl());
}
if(controlloDumpAbilitato) {
de = new DataElement();
de.setType(DataElementType.SUBTITLE);
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE);
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RICHIESTA);
de.setValue(this.getStatoDumpRichiestaPortaApplicativa(paAssociata, true));
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_DUMP_SEZIONE_RISPOSTA);
de.setValue(this.getStatoDumpRispostaPortaApplicativa(paAssociata, true));
gruppoList.add(de);
de = new DataElement();
de.setType(DataElementType.BUTTON);
de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_DUMP_CONFIGURAZIONE, pIdSoggPA, pIdPorta, pIdAsps);
de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
gruppoList.add(de);
}
// connettore
if(!mapping.isDefault()) {
PortaApplicativaServizioApplicativo portaApplicativaAssociataServizioApplicativo = paAssociata.getServizioApplicativoList().get(0);
boolean connettoreConfigurazioneRidefinito = portaApplicativaAssociataServizioApplicativo.getNome().equals(paAssociata.getNome());
String servletConnettore = PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONNETTORE_DEFAULT;
if(connettoreConfigurazioneRidefinito) {
servletConnettore = PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONNETTORE_RIDEFINITO;
numeroConfigurazioniAttive ++ ;
de = new DataElement();
de.setType(DataElementType.SUBTITLE);
de.setLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORE);
gruppoList.add(de);
ServizioApplicativo sa = this.saCore.getServizioApplicativo(portaApplicativaAssociataServizioApplicativo.getIdServizioApplicativo());
InvocazioneServizio is = sa.getInvocazioneServizio();
Connettore connis = is.getConnettore();
String endpointtype = "";
if ((connis.getCustom()!=null && connis.getCustom()) &&
!connis.getTipo().equals(TipiConnettore.HTTPS.toString()) &&
!connis.getTipo().equals(TipiConnettore.FILE.toString()) &&
!connis.getTipo().equals(TipiConnettore.STATUS.toString())) {
endpointtype = TipiConnettore.CUSTOM.toString();
} else
endpointtype = connis.getTipo();
if(StringUtils.isNotEmpty(endpointtype)) {
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CONNETTORE_ENDPOINT_TYPE);
de.setValue(endpointtype);
gruppoList.add(de);
}
List<Property> cp = connis.getPropertyList();
String urlConnettore = "";
for (int i = 0; i < connis.sizePropertyList(); i++) {
Property singlecp = cp.get(i);
if (singlecp.getNome().equals(CostantiDB.CONNETTORE_HTTP_LOCATION)) {
urlConnettore = singlecp.getValore();
break;
}
}
if(StringUtils.isNotEmpty(urlConnettore)) {
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CONNETTORE_URL);
de.setValue(urlConnettore.length() > 20 ? (urlConnettore.substring(0, 17) + "...") : urlConnettore);
de.setToolTip(urlConnettore);
gruppoList.add(de);
}
de = new DataElement();
de.setType(DataElementType.BUTTON);
de.setUrl(servletConnettore, pIdSoggPA, pIdPorta, pIdAsps);
de.setValue(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE);
de.setToolTip(ErogazioniCostanti.ASPS_EROGAZIONI_ICONA_MODIFICA_CONFIGURAZIONE_TOOLTIP);
gruppoList.add(de);
} else {
labelDisponibili.add(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORE);
DataElement deTmp = new DataElement();
deTmp.setUrl(servletConnettore, pIdSoggPA, pIdPorta, pIdAsps);
urlDisponibili.add(deTmp.getUrl());
}
}
if(this.isModalitaAvanzata()) {
// proprieta'
/**
// // opzioni avanzate
// de = new DataElement();
// //fix: idsogg e' il soggetto proprietario della porta applicativa, e nn il soggetto virtuale
// de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_PROPRIETA_PROTOCOLLO_LIST, pIdSogg, pIdPorta,pIdAsps);
// if (contaListe) {
// int numProp = paAssociata.sizeProprietaList();
// ServletUtils.setDataElementVisualizzaLabel(de, (long) numProp );
// } else
// ServletUtils.setDataElementVisualizzaLabel(de);
// e.add(de);
//
// // Altro
// de = new DataElement();
// de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CHANGE,pIdSogg, pNomePorta, pIdPorta,pIdAsps,pConfigurazioneAltro);
// ServletUtils.setDataElementVisualizzaLabel(de);
// e.add(de);*/
}
// check box abilitazione
de = new DataElement();
de.setType(DataElementType.CHECKBOX);
boolean statoPA = paAssociata.getStato().equals(StatoFunzionalita.ABILITATO);
String statoMapping = statoPA ? CostantiControlStation.LABEL_PARAMETRO_PORTA_ABILITATO_TOOLTIP : CostantiControlStation.LABEL_PARAMETRO_PORTA_DISABILITATO_TOOLTIP;
de.setToolTip(statoMapping);
de.setSelected(statoPA);
de.setIcon(ErogazioniCostanti.LABEL_ASPS_ABILITA_CONFIGURAZIONE);
Parameter pAbilita = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ABILITA, (statoPA ? Costanti.CHECK_BOX_DISABLED : Costanti.CHECK_BOX_ENABLED_TRUE));
de.setUrl(PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_ABILITAZIONE,pIdSoggPA, pNomePorta, pIdPorta,pIdAsps, pAbilita);
gruppoList.add(de);
// select per modale con configurazioni disponibili
de = new DataElement();
de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUOVA_CONFIGURAZIONE+"_"+ d);
de.setLabel(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI_PARAMETRO_NUOVA_CONFIGURAZIONE);
if(!labelDisponibili.isEmpty()) {
de.setType(DataElementType.SELECT);
de.setValues(urlDisponibili);
de.setLabels(labelDisponibili);
de.setSelected(urlDisponibili.get(0));
} else {
de.setType(DataElementType.HIDDEN);
}
gruppoList.add(de);
// informazioni disegno in testa
de = new DataElement();
de.setType(DataElementType.HIDDEN);
de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUMERO_CONFIGURAZIONI_ATTIVE);
de.setValue(numeroConfigurazioniAttive + "");
gruppoList.add(0,de);
int numeroConfigurazioniDisponibili = labelDisponibili.size();
de = new DataElement();
de.setType(DataElementType.HIDDEN);
de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUMERO_CONFIGURAZIONI_DISPONIBILI);
de.setValue(numeroConfigurazioniDisponibili + "");
gruppoList.add(0,de);
datiPagina.add(gruppoList);
}
}
} else { // fruizioni
boolean visualizzaMTOM = true;
boolean visualizzaSicurezza = true;
boolean visualizzaCorrelazione = true;
switch (serviceBinding) {
case REST:
visualizzaMTOM = false;
visualizzaSicurezza = true;
visualizzaCorrelazione = true;
break;
case SOAP:
default:
visualizzaMTOM = true;
visualizzaSicurezza = true;
visualizzaCorrelazione = true;
break;
}
if(azioni!=null && azioni.size()>1) {
List<String> azioniL = new ArrayList<>();
if(azioni != null && azioni.size() > 0)
azioniL.addAll(azioni.keySet());
allActionRedefined = this.allActionsRedefinedMappingFruizionePdAssociate(azioniL, listaPorteDelegateAssociate);
}
for (int d = 0; d < listaMappingFruzionePortaDelegata.size() ; d++) {
MappingFruizionePortaDelegata mapping = listaMappingFruzionePortaDelegata.get(d);
PortaDelegata pdAssociata = listaPorteDelegateAssociate.get(d);
// controllo se la configurazione deve essere visualizzata
boolean showConfigurazione = !(mapping.isDefault() && allActionRedefined);
int numeroConfigurazioniDisponibili = 1;
int numeroConfigurazioniAttive = 0;
if(showConfigurazione) {
List<DataElement> gruppoList = new ArrayList<>();
Parameter pIdPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID, "" + pdAssociata.getId());
Parameter pNomePD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_NOME_PORTA, pdAssociata.getNome());
Parameter pIdSoggPD = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_SOGGETTO, pdAssociata.getIdSoggetto() + "");
// nome Gruppo
de = new DataElement();
de.setType(DataElementType.TITLE);
de.setLabel(mapping.getDescrizione());
gruppoList.add(de);
// check box abilitazione
de = new DataElement();
de.setType(DataElementType.CHECKBOX);
boolean statoPD = pdAssociata.getStato().equals(StatoFunzionalita.ABILITATO);
String statoMapping = statoPD ? CostantiControlStation.LABEL_PARAMETRO_PORTA_ABILITATO_TOOLTIP : CostantiControlStation.LABEL_PARAMETRO_PORTA_DISABILITATO_TOOLTIP;
de.setToolTip(statoMapping);
de.setSelected(statoPD);
de.setIcon(ErogazioniCostanti.LABEL_ASPS_ABILITA_CONFIGURAZIONE);
Parameter pAbilita = new Parameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ABILITA, (statoPD ? Costanti.CHECK_BOX_DISABLED : Costanti.CHECK_BOX_ENABLED_TRUE));
de.setUrl(PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_ABILITAZIONE,pIdPD,pNomePD,pIdSoggPD, pIdAsps, pIdFruitore, pAbilita);
gruppoList.add(de);
// informazioni disegno in testa
de = new DataElement();
de.setType(DataElementType.HIDDEN);
de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUMERO_CONFIGURAZIONI_ATTIVE);
de.setValue(numeroConfigurazioniAttive + "");
gruppoList.add(0,de);
de = new DataElement();
de.setType(DataElementType.HIDDEN);
de.setName(ErogazioniCostanti.ASPS_EROGAZIONI_PARAMETRO_NUMERO_CONFIGURAZIONI_DISPONIBILI);
de.setValue(numeroConfigurazioniDisponibili + "");
gruppoList.add(0,de);
datiPagina.add(gruppoList);
}
}
}
}
public void prepareErogazioneChange(TipoOperazione tipoOp, AccordoServizioParteSpecifica asps, IDSoggetto idSoggettoFruitore) throws Exception {
String tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
boolean gestioneFruitori = false;
boolean gestioneErogatori = false;
if(tipologia!=null) {
if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
gestioneFruitori = true;
}
else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
gestioneErogatori = true;
}
}
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
String tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(asps.getTipoSoggettoErogatore());
AccordoServizioParteComuneSintetico as = this.apcCore.getAccordoServizioSintetico(asps.getIdAccordo());
ServiceBinding serviceBinding = this.apcCore.toMessageServiceBinding(as.getServiceBinding());
String tmpTitle = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = new ArrayList<>();
List<PortaApplicativa> listaPorteApplicativeAssociate = new ArrayList<>();
if(gestioneErogatori) {
// lettura delle configurazioni associate
listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
listaPorteApplicativeAssociate.add(this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa()));
}
}
List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata = new ArrayList<>();
List<PortaDelegata> listaPorteDelegateAssociate = new ArrayList<>();
Fruitore fruitore = null;
if(gestioneFruitori) {
// In questa modalità ci deve essere un fruitore indirizzato
for (Fruitore check : asps.getFruitoreList()) {
if(check.getTipo().equals(idSoggettoFruitore.getTipo()) && check.getNome().equals(idSoggettoFruitore.getNome())) {
fruitore = check;
break;
}
}
if(fruitore!=null) {
listaMappingFruzionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
listaPorteDelegateAssociate.add(this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata()));
}
}
}
this.makeMenu();
// setto la barra del titolo
List<Parameter> lstParm = new ArrayList<>();
if(gestioneFruitori) {
lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_FRUIZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
}
else {
lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
}
lstParm.add(new Parameter(tmpTitle, null));
// setto la barra del titolo
ServletUtils.setPageDataTitle(this.pd, lstParm );
List<List<DataElement>> datiPagina = new ArrayList<>();
List<DataElement> dati = new ArrayList<>();
datiPagina.add(dati);
dati.add(ServletUtils.getDataElementForEditModeFinished());
String fromAPIPageInfo = this.getParameter(CostantiControlStation.PARAMETRO_API_PAGE_INFO);
boolean fromApi = Costanti.CHECK_BOX_ENABLED_TRUE.equalsIgnoreCase(fromAPIPageInfo);
if(fromApi) {
DataElement de = new DataElement();
de.setValue(fromAPIPageInfo);
de.setType(DataElementType.HIDDEN);
de.setName(CostantiControlStation.PARAMETRO_API_PAGE_INFO);
dati.add(de);
String nomePorta = this.getParameter(CostantiControlStation.PARAMETRO_NOME_PORTA);
de = new DataElement();
de.setValue(nomePorta);
de.setType(DataElementType.HIDDEN);
de.setName(CostantiControlStation.PARAMETRO_NOME_PORTA);
dati.add(de);
String abilita = this.getParameter(CostantiControlStation.PARAMETRO_ABILITA);
de = new DataElement();
de.setValue(abilita);
de.setType(DataElementType.HIDDEN);
de.setName(CostantiControlStation.PARAMETRO_ABILITA);
dati.add(de);
String idsogg = this.getParameter(CostantiControlStation.PARAMETRO_ID_SOGGETTO);
String id = this.getParameter(CostantiControlStation.PARAMETRO_ID);
String idFruizione = null;
String tipoSoggettoFruitore = null;
String nomeSoggettoFruitore = null;
if(fruitore!=null) {
idFruizione = fruitore.getId()+"";
tipoSoggettoFruitore = fruitore.getTipo();
nomeSoggettoFruitore = fruitore.getNome();
}
this.addHiddenFieldsToDati(tipoOp, id, idsogg, id, asps.getId()+"",
idFruizione, tipoSoggettoFruitore, nomeSoggettoFruitore,
dati);
}
else {
this.addHiddenFieldsToDati(tipoOp, asps.getId()+"", null, null, dati);
}
datiPagina = this.addErogazioneToDati(datiPagina, tipoOp, asps, as, tipoProtocollo, serviceBinding, gestioneErogatori, gestioneFruitori, listaMappingErogazionePortaApplicativa, listaPorteApplicativeAssociate, listaMappingFruzionePortaDelegata, listaPorteDelegateAssociate, fruitore);
this.pd.setDati(datiPagina);
this.pd.disableEditMode();
}
public ActionForward prepareErogazioneChangeResetCache(ActionMapping mapping, GeneralData gd, ConsoleSearch ricerca, TipoOperazione tipoOp, AccordoServizioParteSpecifica asps, IDSoggetto idSoggettoFruitore) throws Exception {
String tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
boolean gestioneFruitori = false;
boolean gestioneErogatori = false;
if(tipologia!=null) {
if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
gestioneFruitori = true;
}
else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
gestioneErogatori = true;
}
}
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
String tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(asps.getTipoSoggettoErogatore());
String tmpTitle = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
List<PortaApplicativa> listaPorteApplicativeAssociate = new ArrayList<>();
if(gestioneErogatori) {
// lettura delle configurazioni associate
List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
listaPorteApplicativeAssociate.add(this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa()));
}
}
List<PortaDelegata> listaPorteDelegateAssociate = new ArrayList<>();
Fruitore fruitore = null;
if(gestioneFruitori) {
// In questa modalità ci deve essere un fruitore indirizzato
for (Fruitore check : asps.getFruitoreList()) {
if(check.getTipo().equals(idSoggettoFruitore.getTipo()) && check.getNome().equals(idSoggettoFruitore.getNome())) {
fruitore = check;
break;
}
}
if(fruitore!=null) {
List<MappingFruizionePortaDelegata> listaMappingFruzionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruzionePortaDelegata) {
listaPorteDelegateAssociate.add(this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata()));
}
}
}
this.makeMenu();
// setto la barra del titolo
List<Parameter> lstParm = new ArrayList<>();
if(gestioneFruitori) {
lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_FRUIZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
}
else {
lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
}
lstParm.add(new Parameter(tmpTitle, null));
// setto la barra del titolo
ServletUtils.setPageDataTitle(this.pd, lstParm );
String labelServizio = getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
this.eseguiResetCacheAspsOFruitore(asps, gestioneFruitori, fruitore, labelServizio);
String resetElementoCacheS = this.getParameter(CostantiControlStation.PARAMETRO_ELIMINA_ELEMENTO_DALLA_CACHE);
boolean resetElementoCache = ServletUtils.isCheckBoxEnabled(resetElementoCacheS);
// reset delle cache richiesto dal link nella lista, torno alla lista
if(resetElementoCache) {
String userLogin = ServletUtils.getUserLoginFromSession(this.session);
int idLista = Liste.SERVIZI;
// poiche' esistono filtri che hanno necessita di postback salvo in sessione
List<AccordoServizioParteSpecifica> lista = null;
if(!ServletUtils.isSearchDone(this)) {
lista = ServletUtils.getRisultatiRicercaFromSession(this.request, this.session, idLista, AccordoServizioParteSpecifica.class);
}
ricerca = this.checkSearchParameters(idLista, ricerca);
this.clearFiltroSoggettoByPostBackProtocollo(0, ricerca, idLista);
this.checkGestione(this.request, this.session, ricerca, idLista, tipologia,true);
// preparo lista
boolean [] permessi = AccordiServizioParteSpecificaUtilities.getPermessiUtente(this);
if(lista==null) {
if(this.apsCore.isVisioneOggettiGlobale(userLogin)){
lista = this.apsCore.soggettiServizioList(null, ricerca,permessi, gestioneFruitori, gestioneErogatori);
}else{
lista = this.apsCore.soggettiServizioList(userLogin, ricerca,permessi, gestioneFruitori, gestioneErogatori);
}
}
if(!this.isPostBackFilterElement()) {
ServletUtils.setRisultatiRicercaIntoSession(this.request, this.session, idLista, lista); // salvo poiche' esistono filtri che hanno necessita di postback
}
this.prepareErogazioniList(ricerca, lista);
// salvo l'oggetto ricerca nella sessione
ServletUtils.setSearchObjectIntoSession(this.request, this.session, ricerca);
ServletUtils.setGeneralAndPageDataIntoSession(this.request, this.session, gd, this.pd);
return ServletUtils.getStrutsForwardEditModeFinished(mapping, ErogazioniCostanti.OBJECT_NAME_ASPS_EROGAZIONI, CostantiControlStation.TIPO_OPERAZIONE_RESET_CACHE_ELEMENTO);
} else { // reset richiesto dal dettaglio, torno al dettaglio
this.prepareErogazioneChange(tipoOp, asps, idSoggettoFruitore);
ServletUtils.setGeneralAndPageDataIntoSession(this.request, this.session, gd, this.pd);
return ServletUtils.getStrutsForwardEditModeFinished(mapping, ErogazioniCostanti.OBJECT_NAME_ASPS_EROGAZIONI, ForwardParams.CHANGE());
}
}
public void eseguiResetCacheAspsOFruitore(AccordoServizioParteSpecifica asps, boolean gestioneFruitori, Fruitore fruitore, String labelServizio)
throws DriverControlStationException, DriverControlStationNotFound {
// Uso lo stessoAlias
List<String> aliases = this.apcCore.getJmxPdDAliases();
String alias = null;
if(aliases!=null && !aliases.isEmpty()) {
alias = aliases.get(0);
}
long idOjectLong = -1;
if(gestioneFruitori) {
if(fruitore==null) {
throw new DriverControlStationException("Fruitore non trovato");
}
idOjectLong = fruitore.getId();
}
else {
idOjectLong = asps.getId();
}
this.apcCore.invokeJmxMethodAllNodesAndSetResult(this.pd, this.apcCore.getJmxPdDConfigurazioneSistemaNomeRisorsaConfigurazionePdD(alias),
gestioneFruitori ?
this.apcCore.getJmxPdDConfigurazioneSistemaNomeMetodoRipulisciRiferimentiCacheFruizione(alias) :
this.apcCore.getJmxPdDConfigurazioneSistemaNomeMetodoRipulisciRiferimentiCacheErogazione(alias),
MessageFormat.format(CostantiControlStation.LABEL_ELIMINATO_CACHE_SUCCESSO,labelServizio),
MessageFormat.format(CostantiControlStation.LABEL_ELIMINATO_CACHE_FALLITO_PREFIX,labelServizio),
idOjectLong);
}
public void eseguiResetCacheAspsOFruitore()
throws DriverControlStationException, DriverRegistroServiziNotFound, DriverRegistroServiziException, DriverControlStationNotFound {
String id = this.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID);
long idInt = Long.parseLong(id);
AccordoServizioParteSpecifica asps = this.apsCore.getAccordoServizioParteSpecifica(idInt);
String tipoSoggettoFruitore = this.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SOGGETTO_FRUITORE);
String nomeSoggettoFruitore = this.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SOGGETTO_FRUITORE);
IDSoggetto idSoggettoFruitore = null;
if(tipoSoggettoFruitore!=null && !"".equals(tipoSoggettoFruitore) &&
nomeSoggettoFruitore!=null && !"".equals(nomeSoggettoFruitore)) {
idSoggettoFruitore = new IDSoggetto(tipoSoggettoFruitore, nomeSoggettoFruitore);
}
String tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
boolean gestioneFruitori = false;
if(tipologia!=null && AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
gestioneFruitori = true;
}
Fruitore fruitore = null;
if(gestioneFruitori && idSoggettoFruitore != null) {
// In questa modalità ci deve essere un fruitore indirizzato
for (Fruitore check : asps.getFruitoreList()) {
if(check.getTipo().equals(idSoggettoFruitore.getTipo()) && check.getNome().equals(idSoggettoFruitore.getNome())) {
fruitore = check;
break;
}
}
}
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
String tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(asps.getTipoSoggettoErogatore());
String labelServizio = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
this.eseguiResetCacheAspsOFruitore(asps, gestioneFruitori, fruitore, labelServizio);
}
public boolean estraiElencoInvocazioni(boolean soloModI,
AccordoServizioParteSpecifica asps, IDSoggetto idSoggettoFruitore, boolean gestioneFruitori,
Fruitore fruitore, IDServizio idServizio, String tipoProtocollo, String nomeApiImpl,
List<String> listConnettoriRegistrati, List<String> listPosizioneConnettoriRegistrati,
List<org.openspcoop2.core.registry.Connettore> listConnettoriRegistry,
List<org.openspcoop2.core.config.Connettore> listConnettoriConfig, List<String> listTokenPolicyValidazione,
List<GestioneToken> listTokenPolicyValidazioneConf, List<String> listPosizioneTokenPolicyValidazione,
List<String> listTokenPolicyNegoziazione, List<String> listPosizioneTokenPolicyNegoziazione,
List<String> listAttributeAuthority, List<String> listPosizioneAttributeAuthority)
throws ProtocolException, DriverConfigurazioneException, DriverConfigurazioneNotFound {
boolean findConnettoreHttpConPrefissoHttps = false;
if(!soloModI) {
if(gestioneFruitori) {
boolean connettoreStatic = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(tipoProtocollo).createProtocolVersionManager(null).isStaticRoute();
List<MappingFruizionePortaDelegata> listaMappingFruizionePortaDelegata = this.apsCore.serviziFruitoriMappingList(fruitore.getId(), idSoggettoFruitore, idServizio, null);
for(MappingFruizionePortaDelegata mappingFruizione : listaMappingFruizionePortaDelegata) {
PortaDelegata porta = this.porteDelegateCore.getPortaDelegata(mappingFruizione.getIdPortaDelegata());
// solo le porte applicative abilitate
if(StatoFunzionalita.DISABILITATO.equals(porta.getStato())) {
continue;
}
String suffixGruppo = "";
if(!mappingFruizione.isDefault()) {
suffixGruppo = org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
"Gruppo: "+mappingFruizione.getDescrizione();
}
String nomeFruizione = nomeApiImpl+suffixGruppo;
if(porta.getGestioneToken()!=null && porta.getGestioneToken().getPolicy()!=null && !listTokenPolicyValidazione.contains(porta.getGestioneToken().getPolicy())) {
listTokenPolicyValidazione.add(porta.getGestioneToken().getPolicy());
listTokenPolicyValidazioneConf.add(porta.getGestioneToken());
listPosizioneTokenPolicyValidazione.add(nomeFruizione+
org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
"Token Policy Validazione: "+porta.getGestioneToken().getPolicy());
}
if(porta.sizeAttributeAuthorityList()>0) {
for (AttributeAuthority aa : porta.getAttributeAuthorityList()) {
if(!listAttributeAuthority.contains(aa.getNome())) {
listAttributeAuthority.add(aa.getNome());
listPosizioneAttributeAuthority.add(nomeFruizione+
org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
"Attribute Authority: "+aa.getNome());
}
}
}
if(!connettoreStatic) {
org.openspcoop2.core.registry.Connettore connettore = null;
if(mappingFruizione.isDefault()) {
connettore = fruitore.getConnettore();
}
else {
if(porta.getAzione()!=null && porta.getAzione().sizeAzioneDelegataList()>0) {
for (String az : porta.getAzione().getAzioneDelegataList()) {
for(ConfigurazioneServizioAzione config : fruitore.getConfigurazioneAzioneList()) {
if(config.getAzioneList().contains(az)) {
connettore = config.getConnettore();
break;
}
}
if(connettore!=null) {
break;
}
}
}
}
if(connettore!=null) {
TipiConnettore tipo = TipiConnettore.toEnumFromName(connettore.getTipo());
if( (!findConnettoreHttpConPrefissoHttps && TipiConnettore.HTTP.equals(tipo))
||
TipiConnettore.HTTPS.equals(tipo) ) {
String nomeConnettore = connettore.getNome();
if(listConnettoriRegistrati.contains(nomeConnettore)) {
continue;
}
String tokenPolicy = ConnettoreUtils.getNegoziazioneTokenPolicyConnettore(connettore);
if(tokenPolicy!=null && StringUtils.isNotEmpty(tokenPolicy) && !listTokenPolicyNegoziazione.contains(tokenPolicy)) {
listTokenPolicyNegoziazione.add(tokenPolicy);
listPosizioneTokenPolicyNegoziazione.add(nomeFruizione +
org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
"Token Policy Negoziazione: "+tokenPolicy);
}
if( TipiConnettore.HTTP.equals(tipo) ) {
String endpoint = ConnettoreUtils.getEndpointConnettore(connettore, false);
if(endpoint!=null) {
findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
}
}
else {
listConnettoriRegistry.add(connettore);
listConnettoriRegistrati.add(nomeConnettore);
listPosizioneConnettoriRegistrati.add(nomeFruizione);
}
}
}
}
}
}
else {
List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
for(MappingErogazionePortaApplicativa mappingErogazione : listaMappingErogazionePortaApplicativa) {
PortaApplicativa porta = this.porteApplicativeCore.getPortaApplicativa(mappingErogazione.getIdPortaApplicativa());
// solo le porte applicative abilitate
if(StatoFunzionalita.DISABILITATO.equals(porta.getStato())) {
continue;
}
String suffixGruppo = "";
if(!mappingErogazione.isDefault()) {
suffixGruppo = org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
"Gruppo: "+mappingErogazione.getDescrizione();
}
String nomeErogazione = nomeApiImpl+suffixGruppo;
if(porta.getGestioneToken()!=null && porta.getGestioneToken().getPolicy()!=null && !listTokenPolicyValidazione.contains(porta.getGestioneToken().getPolicy())) {
listTokenPolicyValidazione.add(porta.getGestioneToken().getPolicy());
listTokenPolicyValidazioneConf.add(porta.getGestioneToken());
listPosizioneTokenPolicyValidazione.add(nomeErogazione+
org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
"Token Policy Validazione: "+porta.getGestioneToken().getPolicy());
}
if(porta.sizeAttributeAuthorityList()>0) {
for (AttributeAuthority aa : porta.getAttributeAuthorityList()) {
if(!listAttributeAuthority.contains(aa.getNome())) {
listAttributeAuthority.add(aa.getNome());
listPosizioneAttributeAuthority.add(nomeErogazione+
org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
"Attribute Authority: "+aa.getNome());
}
}
}
boolean connettoreMultiploEnabled = porta.getBehaviour() != null;
for (PortaApplicativaServizioApplicativo paSA : porta.getServizioApplicativoList()) {
IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(porta.getTipoSoggettoProprietario(), porta.getNomeSoggettoProprietario()));
idServizioApplicativo.setNome(paSA.getNome());
ServizioApplicativo sa = this.saCore.getServizioApplicativo(idServizioApplicativo);
InvocazioneServizio is = sa.getInvocazioneServizio();
if(is!=null) {
org.openspcoop2.core.config.Connettore connettore = is.getConnettore();
if(connettore!=null) {
TipiConnettore tipo = TipiConnettore.toEnumFromName(connettore.getTipo());
if( (!findConnettoreHttpConPrefissoHttps && TipiConnettore.HTTP.equals(tipo))
||
TipiConnettore.HTTPS.equals(tipo) ) {
String nomeConnettore = connettore.getNome();
if(listConnettoriRegistrati.contains(nomeConnettore)) {
continue;
}
if(connettoreMultiploEnabled && paSA.getDatiConnettore()!=null &&
// solo le porte applicative abilitate
StatoFunzionalita.DISABILITATO.equals(paSA.getDatiConnettore().getStato())) {
continue;
}
String nomeErogazioneConnettore = nomeErogazione;
if(connettoreMultiploEnabled && paSA.getDatiConnettore()!=null &&
paSA.getDatiConnettore().getNome()!=null) {
nomeErogazioneConnettore = nomeErogazioneConnettore +
org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
"Connettore Multiplo: "+paSA.getDatiConnettore().getNome();
}
String tokenPolicy = ConnettoreUtils.getNegoziazioneTokenPolicyConnettore(connettore);
if(tokenPolicy!=null && StringUtils.isNotEmpty(tokenPolicy) && !listTokenPolicyNegoziazione.contains(tokenPolicy)) {
listTokenPolicyNegoziazione.add(tokenPolicy);
listPosizioneTokenPolicyNegoziazione.add(nomeErogazioneConnettore +
org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE+
"Token Policy Negoziazione: "+tokenPolicy);
}
if( TipiConnettore.HTTP.equals(tipo) ) {
String endpoint = ConnettoreUtils.getEndpointConnettore(connettore, false);
if(endpoint!=null) {
findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
}
}
else {
listConnettoriConfig.add(connettore);
listConnettoriRegistrati.add(nomeConnettore);
listPosizioneConnettoriRegistrati.add(nomeErogazioneConnettore);
}
}
}
}
}
}
}
}
return findConnettoreHttpConPrefissoHttps;
}
public void eseguiVerificaCertificati(AccordoServizioParteSpecifica asps, String alias, boolean gestioneFruitori,
Fruitore fruitore, List<String> aliases, String nomeApiImpl, boolean sicurezzaModi, boolean messageSecurity,
List<String> listConnettoriRegistrati, List<String> listPosizioneConnettoriRegistrati,
List<org.openspcoop2.core.registry.Connettore> listConnettoriRegistry,
List<org.openspcoop2.core.config.Connettore> listConnettoriConfig, List<String> listTokenPolicyValidazione,
List<GestioneToken> listTokenPolicyValidazioneConf, List<String> listPosizioneTokenPolicyValidazione,
List<String> listTokenPolicyNegoziazione, List<String> listPosizioneTokenPolicyNegoziazione,
List<String> listAttributeAuthority, List<String> listPosizioneAttributeAuthority,
boolean findConnettoreHttpConPrefissoHttps, boolean sceltaClusterId)
throws Exception {
if(alias==null && !sceltaClusterId) {
alias = CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI;
}
// -- verifica
List<String> aliasesForCheck = new ArrayList<>();
boolean all = false;
if(aliases.size()==1) {
aliasesForCheck.add(aliases.get(0));
}
else if(CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI.equals(alias)) {
aliasesForCheck.addAll(aliases);
all = true;
}
else {
aliasesForCheck.add(alias);
}
CertificateChecker certificateChecker = null;
if(all) {
certificateChecker = this.apsCore.getJmxPdDCertificateChecker();
}
else {
certificateChecker = this.apsCore.newJmxPdDCertificateChecker(aliasesForCheck);
}
StringBuilder sbDetailsError = new StringBuilder();
int sogliaWarningGiorni = this.apsCore.getVerificaCertificatiWarningExpirationDays();
String posizioneErrore = null;
String extraErrore = null;
// verifica modi
StringBuilder sbDetailsWarningModi = new StringBuilder();
String posizioneWarningModi = null;
if(sicurezzaModi) {
if(gestioneFruitori) {
org.openspcoop2.core.registry.Connettore connettore = null;
certificateChecker.checkFruizione(sbDetailsError, sbDetailsWarningModi,
false, connettore,
sicurezzaModi,
false,
asps, fruitore,
sogliaWarningGiorni);
}
else {
org.openspcoop2.core.config.Connettore connettore = null;
certificateChecker.checkErogazione(sbDetailsError, sbDetailsWarningModi,
false, connettore,
sicurezzaModi,
false,
asps,
sogliaWarningGiorni);
}
if(sbDetailsError.length()>0) {
posizioneErrore = nomeApiImpl;
}
else if(sbDetailsWarningModi.length()>0) {
posizioneWarningModi = nomeApiImpl;
}
}
// verifica connettori https
StringBuilder sbDetailsWarningConnettoriHttps = new StringBuilder();
String posizioneWarningConnettoriHttps = null;
boolean connettoreSsl = !listConnettoriRegistrati.isEmpty();
if(sbDetailsError.length()<=0 && connettoreSsl) {
if(gestioneFruitori) {
for (int i = 0; i < listConnettoriRegistry.size(); i++) {
org.openspcoop2.core.registry.Connettore connettore = listConnettoriRegistry.get(i);
String posizione = listPosizioneConnettoriRegistrati.get(i);
StringBuilder sbDetailsWarningConnettoriHttpsSecured = new StringBuilder();
certificateChecker.checkFruizione(sbDetailsError, sbDetailsWarningConnettoriHttpsSecured,
connettoreSsl, connettore,
false,
false,
asps, fruitore,
sogliaWarningGiorni);
if(sbDetailsError.length()>0) {
posizioneErrore = posizione;
break;
}
else if(sbDetailsWarningConnettoriHttps.length()<=0 && sbDetailsWarningConnettoriHttpsSecured.length()>0) {
posizioneWarningModi = nomeApiImpl;
sbDetailsWarningConnettoriHttps.append(sbDetailsWarningConnettoriHttpsSecured.toString());
}
}
}
else {
for (int i = 0; i < listConnettoriConfig.size(); i++) {
org.openspcoop2.core.config.Connettore connettore = listConnettoriConfig.get(i);
String posizione = listPosizioneConnettoriRegistrati.get(i);
StringBuilder sbDetailsWarningConnettoriHttpsSecured = new StringBuilder();
certificateChecker.checkErogazione(sbDetailsError, sbDetailsWarningConnettoriHttpsSecured,
connettoreSsl, connettore,
false,
false,
asps,
sogliaWarningGiorni);
if(sbDetailsError.length()>0) {
posizioneErrore = posizione;
break;
}
else if(sbDetailsWarningConnettoriHttps.length()<=0 && sbDetailsWarningConnettoriHttpsSecured.length()>0) {
posizioneWarningModi = nomeApiImpl;
sbDetailsWarningConnettoriHttps.append(sbDetailsWarningConnettoriHttpsSecured.toString()); // tengo solo un warning alla volta, come per gli errori
}
}
}
}
// verifica token policy validazione
StringBuilder sbDetailsWarningTokenPolicyValidazione = new StringBuilder();
String posizioneWarningTokenPolicyValidazione = null;
if(sbDetailsError.length()<=0 && listTokenPolicyValidazione!=null && !listTokenPolicyValidazione.isEmpty()) {
for (int j = 0; j < listTokenPolicyValidazione.size(); j++) {
GestioneToken policy = listTokenPolicyValidazioneConf.get(j);
String posizione = listPosizioneTokenPolicyValidazione.get(j);
GenericProperties gp = this.confCore.getGenericProperties(policy.getPolicy(), org.openspcoop2.pdd.core.token.Costanti.TIPOLOGIA, false);
if(gp!=null) {
PolicyGestioneToken policyToken = TokenUtilities.convertTo(gp, policy);
boolean httpsDynamicDiscovery = policyToken.isDynamicDiscovery();
boolean httpsValidazioneJwt = false;
boolean httpsIntrospection = false;
boolean httpsUserInfo = false;
boolean validazioneJwt = false;
if(!policyToken.isDynamicDiscovery()) {
httpsValidazioneJwt = policyToken.isValidazioneJWT() && policyToken.isValidazioneJWTLocationHttp();
httpsIntrospection = policyToken.isIntrospection();
httpsUserInfo = policyToken.isUserInfo();
validazioneJwt = policyToken.isValidazioneJWT();
}
boolean forwardToJwt = policyToken.isForwardToken();
if(httpsDynamicDiscovery &&
!policyToken.isEndpointHttps(false, false)) {
httpsDynamicDiscovery = false;
String endpoint = policyToken.getDynamicDiscoveryEndpoint();
if(endpoint!=null && StringUtils.isNotEmpty(endpoint) &&
!findConnettoreHttpConPrefissoHttps) {
findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
}
}
if(httpsValidazioneJwt &&
!policyToken.isEndpointHttps(false, false)) {
httpsValidazioneJwt = false;
String endpoint = policyToken.getValidazioneJWTLocation();
if(endpoint!=null && StringUtils.isNotEmpty(endpoint) &&
!findConnettoreHttpConPrefissoHttps) {
findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
}
}
if(httpsIntrospection &&
!policyToken.isEndpointHttps(true,false)) {
httpsIntrospection = false;
String endpoint = policyToken.getIntrospectionEndpoint();
if(endpoint!=null && StringUtils.isNotEmpty(endpoint) &&
!findConnettoreHttpConPrefissoHttps) {
findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
}
}
if(httpsUserInfo &&
!policyToken.isEndpointHttps(false,true)) {
httpsUserInfo = false;
String endpoint = policyToken.getUserInfoEndpoint();
if(endpoint!=null && StringUtils.isNotEmpty(endpoint) &&
!findConnettoreHttpConPrefissoHttps) {
findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
}
}
if(validazioneJwt) {
try {
String tokenType = policyToken.getTipoToken();
KeystoreParams keystoreParams = null;
if(org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_TYPE_JWS.equals(tokenType) ||
org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_TYPE_JWE.equals(tokenType)) {
keystoreParams = TokenUtilities.getValidazioneJwtKeystoreParams(policyToken);
}
if(keystoreParams==null) {
validazioneJwt = false;
}
}catch(Exception t) {
throw new DriverConfigurazioneException(t.getMessage(),t);
}
}
if(forwardToJwt) {
try {
KeystoreParams keystoreParams = null;
if(policyToken.isForwardTokenInformazioniRaccolte()) {
String forwardInformazioniRaccolteMode = policyToken.getForwardTokenInformazioniRaccolteMode();
if(org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_INFO_RACCOLTE_MODE_OP2_JWS.equals(forwardInformazioniRaccolteMode) ||
org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_INFO_RACCOLTE_MODE_JWS.equals(forwardInformazioniRaccolteMode) ||
org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_INFO_RACCOLTE_MODE_JWE.equals(forwardInformazioniRaccolteMode)) {
keystoreParams = TokenUtilities.getForwardToJwtKeystoreParams(policyToken);
}
}
if(keystoreParams==null) {
forwardToJwt = false;
}
}catch(Exception t) {
throw new DriverConfigurazioneException(t.getMessage(),t);
}
}
if(httpsIntrospection || httpsUserInfo || validazioneJwt || forwardToJwt) {
StringBuilder sbDetailsWarningTokenPolicyValidazioneSecured = new StringBuilder();
certificateChecker.checkTokenPolicyValidazione(sbDetailsError, sbDetailsWarningTokenPolicyValidazioneSecured,
httpsDynamicDiscovery, httpsValidazioneJwt, httpsIntrospection, httpsUserInfo,
validazioneJwt, forwardToJwt,
gp,
sogliaWarningGiorni);
if(sbDetailsWarningTokenPolicyValidazione.length()<=0 && sbDetailsWarningTokenPolicyValidazioneSecured.length()>0) {
posizioneWarningTokenPolicyValidazione = posizione;
sbDetailsWarningTokenPolicyValidazione.append(sbDetailsWarningTokenPolicyValidazioneSecured.toString()); // tengo solo un warning alla volta, come per gli errori
}
}
}
if(sbDetailsError.length()>0) {
posizioneErrore = posizione;
break;
}
}
}
// verifica token policy negoziazione
StringBuilder sbDetailsWarningTokenPolicyNegoziazione = new StringBuilder();
String posizioneWarningTokenPolicyNegoziazione = null;
if(sbDetailsError.length()<=0 && listTokenPolicyNegoziazione!=null && !listTokenPolicyNegoziazione.isEmpty()) {
for (int j = 0; j < listTokenPolicyNegoziazione.size(); j++) {
String policy = listTokenPolicyNegoziazione.get(j);
String posizione = listPosizioneTokenPolicyNegoziazione.get(j);
GenericProperties gp = this.confCore.getGenericProperties(policy, org.openspcoop2.pdd.core.token.Costanti.TIPOLOGIA_RETRIEVE, false);
if(gp!=null) {
PolicyNegoziazioneToken policyNegoziazione = TokenUtilities.convertTo(gp);
boolean https = false;
String endpoint = policyNegoziazione.getEndpoint();
if(StringUtils.isNotEmpty(endpoint)) {
if(policyNegoziazione.isEndpointHttps()) {
https = true;
}
else if(endpoint!=null && !findConnettoreHttpConPrefissoHttps) {
findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
}
}
boolean signedJwt = false;
KeystoreParams keystoreParams = null;
try {
if(policyNegoziazione.isRfc7523x509Grant()) {
// JWS Compact
keystoreParams = TokenUtilities.getSignedJwtKeystoreParams(policyNegoziazione);
}
}catch(Exception t) {
throw new DriverConfigurazioneException(t.getMessage(),t);
}
boolean riferimentoApplicativoModi = keystoreParams!=null && org.openspcoop2.pdd.core.token.Costanti.KEYSTORE_TYPE_APPLICATIVO_MODI_VALUE.equalsIgnoreCase(keystoreParams.getPath());
boolean riferimentoFruizioneModi = keystoreParams!=null && org.openspcoop2.pdd.core.token.Costanti.KEYSTORE_TYPE_FRUIZIONE_MODI_VALUE.equalsIgnoreCase(keystoreParams.getPath());
if(keystoreParams!=null &&
!riferimentoApplicativoModi &&
!riferimentoFruizioneModi) {
signedJwt = true;
}
if(https || signedJwt) {
StringBuilder sbDetailsWarningTokenPolicyNegoziazioneSecured = new StringBuilder();
certificateChecker.checkTokenPolicyNegoziazione(sbDetailsError, sbDetailsWarningTokenPolicyNegoziazioneSecured,
https, signedJwt,
gp,
sogliaWarningGiorni);
if(sbDetailsWarningTokenPolicyNegoziazione.length()<=0 && sbDetailsWarningTokenPolicyNegoziazioneSecured.length()>0) {
posizioneWarningTokenPolicyNegoziazione = posizione;
sbDetailsWarningTokenPolicyNegoziazione.append(sbDetailsWarningTokenPolicyNegoziazioneSecured.toString()); // tengo solo un warning alla volta, come per gli errori
}
}
}
if(sbDetailsError.length()>0) {
posizioneErrore = posizione;
break;
}
}
}
// attribute authority
StringBuilder sbDetailsWarningAttributeAuthority = new StringBuilder();
String posizioneWarningAttributeAuthority = null;
if(sbDetailsError.length()<=0 && listAttributeAuthority!=null && !listAttributeAuthority.isEmpty()) {
for (int j = 0; j < listAttributeAuthority.size(); j++) {
String aa = listAttributeAuthority.get(j);
String posizione = listPosizioneAttributeAuthority.get(j);
GenericProperties gp = this.confCore.getGenericProperties(aa, org.openspcoop2.pdd.core.token.Costanti.ATTRIBUTE_AUTHORITY, false);
if(gp!=null) {
PolicyAttributeAuthority policyAA = AttributeAuthorityUtilities.convertTo(gp);
boolean https = false;
String endpoint = policyAA.getEndpoint();
if(StringUtils.isNotEmpty(endpoint)) {
if(policyAA.isEndpointHttps()) {
https = true;
}
else if(endpoint!=null && !findConnettoreHttpConPrefissoHttps) {
findConnettoreHttpConPrefissoHttps = endpoint.trim().startsWith("https");
}
}
boolean jwtRichiesta = false;
try {
KeystoreParams keystoreParams = null;
if(policyAA.isRequestJws()) {
// JWS Compact
keystoreParams = AttributeAuthorityUtilities.getRequestJwsKeystoreParams(policyAA);
}
if(keystoreParams!=null) {
jwtRichiesta = true;
}
}catch(Exception t) {
throw new DriverConfigurazioneException(t.getMessage(),t);
}
boolean jwtRisposta = false;
try {
KeystoreParams truststoreParams = null;
if(policyAA.isResponseJws()) {
// JWS Compact
truststoreParams = AttributeAuthorityUtilities.getResponseJwsKeystoreParams(policyAA);
}
if(truststoreParams!=null) {
jwtRisposta = true;
}
}catch(Exception t) {
throw new DriverConfigurazioneException(t.getMessage(),t);
}
if(https || jwtRichiesta || jwtRisposta) {
StringBuilder sbDetailsWarningAttributeAuthorityDebug = new StringBuilder();
certificateChecker.checkAttributeAuthority(sbDetailsError, sbDetailsWarningAttributeAuthorityDebug,
https, jwtRichiesta, jwtRisposta,
gp,
sogliaWarningGiorni);
if(sbDetailsWarningAttributeAuthority.length()<=0 && sbDetailsWarningAttributeAuthorityDebug.length()>0) {
posizioneWarningAttributeAuthority = posizione;
sbDetailsWarningAttributeAuthority.append(sbDetailsWarningAttributeAuthorityDebug.toString()); // tengo solo un warning alla volta, come per gli errori
}
}
}
if(sbDetailsError.length()>0) {
posizioneErrore = posizione;
break;
}
}
}
// verifica certificati jvm
StringBuilder sbDetailsWarningCertificatiJvm = new StringBuilder();
String posizioneWarningCertificatiJvm = null;
String extraWarningCertificatiJvm = null;
if(sbDetailsError.length()<=0 && findConnettoreHttpConPrefissoHttps) {
certificateChecker.checkConfigurazioneJvm(sbDetailsError, sbDetailsWarningCertificatiJvm, sogliaWarningGiorni);
if(sbDetailsError.length()>0) {
posizioneErrore = nomeApiImpl;
extraErrore = "Configurazione https nella JVM";
}
else if(sbDetailsWarningCertificatiJvm.length()>0) {
posizioneWarningCertificatiJvm = nomeApiImpl;
extraWarningCertificatiJvm = "Configurazione https nella JVM";
}
}
// lasciare in ultima posizione poichè non viene generato un id univoco per poi formattare l'output
// verifica message security
StringBuilder sbDetailsWarningMessageSecurity = new StringBuilder();
String posizioneWarningMessageSecurity = null;
if(sbDetailsError.length()<=0 && messageSecurity) {
if(gestioneFruitori) {
org.openspcoop2.core.registry.Connettore connettore = null;
certificateChecker.checkFruizione(sbDetailsError, sbDetailsWarningMessageSecurity,
false, connettore,
false,
messageSecurity,
asps, fruitore,
sogliaWarningGiorni);
}
else {
org.openspcoop2.core.config.Connettore connettore = null;
certificateChecker.checkErogazione(sbDetailsError, sbDetailsWarningMessageSecurity,
false, connettore,
false,
messageSecurity,
asps,
sogliaWarningGiorni);
}
if(sbDetailsError.length()>0) {
posizioneErrore = nomeApiImpl;
}
else if(sbDetailsWarningMessageSecurity.length()>0) {
posizioneWarningMessageSecurity = nomeApiImpl;
}
}
// analisi warning
String warning = null;
String posizioneWarning = null;
String extraWarning = null;
if(sbDetailsError.length()<=0) {
if(sbDetailsWarningModi.length()>0) {
warning = sbDetailsWarningModi.toString();
posizioneWarning = posizioneWarningModi;
}
else if(sbDetailsWarningConnettoriHttps.length()>0) {
warning = sbDetailsWarningConnettoriHttps.toString();
posizioneWarning = posizioneWarningConnettoriHttps;
}
else if(sbDetailsWarningTokenPolicyValidazione.length()>0) {
warning = sbDetailsWarningTokenPolicyValidazione.toString();
posizioneWarning = posizioneWarningTokenPolicyValidazione;
}
else if(sbDetailsWarningTokenPolicyNegoziazione.length()>0) {
warning = sbDetailsWarningTokenPolicyNegoziazione.toString();
posizioneWarning = posizioneWarningTokenPolicyNegoziazione;
}
else if(sbDetailsWarningAttributeAuthority.length()>0) {
warning = sbDetailsWarningAttributeAuthority.toString();
posizioneWarning = posizioneWarningAttributeAuthority;
}
else if(sbDetailsWarningCertificatiJvm.length()>0) {
warning = sbDetailsWarningCertificatiJvm.toString();
posizioneWarning = posizioneWarningCertificatiJvm;
extraWarning = extraWarningCertificatiJvm;
}
else if(sbDetailsWarningMessageSecurity.length()>0) {
warning = sbDetailsWarningMessageSecurity.toString();
posizioneWarning = posizioneWarningMessageSecurity;
}
}
// esito
List<String> formatIds = new ArrayList<>();
formatIds.add(RegistroServiziReader.ID_CONFIGURAZIONE_CONNETTORE_HTTPS);
formatIds.add(RegistroServiziReader.ID_CONFIGURAZIONE_FIRMA_MODI);
formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_TOKEN_VALIDAZIONE_JWT);
formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_TOKEN_VALIDAZIONE_FORWARD_TO_JWT);
formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_TOKEN_NEGOZIAZIONE_SIGNED_JWT);
formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_ATTRIBUTE_AUTHORITY_JWT_RICHIESTA);
formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_ATTRIBUTE_AUTHORITY_JWT_RISPOSTA);
//formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_RICHIESTA_MESSAGE_SECURITY); // lasciare in ultima posizione poichè non viene generato un id univoco
this.apsCore.formatVerificaCertificatiEsito(this.pd, formatIds,
(sbDetailsError.length()>0 ? sbDetailsError.toString() : null), extraErrore, posizioneErrore,
warning, extraWarning, posizioneWarning,
false);
}
public boolean eseguiVerificaCertificati(boolean soloModI,
AccordoServizioParteSpecifica asps, IDSoggetto idSoggettoFruitore, String alias, boolean gestioneFruitori,
boolean gestioneErogatori, Fruitore fruitore, IDServizio idServizio, String tipoProtocollo,
List<DataElement> dati) throws Exception {
// Prendo la lista di aliases
List<String> aliases = this.apsCore.getJmxPdDAliases();
if(aliases==null || aliases.isEmpty()){
throw new CoreException("Pagina non prevista, la sezione configurazione non permette di accedere a questa pagina, se la configurazione non e' corretta");
}
// -- raccolgo dati
String nomeApiImpl = this.getLabelServizio(idSoggettoFruitore, gestioneFruitori, idServizio, tipoProtocollo);
IDServizio idAps = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
IDSoggetto idFruitore = null;
if(gestioneFruitori) {
idFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
}
boolean modi = this.apsCore.isProfiloModIPA(tipoProtocollo);
boolean sicurezzaModi = false;
if(modi) {
idAps.setPortType(asps.getPortType());
idAps.setUriAccordoServizioParteComune(asps.getAccordoServizioParteComune());
IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(tipoProtocollo);
IConsoleDynamicConfiguration consoleDynamicConfiguration = protocolFactory.createDynamicConfigurationConsole();
IRegistryReader registryReader = this.apsCore.getRegistryReader(protocolFactory);
IConfigIntegrationReader configRegistryReader = this.apsCore.getConfigIntegrationReader(protocolFactory);
ConsoleConfiguration consoleConfiguration = null;
if(!gestioneFruitori) {
consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigAccordoServizioParteSpecifica(ConsoleOperationType.CHANGE, this,
registryReader, configRegistryReader, idAps );
}
else {
IDFruizione idFruizioneObject = new IDFruizione();
idFruizioneObject.setIdServizio(idAps);
idFruizioneObject.setIdFruitore(idFruitore);
consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigFruizioneAccordoServizioParteSpecifica(ConsoleOperationType.CHANGE, this,
registryReader, configRegistryReader, idFruizioneObject);
}
if(consoleConfiguration!=null && consoleConfiguration.getConsoleItem()!=null && !consoleConfiguration.getConsoleItem().isEmpty()) {
sicurezzaModi = true;
}
if(sicurezzaModi) {
boolean includeRemoteStore = false;
boolean checkModeFruizioneKeystoreId = gestioneFruitori;
if(gestioneFruitori && fruitore.sizeProtocolPropertyList()>0) {
sicurezzaModi = ModIUtils.existsStoreConfig(fruitore.getProtocolPropertyList(), includeRemoteStore, checkModeFruizioneKeystoreId);
}
else if(gestioneErogatori && asps.sizeProtocolPropertyList()>0) {
sicurezzaModi = ModIUtils.existsStoreConfig(asps.getProtocolPropertyList(), includeRemoteStore, checkModeFruizioneKeystoreId);
}
}
}
boolean messageSecurity = false;
if(gestioneFruitori) {
List<MappingFruizionePortaDelegata> list = this.apsCore.serviziFruitoriMappingList(idFruitore,idServizio, new Search(true));
if(list!=null && !list.isEmpty()) {
for (MappingFruizionePortaDelegata mappingFruizionePortaDelegata : list) {
PortaDelegata pd = this.porteDelegateCore.getPortaDelegata(mappingFruizionePortaDelegata.getIdPortaDelegata());
List<KeystoreParams> listKeystoreParams = SecurityUtils.readRequestKeystoreParams(pd);
if(listKeystoreParams!=null && !listKeystoreParams.isEmpty()) {
messageSecurity = true;
break;
}
listKeystoreParams = SecurityUtils.readResponseKeystoreParams(pd);
if(listKeystoreParams!=null && !listKeystoreParams.isEmpty()) {
messageSecurity = true;
break;
}
}
}
}
else {
List<MappingErogazionePortaApplicativa> list = this.apsCore.mappingServiziPorteAppList(idServizio, new Search(true));
if(list!=null && !list.isEmpty()) {
for (MappingErogazionePortaApplicativa mappingErogazionePortaApplicativa : list) {
PortaApplicativa pa = this.porteApplicativeCore.getPortaApplicativa(mappingErogazionePortaApplicativa.getIdPortaApplicativa());
List<KeystoreParams> listKeystoreParams = SecurityUtils.readRequestKeystoreParams(pa);
if(listKeystoreParams!=null && !listKeystoreParams.isEmpty()) {
messageSecurity = true;
break;
}
listKeystoreParams = SecurityUtils.readResponseKeystoreParams(pa);
if(listKeystoreParams!=null && !listKeystoreParams.isEmpty()) {
messageSecurity = true;
break;
}
}
}
}
List<String> listConnettoriRegistrati = new ArrayList<>();
List<String> listPosizioneConnettoriRegistrati = new ArrayList<>();
List<org.openspcoop2.core.registry.Connettore> listConnettoriRegistry = new ArrayList<>();
List<org.openspcoop2.core.config.Connettore> listConnettoriConfig = new ArrayList<>();
List<String> listTokenPolicyValidazione = new ArrayList<>();
List<GestioneToken> listTokenPolicyValidazioneConf = new ArrayList<>();
List<String> listPosizioneTokenPolicyValidazione = new ArrayList<>();
List<String> listTokenPolicyNegoziazione = new ArrayList<>();
List<String> listPosizioneTokenPolicyNegoziazione = new ArrayList<>();
List<String> listAttributeAuthority = new ArrayList<>();
List<String> listPosizioneAttributeAuthority = new ArrayList<>();
boolean findConnettoreHttpConPrefissoHttps = this.estraiElencoInvocazioni(soloModI, asps, idSoggettoFruitore, gestioneFruitori, fruitore, idServizio, tipoProtocollo,
nomeApiImpl, listConnettoriRegistrati, listPosizioneConnettoriRegistrati, listConnettoriRegistry,
listConnettoriConfig, listTokenPolicyValidazione, listTokenPolicyValidazioneConf,
listPosizioneTokenPolicyValidazione, listTokenPolicyNegoziazione,
listPosizioneTokenPolicyNegoziazione, listAttributeAuthority, listPosizioneAttributeAuthority);
boolean verificaCertificatiEffettuata = false;
if(listConnettoriRegistrati.isEmpty() &&
listTokenPolicyValidazione.isEmpty() &&
listTokenPolicyNegoziazione.isEmpty() &&
listAttributeAuthority.isEmpty() &&
!findConnettoreHttpConPrefissoHttps &&
!sicurezzaModi&&
!messageSecurity) {
this.pd.setMessage(CostantiControlStation.LABEL_VERIFICA_CERTIFICATI_NON_PRESENTI,
Costanti.MESSAGE_TYPE_INFO);
this.pd.disableEditMode();
verificaCertificatiEffettuata = true;
}
else {
boolean sceltaClusterId = this.apsCore.isVerificaCertificatiSceltaClusterId();
if(aliases.size()==1 || alias!=null || !sceltaClusterId) {
this.eseguiVerificaCertificati(asps, alias, gestioneFruitori, fruitore, aliases,
nomeApiImpl, sicurezzaModi, messageSecurity, listConnettoriRegistrati, listPosizioneConnettoriRegistrati,
listConnettoriRegistry, listConnettoriConfig, listTokenPolicyValidazione,
listTokenPolicyValidazioneConf, listPosizioneTokenPolicyValidazione,
listTokenPolicyNegoziazione, listPosizioneTokenPolicyNegoziazione, listAttributeAuthority,
listPosizioneAttributeAuthority, findConnettoreHttpConPrefissoHttps, sceltaClusterId);
this.pd.disableEditMode();
verificaCertificatiEffettuata = true;
} else {
DataElement deTestConnettivita = new DataElement();
deTestConnettivita.setType(DataElementType.TITLE);
deTestConnettivita.setLabel(ErogazioniCostanti.LABEL_ASPS_VERIFICA_CERTIFICATI);
dati.add(deTestConnettivita);
this.addVerificaCertificatoSceltaAlias(aliases, dati);
}
}
return verificaCertificatiEffettuata;
}
}