ServiziApplicativiRuoliAdd.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.config.Ruolo;
  31. import org.openspcoop2.core.config.ServizioApplicativo;
  32. import org.openspcoop2.core.config.ServizioApplicativoRuoli;
  33. import org.openspcoop2.core.registry.constants.RuoloContesto;
  34. import org.openspcoop2.core.registry.constants.RuoloTipologia;
  35. import org.openspcoop2.core.registry.driver.FiltroRicercaRuoli;
  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.ruoli.RuoliCostanti;
  41. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  42. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  43. import org.openspcoop2.web.lib.mvc.DataElement;
  44. import org.openspcoop2.web.lib.mvc.DataElementType;
  45. import org.openspcoop2.web.lib.mvc.ForwardParams;
  46. import org.openspcoop2.web.lib.mvc.GeneralData;
  47. import org.openspcoop2.web.lib.mvc.PageData;
  48. import org.openspcoop2.web.lib.mvc.Parameter;
  49. import org.openspcoop2.web.lib.mvc.ServletUtils;
  50. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  51. /**
  52.  * ServiziApplicativiRuoliAdd
  53.  *
  54.  * @author Andrea Poli (apoli@link.it)
  55.  * @author $Author$
  56.  * @version $Rev$, $Date$
  57.  *
  58.  */
  59. public final class ServiziApplicativiRuoliAdd extends Action {

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

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

  63.         // Inizializzo PageData
  64.         PageData pd = new PageData();

  65.         GeneralHelper generalHelper = new GeneralHelper(session);

  66.         // Inizializzo GeneralData
  67.         GeneralData gd = generalHelper.initGeneralData(request);

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

  69.         try {
  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 idsil = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO);
  77.             int idSilInt = Integer.parseInt(idsil);
  78.            
  79.             String nome = saHelper.getParameter(CostantiControlStation.PARAMETRO_RUOLO);

  80.             String provider = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);

  81.             String accessDaChangeTmp = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_ACCESSO_DA_CHANGE);
  82.             boolean accessDaChange = ServletUtils.isCheckBoxEnabled(accessDaChangeTmp);
  83.            
  84.             ServiziApplicativiCore saCore = new ServiziApplicativiCore();
  85.             SoggettiCore soggettiCore = new SoggettiCore(saCore);

  86.             ServizioApplicativo sa = saCore.getServizioApplicativo(idSilInt);
  87.             String nomeservizioApplicativo = sa.getNome();      
  88.            
  89.             FiltroRicercaRuoli filtroRuoli = new FiltroRicercaRuoli();
  90.             filtroRuoli.setContesto(RuoloContesto.QUALSIASI); // gli applicativi possono essere usati anche nelle erogazioni.
  91.             filtroRuoli.setTipologia(RuoloTipologia.INTERNO);
  92.            
  93.             List<String> ruoli = new ArrayList<>();
  94.             if(sa.getInvocazionePorta().getRuoli()!=null && sa.getInvocazionePorta().getRuoli().getRuoloList()!=null && !sa.getInvocazionePorta().getRuoli().getRuoloList().isEmpty()){
  95.                 for (Ruolo ruolo : sa.getInvocazionePorta().getRuoli().getRuoloList()) {
  96.                     ruoli.add(ruolo.getNome());
  97.                 }
  98.             }

  99.             String tipoENomeSoggetto = "";
  100.             String nomeProtocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(sa.getTipoSoggettoProprietario());
  101.             if(provider == null){
  102.                 provider = "-1";
  103.             }else {
  104.                 org.openspcoop2.core.config.Soggetto soggetto = soggettiCore.getSoggetto(Long.parseLong(provider));
  105.                 tipoENomeSoggetto = saHelper.getLabelNomeSoggetto(nomeProtocollo, soggetto.getTipo() , soggetto.getNome());
  106.             }
  107.                        
  108.            
  109.             // Preparo il menu
  110.             saHelper.makeMenu();

  111.             String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
  112.             String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
  113.             if(!saHelper.isModalitaCompleta()) {
  114.                 labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
  115.                 labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
  116.             }
  117.            
  118.            
  119.             // Se nomehid = null, devo visualizzare la pagina per l'inserimento
  120.             // dati
  121.             if (saHelper.isEditModeInProgress()) {
  122.                
  123.                 // setto la barra del titolo
  124.                 if(accessDaChange) {
  125.                     ServletUtils.setPageDataTitle_ServletFirst(pd, labelApplicativi,
  126.                             ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST);
  127.                     ServletUtils.appendPageDataTitle(pd,
  128.                             new Parameter(nomeservizioApplicativo,
  129.                                     ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE,
  130.                                     new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+""),
  131.                                     new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+"")));
  132.                     ServletUtils.appendPageDataTitle(pd,
  133.                             new Parameter(RuoliCostanti.LABEL_RUOLI, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
  134.                                     new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""),
  135.                                     new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_ACCESSO_DA_CHANGE,accessDaChangeTmp)
  136.                                     )
  137.                             );
  138.                     ServletUtils.appendPageDataTitle(pd,
  139.                             ServletUtils.getParameterAggiungi());
  140.                 }
  141.                 else {
  142.                     List<Parameter> lstParm = new ArrayList<>();
  143.                     if(useIdSogg){
  144.                         lstParm.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
  145.                         lstParm.add(new Parameter(labelApplicativiDi + tipoENomeSoggetto,
  146.                                 ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
  147.                                 new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)));
  148.                     }else {
  149.                         lstParm.add(new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST));
  150.                     }
  151.                     if(useIdSogg) {
  152.                         lstParm.add(new Parameter( "Ruoli di " + nomeservizioApplicativo, null));
  153.                     }
  154.                     else {
  155.                         lstParm.add(new Parameter( "Ruoli di " + nomeservizioApplicativo, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
  156.                                 new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""),
  157.                                 new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_ACCESSO_DA_CHANGE,accessDaChangeTmp)));
  158.                     }
  159.                     lstParm.add(ServletUtils.getParameterAggiungi());
  160.                     ServletUtils.setPageDataTitle(pd,lstParm);
  161.                 }

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

  165.                 DataElement de = new DataElement();
  166.                 de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO);
  167.                 de.setValue(idsil);
  168.                 de.setType(DataElementType.HIDDEN);
  169.                 dati.add(de);
  170.                
  171.                 if(useIdSogg){
  172.                     de = new DataElement();
  173.                     de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
  174.                     de.setValue(provider);
  175.                     de.setType(DataElementType.HIDDEN);
  176.                     dati.add(de);
  177.                 }
  178.                
  179.                 dati = saHelper.addRuoliToDati(TipoOperazione.ADD, dati, false, filtroRuoli, nome, ruoli, false, true, true, accessDaChangeTmp, false);
  180.                
  181.                 pd.setDati(dati);

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

  183.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
  184.                         ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_RUOLI,
  185.                         ForwardParams.ADD());
  186.             }

  187.             // Controlli sui campi immessi
  188.             boolean isOk = saHelper.ruoloCheckData(TipoOperazione.ADD, nome, ruoli);
  189.             if (!isOk) {
  190.                 // setto la barra del titolo
  191.                 List<Parameter> lstParm = new ArrayList<>();
  192.                 if(useIdSogg){
  193.                     lstParm.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
  194.                     lstParm.add(new Parameter(labelApplicativiDi + tipoENomeSoggetto,
  195.                             ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
  196.                             new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)));
  197.                 }else {
  198.                     lstParm.add(new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST));
  199.                 }
  200.                 lstParm.add(new Parameter( "Ruoli di " + nomeservizioApplicativo, null));
  201.                 lstParm.add(ServletUtils.getParameterAggiungi());
  202.                 ServletUtils.setPageDataTitle(pd,lstParm);
  203.                
  204.                 // preparo i campi
  205.                 List<DataElement> dati = new ArrayList<>();
  206.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  207.                
  208.                 DataElement de = new DataElement();
  209.                 de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO);
  210.                 de.setValue(idsil);
  211.                 de.setType(DataElementType.HIDDEN);
  212.                 dati.add(de);
  213.                
  214.                 if(useIdSogg){
  215.                     de = new DataElement();
  216.                     de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
  217.                     de.setValue(provider);
  218.                     de.setType(DataElementType.HIDDEN);
  219.                     dati.add(de);
  220.                 }
  221.                
  222.                 dati = saHelper.addRuoliToDati(TipoOperazione.ADD, dati, false, filtroRuoli, nome, ruoli, false, true, true, accessDaChangeTmp, false);

  223.                 pd.setDati(dati);

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

  225.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping,
  226.                         ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_RUOLI,
  227.                         ForwardParams.ADD());
  228.             }

  229.             // Inserisco
  230.             Ruolo ruolo = new Ruolo();
  231.             ruolo.setNome(nome);
  232.             if(sa.getInvocazionePorta().getRuoli()==null){
  233.                 sa.getInvocazionePorta().setRuoli(new ServizioApplicativoRuoli());
  234.             }
  235.             sa.getInvocazionePorta().getRuoli().addRuolo(ruolo);
  236.            
  237.             saCore.performUpdateOperation(userLogin, saHelper.smista(), sa);

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

  240.             List<String> lista = saCore.servizioApplicativoRuoliList(idSilInt, ricerca);
  241.                    
  242.             saHelper.prepareRuoliList(ricerca, lista);

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

  244.             return ServletUtils.getStrutsForwardEditModeFinished(mapping,
  245.                     ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_RUOLI,
  246.                     ForwardParams.ADD());
  247.         } catch (Exception e) {
  248.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  249.                     ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_RUOLI, ForwardParams.ADD());
  250.         }
  251.     }


  252. }