PorteApplicativeChange.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.pa;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.openspcoop2.core.commons.Filtri;
import org.openspcoop2.core.commons.Liste;
import org.openspcoop2.core.config.CorrelazioneApplicativa;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaApplicativaAzione;
import org.openspcoop2.core.config.PortaApplicativaBehaviour;
import org.openspcoop2.core.config.PortaApplicativaServizio;
import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
import org.openspcoop2.core.config.PortaApplicativaSoggettoVirtuale;
import org.openspcoop2.core.config.Proprieta;
import org.openspcoop2.core.config.ValidazioneContenutiApplicativi;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.constants.MTOMProcessorType;
import org.openspcoop2.core.config.constants.PortaApplicativaAzioneIdentificazione;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
import org.openspcoop2.core.config.constants.StatoFunzionalitaConWarning;
import org.openspcoop2.core.config.constants.TipoAutenticazione;
import org.openspcoop2.core.config.constants.TipoAutenticazionePrincipal;
import org.openspcoop2.core.config.constants.TipoAutorizzazione;
import org.openspcoop2.core.id.IDAccordo;
import org.openspcoop2.core.id.IDPortaApplicativa;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
import org.openspcoop2.core.registry.driver.FiltroRicercaServizi;
import org.openspcoop2.core.registry.driver.IDAccordoFactory;
import org.openspcoop2.core.registry.driver.IDServizioFactory;
import org.openspcoop2.core.transazioni.utils.PropertiesSerializator;
import org.openspcoop2.message.constants.ServiceBinding;
import org.openspcoop2.pdd.core.CostantiPdD;
import org.openspcoop2.pdd.core.autorizzazione.CostantiAutorizzazione;
import org.openspcoop2.pdd.core.controllo_traffico.policy.config.PolicyConfiguration;
import org.openspcoop2.pdd.core.integrazione.GruppoIntegrazione;
import org.openspcoop2.pdd.core.integrazione.TipoIntegrazione;
import org.openspcoop2.protocol.basic.config.ImplementationConfiguration;
import org.openspcoop2.utils.date.DateManager;
import org.openspcoop2.utils.transport.TransportUtils;
import org.openspcoop2.web.ctrlstat.core.AutorizzazioneUtilities;
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.servlet.GeneralHelper;
import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCore;
import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCore;
import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCostanti;
import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaHelper;
import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniCostanti;
import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniHelper;
import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateCostanti;
import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCore;
import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
import org.openspcoop2.web.lib.mvc.BinaryParameter;
import org.openspcoop2.web.lib.mvc.Costanti;
import org.openspcoop2.web.lib.mvc.DataElement;
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.TipoOperazione;
import org.openspcoop2.web.lib.users.dao.PermessiUtente;
/**
* porteAppChange
*
* @author Andrea Poli (apoli@link.it)
* @author Stefano Corallo (corallo@link.it)
* @author Sandra Giangrandi (sandra@link.it)
* @author $Author$
* @version $Rev$, $Date$
*
*/
public final class PorteApplicativeChange extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession(true);
// Inizializzo PageData
PageData pd = new PageData();
GeneralHelper generalHelper = new GeneralHelper(session);
// Inizializzo GeneralData
GeneralData gd = generalHelper.initGeneralData(request);
try {
PorteApplicativeHelper porteApplicativeHelper = new PorteApplicativeHelper(request, pd, session);
// prelevo il flag che mi dice da quale pagina ho acceduto la sezione delle porte applicative
Integer parentPA = ServletUtils.getIntegerAttributeFromSession(PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT, session, request);
if(parentPA == null) parentPA = PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_NONE;
String nomePorta = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME_PORTA);
String idPorta = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID);
String idsogg = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO);
int soggInt = Integer.parseInt(idsogg);
String descr = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_DESCRIZIONE);
String statoPorta = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_STATO_PORTA);
String soggvirt = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_SOGGETTO_VIRTUALE);
IDSoggetto idSoggettoVirtuale = null;
if ((soggvirt != null) && !soggvirt.equals("") && !soggvirt.equals("-")) {
idSoggettoVirtuale = new IDSoggetto(soggvirt.split("/")[0],soggvirt.split("/")[1]);
}
String servizio = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_SERVIZIO);
String azione = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_AZIONE);
String stateless = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_STATELESS);
String behaviour = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_BEHAVIOUR);
String gestBody = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_GESTIONE_BODY);
String gestManifest = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_GESTIONE_MANIFEST);
String ricsim = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_RICEVUTA_ASINCRONA_SIMMETRICA);
String ricasim = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_RICEVUTA_ASINCRONA_ASIMMETRICA);
String scadcorr = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_SCADENZA_CORRELAZIONE_APPLICATIVA);
String servizioApplicativo = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_SERVIZIO_APPLICATIVO);
String azid = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_AZIONE_ID);
String modeaz = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_AZIONE);
String forceWsdlBased = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_FORCE_INTERFACE_BASED);
String messageEngine = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_GESTIONE_MESSAGE_ENGINE);
BinaryParameter allegatoXacmlPolicy = porteApplicativeHelper.getBinaryParameter(CostantiControlStation.PARAMETRO_DOCUMENTO_SICUREZZA_XACML_POLICY);
String idAsps = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_ASPS);
if(idAsps == null)
idAsps = "";
String idTab = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_ID_TAB);
if(!porteApplicativeHelper.isModalitaCompleta() && StringUtils.isNotEmpty(idTab)) {
ServletUtils.setObjectIntoSession(request, session, idTab, CostantiControlStation.PARAMETRO_ID_TAB);
}
String serviceBindingS = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_SERVICE_BINDING);
ServiceBinding serviceBinding = null;
if(StringUtils.isNotEmpty(serviceBindingS))
serviceBinding = ServiceBinding.valueOf(serviceBindingS);
String integrazioneStato = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_INTEGRAZIONE_STATO);
String integrazione = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_INTEGRAZIONE);
String[] integrazioneGruppi = porteApplicativeHelper.getParameterValues(CostantiControlStation.PARAMETRO_PORTE_METADATI_GRUPPO);
List<GruppoIntegrazione> integrazioneGruppiDaVisualizzare = new ArrayList<>();
Map<String, List<String>> integrazioneGruppiValoriDeiGruppi = new HashMap<>();
boolean isConfigurazione =false;
if(parentPA!=null) {
isConfigurazione = (parentPA.intValue() == PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE);
}
boolean modificaDescrizione=false;
if(isConfigurazione) {
modificaDescrizione = ServletUtils.isCheckBoxEnabled(porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_DESCRIZIONE));
}
boolean datiAltroPorta =false;
if(isConfigurazione) {
datiAltroPorta = ServletUtils.isCheckBoxEnabled(porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_ALTRO_PORTA));
}
boolean visualizzaSezioneOpzioniAvanzate = !(porteApplicativeHelper.isModalitaStandard() || (isConfigurazione && !datiAltroPorta));
// dal secondo accesso in poi il calcolo dei gruppi da visualizzare avviene leggendo i parametri dalla richiesta
if(integrazioneStato != null && visualizzaSezioneOpzioniAvanzate) {
if(integrazioneStato.equals(CostantiControlStation.VALUE_PARAMETRO_PORTE_INTEGRAZIONE_STATO_RIDEFINITO)) {
if(integrazioneGruppi != null) {
for (String gruppoSelezionato : integrazioneGruppi) {
integrazioneGruppiDaVisualizzare.add(GruppoIntegrazione.toEnumConstant(gruppoSelezionato));
}
// leggere i valori selezionati per ogni gruppo selezionato
for (GruppoIntegrazione group : integrazioneGruppiDaVisualizzare) {
List<String> valoriGruppoList = new ArrayList<>();
if(group.isMulti()) {
String[] valoriGruppo = porteApplicativeHelper.getParameterValues(CostantiControlStation.PARAMETRO_PORTE_METADATI_GRUPPO_SINGOLO+group.getValue());
if(valoriGruppo != null) {
valoriGruppoList.addAll(Arrays.asList(valoriGruppo));
}
} else {
String valoreGruppo = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_METADATI_GRUPPO_SINGOLO+group.getValue());
if(valoreGruppo != null) {
valoriGruppoList.add(valoreGruppo);
}
}
integrazioneGruppiValoriDeiGruppi.put(group.getValue(), valoriGruppoList);
}
}
}
}
// RateLimiting
String ctModalitaSincronizzazione = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_SINCRONIZZAZIONE);
String ctImplementazione = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_IMPLEMENTAZIONE);
String ctContatori = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_CONTATORI);
String ctTipologia = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_TIPOLOGIA);
String ctHeaderHttp = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_GENERAZIONE_HEADER_HTTP);
String ctHeaderHttpLimit = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT);
String ctHeaderHttpRemaining = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING);
String ctHeaderHttpReset = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_GENERAZIONE_HEADER_HTTP_RESET);
String ctHeaderHttpRetryAfter = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER);
String ctHeaderHttpRetryAfterBackoff = porteApplicativeHelper.getParameter(org.openspcoop2.core.controllo_traffico.constants.Costanti.MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER_BACKOFF_SECONDS);
// check su oldNomePD
PageData pdOld = ServletUtils.getPageDataFromSession(request, session);
String oldNomePA = pdOld.getHidden(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_OLD_NOME_PA);
oldNomePA = (((oldNomePA != null) && !oldNomePA.equals("")) ? oldNomePA : nomePorta);
// Preparo il menu
porteApplicativeHelper.makeMenu();
String postBackElementName = porteApplicativeHelper.getPostBackElementName();
if(postBackElementName!=null && PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_AZIONE.equals(postBackElementName)) {
// ho cambiato modalita', elimino il valore
azione = null;
}
PorteApplicativeCore porteApplicativeCore = new PorteApplicativeCore();
SoggettiCore soggettiCore = new SoggettiCore(porteApplicativeCore);
AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore(porteApplicativeCore);
AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore(porteApplicativeCore);
ServiziApplicativiCore saCore = new ServiziApplicativiCore(porteApplicativeCore);
boolean usataInConfigurazioni = false;
boolean usataInConfigurazioneDefault = false;
boolean addTrattinoSelezioneNonEffettuata = false;
// Prendo la porta applicativa
PortaApplicativa pa = porteApplicativeCore.getPortaApplicativa(Integer.parseInt(idPorta));
// Prendo nome, tipo e pdd del soggetto
String tipoNomeSoggettoProprietario = null;
String tipoSoggettoProprietario = null;
String nomeSoggettoProprietario = null;
if(porteApplicativeCore.isRegistroServiziLocale()){
org.openspcoop2.core.registry.Soggetto soggetto = soggettiCore.getSoggettoRegistro(soggInt);
tipoNomeSoggettoProprietario = soggetto.getTipo() + "/" + soggetto.getNome();
tipoSoggettoProprietario = soggetto.getTipo();
nomeSoggettoProprietario = soggetto.getNome();
}else{
org.openspcoop2.core.config.Soggetto soggetto = soggettiCore.getSoggetto(soggInt);
tipoNomeSoggettoProprietario = soggetto.getTipo() + "/" + soggetto.getNome();
tipoSoggettoProprietario = soggetto.getTipo();
nomeSoggettoProprietario = soggetto.getNome();
}
String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(tipoSoggettoProprietario);
boolean isSupportatoAutenticazioneSoggetti = soggettiCore.isSupportatoAutenticazioneSoggetti(protocollo);
Long idAspsLong;
if(idAsps.equals("")) {
PortaApplicativaServizio servizio2 = pa.getServizio();
idAspsLong = servizio2.getId();
} else {
idAspsLong = Long.parseLong(idAsps);
}
// controllo se la porta e' usata in qualche configurazione e se e' usata nella configurazione di default
MappingErogazionePortaApplicativa mappingErogazione = new MappingErogazionePortaApplicativa();
AccordoServizioParteSpecifica asps = apsCore.getAccordoServizioParteSpecifica(idAspsLong);
IDServizio idServizioCheck = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
mappingErogazione.setIdServizio(idServizioCheck);
IDPortaApplicativa idPa = new IDPortaApplicativa();
idPa.setNome(oldNomePA);
mappingErogazione.setIdPortaApplicativa(idPa);
usataInConfigurazioni = porteApplicativeCore.existsMappingErogazionePortaApplicativa(mappingErogazione);
IDPortaApplicativa idPortaApplicativaAssociataDefault = porteApplicativeCore.getIDPortaApplicativaAssociataDefault(idServizioCheck);
usataInConfigurazioneDefault = (idPortaApplicativaAssociataDefault != null && idPortaApplicativaAssociataDefault.getNome().equals(idPa.getNome()));
// Informazioni sul numero di ServiziApplicativi, Correlazione Applicativa e stato Message-Security
int numSA =pa.sizeServizioApplicativoList();
int numRuoli = 0;
if(pa.getRuoli()!=null){
numRuoli = pa.getRuoli().sizeRuoloList();
}
int numScope = 0;
if(pa.getScope()!=null){
numScope = pa.getScope().sizeScopeList();
}
int numAutenticatiToken = 0;
if(pa.getAutorizzazioneToken()!=null && pa.getAutorizzazioneToken().getServiziApplicativi()!=null){
numAutenticatiToken = pa.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList();
}
int numRuoliToken = 0;
if(pa.getAutorizzazioneToken()!=null && pa.getAutorizzazioneToken().getRuoli()!=null){
numRuoliToken = pa.getAutorizzazioneToken().getRuoli().sizeRuoloList();
}
String[] servizioApplicativoList = null;
Long idSa = null;
if(numSA<=1){
if(servizioApplicativo==null || "".equals(servizioApplicativo)){
if(numSA==1){
servizioApplicativo = pa.getServizioApplicativo(0).getNome();
idSa = pa.getServizioApplicativo(0).getIdServizioApplicativo();
}
else{
servizioApplicativo = "-";
}
}
String[] servizioApplicativoListTmp = PorteApplicativeServizioApplicativoAdd.loadSAErogatori(pa, saCore, soggInt, false);
servizioApplicativoList = new String[servizioApplicativoListTmp.length+1];
servizioApplicativoList[0] = "-";
for (int i = 0; i < servizioApplicativoListTmp.length; i++) {
servizioApplicativoList[(i+1)] = servizioApplicativoListTmp[i];
}
}
else{
servizioApplicativo = null;
}
String statoMessageSecurity = pa.getStatoMessageSecurity() ;
int numCorrelazioneReq =0;
if(pa.getCorrelazioneApplicativa() != null)
numCorrelazioneReq = pa.getCorrelazioneApplicativa().sizeElementoList();
int numCorrelazioneRes =0;
if(pa.getCorrelazioneApplicativaRisposta() != null)
numCorrelazioneRes = pa.getCorrelazioneApplicativaRisposta().sizeElementoList();
int numProprProt = pa.sizeProprietaList();
// Stato MTOM
boolean isMTOMAbilitatoReq = false;
boolean isMTOMAbilitatoRes= false;
if(pa.getMtomProcessor()!= null){
if(pa.getMtomProcessor().getRequestFlow() != null &&
pa.getMtomProcessor().getRequestFlow().getMode() != null){
MTOMProcessorType mode = pa.getMtomProcessor().getRequestFlow().getMode();
if(!mode.equals(MTOMProcessorType.DISABLE))
isMTOMAbilitatoReq = true;
}
if(pa.getMtomProcessor().getResponseFlow() != null &&
pa.getMtomProcessor().getResponseFlow().getMode() != null){
MTOMProcessorType mode = pa.getMtomProcessor().getResponseFlow().getMode();
if(!mode.equals(MTOMProcessorType.DISABLE))
isMTOMAbilitatoRes = true;
}
}
String statoMTOM = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM_DISABILITATO;
if(isMTOMAbilitatoReq || isMTOMAbilitatoRes)
statoMTOM = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MTOM_ABILITATO;
// Prendo il numero di correlazioni applicative
CorrelazioneApplicativa ca = pa.getCorrelazioneApplicativa();
int numCorrApp = 0;
if (ca != null) {
numCorrApp = ca.sizeElementoList();
}
String statoValidazione = null;
String tipoValidazione = null;
String applicaMTOM = "";
ValidazioneContenutiApplicativi vx = pa.getValidazioneContenutiApplicativi();
if (vx == null) {
statoValidazione = PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_VALIDAZIONE_DISABILITATO;
tipoValidazione = PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_TIPO_VALIDAZIONE_INTERFACE;
} else {
if(vx.getStato()!=null)
statoValidazione = vx.getStato().toString();
if ((statoValidazione == null) || "".equals(statoValidazione)) {
statoValidazione = PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_VALIDAZIONE_DISABILITATO;
}
if(vx.getTipo()!=null)
tipoValidazione = vx.getTipo().toString();
if (tipoValidazione == null || "".equals(tipoValidazione)) {
tipoValidazione = PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_TIPO_VALIDAZIONE_INTERFACE ;
}
if(vx.getAcceptMtomMessage()!=null &&
vx.getAcceptMtomMessage().equals(StatoFunzionalita.ABILITATO)) {
applicaMTOM = Costanti.CHECK_BOX_ENABLED;
}
}
String autenticazione = pa.getAutenticazione();
String autenticazioneCustom = null;
if (autenticazione != null &&
!TipoAutenticazione.getValues().contains(autenticazione)) {
autenticazioneCustom = autenticazione;
autenticazione = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PORTE_AUTENTICAZIONE_CUSTOM;
}
String autenticazioneOpzionale = "";
if(pa.getAutenticazioneOpzionale()!=null &&
pa.getAutenticazioneOpzionale().equals(StatoFunzionalita.ABILITATO)) {
autenticazioneOpzionale = Costanti.CHECK_BOX_ENABLED;
}
TipoAutenticazionePrincipal autenticazionePrincipal = porteApplicativeCore.getTipoAutenticazionePrincipal(pa.getProprietaAutenticazioneList());
List<String> autenticazioneParametroList = porteApplicativeCore.getParametroAutenticazione(autenticazione, pa.getProprietaAutenticazioneList());
String autorizzazione = null;
String autorizzazioneCustom = null;
String autorizzazioneAutenticati = null;
String autorizzazioneRuoli = null;
String autorizzazioneRuoliTipologia = null;
String ruoloMatch = null;
String autorizzazioneContenuti = pa.getAutorizzazioneContenuto();
String autorizzazioneContenutiProperties = null;
String autorizzazioneContenutiStato = null;
if(autorizzazioneContenuti == null) {
autorizzazioneContenutiStato = StatoFunzionalita.DISABILITATO.getValue();
} else if(autorizzazioneContenuti.equals(CostantiAutorizzazione.AUTORIZZAZIONE_CONTENUTO_BUILT_IN)) {
autorizzazioneContenutiStato = StatoFunzionalita.ABILITATO.getValue();
List<Proprieta> proprietaAutorizzazioneContenutoList = pa.getProprietaAutorizzazioneContenutoList();
StringBuilder sb = new StringBuilder();
for (Proprieta proprieta : proprietaAutorizzazioneContenutoList) {
if(sb.length() >0)
sb.append("\n");
sb.append(proprieta.getNome()).append("=").append(proprieta.getValore());
}
autorizzazioneContenutiProperties = sb.toString();
} else { // custom
autorizzazioneContenutiStato = CostantiControlStation.VALUE_PARAMETRO_PORTE_CONTROLLO_ACCESSI_AUTORIZZAZIONE_CONTENUTI_STATO_CUSTOM;
}
if (pa.getAutorizzazione() != null &&
!TipoAutorizzazione.getAllValues().contains(pa.getAutorizzazione())) {
autorizzazioneCustom = pa.getAutorizzazione();
autorizzazione = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PORTE_AUTORIZZAZIONE_CUSTOM;
}
else{
autorizzazione = AutorizzazioneUtilities.convertToStato(pa.getAutorizzazione());
if(TipoAutorizzazione.isAuthenticationRequired(pa.getAutorizzazione()))
autorizzazioneAutenticati = Costanti.CHECK_BOX_ENABLED;
if(TipoAutorizzazione.isRolesRequired(pa.getAutorizzazione()))
autorizzazioneRuoli = Costanti.CHECK_BOX_ENABLED;
autorizzazioneRuoliTipologia = AutorizzazioneUtilities.convertToRuoloTipologia(pa.getAutorizzazione()).getValue();
}
if (ruoloMatch == null &&
pa.getRuoli()!=null && pa.getRuoli().getMatch()!=null){
ruoloMatch = pa.getRuoli().getMatch().getValue();
}
String gestioneToken = null;
String gestioneTokenPolicy = null;
String gestioneTokenOpzionale = null;
String gestioneTokenValidazioneInput = null;
String gestioneTokenIntrospection = null;
String gestioneTokenUserInfo = null;
String gestioneTokenTokenForward = null;
String autenticazioneTokenIssuer = null;
String autenticazioneTokenClientId = null;
String autenticazioneTokenSubject = null;
String autenticazioneTokenUsername = null;
String autenticazioneTokenEMail = null;
String autorizzazioneAutenticatiToken = null;
String autorizzazioneRuoliToken = null;
String autorizzazioneRuoliTipologiaToken = null;
String autorizzazioneRuoliMatchToken = null;
String autorizzazioneTokenOptions = null;
String autorizzazioneToken = null;
String identificazioneAttributiStato = null;
String [] attributeAuthoritySelezionate = null;
String attributeAuthorityAttributi = null;
if(pa.getGestioneToken() != null) {
gestioneTokenPolicy = pa.getGestioneToken().getPolicy();
if(gestioneTokenPolicy == null) {
gestioneToken = StatoFunzionalita.DISABILITATO.getValue();
gestioneTokenPolicy = CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO;
} else {
gestioneToken = StatoFunzionalita.ABILITATO.getValue();
}
StatoFunzionalita tokenOpzionale = pa.getGestioneToken().getTokenOpzionale();
if(tokenOpzionale == null) {
gestioneTokenOpzionale = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_OPZIONALE;
}else {
gestioneTokenOpzionale = tokenOpzionale.getValue();
}
StatoFunzionalitaConWarning validazione = pa.getGestioneToken().getValidazione();
if(validazione == null) {
gestioneTokenValidazioneInput = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_VALIDAZIONE_INPUT;
}else {
gestioneTokenValidazioneInput = validazione.getValue();
}
StatoFunzionalitaConWarning introspection = pa.getGestioneToken().getIntrospection();
if(introspection == null) {
gestioneTokenIntrospection = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_INTROSPECTION;
}else {
gestioneTokenIntrospection = introspection.getValue();
}
StatoFunzionalitaConWarning userinfo = pa.getGestioneToken().getUserInfo();
if(userinfo == null) {
gestioneTokenUserInfo = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_USER_INFO;
}else {
gestioneTokenUserInfo = userinfo.getValue();
}
StatoFunzionalita tokenForward = pa.getGestioneToken().getForward();
if(tokenForward == null) {
gestioneTokenTokenForward = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TOKEN_FORWARD;
}else {
gestioneTokenTokenForward = tokenForward.getValue();
}
autorizzazioneTokenOptions = pa.getGestioneToken().getOptions();
if((autorizzazioneTokenOptions!=null && !"".equals(autorizzazioneTokenOptions))) {
autorizzazioneToken = Costanti.CHECK_BOX_ENABLED;
}
else {
autorizzazioneToken = Costanti.CHECK_BOX_DISABLED;
}
if(pa.getGestioneToken().getAutenticazione() != null) {
StatoFunzionalita issuer = pa.getGestioneToken().getAutenticazione().getIssuer();
if(issuer == null) {
autenticazioneTokenIssuer = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_ISSUER;
}else {
autenticazioneTokenIssuer = issuer.getValue();
}
StatoFunzionalita clientId = pa.getGestioneToken().getAutenticazione().getClientId();
if(clientId == null) {
autenticazioneTokenClientId = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_CLIENT_ID;
}else {
autenticazioneTokenClientId = clientId.getValue();
}
StatoFunzionalita subject = pa.getGestioneToken().getAutenticazione().getSubject();
if(subject == null) {
autenticazioneTokenSubject = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_SUBJECT;
}else {
autenticazioneTokenSubject = subject.getValue();
}
StatoFunzionalita username = pa.getGestioneToken().getAutenticazione().getUsername();
if(username == null) {
autenticazioneTokenUsername = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_USERNAME;
}else {
autenticazioneTokenUsername = username.getValue();
}
StatoFunzionalita mailTmp = pa.getGestioneToken().getAutenticazione().getEmail();
if(mailTmp == null) {
autenticazioneTokenEMail = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_EMAIL;
}else {
autenticazioneTokenEMail = mailTmp.getValue();
}
}
else {
autenticazioneTokenIssuer = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_ISSUER;
autenticazioneTokenClientId = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_CLIENT_ID;
autenticazioneTokenSubject = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_SUBJECT;
autenticazioneTokenUsername = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_USERNAME;
autenticazioneTokenEMail = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_EMAIL;
}
}
else {
gestioneToken = StatoFunzionalita.DISABILITATO.getValue();
gestioneTokenPolicy = CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO;
gestioneTokenOpzionale = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_OPZIONALE;
gestioneTokenValidazioneInput = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_VALIDAZIONE_INPUT;
gestioneTokenIntrospection = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_INTROSPECTION;
gestioneTokenUserInfo = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_USER_INFO;
gestioneTokenTokenForward = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TOKEN_FORWARD;
autenticazioneTokenIssuer = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_ISSUER;
autenticazioneTokenClientId = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_CLIENT_ID;
autenticazioneTokenSubject = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_SUBJECT;
autenticazioneTokenUsername = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_USERNAME;
autenticazioneTokenEMail = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_EMAIL;
}
if(pa.getAutorizzazioneToken()!=null && pa.getAutorizzazioneToken().getAutorizzazioneApplicativi()!=null) {
autorizzazioneAutenticatiToken = StatoFunzionalita.ABILITATO.equals(pa.getAutorizzazioneToken().getAutorizzazioneApplicativi()) ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
}
if(pa.getAutorizzazioneToken()!=null && pa.getAutorizzazioneToken().getAutorizzazioneRuoli()!=null) {
autorizzazioneRuoliToken = StatoFunzionalita.ABILITATO.equals(pa.getAutorizzazioneToken().getAutorizzazioneRuoli()) ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
}
if(pa.getAutorizzazioneToken()!=null && pa.getAutorizzazioneToken().getTipologiaRuoli()!=null) {
autorizzazioneRuoliTipologiaToken = pa.getAutorizzazioneToken().getTipologiaRuoli().getValue();
}
if(pa.getAutorizzazioneToken()!=null && pa.getAutorizzazioneToken().getRuoli()!=null && pa.getAutorizzazioneToken().getRuoli().getMatch()!=null){
autorizzazioneRuoliMatchToken = pa.getAutorizzazioneToken().getRuoli().getMatch().getValue();
}
String autorizzazioneScope = null;
String autorizzazioneScopeMatch = null;
if(pa.getScope() != null) {
autorizzazioneScope = pa.getScope().getStato().equals(StatoFunzionalita.ABILITATO) ? Costanti.CHECK_BOX_ENABLED : "";
if(pa.getScope()!=null && pa.getScope().getMatch()!=null){
autorizzazioneScopeMatch = pa.getScope().getMatch().getValue();
}
} else {
autorizzazioneScope = "";
}
if(identificazioneAttributiStato==null) {
identificazioneAttributiStato = pa.sizeAttributeAuthorityList()>0 ? StatoFunzionalita.ABILITATO.getValue() : StatoFunzionalita.DISABILITATO.getValue();
if(pa.sizeAttributeAuthorityList()>0) {
attributeAuthoritySelezionate = porteApplicativeCore.buildAuthorityArrayString(pa.getAttributeAuthorityList());
attributeAuthorityAttributi = porteApplicativeCore.buildAttributesStringFromAuthority(pa.getAttributeAuthorityList());
}
}
// se ho modificato il soggetto ricalcolo il servizio e il service binding
if (postBackElementName != null) {
if(postBackElementName.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_SOGGETTO_VIRTUALE)) {
servizio = null;
serviceBinding = null;
} else if(postBackElementName.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_SERVIZIO)) {
serviceBinding = null;
}
}
List<String> tipiServizioCompatibiliAccordo = new ArrayList<>();
if(serviceBinding == null) {
List<ServiceBinding> serviceBindingListProtocollo = apsCore.getServiceBindingListProtocollo(protocollo);
if(serviceBindingListProtocollo != null && !serviceBindingListProtocollo.isEmpty()) {
for (ServiceBinding serviceBinding2 : serviceBindingListProtocollo) {
List<String> tipiServizioCompatibiliAccordoTmp = apsCore.getTipiServiziGestitiProtocollo(protocollo,serviceBinding2);
for (String tipoTmp : tipiServizioCompatibiliAccordoTmp) {
if(!tipiServizioCompatibiliAccordo.contains(tipoTmp))
tipiServizioCompatibiliAccordo.add(tipoTmp);
}
}
}
} else {
tipiServizioCompatibiliAccordo = apsCore.getTipiServiziGestitiProtocollo(protocollo,serviceBinding);
}
List<Parameter> lstParm = porteApplicativeHelper.getTitoloPA(parentPA, idsogg, idAsps);
Boolean vistaErogazioni = ServletUtils.getBooleanAttributeFromSession(ErogazioniCostanti.ASPS_EROGAZIONI_ATTRIBUTO_VISTA_EROGAZIONI, session, request).getValue();
boolean datiAltroApi = ServletUtils.isCheckBoxEnabled(porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_ALTRO_API));
boolean datiInvocazione = ServletUtils.isCheckBoxEnabled(porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_DATI_INVOCAZIONE));
String nomeBreadCrumb = oldNomePA;
if( parentPA!=null && (parentPA.intValue() == PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE) ) {
/** List<MappingErogazionePortaApplicativa> mappingServiziPorteAppList = apsCore.mappingServiziPorteAppList(idServizioCheck, idAspsLong, null);
// MappingErogazionePortaApplicativa mappingErogazionePortaApplicativa = null;
// for (MappingErogazionePortaApplicativa mappingErogazionePortaApplicativaTmp : mappingServiziPorteAppList) {
// if(mappingErogazionePortaApplicativaTmp.getIdPortaApplicativa().getNome().equals(oldNomePA)) {
// mappingErogazionePortaApplicativa = mappingErogazionePortaApplicativaTmp;
// break;
// }
// }
//
// if(mappingErogazionePortaApplicativa.isDefault()) {
// nomeBreadCrumb = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_MAPPING_EROGAZIONE_PA_NOME_DEFAULT;
// } else {
// nomeBreadCrumb = mappingErogazionePortaApplicativa.getNome();
// }*/
if(datiInvocazione) {
lstParm.remove(lstParm.size()-1);
if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
lstParm.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_PORTE_APPLICATIVE_MODIFICA_DATI_INVOCAZIONE,null));
} else {
lstParm.add(new Parameter(AccordiServizioParteSpecificaCostanti.LABEL_APS_DATI_INVOCAZIONE_DI + porteApplicativeHelper.getLabelIdServizio(asps),null));
}
nomeBreadCrumb=null;
}
else if(modificaDescrizione) {
String labelPerPorta = null;
if(parentPA!=null && (parentPA.intValue() == PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE)) {
labelPerPorta = porteApplicativeCore.getLabelRegolaMappingErogazionePortaApplicativa(
PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_DESCRIZIONE_DI,
PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_DESCRIZIONE,
pa);
}
else {
lstParm.remove(lstParm.size()-1);
labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_DESCRIZIONE_DI+pa.getNome();
}
lstParm.add(new Parameter(labelPerPorta, null));
nomeBreadCrumb=null;
}
else if(datiAltroPorta) {
String labelPerPorta = null;
if(parentPA!=null && (parentPA.intValue() == PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE)) {
labelPerPorta = porteApplicativeCore.getLabelRegolaMappingErogazionePortaApplicativa(
PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_OPZIONI_AVANZATE_DI,
PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_OPZIONI_AVANZATE,
pa);
}
else {
lstParm.remove(lstParm.size()-1);
labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_OPZIONI_AVANZATE_DI+pa.getNome();
}
lstParm.add(new Parameter(labelPerPorta, null));
nomeBreadCrumb=null;
}
else if(datiAltroApi) {
lstParm.remove(lstParm.size()-1);
if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
lstParm.add(new Parameter(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_OPZIONI_AVANZATE,null));
} else {
lstParm.add(new Parameter(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_OPZIONI_AVANZATE_DI + porteApplicativeHelper.getLabelIdServizio(asps),null));
}
nomeBreadCrumb=null;
}
else {
nomeBreadCrumb = porteApplicativeCore.getLabelRegolaMappingErogazionePortaApplicativa(null,null,pa);
}
}
if(nomeBreadCrumb!=null) {
lstParm.add(new Parameter(nomeBreadCrumb , null));
}
// Se idhid = null, devo visualizzare la pagina per la
// modifica dati
if (porteApplicativeHelper.isEditModeInProgress()) {
// setto la barra del titolo
ServletUtils.setPageDataTitle(pd, lstParm);
String patternAzione = azione;
if (descr == null) {
descr = pa.getDescrizione();
}
if (statoPorta == null) {
statoPorta = pa.getStato()!=null ? pa.getStato().getValue() : CostantiConfigurazione.ABILITATO.getValue();
}
if (stateless == null &&
pa.getStateless()!=null) {
stateless = pa.getStateless().toString();
}
if (behaviour == null) {
behaviour = (pa.getBehaviour()!=null ? pa.getBehaviour().getNome() : null);
}
if (gestBody == null) {
String allegaBody = null;
if(pa.getAllegaBody()!=null)
allegaBody = pa.getAllegaBody().toString();
String scartaBody = null;
if(pa.getScartaBody()!=null)
scartaBody = pa.getScartaBody().toString();
if (PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_ABILITATO.equals(allegaBody) &&
PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_DISABILITATO.equals(scartaBody))
gestBody = PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_GEST_BODY_ALLEGA;
else if (PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_DISABILITATO.equals(allegaBody) &&
PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_ABILITATO.equals(scartaBody))
gestBody = PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_GEST_BODY_SCARTA;
else if (PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_DISABILITATO.equals(allegaBody) &&
PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_DISABILITATO.equals(scartaBody))
gestBody = PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_GEST_BODY_NONE;
}
if (gestManifest == null &&
pa.getGestioneManifest()!=null) {
gestManifest = pa.getGestioneManifest().toString();
}
if (ricsim == null) {
if(pa.getRicevutaAsincronaSimmetrica()!=null)
ricsim = pa.getRicevutaAsincronaSimmetrica().toString();
if ((ricsim == null) || "".equals(ricsim)) {
ricsim = PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_ABILITATO;
}
}
if (ricasim == null) {
if(pa.getRicevutaAsincronaAsimmetrica()!=null)
ricasim = pa.getRicevutaAsincronaAsimmetrica().toString();
if ((ricasim == null) || "".equals(ricasim)) {
ricasim = PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_ABILITATO;
}
}
if ((scadcorr == null) && (ca != null)) {
scadcorr = ca.getScadenza();
}
if (integrazioneStato == null) {
if(pa.getIntegrazione() == null) {
integrazioneStato = CostantiControlStation.VALUE_PARAMETRO_PORTE_INTEGRAZIONE_STATO_DEFAULT;
} else if(TipoIntegrazione.DISABILITATO.getValue().equals(pa.getIntegrazione())) {
integrazioneStato = CostantiControlStation.VALUE_PARAMETRO_PORTE_INTEGRAZIONE_STATO_DISABILITATO;
} else {
integrazioneStato = CostantiControlStation.VALUE_PARAMETRO_PORTE_INTEGRAZIONE_STATO_RIDEFINITO;
}
}
if (integrazione == null) {
integrazione = pa.getIntegrazione();
List<String> integrazioneGruppiList = new ArrayList<>();
if(integrazioneStato.equals(CostantiControlStation.VALUE_PARAMETRO_PORTE_INTEGRAZIONE_STATO_RIDEFINITO)) {
// decodificare il contenuto di integrazione per generare gli elementi grafici necessari.
List<String> valoriIntegrazione = integrazione != null ? Arrays.asList(integrazione.split(",")) : new ArrayList<>();
for (String valoreIntegrazione : valoriIntegrazione) {
TipoIntegrazione tipoIntegrazione = TipoIntegrazione.toEnumConstant(valoreIntegrazione);
GruppoIntegrazione group = tipoIntegrazione != null ? tipoIntegrazione.getGroup() : GruppoIntegrazione.PLUGIN;
String gruppoValore = group.getValue();
List<String> valoriIntegrazionePerGruppo = null;
if(integrazioneGruppiValoriDeiGruppi.containsKey(gruppoValore)) {
valoriIntegrazionePerGruppo = integrazioneGruppiValoriDeiGruppi.remove(gruppoValore);
} else {
valoriIntegrazionePerGruppo = new ArrayList<>();
}
valoriIntegrazionePerGruppo.add(valoreIntegrazione);
integrazioneGruppiValoriDeiGruppi.put(gruppoValore, valoriIntegrazionePerGruppo);
if(!integrazioneGruppiDaVisualizzare.contains(group)) {
integrazioneGruppiDaVisualizzare.add(group);
integrazioneGruppiList.add(gruppoValore);
}
}
integrazioneGruppi = !integrazioneGruppiList.isEmpty() ? integrazioneGruppiList.toArray(new String[integrazioneGruppiList.size()]) : null;
}
}
if(ctModalitaSincronizzazione==null) {
PolicyConfiguration policyConfig = new PolicyConfiguration(pa.getProprietaRateLimitingList(), porteApplicativeCore.getControlloTrafficoPolicyRateLimitingTipiGestori(), false);
ctModalitaSincronizzazione = policyConfig.getSyncMode();
ctImplementazione = policyConfig.getImpl();
ctContatori = policyConfig.getCount();
ctTipologia = policyConfig.getEngineType();
ctHeaderHttp = policyConfig.getHttpMode();
ctHeaderHttpLimit = policyConfig.getHttpMode_limit();
ctHeaderHttpRemaining = policyConfig.getHttpMode_remaining();
ctHeaderHttpReset = policyConfig.getHttpMode_reset();
ctHeaderHttpRetryAfter = policyConfig.getHttpMode_retry_after();
ctHeaderHttpRetryAfterBackoff = policyConfig.getHttpMode_retry_after_backoff();
}
if (messageEngine == null &&
pa.getOptions()!=null) {
Map<String, List<String>> props = PropertiesSerializator.convertoFromDBColumnValue(pa.getOptions());
if(props!=null && props.size()>0) {
String msgFactory = TransportUtils.getFirstValue(props,CostantiPdD.OPTIONS_MESSAGE_FACTORY);
if(msgFactory!=null) {
messageEngine = msgFactory;
}
}
}
if (soggvirt == null) {
PortaApplicativaSoggettoVirtuale pasv = pa.getSoggettoVirtuale();
if (pasv == null) {
soggvirt="-";
} else {
soggvirt = pasv.getTipo()+"/"+pasv.getNome();
servizio = soggvirt + " " +pa.getServizio().getTipo()+"/"+pa.getServizio().getNome();
}
}
// recupero informazioni su servizio se non specificato l'id
// del servizio
if (
(servizio==null || "".equals(servizio))
&&
( !(soggvirt!=null && idSoggettoVirtuale!=null) )
){
servizio = tipoSoggettoProprietario+"/"+nomeSoggettoProprietario+" "+pa.getServizio().getTipo()+"/"+pa.getServizio().getNome() + "/" + pa.getServizio().getVersione().intValue();
}
if (modeaz == null) {
PortaApplicativaAzione paa = pa.getAzione();
if (paa == null) {
modeaz = "";
azione = "";
patternAzione = "";
} else {
if(paa.getIdentificazione()!=null)
modeaz = paa.getIdentificazione().toString();
azione = paa.getNome();
patternAzione = paa.getPattern();
azid = "" + paa.getId();
}
if ((modeaz == null) || "".equals(modeaz)) {
modeaz = PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_MODE_REGISTER_INPUT;
}
boolean useForceWSDLBased = true;
// assegno costante
if (modeaz != null) {
switch (PortaApplicativaAzioneIdentificazione.toEnumConstant(modeaz)) {
case STATIC:
useForceWSDLBased = false;
int azidInt = 0;
if (azid != null)
azidInt = Integer.parseInt(azid);
if ( (azidInt == -2) || (azidInt>0) ) {
azid = azione;
}
break;
case INTERFACE_BASED:
useForceWSDLBased = false;
break;
case CONTENT_BASED:
case INPUT_BASED:
case HEADER_BASED:
case URL_BASED:
case SOAP_ACTION_BASED:
default:
break;
}
if(useForceWSDLBased){
StatoFunzionalita forceWsdlBased2 = paa.getForceInterfaceBased();
if(forceWsdlBased2 != null && forceWsdlBased2.equals(StatoFunzionalita.ABILITATO)){
forceWsdlBased = "yes";
} else {
forceWsdlBased = "";
}
}
}
}
if ((modeaz != null) && !modeaz.equals(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_MODE_REGISTER_INPUT) &&
(azione == null)) {
azione = "";
}
if(!usataInConfigurazioneDefault) {
PortaApplicativaAzione paa = pa.getAzione();
if(paa != null) {
List<String> azioneDelegataList = paa.getAzioneDelegataList();
StringBuilder sb = new StringBuilder();
for (String aD : azioneDelegataList) {
if(sb.length() > 0) sb.append(", ");
sb.append(aD);
}
azione = sb.toString();
}
}
// Prendo la lista di soggetti (tranne il mio) e li metto in un
// array per la funzione SoggettoVirtuale
String[] soggettiList = null;
String[] soggettiListLabel = null;
Boolean soggVirt = ServletUtils.getObjectFromSession(request, session, Boolean.class, CostantiControlStation.SESSION_PARAMETRO_GESTIONE_SOGGETTI_VIRTUALI);
if (soggVirt!=null && soggVirt.booleanValue()) {
List<IDServizio> list = null;
List<IDSoggetto> listSoggetti = new ArrayList<>();
List<String> identitaSoggetti = new ArrayList<>();
try{
list = apsCore.getAllIdServizi(new FiltroRicercaServizi());
}catch(DriverRegistroServiziNotFound dNotFound){
// ignore
}
if(list!=null){
for (int i = 0; i < list.size(); i++) {
String idSoggetto = list.get(i).getSoggettoErogatore().toString();
if (!idSoggetto.equals(tipoNomeSoggettoProprietario) && // non aggiungo il soggetto proprietario della porta applicativa
(!identitaSoggetti.contains(idSoggetto))
){
identitaSoggetti.add(idSoggetto);
IDSoggetto soggettoErogatore = list.get(i).getSoggettoErogatore();
String protocolloSoggettoErogatore = soggettiCore.getProtocolloAssociatoTipoSoggetto(soggettoErogatore.getTipo());
if(protocolloSoggettoErogatore.equals(protocollo)){
listSoggetti.add(soggettoErogatore);
}
}
}
}
int totEl = listSoggetti.size() + 1;
soggettiList = new String[totEl];
soggettiListLabel = new String[totEl];
soggettiList[0] = "-";
soggettiListLabel[0] = "-";
Map<String, String> soggettiMapTmp = new HashMap<>();
List<String> listSoggettiOrdered = new ArrayList<>();
for (IDSoggetto idSoggetto : listSoggetti) {
listSoggettiOrdered.add(idSoggetto.getTipo() + "/" + idSoggetto.getNome());
soggettiMapTmp.put(idSoggetto.getTipo() + "/" + idSoggetto.getNome(), porteApplicativeHelper.getLabelNomeSoggetto(protocollo,
idSoggetto.getTipo(), idSoggetto.getNome()));
}
Collections.sort(listSoggettiOrdered);
int i = 1;
for (String idSOrdered : listSoggettiOrdered) {
soggettiList[i] = idSOrdered;
soggettiListLabel[i] = soggettiMapTmp.get(idSOrdered);
i++;
}
}
// Prendo la lista di servizi e li metto in un array
String[] serviziList = null;
String[] serviziListLabel = null;
FiltroRicercaServizi filtroServizi = new FiltroRicercaServizi();
if ( (!"".equals(soggvirt)) && (!"-".equals(soggvirt)) ){
filtroServizi.setTipoSoggettoErogatore(soggvirt.split("/")[0]);
filtroServizi.setNomeSoggettoErogatore(soggvirt.split("/")[1]);
}
else{
filtroServizi.setTipoSoggettoErogatore(tipoSoggettoProprietario);
filtroServizi.setNomeSoggettoErogatore(nomeSoggettoProprietario);
}
List<IDServizio> listIdServ = null;
try{
listIdServ = apsCore.getAllIdServizi(filtroServizi);
}catch(DriverRegistroServiziNotFound dNotFound){
// ignore
}
if(listIdServ!=null && !listIdServ.isEmpty()){
List<String> serviziListTmp = new ArrayList<>();
Map<String, IDServizio> serviziMapTmp = new HashMap<>();
for (IDServizio idServizio : listIdServ) {
if(tipiServizioCompatibiliAccordo.contains(idServizio.getTipo())){
String keyServizio = idServizio.getSoggettoErogatore().getTipo() + "/" + idServizio.getSoggettoErogatore().getNome() + " " + idServizio.getTipo() + "/" + idServizio.getNome() + "/" + idServizio.getVersione().intValue();
serviziListTmp.add(keyServizio);
serviziMapTmp.put(keyServizio, idServizio);
}
}
Collections.sort(serviziListTmp);
serviziList = serviziListTmp.toArray(new String[1]);
serviziListLabel = new String[serviziList.length];
for (int i = 0; i < serviziList.length; i++) {
String idServTmp = serviziList[i];
serviziListLabel[i] = porteApplicativeHelper.getLabelIdServizio(protocollo, serviziMapTmp.get(idServTmp));
}
}
IDServizio idServizio = null;
AccordoServizioParteSpecifica servS = null;
if (servizio != null) {
boolean servizioPresenteInLista = false;
if(serviziList!=null && serviziList.length>0){
for (int i = 0; i < serviziList.length; i++) {
if(serviziList[i].equals(servizio)){
servizioPresenteInLista = true;
break;
}
}
}
if(servizioPresenteInLista){
String [] tmp = servizio.split(" ");
idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(tmp[1].split("/")[0],tmp[1].split("/")[1],
tmp[0].split("/")[0],tmp[0].split("/")[1],
Integer.parseInt(tmp[1].split("/")[2]));
try{
servS = apsCore.getServizio(idServizio);
}catch(DriverRegistroServiziNotFound dNotFound){
// ignore
}
}
if(servS==null){
// è cambiato il soggetto erogatore. non è più valido il servizio
servizio = null;
idServizio = null;
if(serviziList!=null && serviziList.length>0){
servizio = serviziList[0];
String [] tmp = servizio.split(" ");
idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(tmp[1].split("/")[0],tmp[1].split("/")[1],
tmp[0].split("/")[0],tmp[0].split("/")[1],
Integer.parseInt(tmp[1].split("/")[2]));
try{
servS = apsCore.getServizio(idServizio);
}catch(DriverRegistroServiziNotFound dNotFound){
// ignore
}
if(servS==null){
servizio = null;
idServizio = null;
}
}
}
}
AccordoServizioParteComuneSintetico as = null;
if (servS != null) {
IDAccordo idAccordo = IDAccordoFactory.getInstance().getIDAccordoFromUri(servS.getAccordoServizioParteComune());
as = apcCore.getAccordoServizioSintetico(idAccordo);
if(serviceBinding == null) {
serviceBinding = apcCore.toMessageServiceBinding(as.getServiceBinding());
}
}
String[] azioniList = null;
String[] azioniListLabel = null;
List<String> filtraAzioniUtilizzate = new ArrayList<>();
if ((modeaz != null) && modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_REGISTER_INPUT)) {
Map<String,String> azioni = apcCore.getAzioniConLabel(servS, as, addTrattinoSelezioneNonEffettuata , true, filtraAzioniUtilizzate);
if(azioni != null && azioni.size() > 0) {
azioniList = new String[azioni.size()];
azioniListLabel = new String[azioni.size()];
int i = 0;
for (Map.Entry<String,String> entry : azioni.entrySet()) {
azioniList[i] = entry.getKey();
azioniListLabel[i] = entry.getValue();
i++;
}
}
}
// setto oldNomePD
pd.addHidden(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_OLD_NOME_PA, oldNomePA);
// preparo i campi
List<DataElement> dati = new ArrayList<>();
dati.add(ServletUtils.getDataElementForEditModeFinished());
dati = porteApplicativeHelper.addHiddenFieldsToDati(TipoOperazione.CHANGE, idPorta, idsogg, idPorta, idAsps, dati);
dati = porteApplicativeHelper.addPorteAppToDati(TipoOperazione.CHANGE,dati,
nomePorta, descr, soggvirt, soggettiList, soggettiListLabel, servizio,
serviziList, serviziListLabel, azione, azioniList, azioniListLabel, stateless, ricsim, ricasim, idsogg,
idPorta, statoValidazione, tipoValidazione, gestBody, gestManifest,integrazioneStato, integrazione,
integrazioneGruppi, integrazioneGruppiDaVisualizzare, integrazioneGruppiValoriDeiGruppi,
numCorrApp,scadcorr,autorizzazioneContenutiStato, autorizzazioneContenuti, autorizzazioneContenutiProperties, protocollo,
numSA,numRuoli,ruoloMatch,
statoMessageSecurity,statoMTOM,numCorrelazioneReq,numCorrelazioneRes,numProprProt,applicaMTOM,
behaviour,servizioApplicativoList,servizioApplicativo,idSa,
autenticazione, autorizzazione,
autenticazioneOpzionale, autenticazionePrincipal, autenticazioneParametroList, autenticazioneCustom, autorizzazioneCustom,
isSupportatoAutenticazioneSoggetti,autorizzazioneAutenticati,autorizzazioneRuoli,autorizzazioneRuoliTipologia,
servS,as,serviceBinding,
statoPorta,modeaz, azid, patternAzione, forceWsdlBased, usataInConfigurazioni,usataInConfigurazioneDefault,
StatoFunzionalita.ABILITATO.equals(pa.getRicercaPortaAzioneDelegata()),
(pa.getAzione()!=null ? pa.getAzione().getNomePortaDelegante() : null), gestioneToken,null,null,
gestioneTokenPolicy,gestioneTokenOpzionale,
gestioneTokenValidazioneInput,gestioneTokenIntrospection,gestioneTokenUserInfo,gestioneTokenTokenForward,
autenticazioneTokenIssuer, autenticazioneTokenClientId, autenticazioneTokenSubject, autenticazioneTokenUsername, autenticazioneTokenEMail,
autorizzazioneToken,autorizzazioneTokenOptions,
autorizzazioneScope,numScope, autorizzazioneScopeMatch,allegatoXacmlPolicy,
messageEngine, pa.getCanale(),
identificazioneAttributiStato, null,null, attributeAuthoritySelezionate, attributeAuthorityAttributi,
autorizzazioneAutenticatiToken, null, numAutenticatiToken,
autorizzazioneRuoliToken, null, numRuoliToken, autorizzazioneRuoliTipologiaToken, autorizzazioneRuoliMatchToken,
ctModalitaSincronizzazione, ctImplementazione, ctContatori, ctTipologia,
ctHeaderHttp, ctHeaderHttpLimit, ctHeaderHttpRemaining, ctHeaderHttpReset,
ctHeaderHttpRetryAfter, ctHeaderHttpRetryAfterBackoff);
pd.setDati(dati);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeInProgress(mapping, PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE,
ForwardParams.CHANGE());
}
// Controlli sui campi immessi
boolean isOk = porteApplicativeHelper.porteAppCheckData(TipoOperazione.CHANGE, oldNomePA, isSupportatoAutenticazioneSoggetti, datiAltroPorta,
serviceBinding);
if (!isOk) {
// setto la barra del titolo
ServletUtils.setPageDataTitle(pd,lstParm);
// Prendo la lista di soggetti (tranne il mio) e li metto in un
// array per la funzione SoggettoVirtuale
String[] soggettiList = null;
String[] soggettiListLabel = null;
Boolean soggVirt = ServletUtils.getObjectFromSession(request, session, Boolean.class, CostantiControlStation.SESSION_PARAMETRO_GESTIONE_SOGGETTI_VIRTUALI);
if (soggVirt!=null && soggVirt.booleanValue()) {
List<IDServizio> list = null;
List<IDSoggetto> listSoggetti = new ArrayList<>();
List<String> identitaSoggetti = new ArrayList<>();
try{
list = apsCore.getAllIdServizi(new FiltroRicercaServizi());
}catch(DriverRegistroServiziNotFound dNotFound){
// ignore
}
if(list!=null){
for (int i = 0; i < list.size(); i++) {
String idSoggetto = list.get(i).getSoggettoErogatore().toString();
if (
(!idSoggetto.equals(tipoNomeSoggettoProprietario)) && // non aggiungo il soggetto proprietario della porta applicativa
(!identitaSoggetti.contains(idSoggetto))
){
identitaSoggetti.add(idSoggetto);
listSoggetti.add(list.get(i).getSoggettoErogatore());
}
}
}
int totEl = listSoggetti.size() + 1;
soggettiList = new String[totEl];
soggettiListLabel = new String[totEl];
soggettiList[0] = "-";
soggettiListLabel[0] = "-";
Map<String, String> soggettiMapTmp = new HashMap<>();
int i = 1;
List<String> listSoggettiOrdered = new ArrayList<>();
for (IDSoggetto idSoggetto : listSoggetti) {
listSoggettiOrdered.add(idSoggetto.getTipo() + "/" + idSoggetto.getNome());
soggettiMapTmp.put(idSoggetto.getTipo() + "/" + idSoggetto.getNome(), porteApplicativeHelper.getLabelNomeSoggetto(protocollo,
idSoggetto.getTipo(), idSoggetto.getNome()));
}
Collections.sort(listSoggettiOrdered);
for (String idSOrdered : listSoggettiOrdered) {
soggettiList[i] = idSOrdered;
soggettiListLabel[i] = soggettiMapTmp.get(idSOrdered);
i++;
}
}
// Prendo la lista di servizi e li metto in un array
String[] serviziList = null;
String[] serviziListLabel = null;
FiltroRicercaServizi filtroServizi = new FiltroRicercaServizi();
if ( (!soggvirt.equals("")) && (!soggvirt.equals("-")) ){
filtroServizi.setTipoSoggettoErogatore(soggvirt.split("/")[0]);
filtroServizi.setNomeSoggettoErogatore(soggvirt.split("/")[1]);
}
else{
filtroServizi.setTipoSoggettoErogatore(tipoSoggettoProprietario);
filtroServizi.setNomeSoggettoErogatore(nomeSoggettoProprietario);
}
List<IDServizio> listIdServ = null;
try{
listIdServ = apsCore.getAllIdServizi(filtroServizi);
}catch(DriverRegistroServiziNotFound dNotFound){
// ignore
}
if(listIdServ!=null && !listIdServ.isEmpty()){
List<String> serviziListTmp = new ArrayList<>();
Map<String, IDServizio> serviziMapTmp = new HashMap<>();
for (IDServizio idServizio : listIdServ) {
if(tipiServizioCompatibiliAccordo.contains(idServizio.getTipo())){
String keyServizio = idServizio.getSoggettoErogatore().getTipo() + "/" + idServizio.getSoggettoErogatore().getNome() + " " + idServizio.getTipo() + "/" + idServizio.getNome() + "/" + idServizio.getVersione().intValue();
serviziListTmp.add(keyServizio);
serviziMapTmp.put(keyServizio, idServizio);
}
}
Collections.sort(serviziListTmp);
serviziList = serviziListTmp.toArray(new String[1]);
serviziListLabel = new String[serviziList.length];
for (int i = 0; i < serviziList.length; i++) {
String idServTmp = serviziList[i];
serviziListLabel[i] = porteApplicativeHelper.getLabelIdServizio(protocollo, serviziMapTmp.get(idServTmp));
}
}
AccordoServizioParteSpecifica servS = null;
IDServizio idServizio = null;
try{
if (servizio != null) {
String [] tmp = servizio.split(" ");
idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(tmp[1].split("/")[0],tmp[1].split("/")[1],
tmp[0].split("/")[0],tmp[0].split("/")[1],
Integer.parseInt(tmp[1].split("/")[2]));
try{
servS = apsCore.getServizio(idServizio);
}catch(DriverRegistroServiziNotFound dNotFound){
// ignore
}
}
} catch (Exception e) {
// Il refresh, in seguito al cambio della validazione puo'
// avvenire anche se il servizio non e' selezionato
}
AccordoServizioParteComuneSintetico as = null;
if(servS!=null){
IDAccordo idAccordo = IDAccordoFactory.getInstance().getIDAccordoFromUri(servS.getAccordoServizioParteComune());
as = apcCore.getAccordoServizioSintetico(idAccordo);
}
// Prendo le azioni associate al servizio
String[] azioniList = null;
String[] azioniListLabel = null;
List<String> filtraAzioniUtilizzate = new ArrayList<>();
if ((modeaz != null) && modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_REGISTER_INPUT)) {
Map<String,String> azioni = apcCore.getAzioniConLabel(servS, as, addTrattinoSelezioneNonEffettuata , true, filtraAzioniUtilizzate);
if(azioni != null && azioni.size() > 0) {
azioniList = new String[azioni.size()];
azioniListLabel = new String[azioni.size()];
int i = 0;
for (Map.Entry<String,String> entry : azioni.entrySet()) {
azioniList[i] = entry.getKey();
azioniListLabel[i] = entry.getValue();
i++;
}
}
}
// setto oldNomePD
pd.addHidden(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_OLD_NOME_PA, oldNomePA);
// preparo i campi
List<DataElement> dati = new ArrayList<>();
dati.add(ServletUtils.getDataElementForEditModeFinished());
dati = porteApplicativeHelper.addHiddenFieldsToDati(TipoOperazione.CHANGE, idPorta, idsogg, idPorta, idAsps, dati);
dati = porteApplicativeHelper.addPorteAppToDati(TipoOperazione.CHANGE,dati,
nomePorta, descr, soggvirt, soggettiList, soggettiListLabel, servizio,
serviziList, serviziListLabel, azione, azioniList, azioniListLabel, stateless, ricsim,
ricasim, idsogg, idPorta, statoValidazione, tipoValidazione, gestBody, gestManifest,integrazioneStato, integrazione,
integrazioneGruppi, integrazioneGruppiDaVisualizzare, integrazioneGruppiValoriDeiGruppi,
numCorrApp,scadcorr,autorizzazioneContenutiStato, autorizzazioneContenuti, autorizzazioneContenutiProperties,protocollo,
numSA,numRuoli,ruoloMatch,
statoMessageSecurity,statoMTOM,numCorrelazioneReq,numCorrelazioneRes,numProprProt,applicaMTOM,
behaviour,servizioApplicativoList,servizioApplicativo,idSa,
autenticazione, autorizzazione,
autenticazioneOpzionale, autenticazionePrincipal, autenticazioneParametroList, autenticazioneCustom, autorizzazioneCustom,
isSupportatoAutenticazioneSoggetti,autorizzazioneAutenticati,autorizzazioneRuoli,autorizzazioneRuoliTipologia,
servS,as,serviceBinding,
statoPorta,modeaz, azid, azione, forceWsdlBased, usataInConfigurazioni,usataInConfigurazioneDefault,
StatoFunzionalita.ABILITATO.equals(pa.getRicercaPortaAzioneDelegata()),
(pa.getAzione()!=null ? pa.getAzione().getNomePortaDelegante() : null), gestioneToken,null,null,
gestioneTokenPolicy,gestioneTokenOpzionale,
gestioneTokenValidazioneInput,gestioneTokenIntrospection,gestioneTokenUserInfo,gestioneTokenTokenForward,
autenticazioneTokenIssuer, autenticazioneTokenClientId, autenticazioneTokenSubject, autenticazioneTokenUsername, autenticazioneTokenEMail,
autorizzazioneToken,autorizzazioneTokenOptions,
autorizzazioneScope,numScope, autorizzazioneScopeMatch,allegatoXacmlPolicy,
messageEngine, pa.getCanale(),
identificazioneAttributiStato, null,null, attributeAuthoritySelezionate, attributeAuthorityAttributi,
autorizzazioneAutenticatiToken, null, numAutenticatiToken,
autorizzazioneRuoliToken, null, numRuoliToken, autorizzazioneRuoliTipologiaToken, autorizzazioneRuoliMatchToken,
ctModalitaSincronizzazione, ctImplementazione, ctContatori, ctTipologia,
ctHeaderHttp, ctHeaderHttpLimit, ctHeaderHttpRemaining, ctHeaderHttpReset,
ctHeaderHttpRetryAfter, ctHeaderHttpRetryAfterBackoff);
pd.setDati(dati);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeCheckError(mapping, PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE,
ForwardParams.CHANGE());
}
// Modifico i dati della porta applicativa nel db
pa.setNome(nomePorta);
IDPortaApplicativa oldIDPortaApplicativaForUpdate = new IDPortaApplicativa();
oldIDPortaApplicativaForUpdate.setNome(oldNomePA);
pa.setOldIDPortaApplicativaForUpdate(oldIDPortaApplicativaForUpdate);
if(modificaDescrizione && (descr==null || StringUtils.isEmpty(descr)) && ImplementationConfiguration.isDescriptionDefault(pa.getDescrizione())) {
// lascio la precedente descrizione
/**pa.setDescrizione(pa.getDescrizione());*/
}
else {
pa.setDescrizione(descr);
}
if(statoPorta==null || "".equals(statoPorta) || CostantiConfigurazione.ABILITATO.toString().equals(statoPorta)){
pa.setStato(StatoFunzionalita.ABILITATO);
}
else{
pa.setStato(StatoFunzionalita.DISABILITATO);
}
if (stateless!=null && stateless.equals(PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_STATELESS_DEFAULT))
pa.setStateless(null);
else
pa.setStateless(StatoFunzionalita.toEnumConstant(stateless));
if (PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_GEST_BODY_ALLEGA.equals(gestBody))
pa.setAllegaBody(StatoFunzionalita.toEnumConstant(PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_ABILITATO));
else
pa.setAllegaBody(StatoFunzionalita.toEnumConstant(PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_DISABILITATO));
if (PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_GEST_BODY_SCARTA.equals(gestBody))
pa.setScartaBody(StatoFunzionalita.toEnumConstant(PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_ABILITATO));
else
pa.setScartaBody(StatoFunzionalita.toEnumConstant(PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_DISABILITATO));
if (gestManifest!=null && gestManifest.equals(PorteApplicativeCostanti.DEFAULT_VALUE_PARAMETRO_PORTE_APPLICATIVE_GEST_MANIFEST_DEFAULT))
pa.setGestioneManifest(null);
else
pa.setGestioneManifest(StatoFunzionalita.toEnumConstant(gestManifest));
pa.setRicevutaAsincronaSimmetrica(StatoFunzionalita.toEnumConstant(ricsim));
pa.setRicevutaAsincronaAsimmetrica(StatoFunzionalita.toEnumConstant(ricasim));
Map<String, List<String>> props = PropertiesSerializator.convertoFromDBColumnValue(pa.getOptions());
props.remove(CostantiPdD.OPTIONS_MESSAGE_FACTORY);
if(messageEngine!=null && !"".equals(messageEngine) && !CostantiControlStation.GESTIONE_MESSAGE_ENGINE_DEFAULT.equals(messageEngine)) {
TransportUtils.put(props,CostantiPdD.OPTIONS_MESSAGE_FACTORY, messageEngine, false);
}
if(props.size()>0) {
PropertiesSerializator ps = new PropertiesSerializator(props);
pa.setOptions(ps.convertToDBColumnValue());
}
else {
pa.setOptions(null);
}
if (idSoggettoVirtuale!=null) {
String tipoSoggVirt = idSoggettoVirtuale.getTipo();
String nomeSoggVirt = idSoggettoVirtuale.getNome();
PortaApplicativaSoggettoVirtuale pasv = new PortaApplicativaSoggettoVirtuale();
pasv.setTipo(tipoSoggVirt);
pasv.setNome(nomeSoggVirt);
pa.setSoggettoVirtuale(pasv);
} else
pa.setSoggettoVirtuale(null);
if (servizio!=null) {
String [] tmp = servizio.split(" ");
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(tmp[1].split("/")[0],tmp[1].split("/")[1],
tmp[0].split("/")[0],tmp[0].split("/")[1],
Integer.parseInt(tmp[1].split("/")[2]));
PortaApplicativaServizio pas = new PortaApplicativaServizio();
pas.setTipo(idServizio.getTipo());
pas.setNome(idServizio.getNome());
pas.setVersione(idServizio.getVersione());
pa.setServizio(pas);
} else
pa.setServizio(null);
// se l azione e' settata allora creo il bean
if(modeaz!=null && modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_DELEGATED_BY)) {
// non modifico paAzione
}
else if (( (azione!=null && !azione.equals("")) ||
PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_INPUT_BASED.equals(modeaz) ||
PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_SOAP_ACTION_BASED.equals(modeaz) ||
PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_PROTOCOL_BASED.equals(modeaz) ||
PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_HEADER_BASED.equals(modeaz) ||
PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_INTERFACE_BASED.equals(modeaz)) ||
(azid!=null && !azid.equals("")) ) {
PortaApplicativaAzione paa = new PortaApplicativaAzione();
if (modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_REGISTER_INPUT)) {
azione = azid;
if(paa.getId()<=0){
paa.setId(-2l);
}
}
paa.setIdentificazione(PortaApplicativaAzioneIdentificazione.toEnumConstant(modeaz));
if (modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_HEADER_BASED) ||
modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_URL_BASED) ||
modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_CONTENT_BASED)
) {
paa.setNome(null);
paa.setPattern(azione);
}
else if (modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_REGISTER_INPUT)
) {
paa.setNome(azione);
paa.setPattern(null);
}
else {
paa.setNome(null);
paa.setPattern(null);
}
//FORCE WSDL BASED
if(!modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_REGISTER_INPUT) &&
!modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_PROTOCOL_BASED) &&
!modeaz.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_MODE_INTERFACE_BASED)){
if(forceWsdlBased != null && (ServletUtils.isCheckBoxEnabled(forceWsdlBased))){
paa.setForceInterfaceBased(StatoFunzionalita.ABILITATO);
}else {
paa.setForceInterfaceBased(StatoFunzionalita.DISABILITATO);
}
}else {
paa.setForceInterfaceBased(null);
}
pa.setAzione(paa);
} else {
pa.setAzione(null);
}
// Cambio i dati della vecchia CorrelazioneApplicativa
// Non ne creo una nuova, altrimenti mi perdo le vecchie entry
if (ca != null)
ca.setScadenza(scadcorr);
pa.setCorrelazioneApplicativa(ca);
if(integrazioneStato.equals(CostantiControlStation.VALUE_PARAMETRO_PORTE_INTEGRAZIONE_STATO_DEFAULT)) {
pa.setIntegrazione(null);
} else if(integrazioneStato.equals(CostantiControlStation.VALUE_PARAMETRO_PORTE_INTEGRAZIONE_STATO_DISABILITATO)) {
pa.setIntegrazione(CostantiControlStation.VALUE_PARAMETRO_PORTE_INTEGRAZIONE_STATO_DISABILITATO);
} else {
List<String> valoriFinaliIntegrazione = new ArrayList<>();
for (GruppoIntegrazione group : integrazioneGruppiDaVisualizzare) {
valoriFinaliIntegrazione.addAll(integrazioneGruppiValoriDeiGruppi.get(group.getValue()));
}
pa.setIntegrazione(StringUtils.join(valoriFinaliIntegrazione.toArray(new String[valoriFinaliIntegrazione.size()]), ","));
}
if(datiAltroPorta) {
PolicyConfiguration oldPolicyConfig = new PolicyConfiguration(pa.getProprietaRateLimitingList(), porteApplicativeCore.getControlloTrafficoPolicyRateLimitingTipiGestori(), false);
boolean changeImpl = false;
if(oldPolicyConfig.getEngineType()!=null) {
changeImpl=!oldPolicyConfig.getEngineType().equals(ctTipologia);
}
else if(ctContatori!=null) {
changeImpl=true;
}
PolicyConfiguration policyConfig = new PolicyConfiguration();
if(changeImpl) {
policyConfig.setGestorePolicyConfigDate(DateManager.getTimeMillis());
}
else {
policyConfig.setGestorePolicyConfigDate(oldPolicyConfig.getGestorePolicyConfigDate());
}
policyConfig.setSyncMode(ctModalitaSincronizzazione);
policyConfig.setImpl(ctImplementazione);
policyConfig.setCount(ctContatori);
policyConfig.setEngineType(ctTipologia);
policyConfig.setHttpMode(ctHeaderHttp);
policyConfig.setHttpMode_limit(ctHeaderHttpLimit);
policyConfig.setHttpMode_remaining(ctHeaderHttpRemaining);
policyConfig.setHttpMode_reset(ctHeaderHttpReset);
policyConfig.setHttpMode_retry_after(ctHeaderHttpRetryAfter);
policyConfig.setHttpMode_retry_after_backoff(ctHeaderHttpRetryAfterBackoff);
pa.setProprietaRateLimitingList(new ArrayList<>());
policyConfig.saveIn(pa.getProprietaRateLimitingList());
}
if(!porteApplicativeCore.isConnettoriMultipliEnabled()) {
if(behaviour!=null && !"".equals(behaviour)){
pa.setBehaviour(new PortaApplicativaBehaviour());
pa.getBehaviour().setNome(behaviour);
}else
pa.setBehaviour(null);
}
if(!datiInvocazione && !datiAltroApi && !datiAltroPorta &&
servizioApplicativo!=null && !"".equals(servizioApplicativo)){
// Se il servizioApplicativo e' valorizzato deve esistere un solo SA nella porta applicativa
if(pa.sizeServizioApplicativoList()>0)
pa.removeServizioApplicativo(0);
if(!"-".equals(servizioApplicativo)){
PortaApplicativaServizioApplicativo sa = new PortaApplicativaServizioApplicativo();
sa.setNome(servizioApplicativo);
pa.addServizioApplicativo(sa);
}
}
String userLogin = ServletUtils.getUserLoginFromSession(session);
porteApplicativeCore.performUpdateOperation(userLogin, porteApplicativeHelper.smista(), pa);
// Preparo la lista
ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
List<PortaApplicativa> lista = null;
int idLista = -1;
switch (parentPA) {
case PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE:
boolean datiInvocazioneCheck = ServletUtils.isCheckBoxEnabled(porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_DATI_INVOCAZIONE));
boolean datiAltroApiCheck = ServletUtils.isCheckBoxEnabled(porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONFIGURAZIONE_ALTRO_API));
if(datiInvocazioneCheck || datiAltroApiCheck) {
if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
ErogazioniHelper erogazioniHelper = new ErogazioniHelper(request, pd, session);
erogazioniHelper.prepareErogazioneChange(TipoOperazione.CHANGE, asps, null);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeFinished(mapping, ErogazioniCostanti.OBJECT_NAME_ASPS_EROGAZIONI, ForwardParams.CHANGE());
}
idLista = Liste.SERVIZI;
ricerca = porteApplicativeHelper.checkSearchParameters(idLista, ricerca);
String tipologia = ServletUtils.getObjectFromSession(request, session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
if(tipologia!=null &&
AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
ricerca.addFilter(idLista, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE);
}
boolean [] permessi = new boolean[2];
PermessiUtente pu = ServletUtils.getUserFromSession(request, session).getPermessi();
permessi[0] = pu.isServizi();
permessi[1] = pu.isAccordiCooperazione();
List<AccordoServizioParteSpecifica> listaS = null;
String superUser = ServletUtils.getUserLoginFromSession(session);
if(apsCore.isVisioneOggettiGlobale(superUser)){
listaS = apsCore.soggettiServizioList(null, ricerca,permessi,session, request);
}else{
listaS = apsCore.soggettiServizioList(superUser, ricerca,permessi,session, request);
}
AccordiServizioParteSpecificaHelper apsHelper = new AccordiServizioParteSpecificaHelper(request, pd, session);
apsHelper.prepareServiziList(ricerca, listaS);
}
else {
idLista = Liste.CONFIGURAZIONE_EROGAZIONE;
ricerca = porteApplicativeHelper.checkSearchParameters(idLista, ricerca);
int idServizio = Integer.parseInt(idAsps);
asps = apsCore.getAccordoServizioParteSpecifica(idServizio);
IDServizio idServizio2 = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
Long idSoggetto = asps.getIdSoggetto() != null ? asps.getIdSoggetto() : -1L;
List<MappingErogazionePortaApplicativa> lista2 = apsCore.mappingServiziPorteAppList(idServizio2,asps.getId(),ricerca);
AccordiServizioParteSpecificaHelper apsHelper = new AccordiServizioParteSpecificaHelper(request, pd, session);
apsHelper.prepareServiziConfigurazioneList(lista2, idAsps, idSoggetto+"", ricerca);
}
break;
case PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_SOGGETTO:
idLista = Liste.PORTE_APPLICATIVE_BY_SOGGETTO;
ricerca = porteApplicativeHelper.checkSearchParameters(idLista, ricerca);
lista = porteApplicativeCore.porteAppList(soggInt, ricerca);
porteApplicativeHelper.preparePorteAppList(ricerca, lista,idLista);
break;
case PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_NONE:
default:
idLista = Liste.PORTE_APPLICATIVE;
ricerca = porteApplicativeHelper.checkSearchParameters(idLista, ricerca);
lista = porteApplicativeCore.porteAppList(null, ricerca);
porteApplicativeHelper.preparePorteAppList(ricerca, lista,idLista);
break;
}
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
ForwardParams fwP = ForwardParams.CHANGE();
if( (datiAltroPorta || modificaDescrizione) && !porteApplicativeHelper.isModalitaCompleta()) {
fwP = PorteApplicativeCostanti.TIPO_OPERAZIONE_CONFIGURAZIONE;
}
// Forward control to the specified success URI
return ServletUtils.getStrutsForwardEditModeFinished(mapping, PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE,
fwP);
} catch (Exception e) {
return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE,
ForwardParams.CHANGE());
}
}
}