AbstractServletListExtendedAdd.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.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.ActionForm;
  27. import org.apache.struts.action.ActionForward;
  28. import org.apache.struts.action.ActionMapping;
  29. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  30. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  31. import org.openspcoop2.web.ctrlstat.core.UrlParameters;
  32. import org.openspcoop2.web.ctrlstat.plugins.ExtendedException;
  33. import org.openspcoop2.web.ctrlstat.plugins.ExtendedList;
  34. import org.openspcoop2.web.ctrlstat.plugins.IExtendedBean;
  35. import org.openspcoop2.web.ctrlstat.plugins.IExtendedListServlet;
  36. import org.openspcoop2.web.ctrlstat.plugins.WrapperExtendedBean;
  37. import org.openspcoop2.web.ctrlstat.servlet.ConsoleHelper;
  38. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  39. import org.openspcoop2.web.lib.mvc.Costanti;
  40. import org.openspcoop2.web.lib.mvc.DataElement;
  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.  * AbstractServletListExtendedAdd
  48.  *
  49.  * @author Andrea Poli (apoli@link.it)
  50.  * @author $Author$
  51.  * @version $Rev$, $Date$
  52.  *
  53.  */
  54. public abstract class AbstractServletListExtendedAdd extends AbstractServletListUtilities {

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

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

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

  64.         GeneralHelper generalHelper = new GeneralHelper(session);

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


  67.         try {
  68.             ConsoleHelper consoleHelper = this.getConsoleHelper(request, pd, session);
  69.            
  70.             ControlStationCore consoleCore = this.getConsoleCore();
  71.            
  72.             IExtendedListServlet extendedServlet = this.getExtendedServlet(consoleHelper);
  73.            
  74.             Object object = this.getObject(consoleHelper);
  75.            
  76.             IExtendedBean extendedBean = extendedServlet.readHttpParameters(object, TipoOperazione.ADD, null, request);
  77.            
  78.             // Preparo il menu
  79.             consoleHelper.makeMenu();

  80.             // Se idhid = null, devo visualizzare la pagina per l'inserimento
  81.             // dati
  82.             if (consoleHelper.isEditModeInProgress()) {
  83.    
  84.                 // setto la barra del titolo
  85.                 this.setFormTitle(object, consoleHelper, extendedServlet, extendedBean, pd, TipoOperazione.ADD,
  86.                         this.getUrlExtendedList(consoleHelper));
  87.                
  88.                 // preparo i campi
  89.                 List<DataElement> dati = new ArrayList<>();
  90.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  91.                 this.addToHiddenDati(dati,consoleHelper);
  92.                
  93.                 extendedServlet.addToDati(dati, TipoOperazione.ADD, consoleHelper, consoleCore, object, extendedBean);
  94.                
  95.                 pd.setDati(dati);

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

  97.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
  98.                         this.getObjectName(),
  99.                         ForwardParams.ADD());

  100.             }

  101.             // Controlli sui campi immessi
  102.             boolean isOk = true;
  103.             try{
  104.                 extendedServlet.checkDati(TipoOperazione.ADD, consoleHelper, consoleCore, object, extendedBean);
  105.             }catch(Exception e){
  106.                 isOk = false;
  107.                 pd.setMessage(e.getMessage());
  108.             }
  109.             if (!isOk) {

  110.                 // setto la barra del titolo
  111.                 this.setFormTitle(object, consoleHelper, extendedServlet, extendedBean, pd, TipoOperazione.ADD,
  112.                         this.getUrlExtendedList(consoleHelper));
  113.                
  114.                 // preparo i campi
  115.                 List<DataElement> dati = new ArrayList<>();
  116.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  117.                 this.addToHiddenDati(dati,consoleHelper);
  118.                
  119.                 extendedServlet.addToDati(dati, TipoOperazione.ADD, consoleHelper, consoleCore, object, extendedBean);

  120.                 pd.setDati(dati);

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

  122.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping,
  123.                         this.getObjectName(),
  124.                         ForwardParams.ADD());
  125.             }

  126.             // Rendo persistente la modifica
  127.             String userLogin = ServletUtils.getUserLoginFromSession(session);

  128.             WrapperExtendedBean wrapper = new WrapperExtendedBean();
  129.             wrapper.setExtendedBean(extendedBean);
  130.             wrapper.setExtendedServlet(extendedServlet);
  131.             wrapper.setOriginalBean(object);
  132.             wrapper.setManageOriginalBean(false);
  133.            
  134.             consoleCore.performCreateOperation(userLogin, consoleHelper.smista(), wrapper);

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

  144.             this.prepareList(TipoOperazione.ADD, consoleHelper, ricerca, object, extendedServlet, extendedList.getExtendedBean(), ControlStationCore.getLog(),
  145.                     this.getUrlExtendedFather(consoleHelper));

  146.             String msgCompletato = extendedServlet.getTestoModificaEffettuata(TipoOperazione.ADD, consoleHelper);
  147.             if(msgCompletato!=null && !"".equals(msgCompletato)){
  148.                 pd.setMessage(msgCompletato,Costanti.MESSAGE_TYPE_INFO);
  149.             }
  150.            
  151.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  152.             return ServletUtils.getStrutsForwardEditModeFinished(mapping,
  153.                     this.getObjectName(),
  154.                     ForwardParams.ADD());
  155.         } catch (Exception e) {
  156.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  157.                     this.getObjectName(),
  158.                     ForwardParams.ADD());
  159.         }  
  160.     }

  161. }