ProtocolPropertiesHelper.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.protocol_properties;

  21. import java.net.URLDecoder;
  22. import java.util.ArrayList;
  23. import java.util.List;

  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpSession;

  26. import org.openspcoop2.core.config.ServizioApplicativo;
  27. import org.openspcoop2.core.constants.ProprietariProtocolProperty;
  28. import org.openspcoop2.core.id.IDAccordo;
  29. import org.openspcoop2.core.id.IDAccordoAzione;
  30. import org.openspcoop2.core.id.IDFruizione;
  31. import org.openspcoop2.core.id.IDPortType;
  32. import org.openspcoop2.core.id.IDPortTypeAzione;
  33. import org.openspcoop2.core.id.IDResource;
  34. import org.openspcoop2.core.id.IDServizio;
  35. import org.openspcoop2.core.id.IDServizioApplicativo;
  36. import org.openspcoop2.core.id.IDSoggetto;
  37. import org.openspcoop2.core.registry.AccordoCooperazione;
  38. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  39. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  40. import org.openspcoop2.core.registry.Azione;
  41. import org.openspcoop2.core.registry.Fruitore;
  42. import org.openspcoop2.core.registry.Operation;
  43. import org.openspcoop2.core.registry.PortType;
  44. import org.openspcoop2.core.registry.ProtocolProperty;
  45. import org.openspcoop2.core.registry.Resource;
  46. import org.openspcoop2.core.registry.Soggetto;
  47. import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
  48. import org.openspcoop2.core.registry.beans.PortTypeSintetico;
  49. import org.openspcoop2.core.registry.constants.StatiAccordo;
  50. import org.openspcoop2.core.registry.driver.BeanUtilities;
  51. import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
  52. import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
  53. import org.openspcoop2.protocol.sdk.ProtocolException;
  54. import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
  55. import org.openspcoop2.protocol.sdk.properties.AbstractConsoleItem;
  56. import org.openspcoop2.protocol.sdk.properties.BinaryConsoleItem;
  57. import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
  58. import org.openspcoop2.protocol.sdk.properties.IConsoleDynamicConfiguration;
  59. import org.openspcoop2.protocol.sdk.properties.ProtocolProperties;
  60. import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
  61. import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
  62. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  63. import org.openspcoop2.web.ctrlstat.servlet.ConsoleHelper;
  64. import org.openspcoop2.web.ctrlstat.servlet.ac.AccordiCooperazioneCostanti;
  65. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCostanti;
  66. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneHelper;
  67. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneUtilities;
  68. import org.openspcoop2.web.ctrlstat.servlet.apc.api.ApiCostanti;
  69. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCostanti;
  70. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaHelper;
  71. import org.openspcoop2.web.ctrlstat.servlet.archivi.ArchiviCostanti;
  72. import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateCostanti;
  73. import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateHelper;
  74. import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCostanti;
  75. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  76. import org.openspcoop2.web.lib.mvc.BinaryParameter;
  77. import org.openspcoop2.web.lib.mvc.Costanti;
  78. import org.openspcoop2.web.lib.mvc.DataElement;
  79. import org.openspcoop2.web.lib.mvc.DataElementType;
  80. import org.openspcoop2.web.lib.mvc.PageData;
  81. import org.openspcoop2.web.lib.mvc.Parameter;
  82. import org.openspcoop2.web.lib.mvc.ServletUtils;
  83. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  84. /**
  85.  * ProtocolPropertiesHelper
  86.  *
  87.  * @author Pintori Giuliano (pintori@link.it)
  88.  * @author $Author$
  89.  * @version $Rev$, $Date$
  90.  */
  91. public class ProtocolPropertiesHelper extends ConsoleHelper {

  92.     public ProtocolPropertiesHelper(HttpServletRequest request, PageData pd, HttpSession session) {
  93.         super(request, pd, session);
  94.     }
  95.     public ProtocolPropertiesHelper(ControlStationCore core, HttpServletRequest request, PageData pd, HttpSession session) {
  96.         super(core, request, pd, session);
  97.     }

  98.     public Object getIdOggettoProprietario(Object proprietario, String idProprietario, String nomeProprieta, String nomeParentProprieta, ProprietariProtocolProperty tipoProprietario, String tipoAccordo) throws Exception {
  99.         try{
  100.             if(tipoProprietario != null && proprietario != null){
  101.                 switch (tipoProprietario) {
  102.                 case ACCORDO_COOPERAZIONE:
  103.                     AccordoCooperazione ac = (AccordoCooperazione) proprietario;
  104.                     IDAccordo idAccordoCooperazione = this.idAccordoFactory.getIDAccordoFromValues(ac.getNome(),BeanUtilities.getSoggettoReferenteID(ac.getSoggettoReferente()),ac.getVersione());
  105.                     return idAccordoCooperazione;
  106.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  107.                     AccordoServizioParteComune as = (AccordoServizioParteComune) proprietario;
  108.                     IDAccordo idAccordo = this.idAccordoFactory.getIDAccordoFromValues(as.getNome(),BeanUtilities.getSoggettoReferenteID(as.getSoggettoReferente()),as.getVersione());
  109.                     return idAccordo;
  110.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  111.                     AccordoServizioParteSpecifica aps = (AccordoServizioParteSpecifica) proprietario;
  112.                     IDServizio idAps = this.idServizioFactory.getIDServizioFromAccordo(aps);
  113.                     return idAps;
  114.                 case AZIONE_ACCORDO:
  115.                     Azione azione = (Azione) proprietario;
  116.                     AccordoServizioParteComuneSintetico apca = this.apcCore.getAccordoServizioSintetico(Integer.parseInt(idProprietario));
  117.                     IDAccordo idAccordoAz = this.idAccordoFactory.getIDAccordoFromValues(apca.getNome(),BeanUtilities.getSoggettoReferenteID(apca.getSoggettoReferente()),apca.getVersione());
  118.                     IDAccordoAzione idAccordoAzione = new IDAccordoAzione();
  119.                     idAccordoAzione.setIdAccordo(idAccordoAz);
  120.                     idAccordoAzione.setNome(azione.getNome());

  121.                     return idAccordoAzione;
  122.                 case FRUITORE:
  123.                     Fruitore fruitore = (Fruitore) proprietario;
  124.                     IDSoggetto idSoggettoFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
  125.                     AccordoServizioParteSpecifica apsFrui = this.apsCore.getAccordoServizioParteSpecifica(fruitore.getIdServizio());
  126.                     IDServizio idApsFrui = this.idServizioFactory.getIDServizioFromAccordo(apsFrui);
  127.                     IDFruizione idFruizione = new IDFruizione();
  128.                     idFruizione.setIdServizio(idApsFrui);
  129.                     idFruizione.setIdFruitore(idSoggettoFruitore);

  130.                     return idFruizione;
  131.                 case OPERATION:
  132.                     org.openspcoop2.core.registry.Operation azionePt = (Operation) proprietario;
  133.                     IDPortType idPortTypeAz = new IDPortType();
  134.                     int idProp = Integer.parseInt(idProprietario);
  135.                     AccordoServizioParteComuneSintetico apc = this.apcCore.getAccordoServizioSintetico(idProp);
  136.                     for (PortTypeSintetico pt : apc.getPortType()) {
  137.                         if(pt.getNome().equals(nomeParentProprieta)){
  138.                             IDAccordo idAccordoPt = this.idAccordoFactory.getIDAccordoFromValues(apc.getNome(),BeanUtilities.getSoggettoReferenteID(apc.getSoggettoReferente()),apc.getVersione());
  139.                             idPortTypeAz.setIdAccordo(idAccordoPt);
  140.                             idPortTypeAz.setNome(pt.getNome());
  141.                             break;
  142.                         }
  143.                     }

  144.                     IDPortTypeAzione idAzionePt = new IDPortTypeAzione();
  145.                     idAzionePt.setIdPortType(idPortTypeAz);
  146.                     idAzionePt.setNome(azionePt.getNome());

  147.                     return idAzionePt;
  148.                 case PORT_TYPE:
  149.                     PortType pt = (PortType) proprietario;
  150.                     IDPortType idPt = new IDPortType();
  151.                     AccordoServizioParteComuneSintetico apcPt = this.apcCore.getAccordoServizioSintetico(pt.getIdAccordo());
  152.                     IDAccordo idAccordoPt = this.idAccordoFactory.getIDAccordoFromValues(apcPt.getNome(),BeanUtilities.getSoggettoReferenteID(apcPt.getSoggettoReferente()),apcPt.getVersione());
  153.                     idPt.setIdAccordo(idAccordoPt);
  154.                     idPt.setNome(pt.getNome());

  155.                     return idPt;
  156.                 case RESOURCE:
  157.                     org.openspcoop2.core.registry.Resource risorsa = (org.openspcoop2.core.registry.Resource) proprietario;
  158.                     AccordoServizioParteComuneSintetico apcr = this.apcCore.getAccordoServizioSintetico(Integer.parseInt(idProprietario));
  159.                     IDAccordo idAccordoRisorsa = this.idAccordoFactory.getIDAccordoFromValues(apcr.getNome(),
  160.                             BeanUtilities.getSoggettoReferenteID(apcr.getSoggettoReferente()),apcr.getVersione());
  161.                     IDResource idAccordoR = new IDResource();
  162.                     idAccordoR.setIdAccordo(idAccordoRisorsa);
  163.                     idAccordoR.setNome(risorsa.getNome());

  164.                     return idAccordoR;
  165.                 case SOGGETTO:
  166.                     Soggetto soggettoRegistro = (Soggetto) proprietario;
  167.                     IDSoggetto idSoggetto = new IDSoggetto(soggettoRegistro.getTipo(), soggettoRegistro.getNome());
  168.                     return idSoggetto;
  169.                 case SERVIZIO_APPLICATIVO:
  170.                     ServizioApplicativo servizioApplicativo = (ServizioApplicativo) proprietario;
  171.                     IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
  172.                     idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(servizioApplicativo.getTipoSoggettoProprietario(), servizioApplicativo.getNomeSoggettoProprietario()));
  173.                     idServizioApplicativo.setNome(servizioApplicativo.getNome());
  174.                     return idServizioApplicativo;
  175.                    
  176.                 }
  177.             }

  178.         }  catch (DriverRegistroServiziException e) {
  179.             throw e;
  180.         }
  181.         return null;
  182.     }

  183.     public Object getOggettoProprietario(String idProprietario, String nomeProprieta, String nomeParentProprieta, ProprietariProtocolProperty tipoProprietario, String tipoAccordo) throws Exception {
  184.         try{
  185.             if(tipoProprietario != null && idProprietario != null){
  186.                 long idProp = Long.valueOf(idProprietario);

  187.                 switch (tipoProprietario) {
  188.                 case ACCORDO_COOPERAZIONE:
  189.                     AccordoCooperazione ac = this.acCore.getAccordoCooperazione(idProp);
  190.                     return ac;
  191.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  192.                     AccordoServizioParteComune as = this.apcCore.getAccordoServizioFull(idProp);
  193.                     return as;
  194.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  195.                     AccordoServizioParteSpecifica aps = this.apsCore.getAccordoServizioParteSpecifica(idProp);
  196.                     return aps;
  197.                 case AZIONE_ACCORDO:
  198.                     AccordoServizioParteComune apca = this.apcCore.getAccordoServizioFull(idProp);
  199.                     for(Azione azione: apca.getAzioneList()){
  200.                         if(azione.getNome().equals(nomeProprieta))
  201.                             return azione;
  202.                     }
  203.                     return null;
  204.                 case FRUITORE:
  205.                     Fruitore servFru = this.apsCore.getServizioFruitore(idProp);
  206.                     return servFru;
  207.                 case OPERATION:
  208.                     AccordoServizioParteComune apcop = this.apcCore.getAccordoServizioFull(idProp);
  209.                     for (PortType pt : apcop.getPortTypeList()) {
  210.                         if(pt.getNome().equals(nomeParentProprieta)){
  211.                             for (org.openspcoop2.core.registry.Operation azione : pt.getAzioneList()) {
  212.                                 if(azione.getNome().equals(nomeProprieta ))
  213.                                     return azione;
  214.                             }
  215.                         }
  216.                     }
  217.                     return null;
  218.                 case PORT_TYPE:
  219.                     AccordoServizioParteComune apc = this.apcCore.getAccordoServizioFull(idProp);
  220.                     for (PortType pt : apc.getPortTypeList()) {
  221.                         if(pt.getNome().equals(nomeProprieta))
  222.                             return pt;
  223.                     }
  224.                     return null;
  225.                 case RESOURCE:
  226.                     AccordoServizioParteComune apcr = this.apcCore.getAccordoServizioFull(idProp);
  227.                     for(Resource risorsa: apcr.getResourceList()){
  228.                         if(risorsa.getNome().equals(nomeProprieta))
  229.                             return risorsa;
  230.                     }
  231.                     return null;
  232.                 case SOGGETTO:
  233.                     Soggetto soggettoRegistro = this.soggettiCore.getSoggettoRegistro(idProp);
  234.                     return soggettoRegistro;
  235.                 case SERVIZIO_APPLICATIVO:
  236.                     ServizioApplicativo servizioApplicativo = this.saCore.getServizioApplicativo(idProp);
  237.                     return servizioApplicativo;
  238.                 }
  239.             }

  240.         }  catch (DriverRegistroServiziNotFound e) {
  241.             throw e;
  242.         } catch (DriverRegistroServiziException e) {
  243.             throw e;
  244.         }
  245.         return null;
  246.     }
  247.    
  248.     public String getStatoOggettoProprietario(String idProprietario, String nomeProprieta, String nomeParentProprieta, ProprietariProtocolProperty tipoProprietario, String tipoAccordo) throws Exception {
  249.         try{
  250.             if(tipoProprietario != null && idProprietario != null){
  251.                 int idProp = Integer.parseInt(idProprietario);

  252.                 switch (tipoProprietario) {
  253.                 case ACCORDO_COOPERAZIONE:
  254.                     AccordoCooperazione ac = this.acCore.getAccordoCooperazione(idProp);
  255.                     return ac.getStatoPackage();
  256.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  257.                     AccordoServizioParteComuneSintetico as = this.apcCore.getAccordoServizioSintetico(idProp);
  258.                     return as.getStatoPackage();
  259.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  260.                     AccordoServizioParteSpecifica aps = this.apsCore.getAccordoServizioParteSpecifica(idProp);
  261.                     return aps.getStatoPackage();
  262.                 case AZIONE_ACCORDO:
  263.                     AccordoServizioParteComuneSintetico apca = this.apcCore.getAccordoServizioSintetico(idProp);
  264.                     return apca.getStatoPackage();
  265.                 case FRUITORE:
  266.                     Fruitore servFru = this.apsCore.getServizioFruitore(idProp);
  267.                     return servFru.getStatoPackage();
  268.                 case OPERATION:
  269.                     AccordoServizioParteComuneSintetico apcop = this.apcCore.getAccordoServizioSintetico(idProp);
  270.                     return apcop.getStatoPackage();
  271.                 case PORT_TYPE:
  272.                     AccordoServizioParteComuneSintetico apc = this.apcCore.getAccordoServizioSintetico(idProp);
  273.                     return apc.getStatoPackage();
  274.                 case RESOURCE:
  275.                     AccordoServizioParteComuneSintetico apcr = this.apcCore.getAccordoServizioSintetico(idProp);
  276.                     return apcr.getStatoPackage();
  277.                 case SOGGETTO:
  278.                     return null;
  279.                 case SERVIZIO_APPLICATIVO:
  280.                     return null;
  281.                 }
  282.             }
  283.         }  catch (DriverRegistroServiziNotFound e) {
  284.             throw e;
  285.         } catch (DriverRegistroServiziException e) {
  286.             throw e;
  287.         }
  288.         return null;
  289.     }

  290.     public List<DataElement> addProtocolPropertyChangeToDati(TipoOperazione tipoOp, List<DataElement> dati, String protocollo, String id, String nome,
  291.             String idProprietario, ProprietariProtocolProperty tipoProprietario, String tipoAccordo, String nomeProprietario,String nomeParentProprietario, String urlChange, String label,
  292.             BinaryParameter contenutoDocumento, StringBuilder contenutoDocumentoStringBuilder, String errore, String tipologiaDocumentoScaricare, AbstractConsoleItem<?> binaryConsoleItem,
  293.             boolean readOnly, String noteAggiornamento) throws Exception {

  294.         /* ID */
  295.         DataElement de = new DataElement();
  296.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_ID);
  297.         de.setValue(id);
  298.         de.setType(DataElementType.HIDDEN);
  299.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_ID);
  300.         dati.add(de);

  301.         /* CHANGE_BINARY */
  302.         de = new DataElement();
  303.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_CHANGE_BINARY);
  304.         de.setValue(ProtocolPropertiesCostanti.PARAMETRO_PP_CHANGE_BINARY_VALUE_TRUE);
  305.         de.setType(DataElementType.HIDDEN);
  306.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_CHANGE_BINARY);
  307.         dati.add(de);
  308.        
  309.         /* NOME */
  310.         de = new DataElement();
  311.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME);
  312.         de.setValue(nome);
  313.         de.setType(DataElementType.HIDDEN);
  314.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME);
  315.         dati.add(de);

  316.         /* ID_PROPRIETARIO */
  317.         de = new DataElement();
  318.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_PROPRIETARIO);
  319.         de.setValue(idProprietario);
  320.         de.setType(DataElementType.HIDDEN);
  321.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_PROPRIETARIO);
  322.         dati.add(de);

  323.         /* PROTOCOLLO */
  324.         de = new DataElement();
  325.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO);
  326.         de.setValue(protocollo);
  327.         de.setType(DataElementType.HIDDEN);
  328.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO);
  329.         dati.add(de);

  330.         /* TIPO_PROPRIETARIO */
  331.         de = new DataElement();
  332.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO);
  333.         de.setValue(tipoProprietario.toString());
  334.         de.setType(DataElementType.HIDDEN);
  335.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO);
  336.         dati.add(de);

  337.         /* TIPO_ACCORDO */
  338.         de = new DataElement();
  339.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_ACCORDO);
  340.         de.setValue(tipoAccordo);
  341.         de.setType(DataElementType.HIDDEN);
  342.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_ACCORDO);
  343.         dati.add(de);

  344.         /* NOME_PROPRIETARIO */
  345.         de = new DataElement();
  346.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PROPRIETARIO);
  347.         de.setValue(nomeProprietario);
  348.         de.setType(DataElementType.HIDDEN);
  349.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PROPRIETARIO);
  350.         dati.add(de);

  351.         /* NOME_PARENT_PROPRIETARIO */
  352.         de = new DataElement();
  353.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PARENT_PROPRIETARIO);
  354.         de.setValue(nomeParentProprietario);
  355.         de.setType(DataElementType.HIDDEN);
  356.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PARENT_PROPRIETARIO);
  357.         dati.add(de);

  358.         /* URL_CHANGE */
  359.         de = new DataElement();
  360.         de.setLabel(ProtocolPropertiesCostanti.PARAMETRO_PP_URL_ORIGINALE_CHANGE);
  361.         de.setValue(urlChange);
  362.         de.setType(DataElementType.HIDDEN);
  363.         de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_URL_ORIGINALE_CHANGE);
  364.         dati.add(de);
  365.        
  366.         de = new DataElement();
  367.         de.setLabel(binaryConsoleItem.getLabel());
  368.         de.setType(DataElementType.TITLE);
  369.         dati.add(de);
  370.        
  371.         boolean showContent = true;
  372.         if(binaryConsoleItem instanceof BinaryConsoleItem) {
  373.             showContent = ((BinaryConsoleItem)binaryConsoleItem).isShowContent();
  374.         }
  375.        
  376.         String statoPackage = this.getStatoOggettoProprietario(idProprietario, nomeProprietario, nomeParentProprietario, tipoProprietario, tipoAccordo);

  377.         // solo per le properties con stato finale blocco l'edit
  378.         if(this.isShowGestioneWorkflowStatoDocumenti() && statoPackage != null && StatiAccordo.finale.toString().equals(statoPackage)) {
  379.             this.pd.disableEditMode();
  380.            
  381.             if(contenutoDocumento != null && contenutoDocumento.getValue() != null && contenutoDocumento.getValue().length > 0){
  382.                 de = new DataElement();
  383.                 de.setLabel(ProtocolPropertiesCostanti.LABEL_NOME);
  384.                 de.setType(DataElementType.TEXT);
  385.                 de.setValue(contenutoDocumento.getFilename());
  386.                 dati.add(de);
  387.                
  388.                 if(showContent) {
  389.                     if(errore!=null){
  390.                         de = new DataElement();
  391.                         de.setValue(errore);
  392.                         de.setLabel(binaryConsoleItem.getLabel());
  393.                         de.setType(DataElementType.TEXT);
  394.                         de.setSize(this.getSize());
  395.                         dati.add(de);
  396.                     }
  397.                     else{
  398.                         de = new DataElement();
  399.                         de.setLabel(ProtocolPropertiesCostanti.LABEL_DOCUMENTO_ATTUALE);
  400.                         de.setType(DataElementType.TEXT_AREA_NO_EDIT);
  401.                         de.setValue(contenutoDocumentoStringBuilder.toString());
  402.                         de.setRows(30);
  403.                         de.setCols(100);
  404.                         dati.add(de);
  405.                     }
  406.                 }
  407.                    
  408.             }else {
  409.                 de = new DataElement();
  410.                 de.setType(DataElementType.TEXT);
  411.                 de.setValue(ProtocolPropertiesCostanti.LABEL_DOCUMENTO_NOT_FOUND);
  412.                 de.setSize(this.getSize());
  413.                 dati.add(de);
  414.             }
  415.            
  416.            
  417.             if(id != null && !"".equals(id) && this.core.isVisualizzaInformazioniCifrate()){
  418.                 DataElement saveAs = new DataElement();
  419.                 saveAs.setValue(ProtocolPropertiesCostanti.LABEL_DOWNLOAD);
  420.                 saveAs.setType(DataElementType.LINK);
  421.                 saveAs.setUrl(ArchiviCostanti.SERVLET_NAME_DOCUMENTI_EXPORT,
  422.                         new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_ALLEGATO, id),
  423.                         new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO, tipologiaDocumentoScaricare),
  424.                         new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO, ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_PROTOCOL_PROPERTY));
  425.                 saveAs.setDisabilitaAjaxStatus();
  426.                 if(this.core.getDriverBYOKUtilities().isEnabledBYOK() && binaryConsoleItem.isLockedType()) {
  427.                     saveAs.setConfirm(Costanti.TITOLO_FINESTRA_MODALE_DOWNLOAD_MESSAGE_WARNING, this.core.getByokWarningMessage(), Costanti.LABEL_MONITOR_BUTTON_CONFERMA);
  428.                 }
  429.                 dati.add(saveAs);
  430.             }
  431.            
  432.             de = new DataElement();
  433.             de.setType(DataElementType.HIDDEN);
  434.             de.setName(Costanti.PARAMETER_FILENAME_PREFIX + ProtocolPropertiesCostanti.PARAMETRO_PP_CONTENUTO_DOCUMENTO);
  435.             de.setValue(contenutoDocumento!=null ? contenutoDocumento.getFilename() : null);
  436.             dati.add(de);
  437.    
  438.             de = new DataElement();
  439.             de.setType(DataElementType.HIDDEN);
  440.             de.setName(Costanti.PARAMETER_FILEID_PREFIX + ProtocolPropertiesCostanti.PARAMETRO_PP_CONTENUTO_DOCUMENTO);
  441.             de.setValue(contenutoDocumento!=null ? contenutoDocumento.getId(): null);
  442.             dati.add(de);
  443.         }else {
  444.             /* Contenuto Documento */
  445.             if(contenutoDocumento != null && contenutoDocumento.getValue() != null && contenutoDocumento.getValue().length > 0){
  446.                 de = new DataElement();
  447.                 de.setLabel(ProtocolPropertiesCostanti.LABEL_NOME);
  448.                 de.setType(DataElementType.TEXT);
  449.                 de.setValue(contenutoDocumento.getFilename());
  450.                 dati.add(de);
  451.    
  452.                 if(showContent) {
  453.                     if(errore!=null){
  454.                         de = new DataElement();
  455.                         de.setValue(errore);
  456.                         de.setLabel(binaryConsoleItem.getLabel());
  457.                         de.setType(DataElementType.TEXT);
  458.                         de.setSize(this.getSize());
  459.                         dati.add(de);
  460.                     }
  461.                     else{
  462.                         de = new DataElement();
  463.                         de.setLabel(ProtocolPropertiesCostanti.LABEL_DOCUMENTO_ATTUALE);
  464.                         de.setType(DataElementType.TEXT_AREA_NO_EDIT);
  465.                         de.setValue(contenutoDocumentoStringBuilder.toString());
  466.                         de.setRows(30);
  467.                         de.setCols(100);
  468.                         dati.add(de);
  469.                     }
  470.                 }
  471.    
  472.                 if(id != null && !"".equals(id) && this.core.isVisualizzaInformazioniCifrate()){
  473.                     DataElement saveAs = new DataElement();
  474.                     saveAs.setValue(ProtocolPropertiesCostanti.LABEL_DOWNLOAD);
  475.                     saveAs.setType(DataElementType.LINK);
  476.                     saveAs.setUrl(ArchiviCostanti.SERVLET_NAME_DOCUMENTI_EXPORT,
  477.                             new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_ALLEGATO, id),
  478.                             new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO, tipologiaDocumentoScaricare),
  479.                             new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO, ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_PROTOCOL_PROPERTY));
  480.                     saveAs.setDisabilitaAjaxStatus();
  481.                     if(this.core.getDriverBYOKUtilities().isEnabledBYOK() && binaryConsoleItem.isLockedType()) {
  482.                         saveAs.setConfirm(Costanti.TITOLO_FINESTRA_MODALE_DOWNLOAD_MESSAGE_WARNING, this.core.getByokWarningMessage(), Costanti.LABEL_MONITOR_BUTTON_CONFERMA);
  483.                     }
  484.                     dati.add(saveAs);
  485.                 }
  486.    
  487.                 if(!readOnly) {
  488.                     de = new DataElement();
  489.                     de.setType(DataElementType.TITLE);
  490.                     de.setLabel(ProtocolPropertiesCostanti.LABEL_AGGIORNAMENTO +" " +binaryConsoleItem.getLabel());
  491.                     de.setValue("");
  492.                     de.setSize(this.getSize());
  493.                     dati.add(de);
  494.                 }
  495.    
  496.             }else {
  497.                 de = new DataElement();
  498.                 de.setLabel(ProtocolPropertiesCostanti.LABEL_DOCUMENTO_ATTUALE);
  499.                 de.setType(DataElementType.TEXT);
  500.                 de.setValue(ProtocolPropertiesCostanti.LABEL_DOCUMENTO_NOT_FOUND);
  501.                 dati.add(de);
  502.             }
  503.    
  504.             if(!readOnly) {
  505.                 de = new DataElement();
  506.                 de.setLabel(ProtocolPropertiesCostanti.LABEL_CONTENUTO_NUOVO);
  507.                 de.setValue("");
  508.                 de.setType(DataElementType.FILE);
  509.                 de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_CONTENUTO_DOCUMENTO);
  510.                 de.setSize(this.getSize());
  511.                 de.setRequired(binaryConsoleItem.isRequired());
  512.                 dati.add(de);
  513.             }
  514.    
  515.             de = new DataElement();
  516.             de.setType(DataElementType.HIDDEN);
  517.             de.setName(Costanti.PARAMETER_FILENAME_PREFIX + ProtocolPropertiesCostanti.PARAMETRO_PP_CONTENUTO_DOCUMENTO);
  518.             de.setValue(contenutoDocumento!=null ? contenutoDocumento.getFilename() : null);
  519.             dati.add(de);
  520.    
  521.             de = new DataElement();
  522.             de.setType(DataElementType.HIDDEN);
  523.             de.setName(Costanti.PARAMETER_FILEID_PREFIX + ProtocolPropertiesCostanti.PARAMETRO_PP_CONTENUTO_DOCUMENTO);
  524.             de.setValue(contenutoDocumento!=null ? contenutoDocumento.getId() : null);
  525.             dati.add(de);
  526.    
  527.             if(!readOnly &&
  528.                 contenutoDocumento != null && contenutoDocumento.getValue() != null && contenutoDocumento.getValue().length > 0 && !binaryConsoleItem.isRequired()){
  529.                 de = new DataElement();
  530.                 de.setBold(true);
  531.                 de.setLabel(ProtocolPropertiesCostanti.LABEL_DOCUMENTO_CHANGE_CLEAR_WARNING);
  532.                 de.setValue(ProtocolPropertiesCostanti.LABEL_DOCUMENTO_CHANGE_CLEAR);
  533.                 de.setType(DataElementType.NOTE);
  534.                 de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_CONTENUTO_DOCUMENTO_WARN);
  535.                 de.setSize(this.getSize());
  536.                 dati.add(de);
  537.             }
  538.    
  539.             if(!readOnly && noteAggiornamento!=null) {
  540.                 de = new DataElement();
  541.                 de.setValue(noteAggiornamento);
  542.                 de.setType(DataElementType.NOTE);
  543.                 de.setName(ProtocolPropertiesCostanti.PARAMETRO_PP_CONTENUTO_DOCUMENTO_NOTE);
  544.                 de.setSize(this.getSize());
  545.                 dati.add(de);
  546.             }
  547.            
  548.             if(readOnly) {
  549.                 this.pd.disableEditMode();
  550.             }
  551.         }
  552.        
  553.         return dati;
  554.     }

  555.     public ConsoleConfiguration getConsoleDynamicConfiguration(Object idOggettoProprietario, String idProprietario,
  556.             String nomeProprietario, String nomeParentProprietario, ProprietariProtocolProperty tipoProprietario,
  557.             String tipoAccordo, ConsoleOperationType consoleOperationType,
  558.             IRegistryReader registryReader,IConfigIntegrationReader configRegistryReader,IConsoleDynamicConfiguration consoleDynamicConfiguration) throws ProtocolException{
  559.         try{
  560.             if(tipoProprietario != null && idProprietario != null && idOggettoProprietario != null){
  561.                 switch (tipoProprietario) {
  562.                 case ACCORDO_COOPERAZIONE:
  563.                     IDAccordo idAccordoCooperazione = (IDAccordo) idOggettoProprietario;
  564.                     return consoleDynamicConfiguration.getDynamicConfigAccordoCooperazione(consoleOperationType, this,
  565.                             registryReader, configRegistryReader, idAccordoCooperazione);
  566.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  567.                     IDAccordo idApc = (IDAccordo) idOggettoProprietario;
  568.                     if(tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE)){
  569.                         return consoleDynamicConfiguration.getDynamicConfigAccordoServizioParteComune(consoleOperationType, this,
  570.                                 registryReader, configRegistryReader, idApc);
  571.                     } else {
  572.                         return consoleDynamicConfiguration.getDynamicConfigAccordoServizioComposto(consoleOperationType, this,
  573.                                 registryReader, configRegistryReader, idApc);
  574.                     }
  575.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  576.                     IDServizio idAps =(IDServizio) idOggettoProprietario;          
  577.                     return consoleDynamicConfiguration.getDynamicConfigAccordoServizioParteSpecifica(consoleOperationType, this,
  578.                             registryReader, configRegistryReader, idAps);
  579.                 case AZIONE_ACCORDO:
  580.                     IDAccordoAzione idAccordoAzione = (IDAccordoAzione) idOggettoProprietario;
  581.                     return consoleDynamicConfiguration.getDynamicConfigAzione(consoleOperationType, this,
  582.                             registryReader, configRegistryReader, idAccordoAzione);
  583.                 case FRUITORE:
  584.                     IDFruizione idFruizione = (IDFruizione) idOggettoProprietario;
  585.                     return consoleDynamicConfiguration.getDynamicConfigFruizioneAccordoServizioParteSpecifica(consoleOperationType, this,
  586.                             registryReader, configRegistryReader, idFruizione);
  587.                 case OPERATION:
  588.                     IDPortTypeAzione idAzionePt = (IDPortTypeAzione) idOggettoProprietario;
  589.                     return consoleDynamicConfiguration.getDynamicConfigOperation(consoleOperationType, this,
  590.                             registryReader, configRegistryReader, idAzionePt);
  591.                 case PORT_TYPE:
  592.                     IDPortType idPt = (IDPortType) idOggettoProprietario;
  593.                     return consoleDynamicConfiguration.getDynamicConfigPortType(consoleOperationType, this,
  594.                             registryReader, configRegistryReader, idPt);
  595.                 case RESOURCE:
  596.                     IDResource idAccordoRisorsa = (IDResource) idOggettoProprietario;
  597.                     String httpMethod = null;
  598.                     String path = null;
  599.                     try {
  600.                         Resource r = registryReader.getResourceAccordo(idAccordoRisorsa);
  601.                         httpMethod = r.getMethod()!=null ? r.getMethod().getValue() : null;
  602.                         path = r.getPath();
  603.                     }catch(Exception e) {}
  604.                     return consoleDynamicConfiguration.getDynamicConfigResource(consoleOperationType, this,
  605.                             registryReader, configRegistryReader, idAccordoRisorsa, httpMethod, path);
  606.                 case SOGGETTO:
  607.                     IDSoggetto idSoggetto = (IDSoggetto) idOggettoProprietario;
  608.                     return consoleDynamicConfiguration.getDynamicConfigSoggetto(consoleOperationType, this,
  609.                             registryReader, configRegistryReader, idSoggetto);
  610.                 case SERVIZIO_APPLICATIVO:
  611.                     IDServizioApplicativo idServizioApplicativo = (IDServizioApplicativo) idOggettoProprietario;
  612.                     return consoleDynamicConfiguration.getDynamicConfigServizioApplicativo(consoleOperationType, this,
  613.                             registryReader, configRegistryReader, idServizioApplicativo);
  614.                 }
  615.             }

  616.         }  catch (ProtocolException e) {
  617.             throw e;
  618.         }
  619.         return null;
  620.     }

  621.     public boolean isProtocolPropertiesRegistry(ProprietariProtocolProperty tipoProprietario){
  622.         try{
  623.             if(tipoProprietario != null){
  624.                 switch (tipoProprietario) {
  625.                 case ACCORDO_COOPERAZIONE:
  626.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  627.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  628.                 case AZIONE_ACCORDO:
  629.                 case FRUITORE:
  630.                 case OPERATION:
  631.                 case PORT_TYPE:
  632.                 case RESOURCE:
  633.                 case SOGGETTO:
  634.                     return true;
  635.                 case SERVIZIO_APPLICATIVO:
  636.                     return false;
  637.                 }
  638.             }
  639.         }  catch (Exception e) {
  640.             throw e;
  641.         }

  642.         return false;
  643.     }
  644.    
  645.     public List<ProtocolProperty> getProtocolPropertiesRegistry(Object proprietario, String id, String nome, String idProprietario, String nomeProprietario,
  646.             String nomeParentProprietario, ProprietariProtocolProperty tipoProprietario, String tipoAccordo) throws Exception {
  647.         try{
  648.             if(proprietario != null){
  649.                 List<ProtocolProperty> protocolPropertyList  = null;
  650.                 switch (tipoProprietario) {
  651.                 case ACCORDO_COOPERAZIONE:
  652.                     AccordoCooperazione ac = (AccordoCooperazione) proprietario;
  653.                     protocolPropertyList = ac.getProtocolPropertyList();
  654.                     break;
  655.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  656.                     AccordoServizioParteComune as = (AccordoServizioParteComune) proprietario;
  657.                     protocolPropertyList = as.getProtocolPropertyList();
  658.                     break;
  659.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  660.                     AccordoServizioParteSpecifica aps = (AccordoServizioParteSpecifica) proprietario;
  661.                     protocolPropertyList = aps.getProtocolPropertyList();
  662.                     break;
  663.                 case AZIONE_ACCORDO:
  664.                     Azione azione = (Azione) proprietario;
  665.                     protocolPropertyList = azione.getProtocolPropertyList();
  666.                     break;
  667.                 case FRUITORE:
  668.                     Fruitore fruitore = (Fruitore) proprietario;
  669.                     protocolPropertyList = fruitore.getProtocolPropertyList();
  670.                     break;
  671.                 case OPERATION:
  672.                     org.openspcoop2.core.registry.Operation azionePt = (Operation) proprietario;
  673.                     protocolPropertyList = azionePt.getProtocolPropertyList();
  674.                     break;
  675.                 case PORT_TYPE:
  676.                     PortType pt = (PortType) proprietario;
  677.                     protocolPropertyList = pt.getProtocolPropertyList();
  678.                     break;
  679.                 case RESOURCE:
  680.                     Resource risorsa = (Resource) proprietario;
  681.                     protocolPropertyList = risorsa.getProtocolPropertyList();
  682.                     break;
  683.                 case SOGGETTO:
  684.                     Soggetto soggettoRegistro = (Soggetto) proprietario;
  685.                     protocolPropertyList = soggettoRegistro.getProtocolPropertyList();
  686.                     break;
  687.                 case SERVIZIO_APPLICATIVO:
  688.                     throw new Exception("Con il TipoProprietario indicato ("+tipoProprietario+") deve essere invocato il metodo 'getProtocolPropertiesConfig'");
  689.                 }

  690.                 return protocolPropertyList;
  691.             }
  692.         }  catch (Exception e) {
  693.             throw e;
  694.         }

  695.         return null;

  696.     }
  697.    
  698.     public List<org.openspcoop2.core.config.ProtocolProperty> getProtocolPropertiesConfig(Object proprietario, String id, String nome, String idProprietario, String nomeProprietario,
  699.             String nomeParentProprietario, ProprietariProtocolProperty tipoProprietario, String tipoAccordo) throws Exception {
  700.         try{
  701.             if(proprietario != null){
  702.                 List<org.openspcoop2.core.config.ProtocolProperty> protocolPropertyList  = null;
  703.                 switch (tipoProprietario) {
  704.                 case ACCORDO_COOPERAZIONE:
  705.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  706.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  707.                 case AZIONE_ACCORDO:
  708.                 case FRUITORE:
  709.                 case OPERATION:
  710.                 case PORT_TYPE:
  711.                 case RESOURCE:
  712.                 case SOGGETTO:
  713.                     throw new Exception("Con il TipoProprietario indicato ("+tipoProprietario+") deve essere invocato il metodo 'getProtocolPropertiesRegistry'");
  714.                 case SERVIZIO_APPLICATIVO:
  715.                     ServizioApplicativo servizioApplicativo = (ServizioApplicativo) proprietario;
  716.                     protocolPropertyList = servizioApplicativo.getProtocolPropertyList();
  717.                     break;
  718.                 }

  719.                 return protocolPropertyList;
  720.             }
  721.         }  catch (Exception e) {
  722.             throw e;
  723.         }

  724.         return null;

  725.     }

  726.     public void salvaPropertiesRegistry(String userLogin, boolean smista, Object proprietario, List<ProtocolProperty> protocolPropertiesAggiornate,
  727.             String id, String nome, String idProprietario, String nomeProprietario, String nomeParentProprietario,
  728.             ProprietariProtocolProperty tipoProprietario, String tipoAccordo) throws Exception {
  729.         try{
  730.             if(proprietario != null){
  731.                 int idProp = Integer.parseInt(idProprietario);
  732.                 boolean save = false;
  733.                 switch (tipoProprietario) {
  734.                 case ACCORDO_COOPERAZIONE:
  735.                     AccordoCooperazione ac = (AccordoCooperazione) proprietario;
  736.                     ac.setProtocolPropertyList(protocolPropertiesAggiornate);
  737.                     // salvataggio
  738.                     this.core.performUpdateOperation(userLogin, smista, proprietario);
  739.                     break;
  740.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  741.                     AccordoServizioParteComune as = (AccordoServizioParteComune) proprietario;
  742.                     as.setProtocolPropertyList(protocolPropertiesAggiornate);
  743.                     // salvataggio
  744.                     this.core.performUpdateOperation(userLogin, smista, proprietario);
  745.                     break;
  746.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  747.                     AccordoServizioParteSpecifica aps = (AccordoServizioParteSpecifica) proprietario;
  748.                     aps.setProtocolPropertyList(protocolPropertiesAggiornate);
  749.                     // salvataggio
  750.                     this.core.performUpdateOperation(userLogin, smista, proprietario);
  751.                     break;
  752.                 case AZIONE_ACCORDO:
  753.                     Azione newAzione = (Azione) proprietario;
  754.                     AccordoServizioParteComune apca = this.apcCore.getAccordoServizioFull(idProp);
  755.                     for(Azione azione: apca.getAzioneList()){
  756.                         if(azione.getNome().equals(newAzione.getNome())){
  757.                             azione.setProtocolPropertyList(protocolPropertiesAggiornate);
  758.                             save = true;
  759.                             break;
  760.                         }
  761.                     }

  762.                     // salvataggio
  763.                     if(save)
  764.                         this.core.performUpdateOperation(userLogin, smista, apca);
  765.                     break;
  766.                 case FRUITORE:
  767.                     Fruitore fruitore = (Fruitore) proprietario;
  768.                     AccordoServizioParteSpecifica apsFrui = this.apsCore.getAccordoServizioParteSpecifica(fruitore.getIdServizio());

  769.                     for (Fruitore fr : apsFrui.getFruitoreList()) {
  770.                         if(fr.getTipo().equals(fruitore.getTipo()) && fr.getNome().equals(fruitore.getNome())){
  771.                             fr.setProtocolPropertyList(protocolPropertiesAggiornate);
  772.                             save = true;
  773.                             break;
  774.                         }
  775.                     }

  776.                     // salvataggio
  777.                     if(save)
  778.                         this.core.performUpdateOperation(userLogin, smista, apsFrui);
  779.                     break;
  780.                 case OPERATION:
  781.                     org.openspcoop2.core.registry.Operation newAzionePt = (Operation) proprietario;
  782.                     AccordoServizioParteComune apcop = this.apcCore.getAccordoServizioFull(idProp);
  783.                     for (PortType pt : apcop.getPortTypeList()) {
  784.                         if(pt.getNome().equals(nomeParentProprietario)){
  785.                             for (org.openspcoop2.core.registry.Operation azione : pt.getAzioneList()) {
  786.                                 if(azione.getNome().equals(newAzionePt.getNome())){
  787.                                     azione.setProtocolPropertyList(protocolPropertiesAggiornate);
  788.                                     save = true;
  789.                                     break;
  790.                                 }
  791.                             }
  792.                         }
  793.                     }
  794.                     // salvataggio
  795.                     if(save)
  796.                         this.core.performUpdateOperation(userLogin, smista, apcop);
  797.                     break;
  798.                 case PORT_TYPE:
  799.                     AccordoServizioParteComune apc = this.apcCore.getAccordoServizioFull(idProp);
  800.                     PortType newPt = (PortType) proprietario;

  801.                     for (PortType pt : apc.getPortTypeList()) {
  802.                         if(pt.getNome().equals(newPt.getNome())){
  803.                             pt.setProtocolPropertyList(protocolPropertiesAggiornate);
  804.                             save = true;
  805.                             break;
  806.                         }

  807.                     }
  808.                     // salvataggio
  809.                     if(save)
  810.                         this.core.performUpdateOperation(userLogin, smista, apc);
  811.                     break;
  812.                 case RESOURCE:
  813.                     Resource newResource = (Resource) proprietario;
  814.                     AccordoServizioParteComune apcr = this.apcCore.getAccordoServizioFull(idProp);
  815.                     for(Resource resource: apcr.getResourceList()){
  816.                         if(resource.getNome().equals(newResource.getNome())){
  817.                             resource.setProtocolPropertyList(protocolPropertiesAggiornate);
  818.                             save = true;
  819.                             break;
  820.                         }
  821.                     }

  822.                     // salvataggio
  823.                     if(save)
  824.                         this.core.performUpdateOperation(userLogin, smista, apcr);
  825.                     break;
  826.                 case SOGGETTO:
  827.                     Soggetto soggettoRegistro = (Soggetto) proprietario;
  828.                     soggettoRegistro.setProtocolPropertyList(protocolPropertiesAggiornate);
  829.                     // salvataggio
  830.                     this.core.performUpdateOperation(userLogin, smista, proprietario);
  831.                     break;
  832.                    
  833.                 case SERVIZIO_APPLICATIVO:
  834.                     throw new Exception("Con il TipoProprietario indicato ("+tipoProprietario+") deve essere invocato il metodo 'salvaPropertiesRegistry'");
  835.                 }
  836.             }
  837.         }  catch (Exception e) {
  838.             throw e;
  839.         }

  840.     }
  841.    
  842.     public void salvaPropertiesConfig(String userLogin, boolean smista, Object proprietario, List<org.openspcoop2.core.config.ProtocolProperty> protocolPropertiesAggiornate,
  843.             String id, String nome, String idProprietario, String nomeProprietario, String nomeParentProprietario,
  844.             ProprietariProtocolProperty tipoProprietario, String tipoAccordo) throws Exception {
  845.         try{
  846.             if(proprietario != null){
  847.                 @SuppressWarnings("unused")
  848.                 int idProp = Integer.parseInt(idProprietario);
  849.                 switch (tipoProprietario) {
  850.                 case ACCORDO_COOPERAZIONE:
  851.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  852.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  853.                 case AZIONE_ACCORDO:
  854.                 case FRUITORE:
  855.                 case OPERATION:
  856.                 case PORT_TYPE:
  857.                 case RESOURCE:
  858.                 case SOGGETTO:
  859.                     throw new Exception("Con il TipoProprietario indicato ("+tipoProprietario+") deve essere invocato il metodo 'salvaPropertiesRegistry'");
  860.                    
  861.                 case SERVIZIO_APPLICATIVO:
  862.                     ServizioApplicativo servizioApplicativo = (ServizioApplicativo) proprietario;
  863.                     servizioApplicativo.setProtocolPropertyList(protocolPropertiesAggiornate);
  864.                     // salvataggio
  865.                     this.core.performUpdateOperation(userLogin, smista, proprietario);
  866.                     break;
  867.                 }
  868.             }
  869.         }  catch (Exception e) {
  870.             throw e;
  871.         }

  872.     }

  873.     public void validateDynamicConfig(IConsoleDynamicConfiguration consoleDynamicConfiguration, Object idOggettoProprietario, String tipoAccordo, ProprietariProtocolProperty tipoProprietario,
  874.             ConsoleConfiguration consoleConfiguration, ConsoleOperationType consoleOperationType,ProtocolProperties protocolProperties,
  875.             IRegistryReader registryReader, IConfigIntegrationReader configRegistryReader) throws ProtocolException {
  876.         try{
  877.             if(idOggettoProprietario != null){
  878.                 switch (tipoProprietario) {
  879.                 case ACCORDO_COOPERAZIONE:
  880.                     IDAccordo idAccordoCooperazione = (IDAccordo) idOggettoProprietario;
  881.                     consoleDynamicConfiguration.validateDynamicConfigCooperazione(consoleConfiguration, consoleOperationType, this, protocolProperties,
  882.                             registryReader, configRegistryReader, idAccordoCooperazione);
  883.                     break;
  884.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  885.                     IDAccordo idApc = (IDAccordo) idOggettoProprietario;
  886.                    
  887.                     if(tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE))
  888.                         consoleDynamicConfiguration.validateDynamicConfigAccordoServizioParteComune(consoleConfiguration, consoleOperationType, this, protocolProperties,
  889.                                 registryReader, configRegistryReader, idApc);
  890.                     else
  891.                         consoleDynamicConfiguration.validateDynamicConfigAccordoServizioComposto(consoleConfiguration, consoleOperationType, this, protocolProperties,
  892.                                 registryReader, configRegistryReader, idApc);
  893.                     break;
  894.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  895.                     IDServizio idAps =(IDServizio) idOggettoProprietario;
  896.                    
  897.                     consoleDynamicConfiguration.validateDynamicConfigAccordoServizioParteSpecifica(consoleConfiguration, consoleOperationType, this, protocolProperties,
  898.                             registryReader, configRegistryReader, idAps);
  899.                     break;
  900.                 case AZIONE_ACCORDO:
  901.                     IDAccordoAzione idAccordoAzione = (IDAccordoAzione) idOggettoProprietario;
  902.                     consoleDynamicConfiguration.validateDynamicConfigAzione(consoleConfiguration, consoleOperationType, this, protocolProperties,
  903.                             registryReader, configRegistryReader, idAccordoAzione);
  904.                     break;
  905.                 case FRUITORE:
  906.                     IDFruizione idFruizione = (IDFruizione) idOggettoProprietario;
  907.                     consoleDynamicConfiguration.validateDynamicConfigFruizioneAccordoServizioParteSpecifica(consoleConfiguration, consoleOperationType, this,  protocolProperties,
  908.                             registryReader, configRegistryReader, idFruizione);
  909.                     break;
  910.                 case OPERATION:
  911.                     IDPortTypeAzione idAzionePt = (IDPortTypeAzione) idOggettoProprietario;
  912.                     consoleDynamicConfiguration.validateDynamicConfigOperation(consoleConfiguration, consoleOperationType, this, protocolProperties,
  913.                             registryReader, configRegistryReader, idAzionePt);
  914.                     break;
  915.                 case PORT_TYPE:
  916.                     IDPortType idPt = (IDPortType) idOggettoProprietario;
  917.                     consoleDynamicConfiguration.validateDynamicConfigPortType(consoleConfiguration, consoleOperationType, this, protocolProperties,
  918.                             registryReader, configRegistryReader, idPt);
  919.                     break;
  920.                 case RESOURCE:
  921.                     IDResource idAccordoRisorsa = (IDResource) idOggettoProprietario;
  922.                     String httpMethod = null;
  923.                     String path = null;
  924.                     try {
  925.                         Resource r = registryReader.getResourceAccordo(idAccordoRisorsa);
  926.                         httpMethod = r.getMethod()!=null ? r.getMethod().getValue() : null;
  927.                         path = r.getPath();
  928.                     }catch(Exception e) {}
  929.                     consoleDynamicConfiguration.validateDynamicConfigResource(consoleConfiguration, consoleOperationType, this, protocolProperties,
  930.                             registryReader, configRegistryReader, idAccordoRisorsa, httpMethod, path);
  931.                     break;
  932.                 case SOGGETTO:
  933.                     IDSoggetto idSoggetto = (IDSoggetto) idOggettoProprietario;
  934.                     consoleDynamicConfiguration.validateDynamicConfigSoggetto(consoleConfiguration, consoleOperationType, this, protocolProperties,
  935.                             registryReader, configRegistryReader, idSoggetto);
  936.                     break;
  937.                 case SERVIZIO_APPLICATIVO:
  938.                     IDServizioApplicativo idServizioApplicativo = (IDServizioApplicativo) idOggettoProprietario;
  939.                     consoleDynamicConfiguration.validateDynamicConfigServizioApplicativo(consoleConfiguration, consoleOperationType, this, protocolProperties,
  940.                             registryReader, configRegistryReader, idServizioApplicativo);
  941.                     break;
  942.                 }
  943.             }
  944.         }catch(ProtocolException e){
  945.             throw e;
  946.         }
  947.     }
  948.    
  949.     public List<Parameter> getTitolo(Object proprietario,ProprietariProtocolProperty tipoProprietario,
  950.             String id, String nome, String idProprietario, String nomeProprietario, String nomeParentProprietario, String urlChange,String tipoAccordo) throws Exception{
  951.         return getTitolo(proprietario, tipoProprietario, id, nome, idProprietario, nomeProprietario, nomeParentProprietario, urlChange, tipoAccordo,false);
  952.     }
  953.    
  954.     public List<Parameter> getTitolo(Object proprietario,ProprietariProtocolProperty tipoProprietario,
  955.             String id, String nome, String idProprietario, String nomeProprietario, String nomeParentProprietario, String urlChange,String tipoAccordo, boolean updateUrlChange) throws Exception{
  956.         AccordiServizioParteComuneHelper apcHelper = null;
  957.         AccordiServizioParteSpecificaHelper apsHelper = null;
  958.         Boolean isModalitaVistaApiCustom = ServletUtils.getBooleanAttributeFromSession(ApiCostanti.SESSION_ATTRIBUTE_VISTA_APC_API, this.session, this.request, false).getValue();
  959.         List<Parameter> lstParam = new ArrayList<>();
  960.         String labelProprietario = nomeProprietario;
  961.         String tipoProtocollo = null;
  962.         IDAccordo idAccordoParteComune = null;
  963.         try{
  964.             String urlDecode = URLDecoder.decode(urlChange,"UTF-8");
  965.             String tipologia = ServletUtils.getObjectFromSession(this.request, this.session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  966.             boolean gestioneFruitori = false;
  967.             if(tipologia!=null) {
  968.                 if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  969.                     gestioneFruitori = true;
  970.                 }
  971.             }
  972.            
  973.             Parameter pTipoAccordo = new Parameter(AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getName(), AccordiServizioParteComuneUtilities.getParametroAccordoServizio(tipoAccordo).getValue());
  974.             Parameter pIdApc = null;
  975.             Parameter pNomeApc = null;
  976.            
  977.             if(proprietario != null){
  978.                 int idProp = Integer.parseInt(idProprietario);
  979.                 switch (tipoProprietario) {
  980.                 case ACCORDO_COOPERAZIONE:
  981.                     AccordoCooperazione ac = (AccordoCooperazione) proprietario;
  982.                     lstParam.add(new Parameter(AccordiCooperazioneCostanti.LABEL_ACCORDI_COOPERAZIONE, AccordiCooperazioneCostanti.SERVLET_NAME_ACCORDI_COOPERAZIONE_LIST));
  983.                     labelProprietario = this.getLabelIdAccordoCooperazione(ac);
  984.                     // Escape della url del link, risolve il problema di autorizzazione
  985.                     lstParam.add(new Parameter(labelProprietario,urlDecode));
  986.                     break;
  987.                 case ACCORDO_SERVIZIO_PARTE_COMUNE:
  988.                     apcHelper = new AccordiServizioParteComuneHelper(this.request, this.pd, this.session);
  989.                     AccordoServizioParteComune as = (AccordoServizioParteComune) proprietario;
  990.                     idAccordoParteComune = this.idAccordoFactory.getIDAccordoFromValues(as.getNome(),BeanUtilities.getSoggettoReferenteID(as.getSoggettoReferente()),as.getVersione());
  991.                     tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(as.getSoggettoReferente().getTipo());
  992.                     labelProprietario = this.getLabelIdAccordo(tipoProtocollo , idAccordoParteComune);
  993.                    
  994.                     List<Parameter> parametriDaUrlAs = Parameter.estraiParametriDaUrl(urlDecode);
  995.                     String parParz = null;
  996.                     for (Parameter parameter : parametriDaUrlAs) {
  997.                         if(parameter.getName().equals(ApiCostanti.PARAMETRO_APC_API_GESTIONE_PARZIALE)) {
  998.                             parParz = parameter.getValue();
  999.                             break;
  1000.                         }
  1001.                     }
  1002.                    
  1003.                     lstParam = apcHelper.getTitoloApc(TipoOperazione.OTHER, as, tipoAccordo, labelProprietario, AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_CHANGE, parParz, true);
  1004.                     lstParam.get(lstParam.size() -1).setValue(urlDecode);
  1005. //                  lstParam.add(new Parameter(labelProprietario,urlDecode));
  1006.                     break;
  1007.                 case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  1008.                     apsHelper = new AccordiServizioParteSpecificaHelper(this.request, this.pd, this.session);
  1009.                     AccordoServizioParteSpecifica aps = (AccordoServizioParteSpecifica) proprietario;
  1010.                    
  1011.                     List<Parameter> parametriDaUrlAps = Parameter.estraiParametriDaUrl(urlDecode);
  1012.                     String tipoSoggettoFruitore = null;
  1013.                     String nomeSoggettoFruitore = null;
  1014.                     for (Parameter parameter : parametriDaUrlAps) {
  1015.                         if(parameter.getName().equals(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SOGGETTO_FRUITORE)) {
  1016.                             tipoSoggettoFruitore = parameter.getValue();
  1017.                             break;
  1018.                         }
  1019.                     }
  1020.                    
  1021.                     for (Parameter parameter : parametriDaUrlAps) {
  1022.                         if(parameter.getName().equals(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SOGGETTO_FRUITORE)) {
  1023.                             nomeSoggettoFruitore = parameter.getValue();
  1024.                             break;
  1025.                         }
  1026.                     }
  1027.                    
  1028.                     tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(aps.getTipoSoggettoErogatore());
  1029.                     if(gestioneFruitori) {
  1030.                         IDSoggetto idSoggettoFruitore = null;
  1031.                         if(tipoSoggettoFruitore!=null && !"".equals(tipoSoggettoFruitore) &&
  1032.                                 nomeSoggettoFruitore!=null && !"".equals(nomeSoggettoFruitore)) {
  1033.                             idSoggettoFruitore = new IDSoggetto(tipoSoggettoFruitore, nomeSoggettoFruitore);
  1034.                         }
  1035.                         labelProprietario = apsHelper.getLabelServizioFruizione(tipoProtocollo, idSoggettoFruitore, aps);
  1036.                     }
  1037.                     else {
  1038.                         labelProprietario = apsHelper.getLabelServizioErogazione(tipoProtocollo, aps);
  1039.                     }
  1040.                    
  1041.                     lstParam = apsHelper.getTitoloAps(TipoOperazione.OTHER, aps, gestioneFruitori, labelProprietario, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_CHANGE, true, tipoSoggettoFruitore, nomeSoggettoFruitore);
  1042.                     lstParam.get(lstParam.size() -1).setName(AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_PROTOCOLLO);
  1043.                     lstParam.get(lstParam.size() -1).setValue(urlDecode);
  1044.                     // Escape della url del link, risolve il problema di autorizzazione
  1045. //                  lstParam.add(new Parameter(labelProprietario,urlDecode));
  1046.                     break;
  1047.                 case AZIONE_ACCORDO:
  1048.                     Azione newAzione = (Azione) proprietario;
  1049.                     AccordoServizioParteComune apca = this.apcCore.getAccordoServizioFull(idProp);
  1050.                     for(Azione azione: apca.getAzioneList()){
  1051.                         if(azione.getNome().equals(newAzione.getNome())){
  1052.                             labelProprietario = azione.getNome();
  1053.                             break;
  1054.                         }
  1055.                     }
  1056.                    
  1057.                     tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(apca.getSoggettoReferente().getTipo());
  1058.                     idAccordoParteComune = this.idAccordoFactory.getIDAccordoFromValues(apca.getNome(),BeanUtilities.getSoggettoReferenteID(apca.getSoggettoReferente()),apca.getVersione());
  1059.                     pIdApc = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID, apca.getId()+"");
  1060.                     pNomeApc = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_NOME, apca.getNome());
  1061.                    
  1062.                     lstParam.add(new Parameter(AccordiServizioParteComuneUtilities.getTerminologiaAccordoServizio(tipoAccordo), AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_LIST, pTipoAccordo));
  1063.                     lstParam.add(new Parameter(AccordiServizioParteComuneCostanti.LABEL_AZIONI + " di " + this.getLabelIdAccordo(tipoProtocollo , idAccordoParteComune),
  1064.                             AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_AZIONI_LIST, pIdApc,pNomeApc, pTipoAccordo));
  1065.                     // Escape della url del link, risolve il problema di autorizzazione
  1066.                     lstParam.add(new Parameter(labelProprietario,urlDecode));
  1067.                     break;
  1068.                 case FRUITORE:
  1069.                     Fruitore fruitore = (Fruitore) proprietario;
  1070.                     AccordoServizioParteSpecifica apsFrui = this.apsCore.getAccordoServizioParteSpecifica(fruitore.getIdServizio());
  1071.                    
  1072.                     for (Fruitore fr : apsFrui.getFruitoreList()) {
  1073.                         if(fr.getTipo().equals(fruitore.getTipo()) && fr.getNome().equals(fruitore.getNome())){
  1074.                             tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(fr.getTipo());
  1075.                             labelProprietario = this.getLabelNomeSoggetto(tipoProtocollo, fr.getTipo() , fr.getNome());
  1076.                             break;
  1077.                         }
  1078.                     }
  1079.                    
  1080.                     // prelevo il flag che mi dice da quale pagina ho acceduto la sezione delle porte delegate
  1081.                     Integer parentPD = ServletUtils.getIntegerAttributeFromSession(PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT, this.session, this.request);
  1082.                     if(parentPD == null)
  1083.                         parentPD = PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_NONE;
  1084.                    
  1085.                     PorteDelegateHelper porteDelegateHelper = new PorteDelegateHelper(this.request, this.pd, this.session);
  1086.                     lstParam = porteDelegateHelper.getTitoloPD(PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE, fruitore.getIdSoggetto() +"",apsFrui.getId() +"", fruitore.getId() +"");
  1087.                     labelProprietario = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_PROTOCOLLO;
  1088.                     lstParam.set(lstParam.size()-1, new Parameter(labelProprietario, urlDecode));
  1089.                    
  1090.                     break;
  1091.                 case OPERATION:
  1092.                     apcHelper = new AccordiServizioParteComuneHelper(this.request, this.pd, this.session);
  1093.                     org.openspcoop2.core.registry.Operation newAzionePt = (Operation) proprietario;
  1094.                     AccordoServizioParteComune apcop = this.apcCore.getAccordoServizioFull(idProp);
  1095.                     for (PortType pt : apcop.getPortTypeList()) {
  1096.                         if(pt.getNome().equals(nomeParentProprietario)){
  1097.                             for (org.openspcoop2.core.registry.Operation azione : pt.getAzioneList()) {
  1098.                                 if(azione.getNome().equals(newAzionePt.getNome())){
  1099.                                     labelProprietario = azione.getNome();
  1100.                                     break;
  1101.                                 }
  1102.                             }
  1103.                         }
  1104.                     }
  1105.                    
  1106.                     tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(apcop.getSoggettoReferente().getTipo());
  1107.                     idAccordoParteComune = this.idAccordoFactory.getIDAccordoFromValues(apcop.getNome(),BeanUtilities.getSoggettoReferenteID(apcop.getSoggettoReferente()),apcop.getVersione());
  1108.                     pIdApc = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID, apcop.getId()+"");
  1109.                     pNomeApc = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_NOME, apcop.getNome());
  1110.                     Parameter pNomePt = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_PORT_TYPES_NOME, nomeParentProprietario);
  1111.                     lstParam = apcHelper.getTitoloApc(TipoOperazione.OTHER, apcop, tipoAccordo, this.getLabelIdAccordo(tipoProtocollo , idAccordoParteComune), null, false);
  1112.                     String labelPortTypesOp = isModalitaVistaApiCustom ? AccordiServizioParteComuneCostanti.LABEL_PORT_TYPES : AccordiServizioParteComuneCostanti.LABEL_PORT_TYPES + " di " + this.getLabelIdAccordo(tipoProtocollo , idAccordoParteComune);
  1113.                     lstParam.add(new Parameter(labelPortTypesOp, AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_PORT_TYPES_LIST, pIdApc,pNomeApc, pTipoAccordo));
  1114.                     lstParam.add(new Parameter(AccordiServizioParteComuneCostanti.LABEL_AZIONI + " di " + nomeParentProprietario,   AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_PORT_TYPE_OPERATIONS_LIST,pIdApc,pNomePt,pTipoAccordo));
  1115.                     // Escape della url del link, risolve il problema di autorizzazione
  1116.                     lstParam.add(new Parameter(labelProprietario,urlDecode));
  1117.                     break;
  1118.                 case PORT_TYPE:
  1119.                     apcHelper = new AccordiServizioParteComuneHelper(this.request, this.pd, this.session);
  1120.                     AccordoServizioParteComune apc = this.apcCore.getAccordoServizioFull(idProp);
  1121.                     PortType newPt = (PortType) proprietario;

  1122.                     for (PortType pt : apc.getPortTypeList()) {
  1123.                         if(pt.getNome().equals(newPt.getNome())){
  1124.                             labelProprietario = pt.getNome();
  1125.                             break;
  1126.                         }

  1127.                     }
  1128.                     pIdApc = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID, apc.getId()+"");
  1129.                     pNomeApc = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_NOME, apc.getNome());
  1130.                     idAccordoParteComune = this.idAccordoFactory.getIDAccordoFromValues(apc.getNome(),BeanUtilities.getSoggettoReferenteID(apc.getSoggettoReferente()),apc.getVersione());
  1131.                     tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(apc.getSoggettoReferente().getTipo());
  1132.                     lstParam = apcHelper.getTitoloApc(TipoOperazione.OTHER, apc, tipoAccordo, this.getLabelIdAccordo(tipoProtocollo , idAccordoParteComune), null, false);
  1133.                     String labelPortTypes = isModalitaVistaApiCustom ? AccordiServizioParteComuneCostanti.LABEL_PORT_TYPES : AccordiServizioParteComuneCostanti.LABEL_PORT_TYPES + " di " + this.getLabelIdAccordo(tipoProtocollo , idAccordoParteComune);
  1134.                     lstParam.add(new Parameter(labelPortTypes, AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_PORT_TYPES_LIST, pIdApc, pNomeApc, pNomeApc));

  1135.                     // Escape della url del link, risolve il problema di autorizzazione
  1136.                     lstParam.add(new Parameter(labelProprietario,urlDecode));
  1137.                     break;
  1138.                 case RESOURCE:
  1139.                     apcHelper = new AccordiServizioParteComuneHelper(this.request, this.pd, this.session);
  1140.                     Resource newResource = (Resource) proprietario;
  1141.                     AccordoServizioParteComune apcr = this.apcCore.getAccordoServizioFull(idProp);
  1142.                     Long idRs = newResource.getId();
  1143.                     for(Resource resource: apcr.getResourceList()){
  1144.                         if(resource.getNome().equals(newResource.getNome())){
  1145. //                          labelProprietario =  APIUtils.normalizeResourceName(HttpMethod.toEnumConstant(resource.get_value_method()), resource.getPath());
  1146.                             labelProprietario = resource.getNome();
  1147.                             idRs = resource.getId();
  1148.                             break;
  1149.                         }
  1150.                     }
  1151.                    
  1152.                     Parameter pLabelProprietario = new Parameter(labelProprietario,urlDecode);
  1153.                     if(updateUrlChange) {
  1154.                         List<Parameter> parametriDaUrl = Parameter.estraiParametriDaUrl(urlDecode);
  1155.                         String pathDaUrl = Parameter.estraiPathDaUrl(urlDecode);
  1156.                        
  1157.                         for (Parameter parameter : parametriDaUrl) {
  1158.                             if(parameter.getName().equals(AccordiServizioParteComuneCostanti.PARAMETRO_APC_RESOURCES_ID)) {
  1159.                                 parameter.setValue(idRs+"");
  1160.                                 break;
  1161.                             }
  1162.                         }

  1163.                         pLabelProprietario = new Parameter(labelProprietario,pathDaUrl,parametriDaUrl);
  1164.                     }
  1165.                    
  1166.                    
  1167.                    
  1168.                     tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(apcr.getSoggettoReferente().getTipo());
  1169.                     idAccordoParteComune = this.idAccordoFactory.getIDAccordoFromValues(apcr.getNome(),BeanUtilities.getSoggettoReferenteID(apcr.getSoggettoReferente()),apcr.getVersione());
  1170.                     pIdApc = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID, apcr.getId()+"");
  1171.                     pNomeApc = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_NOME, apcr.getNome());
  1172.                     lstParam = apcHelper.getTitoloApc(TipoOperazione.OTHER, apcr, tipoAccordo, this.getLabelIdAccordo(tipoProtocollo , idAccordoParteComune), null, false);
  1173.                     String labelRisorse = isModalitaVistaApiCustom ? AccordiServizioParteComuneCostanti.LABEL_RISORSE : AccordiServizioParteComuneCostanti.LABEL_RISORSE + " di " + this.getLabelIdAccordo(tipoProtocollo , idAccordoParteComune);
  1174.                     lstParam.add(new Parameter(labelRisorse, AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_RESOURCES_LIST, pIdApc,pNomeApc, pTipoAccordo));
  1175.                     // Escape della url del link, risolve il problema di autorizzazione
  1176.                     lstParam.add(pLabelProprietario);
  1177.                     break;
  1178.                 case SOGGETTO:
  1179.                     Soggetto soggettoRegistro = (Soggetto) proprietario;
  1180.                     lstParam.add(new Parameter(SoggettiCostanti.LABEL_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
  1181.                     tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(soggettoRegistro.getTipo());
  1182.                     labelProprietario = this.getLabelNomeSoggetto(tipoProtocollo, soggettoRegistro.getTipo() , soggettoRegistro.getNome());
  1183.                     // Escape della url del link, risolve il problema di autorizzazione
  1184.                     lstParam.add(new Parameter(labelProprietario,urlDecode));
  1185.                     break;
  1186.                 case SERVIZIO_APPLICATIVO:
  1187.                     ServizioApplicativo servizioApplicativo = (ServizioApplicativo) proprietario;
  1188.                    
  1189.                     Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, this.session, this.request);
  1190.                     if(parentSA == null) parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
  1191.                     Boolean useIdSogg = parentSA == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO;
  1192.                    
  1193.                     String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
  1194.                     String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
  1195.                     if(this.isModalitaCompleta()==false) {
  1196.                         labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
  1197.                         labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
  1198.                     }
  1199.                    
  1200.                     if(useIdSogg){
  1201.                        
  1202.                         tipoProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(servizioApplicativo.getTipoSoggettoProprietario());
  1203.                         String tipoENomeSoggetto = this.getLabelNomeSoggetto(tipoProtocollo, servizioApplicativo.getTipoSoggettoProprietario(), servizioApplicativo.getNomeSoggettoProprietario());
  1204.                        
  1205.                         lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
  1206.                         lstParam.add(new Parameter(labelApplicativiDi + tipoENomeSoggetto,
  1207.                                         ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
  1208.                                         new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,servizioApplicativo.getIdSoggetto()+"")));                              
  1209.                         // Escape della url del link, risolve il problema di autorizzazione
  1210.                         lstParam.add(new Parameter(nome, urlDecode));
  1211.                     }else {
  1212.                         lstParam.add(new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST));
  1213.                         // Escape della url del link, risolve il problema di autorizzazione
  1214.                         lstParam.add(new Parameter(servizioApplicativo.getNome(), urlDecode));
  1215.                     }
  1216.                     break;
  1217.                 }
  1218.             }
  1219.         }  catch (Exception e) {
  1220.             throw e;
  1221.         }
  1222.         return lstParam;
  1223.     }
  1224. }