ServiziApplicativiProprietaAdd.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.sa;

  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.commons.Liste;
  31. import org.openspcoop2.core.config.Proprieta;
  32. import org.openspcoop2.core.config.ServizioApplicativo;
  33. import org.openspcoop2.core.id.IDServizioApplicativo;
  34. import org.openspcoop2.core.id.IDSoggetto;
  35. import org.openspcoop2.core.registry.constants.PddTipologia;
  36. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  37. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  38. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  39. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  40. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  41. import org.openspcoop2.web.lib.mvc.DataElement;
  42. import org.openspcoop2.web.lib.mvc.ForwardParams;
  43. import org.openspcoop2.web.lib.mvc.GeneralData;
  44. import org.openspcoop2.web.lib.mvc.PageData;
  45. import org.openspcoop2.web.lib.mvc.Parameter;
  46. import org.openspcoop2.web.lib.mvc.ServletUtils;
  47. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  48. /**
  49.  * ServiziApplicativiProprietaAdd
  50.  *
  51.  * @author Andrea Poli (apoli@link.it)
  52.  * @author Giuliano Pintori (pintori@link.it)
  53.  * @author $Author$
  54.  * @version $Rev$, $Date$
  55.  *
  56.  */
  57. public final class ServiziApplicativiProprietaAdd 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.  
  67.         try {
  68.             Boolean singlePdD = ServletUtils.getObjectFromSession(request, session, Boolean.class, CostantiControlStation.SESSION_PARAMETRO_SINGLE_PDD);
  69.            
  70.             ServiziApplicativiHelper saHelper = new ServiziApplicativiHelper(request, pd, session);
  71.             // prelevo il flag che mi dice da quale pagina ho acceduto la sezione
  72.             Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, session, request);
  73.             if(parentSA == null) parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
  74.             boolean useIdSogg = (parentSA!=null && parentSA.intValue() == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO);
  75.            
  76.             String id = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID);
  77.             String provider = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
  78.             String dominio = saHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO);    
  79.             int idServizioApplicativo = Integer.parseInt(id);
  80.             String nome = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROP_NOME);
  81.             String valore = saHelper.getLockedParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROP_VALORE, false);  
  82.            
  83.             // Wrap value
  84.             valore = saHelper.wrapValoreProprieta(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROP_VALORE, valore);
  85.            
  86.             // Preparo il menu
  87.             saHelper.makeMenu();
  88.            
  89.             ServiziApplicativiCore saCore = new ServiziApplicativiCore();
  90.            
  91.             ServizioApplicativo sa = saCore.getServizioApplicativo(idServizioApplicativo);
  92.             String oldNome = sa.getNome();
  93.             IDSoggetto oldIdSoggetto = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
  94.             IDServizioApplicativo oldIdServizioApplicativo = new IDServizioApplicativo();
  95.             oldIdServizioApplicativo.setIdSoggettoProprietario(oldIdSoggetto);
  96.             oldIdServizioApplicativo.setNome(oldNome);
  97.             int idProv = sa.getIdSoggetto().intValue();

  98.             List<Parameter> parametersServletSAChange = new ArrayList<>();
  99.             Parameter pIdSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+"");
  100.             parametersServletSAChange.add(pIdSA);
  101.             Parameter pIdSoggettoSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, idProv+"");
  102.             parametersServletSAChange.add(pIdSoggettoSA);
  103.             if(dominio != null) {
  104.                 Parameter pDominio = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO, dominio);
  105.                 parametersServletSAChange.add(pDominio);
  106.             }
  107.            
  108.             // Tipi protocollo supportati
  109.             List<String> listaTipiProtocollo = saCore.getProtocolliByFilter(request, session, true, PddTipologia.OPERATIVO, false);
  110.             String superUser = ServletUtils.getUserLoginFromSession(session);
  111.            
  112.             // Prendo la lista di soggetti
  113.             String soggettoMultitenantSelezionato = null;
  114.             if(!useIdSogg && saHelper.isSoggettoMultitenantSelezionato()) {
  115.                 soggettoMultitenantSelezionato = saHelper.getSoggettoMultitenantSelezionato();
  116.             }
  117.             ServiziApplicativiGeneralInfo generalInfo = ServiziApplicativiUtilities.getGeneralInfo(useIdSogg, provider, listaTipiProtocollo,
  118.                     saCore, saHelper, superUser, singlePdD, soggettoMultitenantSelezionato, dominio);
  119.                    
  120.             String tipoENomeSoggetto = generalInfo.getTipoENomeSoggetto();
  121.             provider = generalInfo.getProvider();
  122.            
  123.             String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
  124.             String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
  125.             if(!saHelper.isModalitaCompleta()) {
  126.                 labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
  127.                 labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
  128.             }
  129.            
  130.             List<Parameter> lstParam = new ArrayList<>();
  131.             if(useIdSogg){
  132.                 lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
  133.                 lstParam.add(new Parameter(labelApplicativiDi + tipoENomeSoggetto, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST, new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)));
  134.                 lstParam.add(new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
  135.                 lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_PROPRIETA_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
  136.             }else {
  137.                 lstParam.add(new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST));
  138.                 lstParam.add(new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
  139.                 lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_PROPRIETA_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
  140.             }
  141.             lstParam.add(ServletUtils.getParameterAggiungi());

  142.             // Se nome = null, devo visualizzare la pagina per l'inserimento
  143.             // dati
  144.             if (saHelper.isEditModeInProgress()) {
  145.                 // setto la barra del titolo
  146.                 ServletUtils.setPageDataTitle(pd, lstParam);

  147.                 // preparo i campi
  148.                 List<DataElement> dati = new ArrayList<>();
  149.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  150.                
  151.                 dati = saHelper.addServizioApplicativoHiddenToDati(dati, id, idProv+"", dominio, sa.getNome());

  152.                 dati = saHelper.addProprietaToDati(TipoOperazione.ADD, saHelper.getSize(), nome, valore, dati);

  153.                 pd.setDati(dati);

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

  155.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA,
  156.                         ForwardParams.ADD());
  157.             }

  158.             // Controlli sui campi immessi
  159.             boolean isOk = saHelper.serviziApplicativiProprietaCheckData(TipoOperazione.ADD);
  160.             if (!isOk) {
  161.                 // setto la barra del titolo
  162.                 ServletUtils.setPageDataTitle(pd, lstParam);

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

  165.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  166.                
  167.                 dati = saHelper.addServizioApplicativoHiddenToDati(dati, id, idProv+"", dominio, sa.getNome());
  168.                
  169.                 dati = saHelper.addProprietaToDati(TipoOperazione.ADD, saHelper.getSize(), nome, valore, dati);

  170.                 pd.setDati(dati);

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

  172.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA,
  173.                         ForwardParams.ADD());
  174.             }

  175.             // Inserisco la property della porta applicativa nel db
  176.             Proprieta ssp = new Proprieta();
  177.             ssp.setNome(nome);
  178.             ssp.setValore(valore);
  179.             sa.addProprieta(ssp);

  180.             String userLogin = ServletUtils.getUserLoginFromSession(session);
  181.            
  182.             saCore.performUpdateOperation(userLogin, saHelper.smista(), sa);

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

  185.             int idLista = Liste.SERVIZI_APPLICATIVI_PROP;

  186.             ricerca = saHelper.checkSearchParameters(idLista, ricerca);

  187.             List<Proprieta> lista = saCore.serviziApplicativiProprietaList(Integer.parseInt(id), ricerca);

  188.             saHelper.prepareServiziApplicativiProprietaList(sa, ricerca, lista);

  189.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  190.             // Forward control to the specified success URI
  191.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA,
  192.                     ForwardParams.ADD());
  193.         } catch (Exception e) {
  194.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  195.                     ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA,
  196.                     ForwardParams.ADD());
  197.         }  
  198.     }

  199.    
  200. }