ConfigurazioneControlloTrafficoConfigurazionePolicyChange.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.  * ConfigurazioneControlloTrafficoConfigurazionePolicyChange
  47.  *
  48.  * @author Pintori Giuliano (pintori@link.it)
  49.  * @author $Author$
  50.  * @version $Rev$, $Date$
  51.  */
  52. public class ConfigurazioneControlloTrafficoConfigurazionePolicyChange 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.CHANGE;

  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.             String id = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_ID);
  72.             long idPolicy = Long.parseLong(id);
  73.             ConfigurazionePolicy policy = confCore.getConfigurazionePolicy(idPolicy);
  74.             String oldTipoRisorsa = policy.getRisorsa();
  75.            
  76.             boolean editMode = true;
  77.             boolean editOnlyValueMode = false;
  78.             long countPolicyAttiveConQualsiasiStato = 0;
  79.            
  80.             // uso nome porta per capire se sono entrato per la prima volta nella schermata
  81.             boolean first = confHelper.isFirstTimeFromHttpParameters(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_FIRST_TIME);
  82.            
  83.             StringBuilder sbParsingError = new StringBuilder();
  84.             // Dati Generali
  85.             String errorDatiGenerali = confHelper.readDatiGeneraliPolicyFromHttpParameters(policy, first);
  86.             if(errorDatiGenerali!=null){
  87.                 confHelper.addParsingError(sbParsingError,errorDatiGenerali);
  88.             }
  89.            
  90.             // Valori di Soglia
  91.             String errorValoriSoglia = confHelper.readValoriSogliaPolicyFromHttpParameters(policy, first);
  92.             if(errorValoriSoglia!=null){
  93.                 confHelper.addParsingError(sbParsingError,errorValoriSoglia);
  94.             }
  95.            
  96.             if(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_RISORSA.equals(confHelper.getPostBackElementName()) &&
  97.                 TipoRisorsa.DIMENSIONE_MASSIMA_MESSAGGIO.equals(policy.getRisorsa())) {
  98.                 policy.setValore(ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_SOGLIA_VALORE_DIMENSIONE_MASSIMA);
  99.                 policy.setValore2(ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_SOGLIA_VALORE_DIMENSIONE_MASSIMA);
  100.             }
  101.            
  102.             List<AttivazionePolicy> listPolicyAttiveConStatoDisabilitato = null;
  103.             boolean updateValueInSeguitoModificaSogliaPolicy = false;
  104.             // Read Informazioni riguardante la modifica anche di attivazioni di policy collegate
  105.             String value = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_SOGLIA_VALORE_MODIFICATO_CON_ISTANZE_ATTIVE_RICHIESTA_MODIFICA);
  106.             if(value!=null && ServletUtils.isCheckBoxEnabled(value)) {
  107.                 updateValueInSeguitoModificaSogliaPolicy = true;
  108.             }
  109.            
  110.             // Nome
  111.            
  112.             String nomePolicy = null;
  113.             String oldNomeSuggeritoPolicy = null;
  114.             if(first){
  115.                 nomePolicy = policy.getIdPolicy();
  116.                 String nomePolicySuggerita = confHelper.getNomeSuggerito(policy);
  117.                 if(nomePolicy==null || "".equals(nomePolicy)){
  118.                     nomePolicy = nomePolicySuggerita;
  119.                     oldNomeSuggeritoPolicy = nomePolicy;
  120.                 }
  121.                 else{
  122.                     if(nomePolicy.equals(nomePolicySuggerita)){
  123.                         oldNomeSuggeritoPolicy = nomePolicy;
  124.                     }
  125.                 }
  126.             }else{
  127.                 nomePolicy = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_NOME);
  128.                
  129.                 oldNomeSuggeritoPolicy = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_OLD_NOME_SUGGERITO);
  130.                
  131.                 if(nomePolicy!=null && !"".equals(nomePolicy) &&
  132.                     nomePolicy.equals(oldNomeSuggeritoPolicy)){
  133.                     nomePolicy = confHelper.getNomeSuggerito(policy); // aggiorno suggerimento
  134.                     oldNomeSuggeritoPolicy = nomePolicy;
  135.                 }
  136.             }

  137.             // Nome รจ l'id
  138.            
  139.             String oldIdPolicyS = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_OLD_ID);
  140.             if(oldIdPolicyS!=null && !"".equals(oldIdPolicyS) &&
  141.                 policy.getOldIdPolicy() ==null){
  142.                 IdPolicy oldIdPolicy = new IdPolicy();
  143.                 oldIdPolicy.setNome(oldIdPolicyS);
  144.                 policy.setOldIdPolicy(oldIdPolicy );
  145.             }
  146.             if(policy.getIdPolicy()!=null &&
  147.                 !policy.getIdPolicy().equals(oldIdPolicyS)){
  148.                 oldIdPolicyS = policy.getIdPolicy();
  149.                 IdPolicy oldIdPolicy = new IdPolicy();
  150.                 oldIdPolicy.setNome(oldIdPolicyS);
  151.                 policy.setOldIdPolicy(oldIdPolicy );
  152.             }
  153.            
  154.             policy.setIdPolicy(nomePolicy);
  155.             value = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_SOGLIA_VALORE_MODIFICATO_CON_ISTANZE_ATTIVE_MODIFICA_EFFETTIVA);
  156.             if(value!=null && ServletUtils.isCheckBoxEnabled(value)) {
  157.                 if(oldIdPolicyS !=null){
  158.                     listPolicyAttiveConStatoDisabilitato = confCore.findInUseAttivazioni(oldIdPolicyS, true); // Quelle disabilitate non hanno bisogno di essere aggiornate
  159.                 } else
  160.                     listPolicyAttiveConStatoDisabilitato = confCore.findInUseAttivazioni(id, true); // Quelle disabilitate non hanno bisogno di essere aggiornate
  161.             }
  162.            
  163.             // Applicabilita'
  164.             String errorApplicabilita = confHelper.readApplicabilitaPolicyFromHttpParameters(policy, first);
  165.             if(errorApplicabilita!=null){
  166.                 confHelper.addParsingError(sbParsingError,errorApplicabilita);
  167.             }
  168.            
  169.             // Setto nome/descrizione costruito attraverso gli altri parametri
  170.             // Descrizione
  171.            
  172.             String descrizionePolicy = null;
  173.             String oldDescrizioneSuggeritaPolicy = null;
  174.             if(first){
  175.                 descrizionePolicy = policy.getDescrizione();
  176.                 String descrizionePolicySuggerita = confHelper.getDescrizioneSuggerita(policy);
  177.                 if(descrizionePolicy==null || "".equals(descrizionePolicy)){
  178.                     descrizionePolicy = descrizionePolicySuggerita;
  179.                     oldDescrizioneSuggeritaPolicy = descrizionePolicy;
  180.                 }
  181.                 else{
  182.                     if(descrizionePolicy.equals(descrizionePolicySuggerita)){
  183.                         oldDescrizioneSuggeritaPolicy = descrizionePolicy;
  184.                     }
  185.                 }
  186.             }else{
  187.                 descrizionePolicy = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_DESCRIZIONE);
  188.                 oldDescrizioneSuggeritaPolicy = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_OLD_DESCRIZIONE_SUGGERITA);
  189.                
  190.                 if(descrizionePolicy!=null && !"".equals(descrizionePolicy) &&
  191.                     descrizionePolicy.equals(oldDescrizioneSuggeritaPolicy)){
  192.                     descrizionePolicy = confHelper.getDescrizioneSuggerita(policy); // aggiorno suggerimento
  193.                     oldDescrizioneSuggeritaPolicy = descrizionePolicy;
  194.                 }
  195.             }
  196.            
  197.             policy.setDescrizione(descrizionePolicy);
  198.            
  199.             if(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_RISORSA.equals(confHelper.getPostBackElementName()) &&
  200.                 TipoRisorsa.DIMENSIONE_MASSIMA_MESSAGGIO.equals(oldTipoRisorsa)) {
  201.                 policy.setIntervalloOsservazione(null);
  202.             }
  203.            
  204.             if(policy.isBuiltIn()) {
  205.                 editMode = false;
  206.                 editOnlyValueMode = true;
  207.             }
  208.             else {
  209.                 long count = confCore.countInUseAttivazioni(oldIdPolicyS, false);
  210.                 if(count>0){
  211.                     countPolicyAttiveConQualsiasiStato = count;
  212.                     editMode = false;
  213.                    
  214.                     long countAttivazioniNonDisabilite = confCore.countInUseAttivazioni(oldIdPolicyS, true);
  215.                     if(countAttivazioniNonDisabilite==0){
  216.                         editOnlyValueMode = true;
  217.                     }
  218.                     else {
  219.                         editOnlyValueMode = updateValueInSeguitoModificaSogliaPolicy;
  220.                     }
  221.                 }
  222.             }
  223.            
  224.            
  225.             // Preparo il menu
  226.             confHelper.makeMenu();
  227.            
  228.             // setto la barra del titolo
  229.             List<Parameter> lstParam = new ArrayList<>();

  230.             lstParam.add(new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CONTROLLO_TRAFFICO, ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO));
  231.             lstParam.add(new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_REGISTRO_POLICY, ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY_LIST));
  232.             lstParam.add(new Parameter(oldIdPolicyS,null));
  233.            
  234.            
  235.             // Se tipo = null, devo visualizzare la pagina per l'inserimento
  236.             // dati
  237.             if (confHelper.isEditModeInProgress()) {
  238.                 ServletUtils.setPageDataTitle(pd, lstParam);
  239.                
  240.                 // preparo i campi
  241.                 List<DataElement> dati = new ArrayList<>();
  242.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  243.                
  244.                 // Dati Generali
  245.                 confHelper.addConfigurazionePolicyToDati(dati, tipoOperazione, policy,  editMode, countPolicyAttiveConQualsiasiStato,oldNomeSuggeritoPolicy,oldDescrizioneSuggeritaPolicy,oldIdPolicyS);
  246.                
  247.                 // Valori di Soglia
  248.                 confHelper.addConfigurazionePolicyValoriSoglia(dati, tipoOperazione, policy,    editMode, editOnlyValueMode);
  249.                
  250.                 // Applicabilita'
  251.                 confHelper.addConfigurazionePolicyApplicabilitaToDati(dati, tipoOperazione, policy, configurazioneControlloTraffico.getControlloTraffico(), editMode);
  252.                
  253.                 // Set First is false
  254.                 confHelper.addToDatiFirstTimeDisabled(dati,ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_FIRST_TIME);
  255.                
  256.                 if(!editMode && !editOnlyValueMode) {
  257.                     pd.disableEditMode();
  258.                 }
  259.                
  260.                 pd.setDati(dati);

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

  262.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
  263.                         ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY,
  264.                         ForwardParams.CHANGE());
  265.             }
  266.            
  267.             // Controlli sui campi immessi
  268.             boolean isOk = confHelper.configurazionePolicyCheckData(sbParsingError, tipoOperazione, configurazioneControlloTraffico, policy, oldNomeSuggeritoPolicy,
  269.                     oldDescrizioneSuggeritaPolicy, oldIdPolicyS, listPolicyAttiveConStatoDisabilitato, updateValueInSeguitoModificaSogliaPolicy);
  270.             if (!isOk) {
  271.                
  272.                 ServletUtils.setPageDataTitle(pd, lstParam);
  273.                
  274.                 // preparo i campi
  275.                 List<DataElement> dati = new ArrayList<>();
  276.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  277.                
  278.                 // Dati Generali
  279.                 confHelper.addConfigurazionePolicyToDati(dati, tipoOperazione, policy, editMode, countPolicyAttiveConQualsiasiStato,oldNomeSuggeritoPolicy,oldDescrizioneSuggeritaPolicy,oldIdPolicyS);
  280.                
  281.                 // Valori di Soglia
  282.                 confHelper.addConfigurazionePolicyValoriSoglia(dati, tipoOperazione, policy, editMode, editOnlyValueMode);
  283.                
  284.                 // Applicabilita'
  285.                 confHelper.addConfigurazionePolicyApplicabilitaToDati(dati, tipoOperazione, policy, configurazioneControlloTraffico.getControlloTraffico(), editMode);
  286.                
  287.                 // Set First is false
  288.                 confHelper.addToDatiFirstTimeDisabled(dati,ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_FIRST_TIME);
  289.                
  290.                 if(!editMode && !editOnlyValueMode) {
  291.                     pd.disableEditMode();
  292.                 }
  293.                
  294.                 pd.setDati(dati);

  295.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  296.                
  297.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping,
  298.                         ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY,
  299.                         ForwardParams.CHANGE());
  300.             }

  301.             // insert sul db
  302.            
  303.             confCore.performUpdateOperation(userLogin, confHelper.smista(), policy);
  304.            
  305.             // Preparo la lista
  306.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);

  307.             int idLista = Liste.CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY;
  308.            
  309.             ricerca = confHelper.checkSearchParameters(idLista, ricerca);

  310.             List<ConfigurazionePolicy> lista = confCore.configurazionePolicyList(ricerca);
  311.            
  312.             confHelper.prepareConfigurazionePolicyList(ricerca, lista, idLista);
  313.            
  314.             // salvo l'oggetto ricerca nella sessione
  315.             ServletUtils.setSearchObjectIntoSession(request, session, ricerca);
  316.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  317.            
  318.             // Forward control to the specified success URI
  319.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY, ForwardParams.CHANGE());
  320.         } catch (Exception e) {
  321.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  322.                     ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY, ForwardParams.CHANGE());
  323.         }  
  324.     }
  325. }