AbstractServletNewWindowChangeExtended.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.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.web.ctrlstat.core.ControlStationCore;
  32. import org.openspcoop2.web.ctrlstat.core.DBManager;
  33. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  34. import org.openspcoop2.web.ctrlstat.plugins.ExtendedException;
  35. import org.openspcoop2.web.ctrlstat.plugins.IExtendedBean;
  36. import org.openspcoop2.web.ctrlstat.plugins.IExtendedFormServlet;
  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.DataElement;
  42. import org.openspcoop2.web.lib.mvc.DataElementType;
  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.Parameter;
  47. import org.openspcoop2.web.lib.mvc.ServletUtils;
  48. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  49. /**
  50.  * AbstractServletNewWindowChangeExtended
  51.  *
  52.  * @author Andrea Poli (apoli@link.it)
  53.  * @author Stefano Corallo (corallo@link.it)
  54.  * @author Sandra Giangrandi (sandra@link.it)
  55.  * @author $Author$
  56.  * @version $Rev$, $Date$
  57.  *
  58.  */
  59. public abstract class AbstractServletNewWindowChangeExtended extends Action {

  60.     protected abstract ConsoleHelper getConsoleHelper(HttpServletRequest request, PageData pd, HttpSession session) throws Exception;
  61.    
  62.     protected abstract ControlStationCore getConsoleCore() throws Exception;
  63.    
  64.     protected abstract IExtendedFormServlet getExtendedServlet(ControlStationCore core, String uniqueID) throws Exception;
  65.    
  66.     protected abstract List<Parameter> getTitle(Object object, HttpServletRequest request, HttpSession session) throws Exception;
  67.    
  68.     protected abstract Object getObject(ControlStationCore core,HttpServletRequest request) throws Exception;
  69.    
  70.     protected abstract String getObjectName() throws Exception;
  71.    
  72.     protected abstract ForwardParams getForwardParams() throws Exception;
  73.    
  74.     @Override
  75.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

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

  77.         // Inizializzo PageData
  78.         PageData pd = new PageData();

  79.         GeneralHelper generalHelper = new GeneralHelper(session);

  80.         // Inizializzo GeneralData
  81.         GeneralData gd = generalHelper.initGeneralData(request);

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

  83.         try {
  84.             ConsoleHelper consoleHelper = this.getConsoleHelper(request, pd, session);

  85.             ControlStationCore consoleCore = this.getConsoleCore();
  86.            
  87.             IExtendedFormServlet extendedServlet = this.getExtendedServlet(consoleCore,consoleHelper.getParameter(CostantiControlStation.PARAMETRO_EXTENDED_FORM_ID));
  88.            
  89.             // Preparo il menu
  90.             consoleHelper.makeMenu();

  91.             // prelevo oggetto
  92.             Object object = this.getObject(consoleCore,request);
  93.            
  94.             // setto la barra del titolo
  95.             List<Parameter> lstParam = this.getTitle(object,request,session);
  96.             lstParam.add(new Parameter(extendedServlet.getFormTitle(TipoOperazione.CHANGE, consoleHelper), null));
  97.             ServletUtils.setPageDataTitle(pd, lstParam);

  98.             IExtendedBean extendedBean = null;
  99.             DBManager dbManager = null;
  100.             Connection con = null;
  101.             try{
  102.                 dbManager = DBManager.getInstance();
  103.                 con = dbManager.getConnection();
  104.                 extendedBean = extendedServlet.getExtendedBean(con, extendedServlet.getId(request));
  105.             }finally{
  106.                 if(dbManager!=null) {
  107.                     dbManager.releaseConnection(con);
  108.                 }
  109.             }
  110.            
  111.             extendedBean = extendedServlet.readHttpParameters(object, TipoOperazione.CHANGE, extendedBean, request);


  112.             if (!consoleHelper.isEditModeInProgress()) {
  113.                
  114.                 boolean isOk = true;
  115.                 try{
  116.                     extendedServlet.checkDati(TipoOperazione.CHANGE, consoleHelper, consoleCore, object, extendedBean);
  117.                 }catch(Exception e){
  118.                     isOk = false;
  119.                     pd.setMessage(e.getMessage());
  120.                 }
  121.                
  122.                 // Controlli sui campi immessi
  123.                 if (!isOk) {
  124.                     // preparo i campi
  125.                     List<DataElement> dati = new ArrayList<>();

  126.                     dati.add(ServletUtils.getDataElementForEditModeFinished());

  127.                     DataElement de = new DataElement();
  128.                     de.setValue(extendedServlet.getUniqueID());
  129.                     de.setType(DataElementType.HIDDEN);
  130.                     de.setName(CostantiControlStation.PARAMETRO_EXTENDED_FORM_ID);
  131.                     dati.add(de);
  132.                    
  133.                     extendedServlet.addToDati(dati, TipoOperazione.CHANGE, consoleHelper, consoleCore, object, extendedBean);
  134.                    
  135.                     pd.setDati(dati);
  136.                    
  137.                     ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  138.                     return ServletUtils.getStrutsForwardEditModeCheckError(mapping,
  139.                             this.getObjectName(),
  140.                             this.getForwardParams());
  141.                 }

  142.                 // Modifico i dati della porta di dominio nel db
  143.                 WrapperExtendedBean wrapperExtendedBean = new WrapperExtendedBean();
  144.                 wrapperExtendedBean.setExtendedBean(extendedBean);
  145.                 wrapperExtendedBean.setExtendedServlet(extendedServlet);
  146.                 wrapperExtendedBean.setOriginalBean(object);
  147.                 wrapperExtendedBean.setManageOriginalBean(false);
  148.                 consoleCore.performUpdateOperation(userLogin, consoleHelper.smista(), wrapperExtendedBean);

  149.                 List<DataElement> dati = new ArrayList<>();

  150.                 String testModificaEffettuata = extendedServlet.getTestoModificaEffettuata(TipoOperazione.CHANGE, consoleHelper); // questa chiamata fatta prima della addDati consente di informare la addDati che la gestione รจ terminata
  151.                
  152.                 DataElement de = new DataElement();
  153.                 de.setValue(extendedServlet.getUniqueID());
  154.                 de.setType(DataElementType.HIDDEN);
  155.                 de.setName(CostantiControlStation.PARAMETRO_EXTENDED_FORM_ID);
  156.                 dati.add(de);
  157.                
  158.                 extendedServlet.addToDati(dati, TipoOperazione.CHANGE, consoleHelper, consoleCore, object, extendedBean);
  159.                
  160.                 pd.setDati(dati);
  161.                
  162.                 pd.setMessage(testModificaEffettuata,Costanti.MESSAGE_TYPE_INFO);
  163.                
  164.                 pd.disableEditMode();
  165.                
  166.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  167.                 return ServletUtils.getStrutsForwardEditModeFinished(mapping,
  168.                         this.getObjectName(),
  169.                         this.getForwardParams()
  170.                         );
  171.                
  172.             }

  173.             // preparo i campi
  174.             List<DataElement> dati = new ArrayList<>();

  175.             dati.add(ServletUtils.getDataElementForEditModeFinished());

  176.             DataElement de = new DataElement();
  177.             de.setValue(extendedServlet.getUniqueID());
  178.             de.setType(DataElementType.HIDDEN);
  179.             de.setName(CostantiControlStation.PARAMETRO_EXTENDED_FORM_ID);
  180.             dati.add(de);
  181.            
  182.             extendedServlet.addToDati(dati, TipoOperazione.CHANGE, consoleHelper, consoleCore, object, extendedBean);
  183.            
  184.             pd.setDati(dati);

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

  186.             return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
  187.                     this.getObjectName(),
  188.                     this.getForwardParams()
  189.                     );
  190.         } catch (Exception e) {
  191.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  192.                     this.getObjectName(),
  193.                     this.getForwardParams());
  194.         }
  195.     }


  196.     public static void addToDatiNewWindow(IExtendedFormServlet extendedServlet,List<DataElement> dati, ConsoleHelper consoleHelper,
  197.             ControlStationCore core, Object originalObject, IExtendedBean extendedBean, String servletName) throws ExtendedException{
  198.        
  199.         DataElement de = new DataElement();
  200.         de.setValue(extendedServlet.getUniqueID());
  201.         de.setType(DataElementType.HIDDEN);
  202.         de.setName(CostantiControlStation.PARAMETRO_EXTENDED_FORM_ID);
  203.         dati.add(de);
  204.        
  205.         String servletNameWithId = servletName;
  206.         if(servletNameWithId.contains("?")){
  207.             servletNameWithId = servletNameWithId + "&";
  208.         }
  209.         else{
  210.             servletNameWithId = servletNameWithId + "?";
  211.         }
  212.         servletNameWithId = servletNameWithId + CostantiControlStation.PARAMETRO_EXTENDED_FORM_ID + "=" + extendedServlet.getUniqueID();
  213.        
  214.         extendedServlet.addToDatiNewWindow(dati, consoleHelper, core, originalObject, extendedBean, servletNameWithId);
  215.        
  216.     }
  217.    
  218. }