AbstractServletListExtendedChange.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.UrlParameters;
  34. import org.openspcoop2.web.ctrlstat.plugins.ExtendedException;
  35. import org.openspcoop2.web.ctrlstat.plugins.ExtendedList;
  36. import org.openspcoop2.web.ctrlstat.plugins.IExtendedBean;
  37. import org.openspcoop2.web.ctrlstat.plugins.IExtendedListServlet;
  38. import org.openspcoop2.web.ctrlstat.plugins.WrapperExtendedBean;
  39. import org.openspcoop2.web.ctrlstat.servlet.ConsoleHelper;
  40. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  41. import org.openspcoop2.web.lib.mvc.Costanti;
  42. import org.openspcoop2.web.lib.mvc.DataElement;
  43. import org.openspcoop2.web.lib.mvc.ForwardParams;
  44. import org.openspcoop2.web.lib.mvc.GeneralData;
  45. import org.openspcoop2.web.lib.mvc.PageData;
  46. import org.openspcoop2.web.lib.mvc.ServletUtils;
  47. import org.openspcoop2.web.lib.mvc.TipoOperazione;

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

  57.     protected abstract void addToHiddenDati(List<DataElement> dati,ConsoleHelper consoleHelper) throws ExtendedException;
  58.        
  59.     protected abstract UrlParameters getUrlExtendedList(ConsoleHelper consoleHelper) throws Exception;
  60.    
  61.     @Override
  62.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

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

  64.         // Inizializzo PageData
  65.         PageData pd = new PageData();
  66.        
  67.         GeneralHelper generalHelper = new GeneralHelper(session);

  68.         // Inizializzo GeneralData
  69.         GeneralData gd = generalHelper.initGeneralData(request);
  70.        

  71.         try {
  72.             ConsoleHelper consoleHelper = this.getConsoleHelper(request, pd, session);
  73.            
  74.             ControlStationCore consoleCore = this.getConsoleCore();
  75.            
  76.             IExtendedListServlet extendedServlet = this.getExtendedServlet(consoleHelper);
  77.            
  78.             Object object = this.getObject(consoleHelper);
  79.            
  80.             IExtendedBean extendedBean = null;
  81.             DBManager dbManager = null;
  82.             Connection con = null;
  83.             try{
  84.                 dbManager = DBManager.getInstance();
  85.                 con = dbManager.getConnection();
  86.                 extendedBean = extendedServlet.getExtendedBean(con, extendedServlet.getId(request));
  87.             }finally{
  88.                 if(dbManager!=null) {
  89.                     dbManager.releaseConnection(con);
  90.                 }
  91.             }
  92.            
  93.             extendedBean = extendedServlet.readHttpParameters(object, TipoOperazione.CHANGE, extendedBean, request);
  94.            
  95.             // Preparo il menu
  96.             consoleHelper.makeMenu();

  97.             // Se idhid = null, devo visualizzare la pagina per la
  98.             // modifica dati
  99.             if (consoleHelper.isEditModeInProgress()) {
  100.                
  101.                 // setto la barra del titolo
  102.                 this.setFormTitle(object, consoleHelper, extendedServlet, extendedBean, pd, TipoOperazione.CHANGE,
  103.                         this.getUrlExtendedList(consoleHelper));

  104.                 // preparo i campi
  105.                 List<DataElement> dati = new ArrayList<>();
  106.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  107.                
  108.                 this.addToHiddenDati(dati,consoleHelper);
  109.                
  110.                 extendedServlet.addToDati(dati, TipoOperazione.CHANGE, consoleHelper, consoleCore, object, extendedBean);
  111.                
  112.                 pd.setDati(dati);

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

  114.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
  115.                         this.getObjectName(),
  116.                         ForwardParams.CHANGE());

  117.             }

  118.             // Controlli sui campi immessi
  119.             boolean isOk = true;
  120.             try{
  121.                 extendedServlet.checkDati(TipoOperazione.CHANGE, consoleHelper, consoleCore, object, extendedBean);
  122.             }catch(Exception e){
  123.                 isOk = false;
  124.                 pd.setMessage(e.getMessage());
  125.             }
  126.             if (!isOk) {
  127.                
  128.                 // setto la barra del titolo
  129.                 this.setFormTitle(object, consoleHelper, extendedServlet, extendedBean, pd, TipoOperazione.CHANGE,
  130.                         this.getUrlExtendedList(consoleHelper));

  131.                 // preparo i campi
  132.                 List<DataElement> dati = new ArrayList<>();
  133.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  134.                
  135.                 this.addToHiddenDati(dati,consoleHelper);
  136.                
  137.                 extendedServlet.addToDati(dati, TipoOperazione.CHANGE, consoleHelper, consoleCore, object, extendedBean);
  138.                
  139.                 pd.setDati(dati);

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

  141.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping,
  142.                         this.getObjectName(),
  143.                         ForwardParams.CHANGE());
  144.             }

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

  146.             WrapperExtendedBean wrapper = new WrapperExtendedBean();
  147.             wrapper.setExtendedBean(extendedBean);
  148.             wrapper.setExtendedServlet(extendedServlet);
  149.             wrapper.setOriginalBean(object);
  150.             wrapper.setManageOriginalBean(false);
  151.            
  152.             consoleCore.performUpdateOperation(userLogin, consoleHelper.smista(), wrapper);

  153.             // Preparo la lista
  154.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
  155.             int idLista = this.getIdList();
  156.             int limit = ricerca.getPageSize(idLista);
  157.             int offset = ricerca.getIndexIniziale(idLista);
  158.             String search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  159.             ExtendedList extendedList = extendedServlet.extendedBeanList(TipoOperazione.CHANGE, consoleHelper, consoleCore,
  160.                     object, limit, offset, search);
  161.             ricerca.setNumEntries(idLista,extendedList.getSize());

  162.             this.prepareList(TipoOperazione.CHANGE, consoleHelper, ricerca, object, extendedServlet, extendedList.getExtendedBean(), ControlStationCore.getLog(),
  163.                     this.getUrlExtendedFather(consoleHelper));

  164.             String msgCompletato = extendedServlet.getTestoModificaEffettuata(TipoOperazione.CHANGE, consoleHelper);
  165.             if(msgCompletato!=null && !"".equals(msgCompletato)){
  166.                 pd.setMessage(msgCompletato,Costanti.MESSAGE_TYPE_INFO);
  167.             }
  168.            
  169.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  170.             return ServletUtils.getStrutsForwardEditModeFinished(mapping,
  171.                     this.getObjectName(),
  172.                     ForwardParams.CHANGE());
  173.         } catch (Exception e) {
  174.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  175.                     this.getObjectName(),
  176.                     ForwardParams.CHANGE());
  177.         }  
  178.     }
  179.    

  180. }