PorteApplicativeConnettoriMultipliConfigProprietaNotifiche.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */


  20. package org.openspcoop2.web.ctrlstat.servlet.pa;

  21. import java.util.ArrayList;
  22. import java.util.List;

  23. import javax.servlet.ServletException;
  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpServletResponse;
  26. import javax.servlet.http.HttpSession;

  27. import org.apache.commons.lang.StringUtils;
  28. import org.apache.struts.action.Action;
  29. import org.apache.struts.action.ActionForm;
  30. import org.apache.struts.action.ActionForward;
  31. import org.apache.struts.action.ActionMapping;
  32. import org.openspcoop2.core.commons.Liste;
  33. import org.openspcoop2.core.config.PortaApplicativa;
  34. import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
  35. import org.openspcoop2.core.config.PortaApplicativaServizioApplicativoConnettore;
  36. import org.openspcoop2.core.config.ProprietaOggetto;
  37. import org.openspcoop2.core.config.constants.TipoBehaviour;
  38. import org.openspcoop2.core.id.IDSoggetto;
  39. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  40. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  41. import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
  42. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  43. import org.openspcoop2.message.constants.ServiceBinding;
  44. import org.openspcoop2.pdd.core.behaviour.built_in.multi_deliver.ConfigurazioneGestioneConsegnaNotifiche;
  45. import org.openspcoop2.pdd.core.behaviour.built_in.multi_deliver.TipoGestioneNotificaFault;
  46. import org.openspcoop2.pdd.core.behaviour.built_in.multi_deliver.TipoGestioneNotificaTrasporto;
  47. import org.openspcoop2.pdd.core.jmx.JMXUtils;
  48. import org.openspcoop2.utils.date.DateManager;
  49. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  50. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  51. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  52. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  53. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCore;
  54. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCore;
  55. import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniCostanti;
  56. import org.openspcoop2.web.lib.mvc.Costanti;
  57. import org.openspcoop2.web.lib.mvc.DataElement;
  58. import org.openspcoop2.web.lib.mvc.ForwardParams;
  59. import org.openspcoop2.web.lib.mvc.GeneralData;
  60. import org.openspcoop2.web.lib.mvc.PageData;
  61. import org.openspcoop2.web.lib.mvc.Parameter;
  62. import org.openspcoop2.web.lib.mvc.ServletUtils;
  63. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  64. /**
  65.  * PorteApplicativeConnettoriMultipliConfigLoadBalance
  66.  *
  67.  * @author Andrea Poli (apoli@link.it)
  68.  * @author Giuliano Pintori (pintori@link.it)
  69.  * @author $Author$
  70.  * @version $Rev$, $Date$
  71.  *
  72.  */
  73. public final class PorteApplicativeConnettoriMultipliConfigProprietaNotifiche extends Action {

  74.     @Override
  75.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {


  76.         HttpSession session = request.getSession(true);

  77.         // Inizializzo PageData
  78.         PageData pd = new PageData();

  79.         GeneralHelper generalHelper = new GeneralHelper(session);

  80.         // Inizializzo GeneralData
  81.         GeneralData gd = generalHelper.initGeneralData(request);

  82.         try {
  83.             PorteApplicativeHelper porteApplicativeHelper = new PorteApplicativeHelper(request, pd, session);
  84.             // prelevo il flag che mi dice da quale pagina ho acceduto la sezione delle porte applicative
  85.             Integer parentPA = ServletUtils.getIntegerAttributeFromSession(PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT, session, request);
  86.             if(parentPA == null) parentPA = PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_NONE;
  87.             String idPorta = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID);
  88.             int idInt = Integer.parseInt(idPorta);
  89.             String idsogg = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO);
  90.             String idAsps = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_ASPS);
  91.             if(idAsps == null)
  92.                 idAsps = "";

  93.             String idConnTab = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_ID_CONN_TAB);
  94.             if(StringUtils.isNotEmpty(idConnTab)) {
  95.                 ServletUtils.setObjectIntoSession(request, session, idConnTab, CostantiControlStation.PARAMETRO_ID_CONN_TAB);
  96.             }

  97.             String nomeSAConnettore = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOME_SA);
  98.             String coda = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODA);
  99.             String priorita = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_PRIORITA);
  100.             String prioritaMax = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_PRIORITA_MAX);
  101.             String cadenzaRispedizione = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CADENZA_RISPEDIZIONE);
  102.             String codiceRisposta2xx = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_2XX);
  103.             String codiceRisposta2xxValueMin = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_2XX_VALUE_MIN);
  104.             String codiceRisposta2xxValueMax = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_2XX_VALUE_MAX);
  105.             String codiceRisposta2xxValue = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_2XX_VALUE);
  106.             String codiceRisposta3xx = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_3XX);
  107.             String codiceRisposta3xxValueMin = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_3XX_VALUE_MIN);
  108.             String codiceRisposta3xxValueMax = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_3XX_VALUE_MAX);
  109.             String codiceRisposta3xxValue = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_3XX_VALUE);
  110.             String codiceRisposta4xx = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_4XX);
  111.             String codiceRisposta4xxValueMin = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_4XX_VALUE_MIN);
  112.             String codiceRisposta4xxValueMax = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_4XX_VALUE_MAX);
  113.             String codiceRisposta4xxValue = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_4XX_VALUE);
  114.             String codiceRisposta5xx = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_5XX);
  115.             String codiceRisposta5xxValueMin = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_5XX_VALUE_MIN);
  116.             String codiceRisposta5xxValueMax = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_5XX_VALUE_MAX);
  117.             String codiceRisposta5xxValue = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_5XX_VALUE);
  118.             String gestioneFault = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_GESTIONE);
  119.             String faultCode = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODE);
  120.             String faultActor = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_ACTOR);
  121.             String faultMessage = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_MESSAGE);

  122.             String connettoreTipoMessaggioDaNotificare = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_TIPO_MESSAGGIO_DA_NOTIFICARE);
  123.             String connettoreIniettaContestoSincrono = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_INIETTA_CONTESTO_SINCRONO);
  124.             String httpMethodDaNotificare = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_TIPO_HTTP_NOTIFICA);
  125.            
  126.             boolean accessoDaListaAPS = false;
  127.             String accessoDaAPSParametro = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORE_DA_LISTA_APS);
  128.             if(Costanti.CHECK_BOX_ENABLED_TRUE.equals(accessoDaAPSParametro)) {
  129.                 accessoDaListaAPS = true;
  130.             }

  131.             boolean isModalitaCompleta = porteApplicativeHelper.isModalitaCompleta();
  132.             Boolean vistaErogazioni = ServletUtils.getBooleanAttributeFromSession(ErogazioniCostanti.ASPS_EROGAZIONI_ATTRIBUTO_VISTA_EROGAZIONI, session, request).getValue();

  133.             // Preparo il menu
  134.             porteApplicativeHelper.makeMenu();

  135.             // Prendo nome, tipo e pdd del soggetto
  136.             PorteApplicativeCore porteApplicativeCore = new PorteApplicativeCore();
  137.             AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore(porteApplicativeCore);
  138.             AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore(porteApplicativeCore);

  139.             // Prendo nome della porta applicativa
  140.             PortaApplicativa pa = porteApplicativeCore.getPortaApplicativa(idInt);
  141.             String idporta = pa.getNome();
  142.             TipoBehaviour beaBehaviourType = TipoBehaviour.toEnumConstant(pa.getBehaviour().getNome());
  143.             long idAspsLong = Long.parseLong(idAsps);
  144.             AccordoServizioParteSpecifica asps = apsCore.getAccordoServizioParteSpecifica(idAspsLong);
  145.             AccordoServizioParteComuneSintetico as = null;
  146.             if(porteApplicativeCore.isRegistroServiziLocale()){
  147.                 int idAcc = asps.getIdAccordo().intValue();
  148.                 as = apcCore.getAccordoServizioSintetico(idAcc);
  149.             }
  150.             else{
  151.                 as = apcCore.getAccordoServizioSintetico(IDAccordoFactory.getInstance().getIDAccordoFromUri(asps.getAccordoServizioParteComune()));
  152.             }
  153.            
  154.             ServiceBinding serviceBinding = porteApplicativeCore.toMessageServiceBinding(as.getServiceBinding());

  155.             // valora iniziale della configurazione
  156.             PortaApplicativaServizioApplicativo oldPaSA = null;
  157.             boolean connettoreDefault = false;
  158.             TipoBehaviour behaviourType = null;
  159.             if(pa.getBehaviour()!=null) {
  160.                 behaviourType = TipoBehaviour.toEnumConstant(pa.getBehaviour().getNome());
  161.             }
  162.             for (PortaApplicativaServizioApplicativo paSATmp : pa.getServizioApplicativoList()) {
  163.                 if(paSATmp.getNome().equals(nomeSAConnettore)) {
  164.                     oldPaSA = paSATmp;
  165.                     connettoreDefault = porteApplicativeHelper.isConnettoreDefault(oldPaSA);
  166.                 }
  167.             }
  168.             boolean consegnaSincrona = connettoreDefault && TipoBehaviour.CONSEGNA_CON_NOTIFICHE.equals(behaviourType);
  169.            
  170.             ConfigurazioneGestioneConsegnaNotifiche oldConfigurazioneGestioneConsegnaNotifiche =
  171.                     org.openspcoop2.pdd.core.behaviour.built_in.multi_deliver.MultiDeliverUtils.read(oldPaSA);
  172.            
  173.            
  174.             String postBackElementName = porteApplicativeHelper.getPostBackElementName();
  175.             if(postBackElementName != null ){
  176.                 if(postBackElementName.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_2XX)) {
  177.                     codiceRisposta2xxValueMin = "";
  178.                     codiceRisposta2xxValueMax = "";
  179.                     codiceRisposta2xxValue = "";
  180.                 }
  181.                
  182.                 if(postBackElementName.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_3XX)) {
  183.                     codiceRisposta3xxValueMin = "";
  184.                     codiceRisposta3xxValueMax = "";
  185.                     codiceRisposta3xxValue = "";
  186.                 }
  187.                
  188.                 if(postBackElementName.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_4XX)) {
  189.                     codiceRisposta4xxValueMin = "";
  190.                     codiceRisposta4xxValueMax = "";
  191.                     codiceRisposta4xxValue = "";
  192.                 }
  193.                
  194.                 if(postBackElementName.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_CODICE_RISPOSTA_HTTP_5XX)) {
  195.                     codiceRisposta5xxValueMin = "";
  196.                     codiceRisposta5xxValueMax = "";
  197.                     codiceRisposta5xxValue = "";
  198.                 }
  199.                
  200.                 if(postBackElementName.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_GESTIONE)) {
  201.                     faultCode = "";
  202.                     faultActor = "";
  203.                     faultMessage = "";
  204.                 }
  205.                
  206.                 if(postBackElementName.equals(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOTIFICHE_TIPO_MESSAGGIO_DA_NOTIFICARE)) {
  207.                     httpMethodDaNotificare = null;
  208.                 }
  209.             }
  210.            

  211.             List<Parameter> lstParam = porteApplicativeHelper.getTitoloPA(parentPA, idsogg, idAsps);

  212.             String labelPerPorta = null;
  213.             if(parentPA!=null && (parentPA.intValue() == PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE)) {
  214.                 if(accessoDaListaAPS) {
  215.                     if(!isModalitaCompleta) {
  216.                         if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
  217.                             labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI;
  218.                         } else {
  219.                             labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_DI+
  220.                                     porteApplicativeHelper.getLabelIdServizio(asps);
  221.                         }
  222.                     }
  223.                     else {
  224.                         labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI;
  225.                     }
  226.                 }
  227.                 else {
  228.                     labelPerPorta = porteApplicativeCore.getLabelRegolaMappingErogazionePortaApplicativa(
  229.                             PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_DI,
  230.                             PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI,
  231.                             pa);
  232.                 }
  233.             }
  234.             else {
  235.                 labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_DI+idporta;
  236.             }

  237.             if(accessoDaListaAPS) {
  238.                 lstParam.remove(lstParam.size()-1);
  239.             }

  240.             List<Parameter> listParametersConfigutazioneConnettoriMultipli = new ArrayList<>();
  241.             Parameter pIdPorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID, idPorta);
  242.             Parameter pNomePorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME, pa.getNome());
  243.             Parameter pIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, idsogg);
  244.             Parameter pIdAsps = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_ASPS, idAsps);
  245.             String idTabP = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_ID_TAB);
  246.             Parameter pIdTab = new Parameter(CostantiControlStation.PARAMETRO_ID_TAB, idTabP != null ? idTabP : "");
  247.             Parameter pIdConnTab = new Parameter(CostantiControlStation.PARAMETRO_ID_CONN_TAB, idConnTab != null ? idConnTab : "");
  248.             Parameter pAccessoDaAPS = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORE_DA_LISTA_APS, accessoDaAPSParametro != null ? accessoDaAPSParametro : "");
  249.             String connettoreAccessoGruppi = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI);
  250.             String connettoreRegistro = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO);
  251.             Parameter pConnettoreAccessoDaGruppi = new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI, connettoreAccessoGruppi);
  252.             Parameter pConnettoreAccesso = new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO, connettoreRegistro);
  253.             String connettoreAccessoListaConnettori = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_LISTA_CONNETTORI_MULTIPLI);

  254.             String nomeConnettoreChangeListBreadcump = null;
  255.             {
  256.                 // valora iniziale della configurazione
  257.                 PortaApplicativaServizioApplicativo paSA = null;
  258.                 for (PortaApplicativaServizioApplicativo paSATmp : pa.getServizioApplicativoList()) {
  259.                     if(paSATmp.getNome().equals(nomeSAConnettore)) {
  260.                         paSA = paSATmp;                
  261.                     }
  262.                 }
  263.    
  264.                 PortaApplicativaServizioApplicativoConnettore datiConnettore = paSA.getDatiConnettore();
  265.                
  266.                 if(datiConnettore!=null) {
  267.                     nomeConnettoreChangeListBreadcump = datiConnettore.getNome();
  268.                 }
  269.                 if(nomeConnettoreChangeListBreadcump==null) {
  270.                     nomeConnettoreChangeListBreadcump = CostantiConfigurazione.NOME_CONNETTORE_DEFAULT;
  271.                 }
  272.             }
  273.             Parameter pChangeNomeConnettoreBreadcump = new Parameter(CostantiControlStation.PARAMETRO_FROM_BREADCUMP_CHANGE_NOME_CONNETTORE, nomeConnettoreChangeListBreadcump);
  274.                        
  275.             listParametersConfigutazioneConnettoriMultipli.add(pIdSogg);
  276.             listParametersConfigutazioneConnettoriMultipli.add(pIdPorta);
  277.             listParametersConfigutazioneConnettoriMultipli.add(pNomePorta);
  278.             listParametersConfigutazioneConnettoriMultipli.add(pIdAsps);
  279.             listParametersConfigutazioneConnettoriMultipli.add(pIdTab);
  280.             listParametersConfigutazioneConnettoriMultipli.add(pIdConnTab);
  281.             listParametersConfigutazioneConnettoriMultipli.add(pAccessoDaAPS);
  282.             listParametersConfigutazioneConnettoriMultipli.add(pConnettoreAccessoDaGruppi);
  283.             listParametersConfigutazioneConnettoriMultipli.add(pConnettoreAccesso);
  284.             listParametersConfigutazioneConnettoriMultipli.add(pChangeNomeConnettoreBreadcump);

  285.             lstParam.add(new Parameter(labelPerPorta,  PorteApplicativeCostanti.SERVLET_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_LIST, listParametersConfigutazioneConnettoriMultipli.toArray(new Parameter[1])));

  286.             String labelDi = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_GESTIONE_NOTIFICHE_DI;
  287.             String label = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_GESTIONE_NOTIFICHE;
  288.             if(consegnaSincrona) {
  289.                 labelDi = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_GESTIONE_CONSEGNA_DI;
  290.                 label = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_GESTIONE_CONSEGNA;
  291.             }
  292.            
  293.             // Label diversa in base all'operazione
  294.             String labelPagina = porteApplicativeHelper.getLabelNomePortaApplicativaServizioApplicativo(
  295.                     labelDi,
  296.                     label,
  297.                     oldPaSA);

  298.             lstParam.add(new Parameter(labelPagina, null));

  299.             // setto la barra del titolo
  300.             ServletUtils.setPageDataTitle(pd, lstParam);

  301.             // Se nome = null, devo visualizzare la pagina per l'inserimento
  302.             // dati
  303.             if (porteApplicativeHelper.isEditModeInProgress()) {

  304.                 if(TipoBehaviour.CONSEGNA_CON_NOTIFICHE.equals(behaviourType) && !consegnaSincrona) {
  305.                     if(connettoreTipoMessaggioDaNotificare==null) {
  306.                         if(oldConfigurazioneGestioneConsegnaNotifiche!=null && oldConfigurazioneGestioneConsegnaNotifiche.getMessaggioDaNotificare()!=null) {
  307.                             connettoreTipoMessaggioDaNotificare = oldConfigurazioneGestioneConsegnaNotifiche.getMessaggioDaNotificare().getValue();
  308.                         }
  309.                         if(connettoreTipoMessaggioDaNotificare==null) {
  310.                             connettoreTipoMessaggioDaNotificare = PorteApplicativeCostanti.VALORE_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONNETTORE_MESSAGGIO_DA_NOTIFICARE_RICHIESTA;
  311.                         }
  312.                     }
  313.                     if(connettoreIniettaContestoSincrono==null &&
  314.                         oldConfigurazioneGestioneConsegnaNotifiche!=null && oldConfigurazioneGestioneConsegnaNotifiche.isInjectTransactionSyncContext()) {
  315.                         connettoreIniettaContestoSincrono = Costanti.CHECK_BOX_ENABLED;
  316.                     }
  317.                     if(httpMethodDaNotificare==null) {
  318.                         if(oldConfigurazioneGestioneConsegnaNotifiche!=null && oldConfigurazioneGestioneConsegnaNotifiche.getHttpMethod()!=null) {
  319.                             httpMethodDaNotificare = oldConfigurazioneGestioneConsegnaNotifiche.getHttpMethod().name();
  320.                         }
  321.                         if(httpMethodDaNotificare==null) {
  322.                             if(PorteApplicativeCostanti.VALORE_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONNETTORE_MESSAGGIO_DA_NOTIFICARE_RICHIESTA.equals(connettoreTipoMessaggioDaNotificare)) {
  323.                                 httpMethodDaNotificare = PorteApplicativeCostanti.VALORE_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONNETTORE_MESSAGGIO_HTTP_NOTIFICA_DEFAULT_RICHIESTA;
  324.                             }
  325.                             else {
  326.                                 httpMethodDaNotificare = PorteApplicativeCostanti.VALORE_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONNETTORE_MESSAGGIO_HTTP_NOTIFICA_DEFAULT;
  327.                             }
  328.                         }
  329.                     }
  330.                 }
  331.                
  332.                 if(coda==null) {
  333.                     if(oldPaSA!=null && oldPaSA.getDatiConnettore()!=null) {
  334.                         coda = oldPaSA.getDatiConnettore().getCoda();
  335.                     }
  336.                     if(coda==null) {
  337.                         coda = CostantiConfigurazione.CODA_DEFAULT;
  338.                     }
  339.                 }
  340.                 if(priorita==null) {
  341.                     if(oldPaSA!=null && oldPaSA.getDatiConnettore()!=null) {
  342.                         priorita = oldPaSA.getDatiConnettore().getPriorita();
  343.                         prioritaMax = oldPaSA.getDatiConnettore().isPrioritaMax() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  344.                     }
  345.                     if(priorita==null) {
  346.                         priorita = CostantiConfigurazione.PRIORITA_DEFAULT;
  347.                     }
  348.                 }
  349.                
  350.                 if(cadenzaRispedizione == null) {
  351.                     if(oldConfigurazioneGestioneConsegnaNotifiche != null) {
  352.                         // cadenza rispedizione
  353.                         cadenzaRispedizione = oldConfigurazioneGestioneConsegnaNotifiche.getCadenzaRispedizione() != null ? oldConfigurazioneGestioneConsegnaNotifiche.getCadenzaRispedizione()+ "" : "";
  354.                        
  355.                         TipoGestioneNotificaTrasporto gestioneTrasporto2xxE = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto2xx();
  356.                         if(gestioneTrasporto2xxE != null) {
  357.                             codiceRisposta2xx = gestioneTrasporto2xxE.getValue();
  358.                             codiceRisposta2xxValueMin = "";
  359.                             codiceRisposta2xxValueMax = "";
  360.                             codiceRisposta2xxValue = "";

  361.                             switch(gestioneTrasporto2xxE) {
  362.                             case CONSEGNA_COMPLETATA:
  363.                             case CONSEGNA_FALLITA:
  364.                                 break;
  365.                             case CODICI_CONSEGNA_COMPLETATA:
  366.                                 StringBuilder sb = new StringBuilder();
  367.                                 for(Integer x : oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto2xx_codes()) {
  368.                                     if(sb.length() > 0) {
  369.                                         sb.append(",");
  370.                                     }
  371.                                     sb.append(x+ "");
  372.                                 }
  373.                                 codiceRisposta2xxValue = sb.toString();
  374.                                 break;
  375.                             case INTERVALLO_CONSEGNA_COMPLETATA:
  376.                                 codiceRisposta2xxValueMin = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto2xx_leftInterval() + "";
  377.                                 codiceRisposta2xxValueMax = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto2xx_rightInterval() + "";
  378.                                 break;
  379.                             }
  380.                         } else {
  381.                             codiceRisposta2xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  382.                             codiceRisposta2xxValueMin = "";
  383.                             codiceRisposta2xxValueMax = "";
  384.                             codiceRisposta2xxValue = "";
  385.                         }
  386.                        
  387.                         TipoGestioneNotificaTrasporto gestioneTrasporto3xxE = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto3xx();
  388.                         if(gestioneTrasporto3xxE != null) {
  389.                             codiceRisposta3xx = gestioneTrasporto3xxE.getValue();
  390.                             codiceRisposta3xxValueMin = "";
  391.                             codiceRisposta3xxValueMax = "";
  392.                             codiceRisposta3xxValue = "";

  393.                             switch(gestioneTrasporto3xxE) {
  394.                             case CONSEGNA_COMPLETATA:
  395.                             case CONSEGNA_FALLITA:
  396.                                 break;
  397.                             case CODICI_CONSEGNA_COMPLETATA:
  398.                                 StringBuilder sb = new StringBuilder();
  399.                                 for(Integer x : oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto3xx_codes()) {
  400.                                     if(sb.length() > 0) {
  401.                                         sb.append(",");
  402.                                     }
  403.                                     sb.append(x+ "");
  404.                                 }
  405.                                 codiceRisposta3xxValue = sb.toString();
  406.                                 break;
  407.                             case INTERVALLO_CONSEGNA_COMPLETATA:
  408.                                 codiceRisposta3xxValueMin = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto3xx_leftInterval() + "";
  409.                                 codiceRisposta3xxValueMax = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto3xx_rightInterval() + "";
  410.                                 break;
  411.                             }
  412.                         } else {
  413.                             codiceRisposta3xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  414.                             codiceRisposta3xxValueMin = "";
  415.                             codiceRisposta3xxValueMax = "";
  416.                             codiceRisposta3xxValue = "";
  417.                         }
  418.                        
  419.                         TipoGestioneNotificaTrasporto gestioneTrasporto4xxE = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto4xx();
  420.                         if(gestioneTrasporto4xxE != null) {
  421.                             codiceRisposta4xx = gestioneTrasporto4xxE.getValue();
  422.                             codiceRisposta4xxValueMin = "";
  423.                             codiceRisposta4xxValueMax = "";
  424.                             codiceRisposta4xxValue = "";

  425.                             switch(gestioneTrasporto4xxE) {
  426.                             case CONSEGNA_COMPLETATA:
  427.                             case CONSEGNA_FALLITA:
  428.                                 break;
  429.                             case CODICI_CONSEGNA_COMPLETATA:
  430.                                 StringBuilder sb = new StringBuilder();
  431.                                 for(Integer x : oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto4xx_codes()) {
  432.                                     if(sb.length() > 0) {
  433.                                         sb.append(",");
  434.                                     }
  435.                                     sb.append(x+ "");
  436.                                 }
  437.                                 codiceRisposta4xxValue = sb.toString();
  438.                                 break;
  439.                             case INTERVALLO_CONSEGNA_COMPLETATA:
  440.                                 codiceRisposta4xxValueMin = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto4xx_leftInterval() + "";
  441.                                 codiceRisposta4xxValueMax = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto4xx_rightInterval() + "";
  442.                                 break;
  443.                             }
  444.                         } else {
  445.                             codiceRisposta4xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  446.                             codiceRisposta4xxValueMin = "";
  447.                             codiceRisposta4xxValueMax = "";
  448.                             codiceRisposta4xxValue = "";
  449.                         }
  450.                        
  451.                         TipoGestioneNotificaTrasporto gestioneTrasporto5xxE = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto5xx();
  452.                         if(gestioneTrasporto5xxE != null) {
  453.                             codiceRisposta5xx = gestioneTrasporto5xxE.getValue();
  454.                             codiceRisposta5xxValueMin = "";
  455.                             codiceRisposta5xxValueMax = "";
  456.                             codiceRisposta5xxValue = "";

  457.                             switch(gestioneTrasporto5xxE) {
  458.                             case CONSEGNA_COMPLETATA:
  459.                             case CONSEGNA_FALLITA:
  460.                                 break;
  461.                             case CODICI_CONSEGNA_COMPLETATA:
  462.                                 StringBuilder sb = new StringBuilder();
  463.                                 for(Integer x : oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto5xx_codes()) {
  464.                                     if(sb.length() > 0) {
  465.                                         sb.append(",");
  466.                                     }
  467.                                     sb.append(x+ "");
  468.                                 }
  469.                                 codiceRisposta5xxValue = sb.toString();
  470.                                 break;
  471.                             case INTERVALLO_CONSEGNA_COMPLETATA:
  472.                                 codiceRisposta5xxValueMin = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto5xx_leftInterval() + "";
  473.                                 codiceRisposta5xxValueMax = oldConfigurazioneGestioneConsegnaNotifiche.getGestioneTrasporto5xx_rightInterval() + "";
  474.                                 break;
  475.                             }
  476.                         } else {
  477.                             codiceRisposta5xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  478.                             codiceRisposta5xxValueMin = "";
  479.                             codiceRisposta5xxValueMax = "";
  480.                             codiceRisposta5xxValue = "";
  481.                         }
  482.                        
  483.                         if(oldConfigurazioneGestioneConsegnaNotifiche.getFault() != null) {
  484.                             gestioneFault = oldConfigurazioneGestioneConsegnaNotifiche.getFault().getValue();
  485.                         } else {
  486.                             gestioneFault = TipoGestioneNotificaFault.CONSEGNA_COMPLETATA.getValue();
  487.                         }
  488.                        
  489.                         faultCode = oldConfigurazioneGestioneConsegnaNotifiche.getFaultCode() != null ? oldConfigurazioneGestioneConsegnaNotifiche.getFaultCode() : "";
  490.                         faultActor = oldConfigurazioneGestioneConsegnaNotifiche.getFaultActor() != null ? oldConfigurazioneGestioneConsegnaNotifiche.getFaultActor() : "";
  491.                         faultMessage = oldConfigurazioneGestioneConsegnaNotifiche.getFaultMessage() != null ? oldConfigurazioneGestioneConsegnaNotifiche.getFaultMessage() : "";
  492.                        
  493.                     } else {
  494.                         cadenzaRispedizione = "";
  495.                         codiceRisposta2xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  496.                         codiceRisposta2xxValueMin = "";
  497.                         codiceRisposta2xxValueMax = "";
  498.                         codiceRisposta2xxValue = "";
  499.                         codiceRisposta3xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  500.                         codiceRisposta3xxValueMin = "";
  501.                         codiceRisposta3xxValueMax = "";
  502.                         codiceRisposta3xxValue = "";
  503.                         codiceRisposta4xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  504.                         codiceRisposta4xxValueMin = "";
  505.                         codiceRisposta4xxValueMax = "";
  506.                         codiceRisposta4xxValue = "";
  507.                         codiceRisposta5xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  508.                         codiceRisposta5xxValueMin = "";
  509.                         codiceRisposta5xxValueMax = "";
  510.                         codiceRisposta5xxValue = "";
  511.                         gestioneFault = TipoGestioneNotificaFault.CONSEGNA_COMPLETATA.getValue();
  512.                         faultCode = "";
  513.                         faultActor = "";
  514.                         faultMessage = "";
  515.                     }
  516.                 }

  517.                 // preparo i campi
  518.                 List<DataElement> dati = new ArrayList<>();
  519.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  520.                 dati = porteApplicativeHelper.addConnettoriMultipliNotificheToDati(dati, TipoOperazione.OTHER, beaBehaviourType, nomeSAConnettore, serviceBinding, cadenzaRispedizione,
  521.                         codiceRisposta2xx, codiceRisposta2xxValueMin, codiceRisposta2xxValueMax, codiceRisposta2xxValue,
  522.                         codiceRisposta3xx, codiceRisposta3xxValueMin, codiceRisposta3xxValueMax, codiceRisposta3xxValue,
  523.                         codiceRisposta4xx, codiceRisposta4xxValueMin, codiceRisposta4xxValueMax, codiceRisposta4xxValue,
  524.                         codiceRisposta5xx, codiceRisposta5xxValueMin, codiceRisposta5xxValueMax, codiceRisposta5xxValue,
  525.                         gestioneFault, faultCode, faultActor, faultMessage,
  526.                         consegnaSincrona,
  527.                         coda, priorita, prioritaMax,
  528.                         connettoreTipoMessaggioDaNotificare, connettoreIniettaContestoSincrono, httpMethodDaNotificare);

  529.                 dati = porteApplicativeHelper.addHiddenFieldsToDati(TipoOperazione.OTHER, idPorta, idsogg, idPorta,idAsps, dati);

  530.                 dati = porteApplicativeHelper.addInformazioniGruppiAsHiddenToDati(TipoOperazione.OTHER, dati, idTabP, idConnTab, accessoDaAPSParametro != null ? accessoDaAPSParametro : "",
  531.                         connettoreAccessoGruppi, connettoreRegistro, connettoreAccessoListaConnettori);

  532.                 pd.setDati(dati);

  533.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  534.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIGURAZIONE_PROPRIETA_NOTIFICHE,
  535.                         ForwardParams.OTHER(""));
  536.             }

  537.             // Controlli sui campi immessi
  538.             boolean isOk = porteApplicativeHelper.connettoriMultipliNotificheCheckData(TipoOperazione.OTHER, pa, beaBehaviourType, serviceBinding, nomeSAConnettore, cadenzaRispedizione,
  539.                     codiceRisposta2xx, codiceRisposta2xxValueMin, codiceRisposta2xxValueMax, codiceRisposta2xxValue,
  540.                     codiceRisposta3xx, codiceRisposta3xxValueMin, codiceRisposta3xxValueMax, codiceRisposta3xxValue,
  541.                     codiceRisposta4xx, codiceRisposta4xxValueMin, codiceRisposta4xxValueMax, codiceRisposta4xxValue,
  542.                     codiceRisposta5xx, codiceRisposta5xxValueMin, codiceRisposta5xxValueMax, codiceRisposta5xxValue,
  543.                     gestioneFault, faultCode, faultActor, faultMessage);

  544.             if (!isOk) {

  545.                 // preparo i campi
  546.                 List<DataElement> dati = new ArrayList<>();

  547.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  548.                 dati = porteApplicativeHelper.addConnettoriMultipliNotificheToDati(dati, TipoOperazione.OTHER, beaBehaviourType, nomeSAConnettore, serviceBinding, cadenzaRispedizione,
  549.                         codiceRisposta2xx, codiceRisposta2xxValueMin, codiceRisposta2xxValueMax, codiceRisposta2xxValue,
  550.                         codiceRisposta3xx, codiceRisposta3xxValueMin, codiceRisposta3xxValueMax, codiceRisposta3xxValue,
  551.                         codiceRisposta4xx, codiceRisposta4xxValueMin, codiceRisposta4xxValueMax, codiceRisposta4xxValue,
  552.                         codiceRisposta5xx, codiceRisposta5xxValueMin, codiceRisposta5xxValueMax, codiceRisposta5xxValue,
  553.                         gestioneFault, faultCode, faultActor, faultMessage,
  554.                         consegnaSincrona,
  555.                         coda, priorita, prioritaMax,
  556.                         connettoreTipoMessaggioDaNotificare, connettoreIniettaContestoSincrono, httpMethodDaNotificare);

  557.                 dati = porteApplicativeHelper.addHiddenFieldsToDati(TipoOperazione.OTHER, idPorta, idsogg, idPorta, idAsps, dati);

  558.                 dati = porteApplicativeHelper.addInformazioniGruppiAsHiddenToDati(TipoOperazione.OTHER, dati, idTabP, idConnTab, accessoDaAPSParametro != null ? accessoDaAPSParametro : "",
  559.                         connettoreAccessoGruppi, connettoreRegistro, connettoreAccessoListaConnettori);

  560.                 pd.setDati(dati);

  561.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  562.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIGURAZIONE_PROPRIETA_NOTIFICHE,
  563.                         ForwardParams.OTHER(""));
  564.             }

  565.             // valora iniziale della configurazione
  566.             PortaApplicativaServizioApplicativo paSA = null;
  567.             for (PortaApplicativaServizioApplicativo paSATmp : pa.getServizioApplicativoList()) {
  568.                 if(paSATmp.getNome().equals(nomeSAConnettore)) {
  569.                     paSA = paSATmp;                
  570.                 }
  571.             }
  572.            
  573.             PortaApplicativaServizioApplicativoConnettore datiConnettore = paSA.getDatiConnettore();
  574.            
  575.             boolean oldValuePrioritaMax = false;
  576.             String oldCoda = null;
  577.            
  578.             if(datiConnettore == null) { // succede solo se e' la prima volta che modifico la configurazione di default
  579.                 datiConnettore = new PortaApplicativaServizioApplicativoConnettore();
  580.                 datiConnettore.setNome(CostantiConfigurazione.NOME_CONNETTORE_DEFAULT);
  581.             }
  582.             else {
  583.                 oldValuePrioritaMax = datiConnettore.isPrioritaMax();
  584.                 oldCoda = datiConnettore.getCoda();
  585.             }
  586.            
  587.             datiConnettore.setCoda(coda);
  588.             datiConnettore.setPriorita(priorita);
  589.             datiConnettore.setPrioritaMax(ServletUtils.isCheckBoxEnabled(prioritaMax));
  590.            
  591.             paSA.setDatiConnettore(datiConnettore);
  592.            
  593.             ConfigurazioneGestioneConsegnaNotifiche nuovaConfigurazioneGestioneConsegnaNotifiche  = porteApplicativeHelper.getConfigurazioneGestioneConsegnaNotifiche(beaBehaviourType, serviceBinding, cadenzaRispedizione,
  594.                     codiceRisposta2xx, codiceRisposta2xxValueMin, codiceRisposta2xxValueMax, codiceRisposta2xxValue,
  595.                     codiceRisposta3xx, codiceRisposta3xxValueMin, codiceRisposta3xxValueMax, codiceRisposta3xxValue,
  596.                     codiceRisposta4xx, codiceRisposta4xxValueMin, codiceRisposta4xxValueMax, codiceRisposta4xxValue,
  597.                     codiceRisposta5xx, codiceRisposta5xxValueMin, codiceRisposta5xxValueMax, codiceRisposta5xxValue,
  598.                     gestioneFault, faultCode, faultActor, faultMessage,
  599.                     consegnaSincrona,
  600.                     connettoreTipoMessaggioDaNotificare, connettoreIniettaContestoSincrono, httpMethodDaNotificare);
  601.            
  602.             org.openspcoop2.pdd.core.behaviour.built_in.multi_deliver.MultiDeliverUtils.save(paSA, nuovaConfigurazioneGestioneConsegnaNotifiche);

  603.             String userLogin = ServletUtils.getUserLoginFromSession(session);

  604.             if(datiConnettore.getProprietaOggetto()==null) {
  605.                 datiConnettore.setProprietaOggetto(new ProprietaOggetto());
  606.             }
  607.             datiConnettore.getProprietaOggetto().setUtenteUltimaModifica(userLogin);
  608.             datiConnettore.getProprietaOggetto().setDataUltimaModifica(DateManager.getDate());
  609.            
  610.             porteApplicativeCore.performUpdateOperation(userLogin, porteApplicativeHelper.smista(), pa);

  611.             boolean resetCoda = false;
  612.             if(oldValuePrioritaMax != datiConnettore.isPrioritaMax()) {
  613.                 resetConnettoriPrioritari(coda, porteApplicativeCore);
  614.                 resetCoda = true;
  615.             }
  616.             if(!coda.equals(oldCoda)) {
  617.                 resetConnettoriPrioritari(oldCoda, porteApplicativeCore);
  618.                 if(!resetCoda) {
  619.                     resetConnettoriPrioritari(coda, porteApplicativeCore);
  620.                 }
  621.             }
  622.            
  623.             // Serve per le breadcump
  624.             ServletUtils.removeRisultatiRicercaFromSession(request, session, Liste.PORTE_APPLICATIVE_CONNETTORI_MULTIPLI);
  625.            
  626.             // ricarico la configurazione
  627.             pa = porteApplicativeCore.getPortaApplicativa(Integer.parseInt(idPorta));

  628.             boolean rimanereInEditPage = false;
  629.            
  630.             if(rimanereInEditPage) {
  631.            
  632.                 paSA = null;
  633.                 for (PortaApplicativaServizioApplicativo paSATmp : pa.getServizioApplicativoList()) {
  634.                     if(paSATmp.getNome().equals(nomeSAConnettore)) {
  635.                         paSA = paSATmp;                
  636.                     }
  637.                 }
  638.                
  639.                 ConfigurazioneGestioneConsegnaNotifiche configurazioneGestioneConsegnaNotifiche =
  640.                         org.openspcoop2.pdd.core.behaviour.built_in.multi_deliver.MultiDeliverUtils.read(paSA);
  641.    
  642.                 if(configurazioneGestioneConsegnaNotifiche != null) {
  643.                     // cadenza rispedizione
  644.                     cadenzaRispedizione = configurazioneGestioneConsegnaNotifiche.getCadenzaRispedizione() != null ? configurazioneGestioneConsegnaNotifiche.getCadenzaRispedizione()+ "" : "";
  645.                    
  646.                     TipoGestioneNotificaTrasporto gestioneTrasporto2xxE = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto2xx();
  647.                     if(gestioneTrasporto2xxE != null) {
  648.                         codiceRisposta2xx = gestioneTrasporto2xxE.getValue();
  649.                         codiceRisposta2xxValueMin = "";
  650.                         codiceRisposta2xxValueMax = "";
  651.                         codiceRisposta2xxValue = "";
  652.    
  653.                         switch(gestioneTrasporto2xxE) {
  654.                         case CONSEGNA_COMPLETATA:
  655.                         case CONSEGNA_FALLITA:
  656.                             break;
  657.                         case CODICI_CONSEGNA_COMPLETATA:
  658.                             StringBuilder sb = new StringBuilder();
  659.                             for(Integer x : configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto2xx_codes()) {
  660.                                 if(sb.length() > 0) {
  661.                                     sb.append(",");
  662.                                 }
  663.                                 sb.append(x+ "");
  664.                             }
  665.                             codiceRisposta2xxValue = sb.toString();
  666.                             break;
  667.                         case INTERVALLO_CONSEGNA_COMPLETATA:
  668.                             codiceRisposta2xxValueMin = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto2xx_leftInterval() + "";
  669.                             codiceRisposta2xxValueMax = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto2xx_rightInterval() + "";
  670.                             break;
  671.                         }
  672.                     } else {
  673.                         codiceRisposta2xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  674.                         codiceRisposta2xxValueMin = "";
  675.                         codiceRisposta2xxValueMax = "";
  676.                         codiceRisposta2xxValue = "";
  677.                     }
  678.                    
  679.                     TipoGestioneNotificaTrasporto gestioneTrasporto3xxE = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto3xx();
  680.                     if(gestioneTrasporto3xxE != null) {
  681.                         codiceRisposta3xx = gestioneTrasporto3xxE.getValue();
  682.                         codiceRisposta3xxValueMin = "";
  683.                         codiceRisposta3xxValueMax = "";
  684.                         codiceRisposta3xxValue = "";
  685.    
  686.                         switch(gestioneTrasporto3xxE) {
  687.                         case CONSEGNA_COMPLETATA:
  688.                         case CONSEGNA_FALLITA:
  689.                             break;
  690.                         case CODICI_CONSEGNA_COMPLETATA:
  691.                             StringBuilder sb = new StringBuilder();
  692.                             for(Integer x : configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto3xx_codes()) {
  693.                                 if(sb.length() > 0) {
  694.                                     sb.append(",");
  695.                                 }
  696.                                 sb.append(x+ "");
  697.                             }
  698.                             codiceRisposta3xxValue = sb.toString();
  699.                             break;
  700.                         case INTERVALLO_CONSEGNA_COMPLETATA:
  701.                             codiceRisposta3xxValueMin = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto3xx_leftInterval() + "";
  702.                             codiceRisposta3xxValueMax = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto3xx_rightInterval() + "";
  703.                             break;
  704.                         }
  705.                     } else {
  706.                         codiceRisposta3xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  707.                         codiceRisposta3xxValueMin = "";
  708.                         codiceRisposta3xxValueMax = "";
  709.                         codiceRisposta3xxValue = "";
  710.                     }
  711.                    
  712.                     TipoGestioneNotificaTrasporto gestioneTrasporto4xxE = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto4xx();
  713.                     if(gestioneTrasporto4xxE != null) {
  714.                         codiceRisposta4xx = gestioneTrasporto4xxE.getValue();
  715.                         codiceRisposta4xxValueMin = "";
  716.                         codiceRisposta4xxValueMax = "";
  717.                         codiceRisposta4xxValue = "";
  718.    
  719.                         switch(gestioneTrasporto4xxE) {
  720.                         case CONSEGNA_COMPLETATA:
  721.                         case CONSEGNA_FALLITA:
  722.                             break;
  723.                         case CODICI_CONSEGNA_COMPLETATA:
  724.                             StringBuilder sb = new StringBuilder();
  725.                             for(Integer x : configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto4xx_codes()) {
  726.                                 if(sb.length() > 0) {
  727.                                     sb.append(",");
  728.                                 }
  729.                                 sb.append(x+ "");
  730.                             }
  731.                             codiceRisposta4xxValue = sb.toString();
  732.                             break;
  733.                         case INTERVALLO_CONSEGNA_COMPLETATA:
  734.                             codiceRisposta4xxValueMin = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto4xx_leftInterval() + "";
  735.                             codiceRisposta4xxValueMax = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto4xx_rightInterval() + "";
  736.                             break;
  737.                         }
  738.                     } else {
  739.                         codiceRisposta4xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  740.                         codiceRisposta4xxValueMin = "";
  741.                         codiceRisposta4xxValueMax = "";
  742.                         codiceRisposta4xxValue = "";
  743.                     }
  744.                    
  745.                     TipoGestioneNotificaTrasporto gestioneTrasporto5xxE = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto5xx();
  746.                     if(gestioneTrasporto5xxE != null) {
  747.                         codiceRisposta5xx = gestioneTrasporto5xxE.getValue();
  748.                         codiceRisposta5xxValueMin = "";
  749.                         codiceRisposta5xxValueMax = "";
  750.                         codiceRisposta5xxValue = "";
  751.    
  752.                         switch(gestioneTrasporto5xxE) {
  753.                         case CONSEGNA_COMPLETATA:
  754.                         case CONSEGNA_FALLITA:
  755.                             break;
  756.                         case CODICI_CONSEGNA_COMPLETATA:
  757.                             StringBuilder sb = new StringBuilder();
  758.                             for(Integer x : configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto5xx_codes()) {
  759.                                 if(sb.length() > 0) {
  760.                                     sb.append(",");
  761.                                 }
  762.                                 sb.append(x+ "");
  763.                             }
  764.                             codiceRisposta5xxValue = sb.toString();
  765.                             break;
  766.                         case INTERVALLO_CONSEGNA_COMPLETATA:
  767.                             codiceRisposta5xxValueMin = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto5xx_leftInterval() + "";
  768.                             codiceRisposta5xxValueMax = configurazioneGestioneConsegnaNotifiche.getGestioneTrasporto5xx_rightInterval() + "";
  769.                             break;
  770.                         }
  771.                     } else {
  772.                         codiceRisposta5xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  773.                         codiceRisposta5xxValueMin = "";
  774.                         codiceRisposta5xxValueMax = "";
  775.                         codiceRisposta5xxValue = "";
  776.                     }
  777.                    
  778.                     if(configurazioneGestioneConsegnaNotifiche.getFault() != null) {
  779.                         gestioneFault = configurazioneGestioneConsegnaNotifiche.getFault().getValue();
  780.                     } else {
  781.                         gestioneFault = TipoGestioneNotificaFault.CONSEGNA_COMPLETATA.getValue();
  782.                     }
  783.                    
  784.                     faultCode = configurazioneGestioneConsegnaNotifiche.getFaultCode() != null ? configurazioneGestioneConsegnaNotifiche.getFaultCode() : "";
  785.                     faultActor = configurazioneGestioneConsegnaNotifiche.getFaultActor() != null ? configurazioneGestioneConsegnaNotifiche.getFaultActor() : "";
  786.                     faultMessage = configurazioneGestioneConsegnaNotifiche.getFaultMessage() != null ? configurazioneGestioneConsegnaNotifiche.getFaultMessage() : "";
  787.                    
  788.                 } else {
  789.                     cadenzaRispedizione = "";
  790.                     codiceRisposta2xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  791.                     codiceRisposta2xxValueMin = "";
  792.                     codiceRisposta2xxValueMax = "";
  793.                     codiceRisposta2xxValue = "";
  794.                     codiceRisposta3xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  795.                     codiceRisposta3xxValueMin = "";
  796.                     codiceRisposta3xxValueMax = "";
  797.                     codiceRisposta3xxValue = "";
  798.                     codiceRisposta4xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  799.                     codiceRisposta4xxValueMin = "";
  800.                     codiceRisposta4xxValueMax = "";
  801.                     codiceRisposta4xxValue = "";
  802.                     codiceRisposta5xx = TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA.getValue();
  803.                     codiceRisposta5xxValueMin = "";
  804.                     codiceRisposta5xxValueMax = "";
  805.                     codiceRisposta5xxValue = "";
  806.                     gestioneFault = TipoGestioneNotificaFault.CONSEGNA_COMPLETATA.getValue();
  807.                     faultCode = "";
  808.                     faultActor = "";
  809.                     faultMessage = "";
  810.                 }
  811.    
  812.                 // preparo i campi
  813.                 List<DataElement> dati = new ArrayList<>();
  814.    
  815.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  816.    
  817.                 dati = porteApplicativeHelper.addConnettoriMultipliNotificheToDati(dati, TipoOperazione.OTHER, beaBehaviourType, nomeSAConnettore, serviceBinding, cadenzaRispedizione,
  818.                         codiceRisposta2xx, codiceRisposta2xxValueMin, codiceRisposta2xxValueMax, codiceRisposta2xxValue,
  819.                         codiceRisposta3xx, codiceRisposta3xxValueMin, codiceRisposta3xxValueMax, codiceRisposta3xxValue,
  820.                         codiceRisposta4xx, codiceRisposta4xxValueMin, codiceRisposta4xxValueMax, codiceRisposta4xxValue,
  821.                         codiceRisposta5xx, codiceRisposta5xxValueMin, codiceRisposta5xxValueMax, codiceRisposta5xxValue,
  822.                         gestioneFault, faultCode, faultActor, faultMessage,
  823.                         consegnaSincrona,
  824.                         coda, priorita, prioritaMax,
  825.                         connettoreTipoMessaggioDaNotificare, connettoreIniettaContestoSincrono, httpMethodDaNotificare);
  826.    
  827.                 dati = porteApplicativeHelper.addHiddenFieldsToDati(TipoOperazione.OTHER, idPorta, idsogg, idPorta, idAsps, dati);
  828.    
  829.                 dati = porteApplicativeHelper.addInformazioniGruppiAsHiddenToDati(TipoOperazione.OTHER, dati, idTabP, idConnTab, accessoDaAPSParametro != null ? accessoDaAPSParametro : "",
  830.                         connettoreAccessoGruppi, connettoreRegistro, connettoreAccessoListaConnettori);
  831.    
  832.                 pd.setDati(dati);
  833.    
  834.                 pd.setMessage(CostantiControlStation.LABEL_AGGIORNAMENTO_EFFETTUATO_CON_SUCCESSO, Costanti.MESSAGE_TYPE_INFO);
  835.                
  836.             }
  837.            
  838.             else {
  839.                
  840.                 // Preparo la lista
  841.                 ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);

  842.                 int idLista = Liste.PORTE_APPLICATIVE_CONNETTORI_MULTIPLI;

  843.                 ricerca = porteApplicativeHelper.checkSearchParameters(idLista, ricerca);

  844.                 IDSoggetto idSoggettoProprietario = new IDSoggetto(pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario());
  845.                 List<PortaApplicativaServizioApplicativo> listaFiltrata = porteApplicativeHelper.applicaFiltriRicercaConnettoriMultipli(ricerca, idLista, pa.getServizioApplicativoList(), idSoggettoProprietario);
  846.                
  847.                 String nomeConnettoreChangeList = datiConnettore.getNome();
  848.                 if(nomeConnettoreChangeList==null) {
  849.                     nomeConnettoreChangeList = CostantiConfigurazione.NOME_CONNETTORE_DEFAULT;
  850.                 }
  851.                
  852.                 porteApplicativeHelper.preparePorteAppConnettoriMultipliList_fromChangeConnettore(pa.getNome(), ricerca, listaFiltrata, pa,
  853.                         nomeConnettoreChangeList);
  854.                
  855.             }

  856.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  857.             // Forward control to the specified success URI
  858.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIGURAZIONE_PROPRIETA_NOTIFICHE,
  859.                     ForwardParams.OTHER(""));
  860.         } catch (Exception e) {
  861.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  862.                     PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIGURAZIONE_PROPRIETA_NOTIFICHE,
  863.                     ForwardParams.OTHER(""));
  864.         }  
  865.     }
  866.    
  867.     private void resetConnettoriPrioritari(String coda, PorteApplicativeCore porteApplicativeCore) {
  868.         List<String> aliasJmx = porteApplicativeCore.getJmxPdDAliases();
  869.         if(aliasJmx!=null && !aliasJmx.isEmpty()) {
  870.             for (String alias : aliasJmx) {
  871.                 String metodo = porteApplicativeCore.getJmxPdDConfigurazioneSistemaNomeMetodoUpdateConnettoriPrioritari(alias);
  872.                 try{
  873.                     String stato = porteApplicativeCore.getInvoker().invokeJMXMethod(alias,
  874.                             porteApplicativeCore.getJmxPdDConfigurazioneSistemaType(alias),
  875.                             porteApplicativeCore.getJmxPdDConfigurazioneSistemaNomeRisorsaConsegnaContenutiApplicativi(alias),
  876.                             metodo,
  877.                             coda);
  878.                     if(stato==null) {
  879.                         throw new ServletException("Aggiornamento fallito");
  880.                     }
  881.                     if(
  882.                             !(
  883.                                 JMXUtils.MSG_OPERAZIONE_EFFETTUATA_SUCCESSO.equals(stato)
  884.                                 ||
  885.                                 (stato!=null && stato.startsWith(JMXUtils.MSG_OPERAZIONE_EFFETTUATA_SUCCESSO_PREFIX))
  886.                             )
  887.                         ){
  888.                         throw new ServletException(stato);
  889.                     }
  890.                 }catch(Exception e){
  891.                     String msgErrore = "Errore durante l'aggiornamento dei connettori prioritari (coda:"+coda+") via jmx (jmxMethod '"+metodo+"') (node:"+alias+"): "+e.getMessage();
  892.                     ControlStationCore.logError(msgErrore, e);
  893.                 }
  894.             }
  895.         }
  896.     }
  897. }