AccordiServizioParteComuneComponentiAdd.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.List;

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

  26. import org.apache.struts.action.Action;
  27. import org.apache.struts.action.ActionForm;
  28. import org.apache.struts.action.ActionForward;
  29. import org.apache.struts.action.ActionMapping;
  30. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  31. import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioComposto;
  32. import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioCompostoServizioComponente;
  33. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  34. import org.openspcoop2.message.constants.ServiceBinding;
  35. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  36. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  37. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  38. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCore;
  39. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  40. import org.openspcoop2.web.lib.mvc.DataElement;
  41. import org.openspcoop2.web.lib.mvc.ForwardParams;
  42. import org.openspcoop2.web.lib.mvc.GeneralData;
  43. import org.openspcoop2.web.lib.mvc.PageData;
  44. import org.openspcoop2.web.lib.mvc.Parameter;
  45. import org.openspcoop2.web.lib.mvc.ServletUtils;
  46. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  47. /**
  48.  * accordiComponentiAdd
  49.  *
  50.  * @author Andrea Poli (apoli@link.it)
  51.  * @author Stefano Corallo (corallo@link.it)
  52.  * @author Sandra Giangrandi (sandra@link.it)
  53.  * @author $Author$
  54.  * @version $Rev$, $Date$
  55.  *
  56.  */
  57. public final class AccordiServizioParteComuneComponentiAdd extends Action {

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



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

  61.         // Inizializzo PageData
  62.         PageData pd = new PageData();

  63.         GeneralHelper generalHelper = new GeneralHelper(session);

  64.         // Inizializzo GeneralData
  65.         GeneralData gd = generalHelper.initGeneralData(request);

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



  67.         try {

  68.             AccordiServizioParteComuneHelper apcHelper = new AccordiServizioParteComuneHelper(request, pd, session);

  69.             String idAccordo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID);
  70.             String idServizioComponente = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_COMPONENTI_COMPONENTE);
  71.             long idAccordoLong = Long.parseLong(idAccordo);
  72.             /**String portType = apcHelper.getParameter("port_type");*/

  73.             String tipoAccordo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_COMPONENTI_TIPO_SICA );
  74.             if("".equals(tipoAccordo))
  75.                 tipoAccordo = null;

  76.             AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore();
  77.             AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore(apcCore);
  78.             SoggettiCore soggettiCore = new SoggettiCore(apcCore);

  79.             // Preparo il menu
  80.             apcHelper.makeMenu();

  81.             // Prendo il nome
  82.             AccordoServizioParteComune as = apcCore.getAccordoServizioFull(idAccordoLong);
  83.             String labelASTitle = apcHelper.getLabelIdAccordo(as);
  84.             ServiceBinding serviceBinding = org.openspcoop2.protocol.basic.Utilities.convert(as.getServiceBinding());


  85.             /**String profiloReferente = soggettiCore.getSoggettoRegistro(new IDSoggetto(as.getSoggettoReferente().getTipo(),as.getSoggettoReferente().getNome())).getVersioneProtocollo();*/
  86.             String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(as.getSoggettoReferente().getTipo());
  87.             List<String> tipiServiziCompatibili = apsCore.getTipiServiziGestitiProtocollo(protocollo,serviceBinding);
  88.             List<String> tipiSoggettiCompatibili = soggettiCore.getTipiSoggettiGestitiProtocollo(protocollo);


  89.             //calcolo la lista dei servizi da visualizzare
  90.             String[] serviziList = null;
  91.             String[] serviziListLabel = null;
  92.             List<String[]> lst = apcCore.getAccordiServizioCompostoLabels(as, idAccordoLong, userLogin, tipiServiziCompatibili, tipiSoggettiCompatibili, apcHelper);

  93.             serviziList = lst.get(0);
  94.             serviziListLabel = lst.get(1);

  95.             // Lista port-type associati all'accordo di servizio
  96.             /**         AccordoServizioParteSpecifica ssComponente = null;
  97.             //          if (idServizioComponente != null && !"".equals(idServizioComponente)) {
  98.             //              ssComponente = core.getAccordoServizioParteSpecifica(Long.parseLong(idServizioComponente));
  99.             //          } else {
  100.             //              if (serviziList != null)
  101.             //                  ssComponente = core.getAccordoServizioParteSpecifica(Long.parseLong(serviziList[0]));
  102.             //          }
  103.             //          if(asComponente!=null){
  104.             //              List<PortType> portTypes = core.accordiPorttypeList(asComponente.getId().intValue(), new Search(true));
  105.             //              if (portTypes.size() > 0) {
  106.             //                  ptList = new String[portTypes.size() + 1];
  107.             //                  ptList[0] = "-";
  108.             //                  int i = 1;
  109.             //                  for (Iterator<PortType> iterator = portTypes.iterator(); iterator.hasNext();) {
  110.             //                      PortType portType2 = (PortType) iterator.next();
  111.             //                      ptList[i] = portType2.getNome();
  112.             //                      i++;
  113.             //                  }
  114.             //              }
  115.             //          }*/

  116.             // Se idhid = null, devo visualizzare la pagina per l'inserimento
  117.             // dati
  118.             if (apcHelper.isEditModeInProgress()) {


  119.                 // setto la barra del titolo
  120.                 List<Parameter> lstParam = new ArrayList<>();
  121.                 lstParam.add(new Parameter(AccordiServizioParteComuneUtilities.getTerminologiaAccordoServizio(tipoAccordo),
  122.                         AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_LIST,
  123.                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo)
  124.                         ));
  125.                 lstParam.add(new Parameter(AccordiServizioParteComuneCostanti.LABEL_COMPONENTI + " di " + labelASTitle,
  126.                         AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_COMPONENTI_LIST,
  127.                         new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID, "" + idAccordo),
  128.                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo)
  129.                         ));
  130.                 lstParam.add(ServletUtils.getParameterAggiungi());
  131.                 ServletUtils.setPageDataTitle(pd, lstParam);

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

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

  135.                 dati =  apcHelper.addAccordiServizioComponentiToDati(TipoOperazione.ADD,idAccordo,
  136.                         idServizioComponente, tipoAccordo, serviziList,
  137.                         serviziListLabel, dati);

  138.                 pd.setDati(dati);

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

  140.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_COMPONENTI,
  141.                         ForwardParams.ADD());
  142.             }

  143.             // Controlli sui campi immessi
  144.             boolean isOk = apcHelper.accordiComponentiCheckData(TipoOperazione.ADD,idServizioComponente);
  145.             if (!isOk) {
  146.                 // setto la barra del titolo
  147.                 List<Parameter> lstParam = new ArrayList<>();
  148.                 lstParam.add(new Parameter(AccordiServizioParteComuneUtilities.getTerminologiaAccordoServizio(tipoAccordo),
  149.                         AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_LIST,
  150.                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo)
  151.                         ));
  152.                 lstParam.add(new Parameter(AccordiServizioParteComuneCostanti.LABEL_COMPONENTI + " di " + labelASTitle,
  153.                         AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_COMPONENTI_LIST,
  154.                         new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID, "" + idAccordo),
  155.                         AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo)
  156.                         ));
  157.                 lstParam.add(ServletUtils.getParameterAggiungi());
  158.                 ServletUtils.setPageDataTitle(pd, lstParam);

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

  161.                 dati = apcHelper.addAccordiServizioComponentiToDati(TipoOperazione.ADD,idAccordo,
  162.                         idServizioComponente, tipoAccordo, serviziList,
  163.                         serviziListLabel, dati);

  164.                 pd.setDati(dati);

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

  166.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_COMPONENTI,
  167.                         ForwardParams.ADD());
  168.             }

  169.             //inserimento accordo componente
  170.             AccordoServizioParteSpecifica aspsComponente = apsCore.getAccordoServizioParteSpecifica(Long.parseLong(idServizioComponente));
  171.            
  172.             AccordoServizioParteComuneServizioComposto assc = as.getServizioComposto();
  173.             if(assc==null) assc = new AccordoServizioParteComuneServizioComposto();

  174.             AccordoServizioParteComuneServizioCompostoServizioComponente asscc =
  175.                     new AccordoServizioParteComuneServizioCompostoServizioComponente();
  176.             asscc.setIdServizioComponente(aspsComponente.getId());
  177.             asscc.setNome(aspsComponente.getNome());
  178.             asscc.setTipo(aspsComponente.getTipo());
  179.             asscc.setVersione(aspsComponente.getVersione());
  180.             asscc.setTipoSoggetto(aspsComponente.getTipoSoggettoErogatore());
  181.             asscc.setNomeSoggetto(aspsComponente.getNomeSoggettoErogatore());
  182.             //aggiungo componente
  183.             assc.addServizioComponente(asscc);
  184.             //aggiungo servizio componente ad accordo
  185.             as.setServizioComposto(assc);


  186.             // effettuo le operazioni
  187.             apcCore.performUpdateOperation(userLogin, apcHelper.smista(), as);

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

  190.             List<AccordoServizioParteComuneServizioCompostoServizioComponente> lista = apcCore.accordiComponentiList(idAccordoLong, ricerca);

  191.             apcHelper.prepareAccordiComponentiList(as, ricerca, lista, tipoAccordo);

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

  193.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_COMPONENTI, ForwardParams.ADD());
  194.         } catch (Exception e) {
  195.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  196.                     AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_COMPONENTI, ForwardParams.ADD());
  197.         }  


  198.     }




  199. }