AccordiServizioParteComuneAllegatiChange.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.apc;

  21. import java.util.ArrayList;
  22. import java.util.Date;
  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.apache.struts.upload.FormFile;
  32. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  33. import org.openspcoop2.core.registry.Documento;
  34. import org.openspcoop2.core.registry.constants.ProprietariDocumento;
  35. import org.openspcoop2.core.registry.constants.RuoliDocumento;
  36. import org.openspcoop2.core.registry.constants.TipiDocumentoCoordinamento;
  37. import org.openspcoop2.core.registry.constants.TipiDocumentoSemiformale;
  38. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  39. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  40. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  41. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  42. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  43. import org.openspcoop2.web.ctrlstat.servlet.FileUploadForm;
  44. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  45. import org.openspcoop2.web.ctrlstat.servlet.apc.api.ApiCostanti;
  46. import org.openspcoop2.web.ctrlstat.servlet.archivi.ArchiviCore;
  47. import org.openspcoop2.web.ctrlstat.servlet.archivi.ArchiviHelper;
  48. import org.openspcoop2.web.lib.mvc.ForwardParams;
  49. import org.openspcoop2.web.lib.mvc.GeneralData;
  50. import org.openspcoop2.web.lib.mvc.PageData;
  51. import org.openspcoop2.web.lib.mvc.Parameter;
  52. import org.openspcoop2.web.lib.mvc.ServletUtils;
  53. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  54. /**
  55.  * accordiAllegatiChange
  56.  *
  57.  * @author Andrea Poli (apoli@link.it)
  58.  * @author Stefano Corallo (corallo@link.it)
  59.  * @author Sandra Giangrandi (sandra@link.it)
  60.  * @author $Author$
  61.  * @version $Rev$, $Date$
  62.  *
  63.  */
  64. public final class AccordiServizioParteComuneAllegatiChange extends Action {

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

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

  68.         // Inizializzo PageData
  69.         PageData pd = new PageData();

  70.         GeneralHelper generalHelper = new GeneralHelper(session);

  71.         // Inizializzo GeneralData
  72.         GeneralData gd = generalHelper.initGeneralData(request);

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

  74.         try {
  75.            
  76.             FileUploadForm fileUpload = (FileUploadForm) form;
  77.            
  78.             AccordiServizioParteComuneHelper apcHelper = new AccordiServizioParteComuneHelper(request, pd, session);
  79.             ArchiviHelper archiviHelper = new ArchiviHelper(request, pd, session);

  80.             String idAllegato = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ALLEGATI_ID_ALLEGATO);
  81.             String idAccordo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ALLEGATI_ID_ACCORDO);
  82.             String nomeDocumento = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ALLEGATI_NOME_DOCUMENTO);
  83.             String tipoFile = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ALLEGATI_TIPO_FILE);
  84.            
  85.             long idAllegatoLong = Long.parseLong(idAllegato);
  86.             long idAccordoLong = Long.parseLong(idAccordo);
  87.            
  88.             String tipoAccordo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_TIPO_ACCORDO);
  89.             if("".equals(tipoAccordo))
  90.                 tipoAccordo = null;
  91.            
  92.             FormFile ff = fileUpload.getTheFile();

  93.             AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore();
  94.             ArchiviCore archiviCore = new ArchiviCore(apcCore);

  95.             // Preparo il menu
  96.             apcHelper.makeMenu();

  97.             // Prendo il nome
  98.             AccordoServizioParteComune as = apcCore.getAccordoServizioFull(idAccordoLong);
  99.             String labelASTitle = apcHelper.getLabelIdAccordo(as);
  100.            
  101.             Documento doc = archiviCore.getDocumento(idAllegatoLong,false);
  102.            
  103.             IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();
  104.             String uri = idAccordoFactory.getUriFromAccordo(as);
  105.             Parameter pTipoAccordo = AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo);
  106.             Parameter pIdAccordo = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID, idAccordo);
  107.             Parameter pNomeAccordo = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_NOME, uri);
  108.             IProtocolFactory<?> pf = ProtocolFactoryManager.getInstance().getProtocolFactoryByOrganizationType(as.getSoggettoReferente().getTipo());
  109.            
  110.             Boolean isModalitaVistaApiCustom = ServletUtils.getBooleanAttributeFromSession(ApiCostanti.SESSION_ATTRIBUTE_VISTA_APC_API, session, request, false).getValue();
  111.             List<Parameter> listaParams = apcHelper.getTitoloApc(TipoOperazione.ADD, as, tipoAccordo, labelASTitle, null, false);
  112.            
  113.             String labelAllegati = (isModalitaVistaApiCustom!=null && isModalitaVistaApiCustom.booleanValue()) ? AccordiServizioParteComuneCostanti.LABEL_ALLEGATI : AccordiServizioParteComuneCostanti.LABEL_ALLEGATI + " di " + labelASTitle;
  114.              
  115.             listaParams.add(new Parameter(labelAllegati, AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_ALLEGATI_LIST, pIdAccordo, pNomeAccordo, pTipoAccordo));
  116.             listaParams.add(new Parameter(nomeDocumento, null));
  117.            
  118.             // Se idhid = null, devo visualizzare la pagina per la
  119.             // modifica dati
  120.             if(apcHelper.isEditModeInProgress()){
  121.                
  122.                 // setto la barra del titolo
  123.                 ServletUtils.setPageDataTitle(pd, listaParams);
  124.                
  125.                 // preparo i campi
  126.                 List<Object> dati = new ArrayList<>();

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

  128.                 apcHelper.addAccordiAllegatiToDati(dati,TipoOperazione.CHANGE,idAccordo,
  129.                         null,null,null,null,tipoAccordo,tipoFile,
  130.                         idAllegato,doc,as,null,null,null);
  131.                            
  132.                 pd.setDati(dati);

  133.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  134.                
  135.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_ALLEGATI, ForwardParams.CHANGE());
  136.             }

  137.             Documento toCheck = new Documento();
  138.             toCheck.setRuolo(RuoliDocumento.valueOf(doc.getRuolo()).toString());
  139.             toCheck.setByteContenuto(ff.getFileData());
  140.             toCheck.setFile(ff.getFileName());
  141.             switch (RuoliDocumento.valueOf(doc.getRuolo())) {
  142.                 case allegato:
  143.                     toCheck.setTipo(ff.getFileName().substring(ff.getFileName().lastIndexOf('.')+1, ff.getFileName().length()));
  144.                     break;
  145.                 case specificaSemiformale:
  146.                     toCheck.setTipo(TipiDocumentoSemiformale.toEnumConstant(tipoFile).getNome());
  147.                     break;
  148.                 case specificaCoordinamento:
  149.                     toCheck.setTipo(TipiDocumentoCoordinamento.toEnumConstant(tipoFile).getNome());
  150.                     break;
  151.                 default:
  152.                     break;
  153.             }
  154.             toCheck.setIdProprietarioDocumento(as.getId());
  155.             toCheck.setOraRegistrazione(new Date());
  156.             toCheck.setId(doc.getId());
  157.            
  158.             // Controlli sui campi immessi
  159.             boolean isOk = archiviHelper.accordiAllegatiCheckData(TipoOperazione.CHANGE,ff,toCheck,ProprietariDocumento.accordoServizio, pf);
  160.             if (!isOk) {
  161.                
  162.                 // setto la barra del titolo
  163.                 ServletUtils.setPageDataTitle(pd, listaParams);
  164.                
  165.                 // preparo i campi
  166.                 List<Object> dati = new ArrayList<>();

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

  168.                 apcHelper.addAccordiAllegatiToDati(dati,TipoOperazione.CHANGE,idAccordo,
  169.                         null,null,null,null,tipoAccordo,tipoFile,
  170.                         idAllegato,doc,as,null,null,null);
  171.                                
  172.                 pd.setDati(dati);

  173.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  174.                
  175.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_ALLEGATI, ForwardParams.CHANGE());
  176.             }

  177.             AccordiServizioParteComuneUtilities.updateAccordoServizioParteComuneAllegati(as, doc, toCheck);        

  178.             // effettuo le operazioni
  179.             apcCore.performUpdateOperation(userLogin, apcHelper.smista(), as);

  180.             // Preparo la lista
  181.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
  182.            
  183.             List<Documento> lista = apcCore.accordiAllegatiList(as.getId().intValue(), ricerca);

  184.             apcHelper.prepareAccordiAllegatiList(as, ricerca, lista, tipoAccordo);

  185.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  186.            
  187.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_ALLEGATI, ForwardParams.CHANGE());
  188.            
  189.         } catch (Exception e) {
  190.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  191.                     AccordiServizioParteComuneCostanti.OBJECT_NAME_APC_ALLEGATI, ForwardParams.CHANGE());
  192.         }
  193.     }
  194. }