AccordiServizioParteComuneAzioniAdd.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.apc;

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

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

  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.id.IDAccordo;
  33. import org.openspcoop2.core.id.IDAccordoAzione;
  34. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  35. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  36. import org.openspcoop2.core.registry.Azione;
  37. import org.openspcoop2.core.registry.IdSoggetto;
  38. import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
  39. import org.openspcoop2.core.registry.constants.ProfiloCollaborazione;
  40. import org.openspcoop2.core.registry.constants.StatoFunzionalita;
  41. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  42. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  43. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  44. import org.openspcoop2.protocol.sdk.ProtocolException;
  45. import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
  46. import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
  47. import org.openspcoop2.protocol.sdk.properties.IConsoleDynamicConfiguration;
  48. import org.openspcoop2.protocol.sdk.properties.ProtocolProperties;
  49. import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
  50. import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
  51. import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
  52. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  53. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  54. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  55. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCore;
  56. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  57. import org.openspcoop2.web.lib.mvc.Costanti;
  58. import org.openspcoop2.web.lib.mvc.DataElement;
  59. import org.openspcoop2.web.lib.mvc.ForwardParams;
  60. import org.openspcoop2.web.lib.mvc.GeneralData;
  61. import org.openspcoop2.web.lib.mvc.PageData;
  62. import org.openspcoop2.web.lib.mvc.Parameter;
  63. import org.openspcoop2.web.lib.mvc.ServletUtils;
  64. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  65. /**
  66.  * accordiAzioniAdd
  67.  *
  68.  * @author Andrea Poli (apoli@link.it)
  69.  * @author Stefano Corallo (corallo@link.it)
  70.  * @author Sandra Giangrandi (sandra@link.it)
  71.  * @author $Author$
  72.  * @version $Rev$, $Date$
  73.  *
  74.  */
  75. public final class AccordiServizioParteComuneAzioniAdd extends Action {


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

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

  79.         // Inizializzo PageData
  80.         PageData pd = new PageData();

  81.         GeneralHelper generalHelper = new GeneralHelper(session);

  82.         // Inizializzo GeneralData
  83.         GeneralData gd = generalHelper.initGeneralData(request);

  84.         IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();

  85.         // Protocol Properties
  86.         IConsoleDynamicConfiguration consoleDynamicConfiguration = null;
  87.         ConsoleConfiguration consoleConfiguration =null;
  88.         ProtocolProperties protocolProperties = null;
  89.         IProtocolFactory<?> protocolFactory= null;
  90.         IRegistryReader registryReader = null;
  91.         IConfigIntegrationReader configRegistryReader = null;
  92.         ConsoleOperationType consoleOperationType = null;
  93.        
  94.         // Parametri Protocol Properties relativi al tipo di operazione e al tipo di visualizzazione
  95.         consoleOperationType = ConsoleOperationType.ADD;
  96.        
  97.         // Parametri relativi al tipo operazione
  98.         TipoOperazione tipoOp = TipoOperazione.ADD;


  99.         try {
  100.             AccordiServizioParteComuneHelper apcHelper = new AccordiServizioParteComuneHelper(request, pd, session);
  101.            
  102.             String editMode = apcHelper.getParameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME);

  103.             String id = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID);
  104.             int idAccordo = 0;
  105.             try {
  106.                 idAccordo = Integer.parseInt(id);
  107.             } catch (Exception e) {
  108.             }
  109.             String nomeaz = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_NOME);
  110.             if (nomeaz == null) {
  111.                 nomeaz = "";
  112.             }
  113.             String azicorr = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_CORRELATA);
  114.             if (azicorr == null || azicorr.equals(""))
  115.                 azicorr = "-";
  116.             String profProtocollo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_PROFILO_BUSTA);
  117.             String profcoll = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_PROFILO_COLLABORAZIONE);
  118.             String filtrodupaz = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_FILTRO_DUPLICATI);
  119.             if ((filtrodupaz != null) && filtrodupaz.equals("null")) {
  120.                 filtrodupaz = null;
  121.             }
  122.             String confricaz = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_CONFERMA_RICEZIONE);
  123.             if ((confricaz != null) && confricaz.equals("null")) {
  124.                 confricaz = null;
  125.             }
  126.             String idcollaz = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_COLLABORAZIONE);
  127.             if ((idcollaz != null) && idcollaz.equals("null")) {
  128.                 idcollaz = null;
  129.             }
  130.             String idRifRichiestaAz = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_ID_RIFERIMENTO_RICHIESTA);
  131.             if ((idRifRichiestaAz != null) && idRifRichiestaAz.equals("null")) {
  132.                 idRifRichiestaAz = null;
  133.             }
  134.             String consordaz = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_CONSEGNA_ORDINE);
  135.             if ((consordaz != null) && consordaz.equals("null")) {
  136.                 consordaz = null;
  137.             }
  138.             String scadenzaaz = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_AZIONI_SCADENZA);
  139.             if (scadenzaaz == null) {
  140.                 scadenzaaz = "";
  141.             }
  142.             String tipoAccordo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_TIPO_ACCORDO);
  143.             if("".equals(tipoAccordo))
  144.                 tipoAccordo = null;

  145.             // Preparo il menu
  146.             apcHelper.makeMenu();

  147.             // Prendo il nome dal db
  148.             AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore();
  149.             AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore(apcCore);
  150.             SoggettiCore soggettiCore = new SoggettiCore(apsCore);

  151.             AccordoServizioParteComune as = apcCore.getAccordoServizioFull(idAccordo);
  152.             String labelASTitle = apcHelper.getLabelIdAccordo(as);
  153.             IDAccordo idAs = idAccordoFactory.getIDAccordoFromAccordo(as);

  154.             String protocollo = null;
  155.             //calcolo del protocollo implementato dall'accordo
  156.             IdSoggetto soggettoReferente = as.getSoggettoReferente();
  157.             String tipoSoggettoReferente = soggettoReferente.getTipo();
  158.             protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(tipoSoggettoReferente);

  159.             protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(protocollo);
  160.             consoleDynamicConfiguration =  protocolFactory.createDynamicConfigurationConsole();
  161.             registryReader = soggettiCore.getRegistryReader(protocolFactory);
  162.             configRegistryReader = soggettiCore.getConfigIntegrationReader(protocolFactory);
  163.            
  164.             IDAccordoAzione idAzione = new IDAccordoAzione();
  165.             idAzione.setIdAccordo(idAs);
  166.             idAzione.setNome(nomeaz);
  167.             consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigAzione(consoleOperationType, apcHelper,
  168.                     registryReader, configRegistryReader, idAzione );
  169.             protocolProperties = apcHelper.estraiProtocolPropertiesDaRequest(consoleConfiguration, consoleOperationType);

  170.             // Prendo la lista di azioni dell'accordo
  171.             // e ne metto i nomi in un array di stringhe
  172.             // prendo la lista delle azioni correlate con profilo
  173.             // asincronoAsimmetrico
  174.             List<Azione> azioniCorrelate = apcCore.accordiAzioniList(idAccordo, CostantiRegistroServizi.ASINCRONO_ASIMMETRICO.toString() , new ConsoleSearch(true));
  175.             List<String> azioniCorrelateUniche = null;
  176.             String[] azioniList = null;
  177.             if (!azioniCorrelate.isEmpty()) {
  178.                 azioniCorrelateUniche = new ArrayList<>();
  179.                 azioniCorrelateUniche.add("-");
  180.                 for (Iterator<Azione> iterator = azioniCorrelate.iterator(); iterator.hasNext();) {
  181.                     Azione azione = iterator.next();
  182.                     if (!nomeaz.equals(azione.getNome()) &&
  183.                             (azione.getCorrelata()==null||"".equals(azione.getCorrelata())) &&
  184.                             (!apcCore.isAzioneCorrelata(idAccordo, azione.getNome(), nomeaz))
  185.                             ) {
  186.                         azioniCorrelateUniche.add(azione.getNome());
  187.                     }
  188.                 }
  189.             }

  190.             if (azioniCorrelateUniche != null)
  191.                 azioniList = azioniCorrelateUniche.toArray(new String[azioniCorrelateUniche.size()]);

  192.             // Se idhid = null, devo visualizzare la pagina per l'inserimento
  193.             // dati
  194.             if(ServletUtils.isEditModeInProgress(editMode)){

  195.                 // setto la barra del titolo
  196.                 ServletUtils.setPageDataTitle(pd,
  197.                         new Parameter(AccordiServizioParteComuneUtilities.getTerminologiaAccordoServizio(tipoAccordo),
  198.                                 AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_LIST+"?"+
  199.                                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getName()+"="+
  200.                                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getValue()),
  201.                         new Parameter(AccordiServizioParteComuneCostanti.LABEL_AZIONI + " di " + labelASTitle,
  202.                                 AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_AZIONI_LIST+"?"+
  203.                                         AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID+"="+id+"&"+
  204.                                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getName()+"="+
  205.                                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getValue()),
  206.                         ServletUtils.getParameterAggiungi()
  207.                         );

  208.                 if (profProtocollo == null) {
  209.                     profProtocollo = AccordiServizioParteComuneCostanti.INFORMAZIONI_PROTOCOLLO_MODALITA_DEFAULT;
  210.                 }

  211.                 // Prende i default stabiliti nell'accordo relativo
  212.                 filtrodupaz = filtrodupaz != null && !"".equals(filtrodupaz) ? filtrodupaz : AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getFiltroDuplicati());
  213.                 confricaz = confricaz != null && !"".equals(confricaz) ? confricaz : AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getConfermaRicezione());
  214.                 idcollaz = idcollaz != null && !"".equals(idcollaz) ? idcollaz : AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getIdCollaborazione());
  215.                 idRifRichiestaAz = idRifRichiestaAz != null && !"".equals(idRifRichiestaAz) ? idRifRichiestaAz : AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getIdRiferimentoRichiesta());
  216.                 consordaz = consordaz != null && !"".equals(consordaz) ? consordaz : AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getConsegnaInOrdine());
  217.                 scadenzaaz = scadenzaaz != null && !"".equals(scadenzaaz) ? scadenzaaz : as.getScadenza();
  218.                 profcoll = profcoll != null && !"".equals(profcoll) ? profcoll : AccordiServizioParteComuneHelper.convertProfiloCollaborazioneDB2View(as.getProfiloCollaborazione());

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

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

  222.                 consoleDynamicConfiguration.updateDynamicConfigAzione(consoleConfiguration, consoleOperationType, apcHelper, protocolProperties,
  223.                         registryReader, configRegistryReader, idAzione);

  224.                 dati = apcHelper.addAccordiAzioniToDati(dati, id, nomeaz, profProtocollo,
  225.                         filtrodupaz, filtrodupaz, confricaz, confricaz, idcollaz, idcollaz, idRifRichiestaAz, idRifRichiestaAz, consordaz, consordaz, scadenzaaz, scadenzaaz,
  226.                         profcoll, profcoll, tipoOp, azicorr, azioniList, as.getStatoPackage(),tipoAccordo,protocollo,apcCore.toMessageServiceBinding(as.getServiceBinding()));

  227.                 // aggiunta campi custom
  228.                 dati = apcHelper.addProtocolPropertiesToDatiRegistry(dati, consoleConfiguration,consoleOperationType, protocolProperties);

  229.                 pd.setDati(dati);

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

  231.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_AZIONI, ForwardParams.ADD());
  232.             }

  233.             // Controlli sui campi immessi
  234.             boolean isOk = apcHelper.accordiAzioniCheckData(tipoOp, id, nomeaz, profProtocollo, filtrodupaz, confricaz, idcollaz, idRifRichiestaAz, consordaz, scadenzaaz);

  235.             // updateDynamic
  236.             if(isOk) {
  237.                 consoleDynamicConfiguration.updateDynamicConfigAzione(consoleConfiguration, consoleOperationType, apcHelper, protocolProperties,
  238.                         registryReader, configRegistryReader, idAzione);
  239.             }
  240.            
  241.             // Validazione base dei parametri custom
  242.             if(isOk){
  243.                 try{
  244.                     apcHelper.validaProtocolProperties(consoleConfiguration, consoleOperationType, protocolProperties);
  245.                 }catch(ProtocolException e){
  246.                     ControlStationCore.getLog().error(e.getMessage(),e);
  247.                     pd.setMessage(e.getMessage());
  248.                     isOk = false;
  249.                 }
  250.             }

  251.             // Valido i parametri custom se ho gia' passato tutta la validazione prevista
  252.             if(isOk){
  253.                 try{
  254.                     //validazione campi dinamici
  255.                     consoleDynamicConfiguration.validateDynamicConfigAzione(consoleConfiguration, consoleOperationType, apcHelper, protocolProperties,
  256.                             registryReader, configRegistryReader, idAzione);
  257.                 }catch(ProtocolException e){
  258.                     ControlStationCore.getLog().error(e.getMessage(),e);
  259.                     pd.setMessage(e.getMessage());
  260.                     isOk = false;
  261.                 }
  262.             }

  263.             if (!isOk) {

  264.                 // setto la barra del titolo
  265.                 ServletUtils.setPageDataTitle(pd,
  266.                         new Parameter(AccordiServizioParteComuneUtilities.getTerminologiaAccordoServizio(tipoAccordo),
  267.                                 AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_LIST+"?"+
  268.                                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getName()+"="+
  269.                                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getValue()),
  270.                         new Parameter(AccordiServizioParteComuneCostanti.LABEL_AZIONI + " di " + labelASTitle,
  271.                                 AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_AZIONI_LIST+"?"+
  272.                                         AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID+"="+id+"&"+
  273.                                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getName()+"="+
  274.                                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getValue()),
  275.                         ServletUtils.getParameterAggiungi()
  276.                         );

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

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

  280.                 consoleDynamicConfiguration.updateDynamicConfigAzione(consoleConfiguration, consoleOperationType, apcHelper, protocolProperties,
  281.                         registryReader, configRegistryReader, idAzione);

  282.                 dati = apcHelper.addAccordiAzioniToDati(dati, id, nomeaz, profProtocollo,
  283.                         filtrodupaz, filtrodupaz, confricaz, confricaz, idcollaz, idcollaz, idRifRichiestaAz, idRifRichiestaAz, consordaz, consordaz, scadenzaaz, scadenzaaz,
  284.                         profcoll, profcoll, tipoOp, azicorr, azioniList, as.getStatoPackage(),tipoAccordo,protocollo,apcCore.toMessageServiceBinding(as.getServiceBinding()));

  285.                 // aggiunta campi custom
  286.                 dati = apcHelper.addProtocolPropertiesToDatiRegistry(dati, consoleConfiguration,consoleOperationType, protocolProperties);

  287.                 pd.setDati(dati);

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

  289.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_AZIONI, ForwardParams.ADD());
  290.             }

  291.             // Inserisco l'azione nel db
  292.             String userLogin = ServletUtils.getUserLoginFromSession(session);

  293.             // controllo se ci sono azioni gia inserite
  294.             // in caso contrario setto in accordi il campo
  295.             // utilizzo_senza_azione
  296.             List<Azione> list = apcCore.accordiAzioniList(idAccordo, new ConsoleSearch(true));
  297.             boolean modificaUtilizzoSenzaAzione = true;
  298.             if (!list.isEmpty())
  299.                 modificaUtilizzoSenzaAzione = false;
  300.             if (modificaUtilizzoSenzaAzione) {
  301.                 as.setUtilizzoSenzaAzione(false);
  302.                 apcCore.performUpdateOperation(userLogin, apcHelper.smista(), as);
  303.             }

  304.             // se profilo azione default allora il profilo collaborazione da
  305.             // utilizzare e' quello dell'accordo
  306.             if (profProtocollo.equals(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT))
  307.                 profcoll = as.getProfiloCollaborazione().toString();
  308.             else
  309.                 profcoll = AccordiServizioParteComuneHelper.convertProfiloCollaborazioneView2DB(profcoll);

  310.             Azione newAz = new Azione();
  311.             newAz.setIdAccordo(Long.valueOf(idAccordo));
  312.             newAz.setNome(nomeaz);
  313.             if (!azicorr.equals("-"))
  314.                 newAz.setCorrelata(azicorr);
  315.             newAz.setFiltroDuplicati(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(filtrodupaz)));
  316.             newAz.setConfermaRicezione(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(confricaz)));
  317.             newAz.setIdCollaborazione(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(idcollaz)));
  318.             newAz.setIdRiferimentoRichiesta(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(idRifRichiestaAz)));
  319.             newAz.setConsegnaInOrdine(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(consordaz)));
  320.             newAz.setScadenza(scadenzaaz);
  321.             newAz.setProfiloCollaborazione(ProfiloCollaborazione.toEnumConstant(profcoll));
  322.             newAz.setProfAzione(profProtocollo.equals(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT) ? profProtocollo : CostantiRegistroServizi.PROFILO_AZIONE_RIDEFINITO);
  323.             as.addAzione(newAz);

  324.             //imposto properties custom
  325.             newAz.setProtocolPropertyList(ProtocolPropertiesUtils.toProtocolPropertiesRegistry(protocolProperties, consoleOperationType,null));

  326.             apcCore.performUpdateOperation(userLogin, apcHelper.smista(), as);

  327.             // cancello i file temporanei
  328.             apcHelper.deleteBinaryProtocolPropertiesTmpFiles(protocolProperties);


  329.             // devo aggiornare la lista dei servizi(serviziCorrelati) che
  330.             // implementano l'accordo a cui e' stata aggiunta l'azione
  331.             // basta fare un update del servizio per attivare le operazioni
  332.             // necessarie all'aggiornamento
  333.             List<AccordoServizioParteSpecifica> listaServizi = apsCore.serviziWithIdAccordoList(idAccordo);
  334.             for (AccordoServizioParteSpecifica servizio : listaServizi) {
  335.                 apcCore.performUpdateOperation(userLogin, apcHelper.smista(), servizio);
  336.             }


  337.             // Preparo la lista
  338.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);

  339.             int idLista = Liste.ACCORDI_AZIONI;

  340.             ricerca = apcHelper.checkSearchParameters(idLista, ricerca);
  341.             List<Azione> lista = apcCore.accordiAzioniList(idAccordo, ricerca);
  342.             apcHelper.prepareAccordiAzioniList(as, lista, ricerca,id,tipoAccordo);

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

  344.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_AZIONI, ForwardParams.ADD());

  345.         } catch (Exception e) {
  346.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  347.                     AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_AZIONI, ForwardParams.ADD());
  348.         }
  349.     }
  350. }