ServiziApplicativiProprietaChange.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.ControlStationCore;
  37. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  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.  * ServiziApplicativiProprietaChange
  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 ServiziApplicativiProprietaChange 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.             int idServizioApplicativo = Integer.parseInt(id);
  78.             String provider = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
  79.             String dominio = saHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO);    
  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.             ServiziApplicativiCore saCore = new ServiziApplicativiCore();
  89.            
  90.             ServizioApplicativo sa = saCore.getServizioApplicativo(idServizioApplicativo);
  91.             String oldNome = sa.getNome();
  92.             IDSoggetto oldIdSoggetto = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
  93.             IDServizioApplicativo oldIdServizioApplicativo = new IDServizioApplicativo();
  94.             oldIdServizioApplicativo.setIdSoggettoProprietario(oldIdSoggetto);
  95.             oldIdServizioApplicativo.setNome(oldNome);
  96.             int idProv = sa.getIdSoggetto().intValue();
  97.            
  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.             List<Parameter> lstParam = new ArrayList<>();
  130.             if(useIdSogg){
  131.                 lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
  132.                 lstParam.add(new Parameter(labelApplicativiDi + tipoENomeSoggetto, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST, new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)));
  133.                 lstParam.add(new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
  134.                 lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_PROPRIETA_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
  135.             }else {
  136.                 lstParam.add(new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST));
  137.                 lstParam.add(new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
  138.                 lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_PROPRIETA_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
  139.             }
  140.            
  141.             lstParam.add(new Parameter(nome, null));

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

  147.                 if(valore==null){
  148.                     for (int i = 0; i < sa.sizeProprietaList(); i++) {
  149.                         Proprieta ssp = sa.getProprieta(i);
  150.                         if (nome.equals(ssp.getNome())) {
  151.                             if(ssp.getValore()!=null){
  152.                                 valore = ssp.getValore();
  153.                             }
  154.                             break;
  155.                         }
  156.                     }
  157.                 }

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

  161.                 dati = saHelper.addServizioApplicativoHiddenToDati(dati, id, idProv+"", dominio, sa.getNome());
  162.                
  163.                 dati = saHelper.addProprietaToDati(TipoOperazione.CHANGE, saHelper.getSize(), nome, valore, dati);

  164.                 pd.setDati(dati);

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

  166.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA,
  167.                         ForwardParams.CHANGE());
  168.             }

  169.             // Controlli sui campi immessi
  170.             boolean isOk = saHelper.serviziApplicativiProprietaCheckData(TipoOperazione.CHANGE);
  171.             if (!isOk) {
  172.                 // setto la barra del titolo
  173.                 ServletUtils.setPageDataTitle(pd, lstParam);

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

  176.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  177.                
  178.                 dati = saHelper.addServizioApplicativoHiddenToDati(dati, id, idProv+"", dominio, sa.getNome());
  179.                
  180.                 dati = saHelper.addProprietaToDati(TipoOperazione.CHANGE, saHelper.getSize(), nome, valore,dati);

  181.                 pd.setDati(dati);

  182.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  183.  
  184.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA,
  185.                         ForwardParams.CHANGE());
  186.             }

  187.             // Modifico i dati della property della porta applicativa nel
  188.             // db
  189.             for (int i = 0; i < sa.sizeProprietaList(); i++) {
  190.                 Proprieta ssp = sa.getProprieta(i);
  191.                 if (nome.equals(ssp.getNome())) {
  192.                     sa.removeProprieta(i);
  193.                     break;
  194.                 }
  195.             }
  196.             Proprieta ssp = new Proprieta();
  197.             ssp.setNome(nome);
  198.             ssp.setValore(valore);
  199.             sa.addProprieta(ssp);

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

  201.             saCore.performUpdateOperation(userLogin, saHelper.smista(), sa);

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

  204.             int idLista = Liste.SERVIZI_APPLICATIVI_PROP;

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

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

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

  208.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  209.             // Forward control to the specified success URI
  210.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA,
  211.                     ForwardParams.CHANGE());
  212.         } catch (Exception e) {
  213.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  214.                     ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA,
  215.                     ForwardParams.CHANGE());
  216.         }  
  217.     }
  218. }