PorteApplicativeConnettoriMultipliConfigProprietaForm.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.http.HttpServletRequest;
  24. import javax.servlet.http.HttpServletResponse;
  25. import javax.servlet.http.HttpSession;

  26. import org.apache.commons.lang.StringUtils;
  27. import org.apache.struts.action.Action;
  28. import org.apache.struts.action.ActionForm;
  29. import org.apache.struts.action.ActionForward;
  30. import org.apache.struts.action.ActionMapping;
  31. import org.openspcoop2.core.commons.Liste;
  32. import org.openspcoop2.core.config.PortaApplicativa;
  33. import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
  34. import org.openspcoop2.core.config.PortaApplicativaServizioApplicativoConnettore;
  35. import org.openspcoop2.core.config.constants.TipoBehaviour;
  36. import org.openspcoop2.core.id.IDSoggetto;
  37. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  38. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  39. import org.openspcoop2.pdd.core.behaviour.built_in.load_balance.LoadBalancerPool;
  40. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  41. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  42. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  43. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  44. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCore;
  45. import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniCostanti;
  46. import org.openspcoop2.web.lib.mvc.Costanti;
  47. import org.openspcoop2.web.lib.mvc.DataElement;
  48. import org.openspcoop2.web.lib.mvc.ForwardParams;
  49. import org.openspcoop2.web.lib.mvc.GeneralData;
  50. import org.openspcoop2.web.lib.mvc.PageData;
  51. import org.openspcoop2.web.lib.mvc.Parameter;
  52. import org.openspcoop2.web.lib.mvc.ServletUtils;
  53. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  54. /**
  55.  * PorteApplicativeConnettoriMultipliConfigLoadBalance
  56.  *
  57.  * @author Andrea Poli (apoli@link.it)
  58.  * @author Giuliano Pintori (pintori@link.it)
  59.  * @author $Author$
  60.  * @version $Rev$, $Date$
  61.  *
  62.  */
  63. public final class PorteApplicativeConnettoriMultipliConfigProprietaForm extends Action {

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


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

  67.         // Inizializzo PageData
  68.         PageData pd = new PageData();

  69.         GeneralHelper generalHelper = new GeneralHelper(session);

  70.         // Inizializzo GeneralData
  71.         GeneralData gd = generalHelper.initGeneralData(request);

  72.         try {
  73.             PorteApplicativeHelper porteApplicativeHelper = new PorteApplicativeHelper(request, pd, session);
  74.             // prelevo il flag che mi dice da quale pagina ho acceduto la sezione delle porte applicative
  75.             Integer parentPA = ServletUtils.getIntegerAttributeFromSession(PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT, session, request);
  76.             if(parentPA == null) parentPA = PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_NONE;
  77.             String idPorta = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID);
  78.             int idInt = Integer.parseInt(idPorta);
  79.             String idsogg = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO);
  80.             String idAsps = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_ASPS);
  81.             if(idAsps == null)
  82.                 idAsps = "";

  83.             String idConnTab = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_ID_CONN_TAB);
  84.             if(StringUtils.isNotEmpty(idConnTab)) {
  85.                 ServletUtils.setObjectIntoSession(request, session, idConnTab, CostantiControlStation.PARAMETRO_ID_CONN_TAB);
  86.             }

  87.             String nomeSAConnettore = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_NOME_SA);
  88.             String peso = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_LOAD_BALANCE_WEIGHT);

  89.             boolean accessoDaListaAPS = false;
  90.             String accessoDaAPSParametro = porteApplicativeHelper.getParameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORE_DA_LISTA_APS);
  91.             if(Costanti.CHECK_BOX_ENABLED_TRUE.equals(accessoDaAPSParametro)) {
  92.                 accessoDaListaAPS = true;
  93.             }

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

  96.             // Preparo il menu
  97.             porteApplicativeHelper.makeMenu();

  98.             // Prendo nome, tipo e pdd del soggetto
  99.             PorteApplicativeCore porteApplicativeCore = new PorteApplicativeCore();
  100.             AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore(porteApplicativeCore);

  101.             // Prendo nome della porta applicativa
  102.             PortaApplicativa pa = porteApplicativeCore.getPortaApplicativa(idInt);
  103.             String idporta = pa.getNome();
  104.             TipoBehaviour beaBehaviourType = TipoBehaviour.toEnumConstant(pa.getBehaviour().getNome());
  105.             long idAspsLong = Long.parseLong(idAsps);
  106.             AccordoServizioParteSpecifica asps = apsCore.getAccordoServizioParteSpecifica(idAspsLong);

  107.             // valora iniziale della configurazione
  108.             PortaApplicativaServizioApplicativo oldPaSA = null;
  109.             for (PortaApplicativaServizioApplicativo paSATmp : pa.getServizioApplicativoList()) {
  110.                 if(paSATmp.getNome().equals(nomeSAConnettore)) {
  111.                     oldPaSA = paSATmp;                  
  112.                 }
  113.             }

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

  115.             String labelPerPorta = null;
  116.             if(parentPA!=null && (parentPA.intValue() == PorteApplicativeCostanti.ATTRIBUTO_PORTE_APPLICATIVE_PARENT_CONFIGURAZIONE)) {
  117.                 if(accessoDaListaAPS) {
  118.                     if(!isModalitaCompleta) {
  119.                         if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
  120.                             labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI;
  121.                         } else {
  122.                             labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_DI+
  123.                                     porteApplicativeHelper.getLabelIdServizio(asps);
  124.                         }
  125.                     }
  126.                     else {
  127.                         labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI;
  128.                     }
  129.                 }
  130.                 else {
  131.                     labelPerPorta = porteApplicativeCore.getLabelRegolaMappingErogazionePortaApplicativa(
  132.                             PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_DI,
  133.                             PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI,
  134.                             pa);
  135.                 }
  136.             }
  137.             else {
  138.                 labelPerPorta = PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_DI+idporta;
  139.             }

  140.             if(accessoDaListaAPS) {
  141.                 lstParam.remove(lstParam.size()-1);
  142.             }

  143.             List<Parameter> listParametersConfigutazioneConnettoriMultipli = new ArrayList<>();
  144.             Parameter pIdPorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID, idPorta);
  145.             Parameter pNomePorta = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_NOME, pa.getNome());
  146.             Parameter pIdSogg = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_SOGGETTO, idsogg);
  147.             Parameter pIdAsps = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_ID_ASPS, idAsps);
  148.             String idTabP = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_ID_TAB);
  149.             Parameter pIdTab = new Parameter(CostantiControlStation.PARAMETRO_ID_TAB, idTabP != null ? idTabP : "");
  150.             Parameter pIdConnTab = new Parameter(CostantiControlStation.PARAMETRO_ID_CONN_TAB, idConnTab != null ? idConnTab : "");
  151.             Parameter pAccessoDaAPS = new Parameter(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORE_DA_LISTA_APS, accessoDaAPSParametro != null ? accessoDaAPSParametro : "");
  152.             String connettoreAccessoGruppi = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI);
  153.             String connettoreRegistro = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO);
  154.             Parameter pConnettoreAccessoDaGruppi = new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_GRUPPI, connettoreAccessoGruppi);
  155.             Parameter pConnettoreAccesso = new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_REGISTRO, connettoreRegistro);
  156.             String connettoreAccessoListaConnettori = porteApplicativeHelper.getParameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTORE_ACCESSO_DA_LISTA_CONNETTORI_MULTIPLI);

  157.             String nomeConnettoreChangeListBreadcump = null;
  158.             {
  159.                 // valora iniziale della configurazione
  160.                 PortaApplicativaServizioApplicativo paSA = null;
  161.                 for (PortaApplicativaServizioApplicativo paSATmp : pa.getServizioApplicativoList()) {
  162.                     if(paSATmp.getNome().equals(nomeSAConnettore)) {
  163.                         paSA = paSATmp;                
  164.                     }
  165.                 }
  166.    
  167.                 PortaApplicativaServizioApplicativoConnettore datiConnettore = paSA.getDatiConnettore();
  168.                
  169.                 if(datiConnettore!=null) {
  170.                     nomeConnettoreChangeListBreadcump = datiConnettore.getNome();
  171.                 }
  172.                 if(nomeConnettoreChangeListBreadcump==null) {
  173.                     nomeConnettoreChangeListBreadcump = CostantiConfigurazione.NOME_CONNETTORE_DEFAULT;
  174.                 }
  175.             }
  176.             Parameter pChangeNomeConnettoreBreadcump = new Parameter(CostantiControlStation.PARAMETRO_FROM_BREADCUMP_CHANGE_NOME_CONNETTORE, nomeConnettoreChangeListBreadcump);
  177.                        
  178.             listParametersConfigutazioneConnettoriMultipli.add(pIdSogg);
  179.             listParametersConfigutazioneConnettoriMultipli.add(pIdPorta);
  180.             listParametersConfigutazioneConnettoriMultipli.add(pNomePorta);
  181.             listParametersConfigutazioneConnettoriMultipli.add(pIdAsps);
  182.             listParametersConfigutazioneConnettoriMultipli.add(pIdTab);
  183.             listParametersConfigutazioneConnettoriMultipli.add(pIdConnTab);
  184.             listParametersConfigutazioneConnettoriMultipli.add(pAccessoDaAPS);
  185.             listParametersConfigutazioneConnettoriMultipli.add(pConnettoreAccessoDaGruppi);
  186.             listParametersConfigutazioneConnettoriMultipli.add(pConnettoreAccesso);
  187.             listParametersConfigutazioneConnettoriMultipli.add(pChangeNomeConnettoreBreadcump);

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

  189.             // Label diversa in base all'operazione
  190.             String labelPagina = porteApplicativeHelper.getLabelNomePortaApplicativaServizioApplicativo(
  191.                     PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIG_LOAD_BALANCE_DI,
  192.                     PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIG_LOAD_BALANCE,
  193.                     oldPaSA);

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

  195.             // setto la barra del titolo
  196.             ServletUtils.setPageDataTitle(pd, lstParam);

  197.             // Se nome = null, devo visualizzare la pagina per l'inserimento
  198.             // dati
  199.             if (porteApplicativeHelper.isEditModeInProgress()) {

  200.                 if(peso == null) {
  201.                     peso = org.openspcoop2.pdd.core.behaviour.built_in.load_balance.ConfigurazioneLoadBalancer.readLoadBalancerWeight(oldPaSA);
  202.                 }
  203.                
  204.                 if(peso == null) {
  205.                     peso = LoadBalancerPool.DEFAULT_WEIGHT+"";
  206.                 }

  207.                 // preparo i campi
  208.                 List<DataElement> dati = new ArrayList<>();
  209.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  210.                 dati = porteApplicativeHelper.addConnettoriMultipliLoadBalanceToDati(dati, TipoOperazione.OTHER, beaBehaviourType, nomeSAConnettore, peso);

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

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

  214.                 pd.setDati(dati);

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

  216.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIGURAZIONE_PROPRIETA_FORM,
  217.                         ForwardParams.OTHER(""));
  218.             }

  219.             // Controlli sui campi immessi
  220.             boolean isOk = porteApplicativeHelper.connettoriMultipliLoadBalanceCheckData(TipoOperazione.OTHER, pa, beaBehaviourType, nomeSAConnettore, peso);

  221.             if (!isOk) {

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

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

  225.                 dati = porteApplicativeHelper.addConnettoriMultipliLoadBalanceToDati(dati, TipoOperazione.OTHER, beaBehaviourType, nomeSAConnettore, peso);

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

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

  229.                 pd.setDati(dati);

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

  231.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIGURAZIONE_PROPRIETA_FORM,
  232.                         ForwardParams.OTHER(""));
  233.             }

  234.             // valora iniziale della configurazione
  235.             PortaApplicativaServizioApplicativo paSA = null;
  236.             for (PortaApplicativaServizioApplicativo paSATmp : pa.getServizioApplicativoList()) {
  237.                 if(paSATmp.getNome().equals(nomeSAConnettore)) {
  238.                     paSA = paSATmp;                
  239.                 }
  240.             }
  241.            
  242.             PortaApplicativaServizioApplicativoConnettore datiConnettore = paSA.getDatiConnettore();
  243.            
  244.             if(datiConnettore == null) { // succede solo se e' la prima volta che modifico la configurazione di default
  245.                 datiConnettore = new PortaApplicativaServizioApplicativoConnettore();
  246.                 datiConnettore.setNome(CostantiConfigurazione.NOME_CONNETTORE_DEFAULT);
  247.             }
  248.            
  249.             paSA.setDatiConnettore(datiConnettore);
  250.            
  251.             org.openspcoop2.pdd.core.behaviour.built_in.load_balance.ConfigurazioneLoadBalancer.addLoadBalancerWeight(paSA, peso);

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

  253.             porteApplicativeCore.performUpdateOperation(userLogin, porteApplicativeHelper.smista(), pa);

  254.             // Serve per le breadcump
  255.             ServletUtils.removeRisultatiRicercaFromSession(request, session, Liste.PORTE_APPLICATIVE_CONNETTORI_MULTIPLI);
  256.            
  257.             // ricarico la configurazione
  258.             pa = porteApplicativeCore.getPortaApplicativa(Integer.parseInt(idPorta));
  259.            
  260.             boolean rimanereInEditPage = false;
  261.            
  262.             if(rimanereInEditPage) {
  263.                
  264.                 paSA = null;
  265.                 for (PortaApplicativaServizioApplicativo paSATmp : pa.getServizioApplicativoList()) {
  266.                     if(paSATmp.getNome().equals(nomeSAConnettore)) {
  267.                         paSA = paSATmp;                
  268.                     }
  269.                 }
  270.    
  271.                 peso = org.openspcoop2.pdd.core.behaviour.built_in.load_balance.ConfigurazioneLoadBalancer.readLoadBalancerWeight(paSA);
  272.                
  273.                 if(peso == null) {
  274.                     peso = LoadBalancerPool.DEFAULT_WEIGHT+"";
  275.                 }
  276.    
  277.                 // preparo i campi
  278.                 List<DataElement> dati = new ArrayList<>();
  279.    
  280.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  281.    
  282.                 dati = porteApplicativeHelper.addConnettoriMultipliLoadBalanceToDati(dati, TipoOperazione.OTHER, beaBehaviourType, nomeSAConnettore, peso);
  283.    
  284.                 dati = porteApplicativeHelper.addHiddenFieldsToDati(TipoOperazione.OTHER, idPorta, idsogg, idPorta, idAsps, dati);
  285.    
  286.                 dati = porteApplicativeHelper.addInformazioniGruppiAsHiddenToDati(TipoOperazione.OTHER, dati, idTabP, idConnTab, accessoDaAPSParametro != null ? accessoDaAPSParametro : "",
  287.                         connettoreAccessoGruppi, connettoreRegistro, connettoreAccessoListaConnettori);
  288.    
  289.                 pd.setDati(dati);
  290.    
  291.                 pd.setMessage(CostantiControlStation.LABEL_AGGIORNAMENTO_EFFETTUATO_CON_SUCCESSO, Costanti.MESSAGE_TYPE_INFO);
  292.                    
  293.             }
  294.             else {
  295.                
  296.                 // Preparo la lista
  297.                 ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);

  298.                 int idLista = Liste.PORTE_APPLICATIVE_CONNETTORI_MULTIPLI;

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

  300.                 IDSoggetto idSoggettoProprietario = new IDSoggetto(pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario());
  301.                 List<PortaApplicativaServizioApplicativo> listaFiltrata = porteApplicativeHelper.applicaFiltriRicercaConnettoriMultipli(ricerca, idLista, pa.getServizioApplicativoList(), idSoggettoProprietario);

  302.                 String nomeConnettoreChangeList = datiConnettore.getNome();
  303.                 if(nomeConnettoreChangeList==null) {
  304.                     nomeConnettoreChangeList = CostantiConfigurazione.NOME_CONNETTORE_DEFAULT;
  305.                 }
  306.                
  307.                 porteApplicativeHelper.preparePorteAppConnettoriMultipliList_fromChangeConnettore(pa.getNome(), ricerca, listaFiltrata, pa,
  308.                         nomeConnettoreChangeList);
  309.                
  310.             }
  311.            
  312.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  313.             // Forward control to the specified success URI
  314.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIGURAZIONE_PROPRIETA_FORM,
  315.                     ForwardParams.OTHER(""));
  316.            
  317.         } catch (Exception e) {
  318.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  319.                     PorteApplicativeCostanti.OBJECT_NAME_PORTE_APPLICATIVE_CONNETTORI_MULTIPLI_CONFIGURAZIONE_PROPRIETA_FORM,
  320.                     ForwardParams.OTHER(""));
  321.         }  
  322.     }
  323. }