AbstractServletListExtendedDel.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.plugins.servlet;

  21. import java.sql.Connection;
  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.ActionForm;
  28. import org.apache.struts.action.ActionForward;
  29. import org.apache.struts.action.ActionMapping;
  30. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  31. import org.openspcoop2.web.ctrlstat.core.DBManager;
  32. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  33. import org.openspcoop2.web.ctrlstat.core.Utilities;
  34. import org.openspcoop2.web.ctrlstat.plugins.ExtendedList;
  35. import org.openspcoop2.web.ctrlstat.plugins.IExtendedBean;
  36. import org.openspcoop2.web.ctrlstat.plugins.IExtendedListServlet;
  37. import org.openspcoop2.web.ctrlstat.plugins.WrapperExtendedBean;
  38. import org.openspcoop2.web.ctrlstat.servlet.ConsoleHelper;
  39. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  40. import org.openspcoop2.web.lib.mvc.Costanti;
  41. import org.openspcoop2.web.lib.mvc.ForwardParams;
  42. import org.openspcoop2.web.lib.mvc.GeneralData;
  43. import org.openspcoop2.web.lib.mvc.PageData;
  44. import org.openspcoop2.web.lib.mvc.ServletUtils;
  45. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  46. /**
  47.  * AbstractServletListExtendedDel
  48.  *
  49.  * @author Andrea Poli (apoli@link.it)
  50.  * @author $Author$
  51.  * @version $Rev$, $Date$
  52.  *
  53.  */
  54. public abstract class AbstractServletListExtendedDel extends AbstractServletListUtilities {

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

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

  59.         // Salvo il vecchio PageData
  60.         // PageData pdold = ServletUtils.getObjectFromSession(request, session, PageData.class, Costanti.SESSION_ATTRIBUTE_PAGE_DATA);


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

  63.         GeneralHelper generalHelper = new GeneralHelper(session);

  64.         // Inizializzo GeneralData
  65.         GeneralData gd = generalHelper.initGeneralData(request);

  66.         try {
  67.             ConsoleHelper consoleHelper = this.getConsoleHelper(request, pd, session);
  68.            
  69.             String objToRemove = consoleHelper.getParameter(Costanti.PARAMETER_NAME_OBJECTS_FOR_REMOVE);
  70.             ArrayList<String> idsToRemove = Utilities.parseIdsToRemove(objToRemove);
  71.            
  72.             ControlStationCore consoleCore = this.getConsoleCore();
  73.            
  74.             IExtendedListServlet extendedServlet = this.getExtendedServlet(consoleHelper);
  75.            
  76.             Object object = this.getObject(consoleHelper);
  77.            
  78.             DBManager dbManager = null;
  79.             Connection con = null;
  80.             List<WrapperExtendedBean> listDati = new ArrayList<WrapperExtendedBean>();
  81.             StringBuilder bfInUseTotal = new StringBuilder();
  82.             try{
  83.                 dbManager = DBManager.getInstance();
  84.                 con = dbManager.getConnection();
  85.                
  86.                 for (int i = 0; i < idsToRemove.size(); i++) {

  87.                     StringBuilder bfInUse = new StringBuilder();
  88.                     boolean inUse = extendedServlet.inUse(con, idsToRemove.get(i), bfInUse);
  89.                     if(inUse){
  90.                        
  91.                         if(bfInUseTotal.length()>0){
  92.                             bfInUseTotal.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
  93.                         }
  94.                         bfInUseTotal.append("- "+bfInUse.toString());
  95.                        
  96.                     }
  97.                     else{
  98.                    
  99.                         IExtendedBean extendedBean = extendedServlet.getExtendedBean(con, idsToRemove.get(i));
  100.                        
  101.                         WrapperExtendedBean wrapper = new WrapperExtendedBean();
  102.                         wrapper.setExtendedBean(extendedBean);
  103.                         wrapper.setExtendedServlet(extendedServlet);
  104.                         wrapper.setOriginalBean(object);
  105.                         wrapper.setManageOriginalBean(false);
  106.                         listDati.add(wrapper);
  107.                    
  108.                     }
  109.                        
  110.                 }
  111.                
  112.             }finally{
  113.                 dbManager.releaseConnection(con);
  114.             }
  115.            
  116.             String msgErrore = "";
  117.             if(bfInUseTotal.length()>0){
  118.                 if(listDati.size()>0){
  119.                     msgErrore = "Non è stato possibile completare l'eliminazione di tutti gli elementi selezionati:<br/>"+bfInUseTotal.toString();
  120.                 }
  121.                 else{
  122.                     msgErrore = "Non è stato possibile eliminare gli elementi selezionati:<br/>"+bfInUseTotal.toString();
  123.                 }
  124.             }
  125.            
  126.             if(listDati.size()>0){
  127.                 String userLogin = ServletUtils.getUserLoginFromSession(session);
  128.                 consoleCore.performDeleteOperation(userLogin, consoleHelper.smista(), (Object[]) listDati.toArray(new WrapperExtendedBean[1]));
  129.             }

  130.             // Preparo il menu
  131.             consoleHelper.makeMenu();

  132.             // Preparo la lista
  133.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
  134.             int idLista = this.getIdList();
  135.             int limit = ricerca.getPageSize(idLista);
  136.             int offset = ricerca.getIndexIniziale(idLista);
  137.             String search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  138.             ExtendedList extendedList = extendedServlet.extendedBeanList(TipoOperazione.DEL, consoleHelper, consoleCore,
  139.                     object, limit, offset, search);
  140.             ricerca.setNumEntries(idLista,extendedList.getSize());

  141.             this.prepareList(TipoOperazione.DEL, consoleHelper, ricerca, object, extendedServlet, extendedList.getExtendedBean(), ControlStationCore.getLog(),
  142.                     this.getUrlExtendedFather(consoleHelper));

  143.             String msgCompletato = extendedServlet.getTestoModificaEffettuata(TipoOperazione.DEL, consoleHelper);
  144.             if(msgCompletato!=null && !"".equals(msgCompletato)){
  145.                 if(msgErrore!=null && !"".equals(msgErrore)){
  146.                     if(listDati.size()>0){
  147.                         msgCompletato = msgCompletato+"<br/><br/>"+msgErrore;
  148.                     }
  149.                     else{
  150.                         msgCompletato = msgErrore;
  151.                     }
  152.                 }
  153.             }
  154.             else{
  155.                 msgCompletato = msgErrore;
  156.             }
  157.             if(msgCompletato!=null && !"".equals(msgCompletato)){
  158.                 if(msgErrore!=null && !"".equals(msgErrore))
  159.                     pd.setMessage(msgCompletato);
  160.                 else
  161.                     pd.setMessage(msgCompletato,Costanti.MESSAGE_TYPE_INFO);
  162.             }
  163.            
  164.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  165.             // Forward control to the specified success URI
  166.             return ServletUtils.getStrutsForward(mapping, this.getObjectName(),
  167.                     ForwardParams.DEL());
  168.         } catch (Exception e) {
  169.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  170.                     this.getObjectName(),
  171.                     ForwardParams.DEL());
  172.         }  
  173.     }
  174. }