ConfigurazioneControlloTrafficoConfigurazionePolicyAdd.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.config;

  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.controllo_traffico.AttivazionePolicy;
  32. import org.openspcoop2.core.controllo_traffico.ConfigurazionePolicy;
  33. import org.openspcoop2.core.controllo_traffico.IdPolicy;
  34. import org.openspcoop2.core.controllo_traffico.constants.TipoRisorsa;
  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.lib.mvc.DataElement;
  39. import org.openspcoop2.web.lib.mvc.ForwardParams;
  40. import org.openspcoop2.web.lib.mvc.GeneralData;
  41. import org.openspcoop2.web.lib.mvc.PageData;
  42. import org.openspcoop2.web.lib.mvc.Parameter;
  43. import org.openspcoop2.web.lib.mvc.ServletUtils;
  44. import org.openspcoop2.web.lib.mvc.TipoOperazione;


  45. /**    
  46.  * ConfigurazioneControlloTrafficoConfigurazionePolicyAdd
  47.  *
  48.  * @author Pintori Giuliano (pintori@link.it)
  49.  * @author $Author$
  50.  * @version $Rev$, $Date$
  51.  */
  52. public class ConfigurazioneControlloTrafficoConfigurazionePolicyAdd extends Action {

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

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

  56.         // Inizializzo PageData
  57.         PageData pd = new PageData();

  58.         GeneralHelper generalHelper = new GeneralHelper(session);

  59.         // Inizializzo GeneralData
  60.         GeneralData gd = generalHelper.initGeneralData(request);

  61.         String userLogin = ServletUtils.getUserLoginFromSession(session);  
  62.        
  63.         TipoOperazione tipoOperazione = TipoOperazione.ADD;

  64.         try {
  65.             ConfigurazioneHelper confHelper = new ConfigurazioneHelper(request, pd, session);
  66.            
  67.             ConfigurazioneCore confCore = new ConfigurazioneCore();
  68.            
  69.             org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale configurazioneControlloTraffico = confCore.getConfigurazioneControlloTraffico();
  70.            
  71.             ConfigurazionePolicy policy = new ConfigurazionePolicy();
  72.             policy.setRisorsa(ConfigurazioneCostanti.RISORSA_DEFAULT.getValue());
  73.             policy.setModalitaControllo(ConfigurazioneCostanti.TIPO_CONTROLLO_PERIODO_DEFAULT);
  74.             policy.setTipoIntervalloOsservazioneRealtime(ConfigurazioneCostanti.TIPO_PERIODO_REALTIME_DEFAULT);
  75.             policy.setTipoIntervalloOsservazioneStatistico(ConfigurazioneCostanti.TIPO_PERIODO_STATISTICO_DEFAULT);
  76.             policy.setTipoApplicabilita(ConfigurazioneCostanti.TIPO_APPLICABILITA_DEFAULT);
  77.            
  78.             String id = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_ID);
  79.             boolean editMode = true;
  80.             boolean editOnlyValueMode = false;
  81.             long countPolicyAttiveConQualsiasiStato = 0;
  82.             // uso nome porta per capire se sono entrato per la prima volta nella schermata
  83.             boolean first = confHelper.isFirstTimeFromHttpParameters(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_FIRST_TIME);
  84.                        
  85.             StringBuilder sbParsingError = new StringBuilder();
  86.             // Dati Generali
  87.             String errorDatiGenerali = confHelper.readDatiGeneraliPolicyFromHttpParameters(policy, first);
  88.             if(errorDatiGenerali!=null){
  89.                 confHelper.addParsingError(sbParsingError,errorDatiGenerali);
  90.             }
  91.                        
  92.             // Valori di Soglia
  93.             String errorValoriSoglia = confHelper.readValoriSogliaPolicyFromHttpParameters(policy, first);
  94.             if(errorValoriSoglia!=null){
  95.                 confHelper.addParsingError(sbParsingError,errorValoriSoglia);
  96.             }
  97.            
  98.             if(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_RISORSA.equals(confHelper.getPostBackElementName()) &&
  99.                 TipoRisorsa.DIMENSIONE_MASSIMA_MESSAGGIO.equals(policy.getRisorsa())) {
  100.                 policy.setValore(ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_SOGLIA_VALORE_DIMENSIONE_MASSIMA);
  101.                 policy.setValore2(ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_SOGLIA_VALORE_DIMENSIONE_MASSIMA);
  102.             }
  103.            
  104.             List<AttivazionePolicy> listPolicyAttiveConStatoDisabilitato = null;
  105.             boolean updateValueInSeguitoModificaSogliaPolicy = false;
  106.             // Read Informazioni riguardante la modifica anche di attivazioni di policy collegate
  107.             String value = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_SOGLIA_VALORE_MODIFICATO_CON_ISTANZE_ATTIVE_RICHIESTA_MODIFICA);
  108.             if(value!=null && ServletUtils.isCheckBoxEnabled(value)) {
  109.                 updateValueInSeguitoModificaSogliaPolicy = true;
  110.             }
  111.            
  112.             // Nome
  113.            
  114.             String nomePolicy = null;
  115.             String oldNomeSuggeritoPolicy = null;
  116.             if(first){
  117.                 nomePolicy = policy.getIdPolicy();
  118.                 String nomePolicySuggerita = confHelper.getNomeSuggerito(policy);
  119.                 if(nomePolicy==null || "".equals(nomePolicy)){
  120.                     nomePolicy = nomePolicySuggerita;
  121.                     oldNomeSuggeritoPolicy = nomePolicy;
  122.                 }
  123.                 else{
  124.                     if(nomePolicy.equals(nomePolicySuggerita)){
  125.                         oldNomeSuggeritoPolicy = nomePolicy;
  126.                     }
  127.                 }
  128.             }else{
  129.                 nomePolicy = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_NOME);
  130.                
  131.                 oldNomeSuggeritoPolicy = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_OLD_NOME_SUGGERITO);
  132.                
  133.                 if(nomePolicy!=null && !"".equals(nomePolicy) &&
  134.                     nomePolicy.equals(oldNomeSuggeritoPolicy)){
  135.                     nomePolicy = confHelper.getNomeSuggerito(policy); // aggiorno suggerimento
  136.                     oldNomeSuggeritoPolicy = nomePolicy;
  137.                 }
  138.             }

  139.             // Nome รจ l'id
  140.            
  141.             String oldIdPolicyS = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_OLD_ID);
  142.             if(oldIdPolicyS!=null && !"".equals(oldIdPolicyS) &&
  143.                 policy.getOldIdPolicy() ==null){
  144.                 IdPolicy oldIdPolicy = new IdPolicy();
  145.                 oldIdPolicy.setNome(oldIdPolicyS);
  146.                 policy.setOldIdPolicy(oldIdPolicy );
  147.             }
  148.             if(policy.getIdPolicy()!=null &&
  149.                 !policy.getIdPolicy().equals(oldIdPolicyS)){
  150.                 oldIdPolicyS = policy.getIdPolicy();
  151.                 IdPolicy oldIdPolicy = new IdPolicy();
  152.                 oldIdPolicy.setNome(oldIdPolicyS);
  153.                 policy.setOldIdPolicy(oldIdPolicy );
  154.             }
  155.            
  156.             policy.setIdPolicy(nomePolicy);
  157.            
  158.            
  159.            
  160.             value = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_SOGLIA_VALORE_MODIFICATO_CON_ISTANZE_ATTIVE_MODIFICA_EFFETTIVA);
  161.             if(value!=null && ServletUtils.isCheckBoxEnabled(value)) {
  162.                 if(oldIdPolicyS !=null){
  163.                     listPolicyAttiveConStatoDisabilitato = confCore.findInUseAttivazioni(oldIdPolicyS, true); // Quelle disabilitate non hanno bisogno di essere aggiornate
  164.                 } else
  165.                     listPolicyAttiveConStatoDisabilitato = confCore.findInUseAttivazioni(id, true); // Quelle disabilitate non hanno bisogno di essere aggiornate
  166.             }
  167.            
  168.             // Applicabilita'
  169.             String errorApplicabilita = confHelper.readApplicabilitaPolicyFromHttpParameters(policy, first);
  170.             if(errorApplicabilita!=null){
  171.                 confHelper.addParsingError(sbParsingError,errorApplicabilita);
  172.             }
  173.            
  174.             // Setto nome/descrizione costruito attraverso gli altri parametri
  175.             // Descrizione
  176.            
  177.             String descrizionePolicy = null;
  178.             String oldDescrizioneSuggeritaPolicy = null;
  179.             if(first){
  180.                 descrizionePolicy = policy.getDescrizione();
  181.                 String descrizionePolicySuggerita = confHelper.getDescrizioneSuggerita(policy);
  182.                 if(descrizionePolicy==null || "".equals(descrizionePolicy)){
  183.                     descrizionePolicy = descrizionePolicySuggerita;
  184.                     oldDescrizioneSuggeritaPolicy = descrizionePolicy;
  185.                 }
  186.                 else{
  187.                     if(descrizionePolicy.equals(descrizionePolicySuggerita)){
  188.                         oldDescrizioneSuggeritaPolicy = descrizionePolicy;
  189.                     }
  190.                 }
  191.             }else{
  192.                 descrizionePolicy = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_DESCRIZIONE);
  193.                 oldDescrizioneSuggeritaPolicy = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_OLD_DESCRIZIONE_SUGGERITA);
  194.                
  195.                 if(descrizionePolicy!=null && !"".equals(descrizionePolicy) &&
  196.                     descrizionePolicy.equals(oldDescrizioneSuggeritaPolicy)){
  197.                     descrizionePolicy = confHelper.getDescrizioneSuggerita(policy); // aggiorno suggerimento
  198.                     oldDescrizioneSuggeritaPolicy = descrizionePolicy;
  199.                 }
  200.             }
  201.            
  202.             policy.setDescrizione(descrizionePolicy);

  203.            
  204.             // Preparo il menu
  205.             confHelper.makeMenu();
  206.            
  207.             // setto la barra del titolo
  208.             List<Parameter> lstParam = new ArrayList<>();

  209.             lstParam.add(new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CONTROLLO_TRAFFICO, ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO));
  210.             lstParam.add(new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_REGISTRO_POLICY, ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY_LIST));
  211.             lstParam.add(ServletUtils.getParameterAggiungi());
  212.            
  213.            
  214.             // Se tipo = null, devo visualizzare la pagina per l'inserimento
  215.             // dati
  216.             if (confHelper.isEditModeInProgress()) {
  217.                 ServletUtils.setPageDataTitle(pd, lstParam);
  218.                
  219.                 // preparo i campi
  220.                 List<DataElement> dati = new ArrayList<>();
  221.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  222.                
  223.                 // Dati Generali
  224.                 confHelper.addConfigurazionePolicyToDati(dati, tipoOperazione, policy,  editMode, countPolicyAttiveConQualsiasiStato,oldNomeSuggeritoPolicy,oldDescrizioneSuggeritaPolicy,oldIdPolicyS);
  225.                
  226.                 // Valori di Soglia
  227.                 confHelper.addConfigurazionePolicyValoriSoglia(dati, tipoOperazione, policy,    editMode, editOnlyValueMode);
  228.                
  229.                 // Applicabilita'
  230.                 confHelper.addConfigurazionePolicyApplicabilitaToDati(dati, tipoOperazione, policy, configurazioneControlloTraffico.getControlloTraffico(), editMode);
  231.                
  232.                 // Set First is false
  233.                 confHelper.addToDatiFirstTimeDisabled(dati,ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_FIRST_TIME);
  234.                
  235.                 if(!editMode && !editOnlyValueMode) {
  236.                     pd.disableEditMode();
  237.                 }
  238.                
  239.                 pd.setDati(dati);

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

  241.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
  242.                         ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY,
  243.                         ForwardParams.ADD());
  244.             }
  245.            
  246.             // Controlli sui campi immessi
  247.             boolean isOk = confHelper.configurazionePolicyCheckData(sbParsingError, tipoOperazione, configurazioneControlloTraffico, policy, oldNomeSuggeritoPolicy,
  248.                                 oldDescrizioneSuggeritaPolicy, oldIdPolicyS, listPolicyAttiveConStatoDisabilitato, updateValueInSeguitoModificaSogliaPolicy);
  249.             if (!isOk) {
  250.                
  251.                 ServletUtils.setPageDataTitle(pd, lstParam);
  252.                
  253.                 // preparo i campi
  254.                 List<DataElement> dati = new ArrayList<>();
  255.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  256.                
  257.                 // Dati Generali
  258.                 confHelper.addConfigurazionePolicyToDati(dati, tipoOperazione, policy, editMode, countPolicyAttiveConQualsiasiStato,oldNomeSuggeritoPolicy,oldDescrizioneSuggeritaPolicy,oldIdPolicyS);
  259.                
  260.                 // Valori di Soglia
  261.                 confHelper.addConfigurazionePolicyValoriSoglia(dati, tipoOperazione, policy, editMode, editOnlyValueMode);
  262.                
  263.                 // Applicabilita'
  264.                 confHelper.addConfigurazionePolicyApplicabilitaToDati(dati, tipoOperazione, policy, configurazioneControlloTraffico.getControlloTraffico(), editMode);
  265.                
  266.                 // Set First is false
  267.                 confHelper.addToDatiFirstTimeDisabled(dati,ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_FIRST_TIME);
  268.                
  269.                 if(!editMode && !editOnlyValueMode) {
  270.                     pd.disableEditMode();
  271.                 }
  272.                
  273.                 pd.setDati(dati);

  274.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  275.                
  276.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping,
  277.                         ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY,
  278.                         ForwardParams.ADD());
  279.             }

  280.             // insert sul db
  281.            
  282.             confCore.performCreateOperation(userLogin, confHelper.smista(), policy);
  283.            
  284.             // Preparo la lista
  285.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);

  286.             int idLista = Liste.CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY;
  287.            
  288.             ricerca = confHelper.checkSearchParameters(idLista, ricerca);

  289.             List<ConfigurazionePolicy> lista = confCore.configurazionePolicyList(ricerca);
  290.            
  291.             confHelper.prepareConfigurazionePolicyList(ricerca, lista, idLista);
  292.            
  293.             // salvo l'oggetto ricerca nella sessione
  294.             ServletUtils.setSearchObjectIntoSession(request, session, ricerca);
  295.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  296.            
  297.             // Forward control to the specified success URI
  298.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY, ForwardParams.ADD());
  299.         } catch (Exception e) {
  300.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  301.                     ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY, ForwardParams.ADD());
  302.         }  
  303.     }
  304. }