ConfigurazioneControlloTrafficoConfigurazionePolicyDel.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.HashMap;
  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.ErrorsHandlerCostant;
  32. import org.openspcoop2.core.commons.Liste;
  33. import org.openspcoop2.core.controllo_traffico.ConfigurazionePolicy;
  34. import org.openspcoop2.core.controllo_traffico.IdPolicy;
  35. import org.openspcoop2.protocol.engine.utils.DBOggettiInUsoUtils;
  36. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  37. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  38. import org.openspcoop2.web.ctrlstat.core.Utilities;
  39. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  40. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  41. import org.openspcoop2.web.lib.mvc.Costanti;
  42. import org.openspcoop2.web.lib.mvc.ForwardParams;
  43. import org.openspcoop2.web.lib.mvc.GeneralData;
  44. import org.openspcoop2.web.lib.mvc.MessageType;
  45. import org.openspcoop2.web.lib.mvc.PageData;
  46. import org.openspcoop2.web.lib.mvc.ServletUtils;


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

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

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

  58.         // Inizializzo PageData
  59.         PageData pd = new PageData();

  60.         GeneralHelper generalHelper = new GeneralHelper(session);

  61.         // Inizializzo GeneralData
  62.         GeneralData gd = generalHelper.initGeneralData(request);

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

  64.         try {
  65.             ConfigurazioneHelper confHelper = new ConfigurazioneHelper(request, pd, session);

  66.             ConfigurazioneCore confCore = new ConfigurazioneCore();

  67.             // Preparo il menu
  68.             confHelper.makeMenu();

  69.             String objToRemove =confHelper.getParameter(Costanti.PARAMETER_NAME_OBJECTS_FOR_REMOVE);

  70.             // Elimino i filtri dal db
  71.             ArrayList<String> idsToRemove = Utilities.parseIdsToRemove(objToRemove);
  72.             StringBuilder inUsoMessage = new StringBuilder();
  73.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  74.             boolean normalizeObjectIds = !confHelper.isModalitaCompleta();
  75.             List<ConfigurazionePolicy> elemToRemove = new ArrayList<ConfigurazionePolicy>();
  76.             boolean delBuiltIn = false;
  77.             boolean delUtente = false;
  78.             for (int i = 0; i < idsToRemove.size(); i++) {
  79.                 boolean delete = true;
  80.                 long idPolicy = Long.parseLong(idsToRemove.get(i));
  81.                 ConfigurazionePolicy policy = confCore.getConfigurazionePolicy(idPolicy);
  82.                 IdPolicy idPolicyObject = new IdPolicy();
  83.                 idPolicyObject.setNome(policy.getIdPolicy());
  84.                
  85.                 if(policy.isBuiltIn()) {
  86.                    
  87.                     inUsoMessage.append("- ");
  88.                     inUsoMessage.append(policy.getIdPolicy());
  89.                     inUsoMessage.append(" non eliminabile");
  90.                     inUsoMessage.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
  91.                    
  92.                     delete = false;
  93.                    
  94.                     delBuiltIn = true;
  95.                 }
  96.                 else {
  97.                    
  98.                     boolean policyInUso = confCore.isRateLimitingPolicyInUso(idPolicyObject,whereIsInUso,normalizeObjectIds);

  99.                     if (policyInUso) {
  100.                         inUsoMessage.append(DBOggettiInUsoUtils.toString(idPolicyObject, whereIsInUso, true, org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE));
  101.                         inUsoMessage.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
  102.                        
  103.                         delete = false;
  104.                        
  105.                         // Con il dettaglio di dove viene utilizzato, non serve piu' questo messaggio
  106.                         //delUtente = true;
  107.                     }
  108.                    
  109. //                  long configurazioneUtilizzata = confCore.countInUseAttivazioni(policy.getIdPolicy());
  110. //                  
  111. //                  if(configurazioneUtilizzata >0){
  112. //                      if(delMsg.length()>0){
  113. //                          delMsg.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
  114. //                      }
  115. //                      delMsg.append("- ");
  116. //                      delMsg.append(policy.getIdPolicy());
  117. //                      delMsg.append(" viene utilizzata in ");
  118. //                      delMsg.append(configurazioneUtilizzata);
  119. //                      if(configurazioneUtilizzata >1)
  120. //                          delMsg.append(" istanze di ");
  121. //                      else
  122. //                          delMsg.append(" istanza di ");
  123. //                      delMsg.append(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_RATE_LIMITING);
  124. //                      delete = false;
  125. //                      
  126. //                      delUtente = true;
  127. //                  }
  128.                 }

  129.                 if(delete) {
  130.                     // aggiungo elemento alla lista di quelli da cancellare
  131.                     elemToRemove.add(policy);
  132.                 }
  133.             }
  134.            
  135.             if(inUsoMessage.length() > 0){
  136.                 inUsoMessage.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
  137.                 if(delBuiltIn) {
  138.                     inUsoMessage.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE).append("!Attenzione! Le policy '"+CostantiControlStation.LABEL_PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_TIPO_BUILT_IN+"' non possono essere eliminate.");
  139.                 }
  140.                 if(delUtente) {
  141.                     if(delBuiltIn) {
  142.                         inUsoMessage.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
  143.                     }
  144.                     inUsoMessage.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE).append("Per poter eliminare una policy '"+CostantiControlStation.LABEL_PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_POLICY_TIPO_UTENTE+"' dal registro รจ necessario prima eliminare tutte le sue istanze esistenti in "+ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_RATE_LIMITING);
  145.                 }
  146.             }
  147.            
  148.            
  149.             if(elemToRemove .size() > 0) {
  150. //              eseguo delete
  151.                 confCore.performDeleteOperation(userLogin, confHelper.smista(), (Object[]) elemToRemove.toArray(new ConfigurazionePolicy[1]));
  152.             }
  153.            
  154.             // alcuni elementi non sono stati eliminati
  155.             if(inUsoMessage.length() > 0) {
  156.                 pd.setMessage(inUsoMessage.toString());
  157.             } else {
  158.                 pd.setMessage(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_CONTROLLO_TRAFFICO_MODIFICATA_CON_SUCCESSO_SENZA_RIAVVIO_RICHIESTO,MessageType.INFO);
  159.             }

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

  162.             int idLista = Liste.CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY;

  163.             ricerca = confHelper.checkSearchParameters(idLista, ricerca);

  164.             List<ConfigurazionePolicy> lista = confCore.configurazionePolicyList(ricerca);

  165.             confHelper.prepareConfigurazionePolicyList(ricerca, lista, idLista);

  166.             // salvo l'oggetto ricerca nella sessione
  167.             ServletUtils.setSearchObjectIntoSession(request, session, ricerca);
  168.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  169.             // Forward control to the specified success URI
  170.             return ServletUtils.getStrutsForward (mapping, ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY, ForwardParams.DEL());
  171.         } catch (Exception e) {
  172.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  173.                     ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY, ForwardParams.DEL());
  174.         }  
  175.     }
  176. }