UtentiServiziAdd.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.utenti;

  21. import java.text.MessageFormat;
  22. import java.util.ArrayList;
  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.Filtri;
  32. import org.openspcoop2.core.commons.Liste;
  33. import org.openspcoop2.core.id.IDServizio;
  34. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  35. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  36. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  37. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  38. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  39. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCore;
  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.MessageType;
  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. import org.openspcoop2.web.lib.users.dao.User;

  49. /**    
  50.  * UtentiServiziAdd
  51.  *
  52.  * @author Pintori Giuliano (pintori@link.it)
  53.  * @author $Author$
  54.  * @version $Rev$, $Date$
  55.  */
  56. public class UtentiServiziAdd extends Action {

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

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

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

  62.         GeneralHelper generalHelper = new GeneralHelper(session);

  63.         // Inizializzo GeneralData
  64.         GeneralData gd = generalHelper.initGeneralData(request);
  65.        
  66.         String userLogin = ServletUtils.getUserLoginFromSession(session);

  67.         try {
  68.             UtentiHelper utentiHelper = new UtentiHelper(request, pd, session);
  69.             String nomesu = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_USERNAME);
  70.             String servizio = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_SERVIZIO);
  71.             String protocollo = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_PROTOCOLLO);
  72.            
  73.             // Preparo il menu
  74.             utentiHelper.makeMenu();
  75.            
  76.             UtentiCore utentiCore = new UtentiCore();
  77.             AccordiServizioParteSpecificaCore aspsCore = new AccordiServizioParteSpecificaCore(utentiCore);
  78.             User user = utentiCore.getUser(nomesu);
  79.             ConsoleSearch searchServizi = new ConsoleSearch(true);
  80.             List<String> protocolli = user.getProtocolliSupportati();
  81.             if(protocollo == null) {
  82.                 if(protocolli!=null && !protocolli.isEmpty()) {
  83.                     protocollo = utentiCore.getProtocolloDefault(request, null, protocolli);
  84.                 }
  85.             }
  86.            
  87.             searchServizi.addFilter(Liste.SERVIZI, Filtri.FILTRO_PROTOCOLLO, protocollo);
  88.             boolean[] permessiUtente = null;
  89.             List<AccordoServizioParteSpecifica> serviziList = aspsCore.soggettiServizioList(null, searchServizi, permessiUtente , false, false);
  90.            
  91.             List<AccordoServizioParteSpecifica> listaServiziNonUtilizzati = new ArrayList<>();
  92.            
  93.             for (AccordoServizioParteSpecifica asps : serviziList) {
  94.                 boolean found = false;
  95.                 for (IDServizio idServ : user.getServizi()) {
  96.                     if(asps.getTipo().equals(idServ.getTipo()) && asps.getNome().equals(idServ.getNome())
  97.                              && asps.getVersione().intValue() == idServ.getVersione().intValue()
  98.                              && asps.getTipoSoggettoErogatore().equals(idServ.getSoggettoErogatore().getTipo())
  99.                              && asps.getNomeSoggettoErogatore().equals(idServ.getSoggettoErogatore().getNome())) {
  100.                         found = true;
  101.                         break;
  102.                     }
  103.                 }  
  104.                
  105.                 if(!found) {
  106.                     listaServiziNonUtilizzati.add(asps);
  107.                 }
  108.             }
  109.            
  110.            
  111.             String [] serviziLabels = new String [listaServiziNonUtilizzati.size() + 1];
  112.             String [] serviziValues = new String [listaServiziNonUtilizzati.size() + 1];

  113.             serviziLabels[0] = CostantiControlStation.LABEL_LIST_VALORE_NON_PRESENTE;
  114.             serviziValues[0] = CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO;
  115.            
  116.             for (int i = 0; i < listaServiziNonUtilizzati.size(); i++) {
  117.                 AccordoServizioParteSpecifica asps = listaServiziNonUtilizzati.get(i);
  118.                 String protocolloTmp = aspsCore.getProtocolloAssociatoTipoServizio(asps.getTipo());
  119.                 serviziLabels[(i+1)] = utentiHelper.getLabelNomeServizio(protocolloTmp, asps.getTipo(), asps.getNome(), asps.getVersione()) +
  120.                         " ("+utentiHelper.getLabelNomeSoggetto(protocolloTmp, asps.getTipoSoggettoErogatore(), asps.getNomeSoggettoErogatore())+")";
  121.                 serviziValues[(i+1)] = asps.getId() + "";
  122.             }
  123.    
  124.            
  125.             List<Parameter> lstParam = new ArrayList<>();
  126.             lstParam.add(new Parameter(UtentiCostanti.LABEL_UTENTI ,UtentiCostanti.SERVLET_NAME_UTENTI_LIST));
  127.             lstParam.add(new Parameter(nomesu, UtentiCostanti.SERVLET_NAME_UTENTI_CHANGE, new Parameter(UtentiCostanti.PARAMETRO_UTENTI_USERNAME, nomesu)));
  128.             lstParam.add(new Parameter(UtentiCostanti.LABEL_UTENTI_SERVIZI, UtentiCostanti.SERVLET_NAME_UTENTI_SERVIZI_LIST, new Parameter(UtentiCostanti.PARAMETRO_UTENTI_USERNAME, nomesu)));
  129.             lstParam.add(ServletUtils.getParameterAggiungi());
  130.            
  131.             if(utentiHelper.isEditModeInProgress()){
  132.                 ServletUtils.setPageDataTitle(pd,lstParam);
  133.                
  134.                 // preparo i campi
  135.                 List<DataElement> dati = new ArrayList<>();
  136.    
  137.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  138.    
  139.                 if(servizio==null){
  140.                     servizio = "";
  141.                 }
  142.                
  143.                 if(listaServiziNonUtilizzati.isEmpty()){
  144.                     if(protocolli.size() == 1) {
  145.                         pd.setMessage(UtentiCostanti.LABEL_UTENTI_SERVIZI_DISPONIBILI_ESAURITI, MessageType.INFO);
  146.                         pd.disableEditMode();
  147.                         pd.setDati(dati);
  148.                         ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  149.                         return ServletUtils.getStrutsForwardEditModeInProgress(mapping, UtentiCostanti.OBJECT_NAME_UTENTI_SERVIZI,ForwardParams.ADD());
  150.                     } else {
  151.                         String msf = MessageFormat.format(UtentiCostanti.LABEL_UTENTI_SERVIZI_DISPONIBILI_ESAURITI_PER_LA_MODALITA_XX, utentiHelper.getLabelProtocollo(protocollo));
  152.                         pd.setMessage(msf, MessageType.INFO);
  153.                         pd.disableOnlyButton();
  154.                     }
  155.                 }
  156.                
  157.                 utentiHelper.addUtentiServiziToDati(dati, TipoOperazione.ADD,nomesu,servizio,serviziValues,serviziLabels,protocolli,protocollo);
  158.                
  159.                 pd.setDati(dati);
  160.                
  161.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  162.                
  163.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, UtentiCostanti.OBJECT_NAME_UTENTI_SERVIZI,ForwardParams.ADD());
  164.             }
  165.            
  166.             // Controlli sui campi immessi
  167.             boolean isOk = utentiHelper.utentiServiziCheckData(TipoOperazione.ADD,nomesu,servizio);
  168.             if (!isOk) {
  169.                 ServletUtils.setPageDataTitle(pd,lstParam);
  170.                
  171.                 // preparo i campi
  172.                 List<DataElement> dati = new ArrayList<>();
  173.    
  174.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  175.                
  176.                 utentiHelper.addUtentiServiziToDati(dati, TipoOperazione.ADD,nomesu,servizio,serviziValues,serviziLabels,protocolli,protocollo);
  177.                
  178.                 pd.setDati(dati);
  179.                
  180.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  181.                
  182.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, UtentiCostanti.OBJECT_NAME_UTENTI_SERVIZI,ForwardParams.ADD());
  183.             }
  184.            
  185.             // aggiungo il nuovo Servizio alla lista
  186.             Long newId = Long.parseLong(servizio);
  187.             IDServizio idServizio = aspsCore.getIdAccordoServizioParteSpecifica(newId);
  188.             user.getServizi().add(idServizio);
  189.            
  190.             // salvataggio sul db
  191.             utentiCore.performUpdateOperation(userLogin, utentiHelper.smista(), user);
  192.            
  193.             // Preparo la lista
  194.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session,ConsoleSearch.class);
  195.    
  196.             int idLista = Liste.UTENTI_SERVIZI;
  197.    
  198.             ricerca = utentiHelper.checkSearchParameters(idLista, ricerca);
  199.    
  200.        
  201.             List<IDServizio> lista = utentiCore.utentiServiziList(nomesu, ricerca);
  202.    
  203.             utentiHelper.prepareUtentiServiziList(ricerca, lista, user);
  204.    
  205.             ServletUtils.setSearchObjectIntoSession(request, session, ricerca);
  206.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  207.            
  208.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, UtentiCostanti.OBJECT_NAME_UTENTI_SERVIZI, ForwardParams.ADD());
  209.            
  210.         } catch (Exception e) {
  211.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  212.                     UtentiCostanti.OBJECT_NAME_UTENTI_SERVIZI, ForwardParams.ADD());
  213.         }
  214.     }

  215. }