DriverConfigurazioneDB_porteApplicativeLIB.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.core.config.driver.db;

  21. import static org.openspcoop2.core.constants.CostantiDB.CREATE;
  22. import static org.openspcoop2.core.constants.CostantiDB.DELETE;
  23. import static org.openspcoop2.core.constants.CostantiDB.UPDATE;

  24. import java.sql.Connection;
  25. import java.sql.PreparedStatement;
  26. import java.sql.ResultSet;
  27. import java.sql.SQLException;
  28. import java.sql.Timestamp;
  29. import java.util.ArrayList;
  30. import java.util.List;

  31. import org.openspcoop2.core.byok.BYOKUtilities;
  32. import org.openspcoop2.core.byok.BYOKWrappedValue;
  33. import org.openspcoop2.core.byok.IDriverBYOK;
  34. import org.openspcoop2.core.commons.CoreException;
  35. import org.openspcoop2.core.commons.DBUtils;
  36. import org.openspcoop2.core.commons.IExtendedInfo;
  37. import org.openspcoop2.core.config.AttributeAuthority;
  38. import org.openspcoop2.core.config.ConfigurazionePortaHandler;
  39. import org.openspcoop2.core.config.CorrelazioneApplicativa;
  40. import org.openspcoop2.core.config.CorrelazioneApplicativaElemento;
  41. import org.openspcoop2.core.config.CorrelazioneApplicativaRisposta;
  42. import org.openspcoop2.core.config.CorrelazioneApplicativaRispostaElemento;
  43. import org.openspcoop2.core.config.CorsConfigurazione;
  44. import org.openspcoop2.core.config.GestioneToken;
  45. import org.openspcoop2.core.config.MessageSecurity;
  46. import org.openspcoop2.core.config.MessageSecurityFlow;
  47. import org.openspcoop2.core.config.MessageSecurityFlowParameter;
  48. import org.openspcoop2.core.config.MtomProcessor;
  49. import org.openspcoop2.core.config.MtomProcessorFlow;
  50. import org.openspcoop2.core.config.MtomProcessorFlowParameter;
  51. import org.openspcoop2.core.config.PortaApplicativa;
  52. import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneServizioApplicativo;
  53. import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneSoggetto;
  54. import org.openspcoop2.core.config.PortaApplicativaAzione;
  55. import org.openspcoop2.core.config.PortaApplicativaServizio;
  56. import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
  57. import org.openspcoop2.core.config.PortaApplicativaSoggettoVirtuale;
  58. import org.openspcoop2.core.config.Proprieta;
  59. import org.openspcoop2.core.config.ResponseCachingConfigurazione;
  60. import org.openspcoop2.core.config.ResponseCachingConfigurazioneRegola;
  61. import org.openspcoop2.core.config.Ruolo;
  62. import org.openspcoop2.core.config.Scope;
  63. import org.openspcoop2.core.config.TracciamentoConfigurazione;
  64. import org.openspcoop2.core.config.TracciamentoConfigurazioneFiletrace;
  65. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  66. import org.openspcoop2.core.config.constants.MTOMProcessorType;
  67. import org.openspcoop2.core.config.constants.PortaApplicativaAzioneIdentificazione;
  68. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  69. import org.openspcoop2.core.config.constants.StatoFunzionalitaCacheDigestQueryParameter;
  70. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  71. import org.openspcoop2.core.config.driver.ExtendedInfoManager;
  72. import org.openspcoop2.core.constants.CRUDType;
  73. import org.openspcoop2.core.constants.CostantiDB;
  74. import org.openspcoop2.utils.date.DateManager;
  75. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  76. import org.openspcoop2.utils.sql.ISQLQueryObject;
  77. import org.openspcoop2.utils.sql.SQLObjectFactory;

  78. /**
  79.  * DriverConfigurazioneDB_soggettiLIB
  80.  *
  81.  * @author Stefano Corallo - corallo@link.it
  82.  * @author $Author$
  83.  * @version $Rev$, $Date$
  84.  */
  85. public class DriverConfigurazioneDB_porteApplicativeLIB {


  86.     public static long CRUDPortaApplicativa(int type, PortaApplicativa aPA, Connection con, IDriverBYOK driverBYOK) throws DriverConfigurazioneException {
  87.         if (aPA == null)
  88.             throw new DriverConfigurazioneException("Porta Applicativa non valida.");
  89.         // parametri necessari
  90.         String nomePorta = aPA.getNome();
  91.         String nomeProprietario = aPA.getNomeSoggettoProprietario();
  92.         String tipoProprietario = aPA.getTipoSoggettoProprietario();
  93.         if (nomePorta == null || nomePorta.equals(""))
  94.             throw new DriverConfigurazioneException("Nome della Porta Applicativa non valido.");
  95.         if (nomeProprietario == null || nomeProprietario.equals(""))
  96.             throw new DriverConfigurazioneException("Nome proprietario Porta Applicativa non valido.");
  97.         if (tipoProprietario == null || tipoProprietario.equals(""))
  98.             throw new DriverConfigurazioneException("Tipo proprietario della Porta Applicativa non valido.");

  99.         PreparedStatement stm = null;
  100.         String sqlQuery = "";
  101.         ResultSet rs = null;

  102.         String descrizione = aPA.getDescrizione();

  103.         String autenticazione = aPA.getAutenticazione();
  104.         String autorizzazione = aPA.getAutorizzazione();
  105.         String autorizzazioneXacmlPolicy = aPA.getXacmlPolicy();
  106.         GestioneToken gestioneToken = aPA.getGestioneToken();
  107.        
  108.         PortaApplicativaAzione azione = aPA.getAzione();
  109.         PortaApplicativaServizio servizio = aPA.getServizio();
  110.         long idServizio = ((servizio != null && servizio.getId() != null) ? servizio.getId() : -1);
  111.         /**System.out.println("PRIMA PA: "+idServizio);*/
  112.         /** SEMPRE, VA AGGIORNATO ANCHE IN UPDATE if(idServizio<=0 &&*/
  113.         if(
  114.                 servizio!=null && servizio.getTipo()!=null && servizio.getNome()!=null && servizio.getVersione()!=null && servizio.getVersione()>0) {
  115.             try {
  116.                 idServizio = DBUtils.getIdServizio(servizio.getNome(), servizio.getTipo(), servizio.getVersione(), nomeProprietario, tipoProprietario, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
  117.                 /**System.out.println("DOPO PA: "+idServizio);*/
  118.             } catch (Exception e1) {
  119.                 DriverConfigurazioneDBLib.logDebug(e1.getMessage(),e1); // potrebbe non esistere la tabella
  120.             }
  121.         }

  122.         PortaApplicativaSoggettoVirtuale soggVirt = aPA.getSoggettoVirtuale();
  123.         String tipoSoggVirt = (soggVirt != null ? soggVirt.getTipo() : null);
  124.         String nomeSoggVirt = (soggVirt != null ? soggVirt.getNome() : null);
  125.         long idSoggVirt=-1;
  126.         try {
  127.             idSoggVirt = DBUtils.getIdSoggetto(nomeSoggVirt, tipoSoggVirt, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
  128.         } catch (CoreException e1) {
  129.             DriverConfigurazioneDBLib.logError(e1.getMessage(),e1);
  130.         }

  131.         Proprieta propProtocollo = null;

  132.         MtomProcessor mtomProcessor = aPA.getMtomProcessor();
  133.         MTOMProcessorType mtomModeRequest = null;
  134.         MTOMProcessorType mtomModeResponse = null;
  135.         if(mtomProcessor!=null){
  136.             if(mtomProcessor.getRequestFlow()!=null){
  137.                 mtomModeRequest = mtomProcessor.getRequestFlow().getMode();
  138.             }
  139.             if(mtomProcessor.getResponseFlow()!=null){
  140.                 mtomModeResponse = mtomProcessor.getResponseFlow().getMode();
  141.             }
  142.         }
  143.        
  144.         MessageSecurity messageSecurity = aPA.getMessageSecurity();
  145.         String messageSecurityStatus = aPA.getStatoMessageSecurity();
  146.         StatoFunzionalita messageSecurityApplyMtomRequest = null;
  147.         StatoFunzionalita messageSecurityApplyMtomResponse = null;
  148.         String securityRequestMode = null;
  149.         String securityResponseMode = null;
  150.         if(messageSecurity!=null){
  151.             if(messageSecurity.getRequestFlow()!=null){
  152.                 messageSecurityApplyMtomRequest = messageSecurity.getRequestFlow().getApplyToMtom();
  153.                 securityRequestMode = messageSecurity.getRequestFlow().getMode();
  154.             }
  155.             if(messageSecurity.getResponseFlow()!=null){
  156.                 messageSecurityApplyMtomResponse = messageSecurity.getResponseFlow().getApplyToMtom();
  157.                 securityResponseMode = messageSecurity.getResponseFlow().getMode();
  158.             }
  159.         }
  160.        
  161.         CorrelazioneApplicativa corrApp = aPA.getCorrelazioneApplicativa();
  162.         CorrelazioneApplicativaRisposta corrAppRisposta = aPA.getCorrelazioneApplicativaRisposta();

  163.         String msgDiagSeverita = null;
  164.         String tracciamentoStato = null;
  165.         String tracciamentoEsiti = null;
  166.         String transazioniTempiElaborazione = null;
  167.         String transazioniToken = null;
  168.         TracciamentoConfigurazione tracciamentoDatabase = null;
  169.         TracciamentoConfigurazione tracciamentoFiletrace = null;
  170.         TracciamentoConfigurazioneFiletrace tracciamentoFiletraceDetails = null;
  171.         if(aPA.getTracciamento()!=null){
  172.             msgDiagSeverita = DriverConfigurazioneDBLib.getValue(aPA.getTracciamento().getSeverita());
  173.             tracciamentoStato =  DriverConfigurazioneDBLib.getValue(aPA.getTracciamento().getStato());
  174.             tracciamentoEsiti = aPA.getTracciamento().getEsiti();
  175.             if(aPA.getTracciamento().getTransazioni()!=null) {
  176.                 transazioniTempiElaborazione = DriverConfigurazioneDBLib.getValue(aPA.getTracciamento().getTransazioni().getTempiElaborazione());
  177.                 transazioniToken = DriverConfigurazioneDBLib.getValue(aPA.getTracciamento().getTransazioni().getToken());
  178.             }
  179.             tracciamentoDatabase = aPA.getTracciamento().getDatabase();
  180.             tracciamentoFiletrace = aPA.getTracciamento().getFiletrace();
  181.             tracciamentoFiletraceDetails = aPA.getTracciamento().getFiletraceConfig();
  182.         }
  183.        
  184.         CorsConfigurazione corsConfigurazione = aPA.getGestioneCors();
  185.         String corsStato = null;
  186.         String corsTipo = null;
  187.         String corsAllAllowOrigins = null;
  188.         String corsAllAllowMethods = null;
  189.         String corsAllAllowHeaders = null;
  190.         String corsAllowCredentials = null;
  191.         int corsAllowMaxAge = CostantiDB.FALSE;
  192.         Integer corsAllowMaxAgeSeconds = null;
  193.         String corsAllowOrigins = null;
  194.         String corsAllowHeaders = null;
  195.         String corsAllowMethods = null;
  196.         String corsAllowExposeHeaders = null;
  197.         if(corsConfigurazione!=null) {
  198.             corsStato = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getStato());
  199.             corsTipo = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getTipo());
  200.             corsAllAllowOrigins = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getAccessControlAllAllowOrigins());
  201.             corsAllAllowMethods = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getAccessControlAllAllowMethods());
  202.             corsAllAllowHeaders = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getAccessControlAllAllowHeaders());
  203.             corsAllowCredentials = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getAccessControlAllowCredentials());
  204.             if(corsConfigurazione.getAccessControlMaxAge()!=null) {
  205.                 corsAllowMaxAge = CostantiDB.TRUE;
  206.                 corsAllowMaxAgeSeconds = corsConfigurazione.getAccessControlMaxAge();  
  207.             }
  208.             if(corsConfigurazione.getAccessControlAllowOrigins()!=null && corsConfigurazione.getAccessControlAllowOrigins().sizeOriginList()>0) {
  209.                 StringBuilder bf = new StringBuilder();
  210.                 for (int i = 0; i < corsConfigurazione.getAccessControlAllowOrigins().sizeOriginList(); i++) {
  211.                     if(i>0) {
  212.                         bf.append(",");
  213.                     }
  214.                     bf.append(corsConfigurazione.getAccessControlAllowOrigins().getOrigin(i));
  215.                 }
  216.                 corsAllowOrigins = bf.toString();
  217.             }
  218.             if(corsConfigurazione.getAccessControlAllowHeaders()!=null && corsConfigurazione.getAccessControlAllowHeaders().sizeHeaderList()>0) {
  219.                 StringBuilder bf = new StringBuilder();
  220.                 for (int i = 0; i < corsConfigurazione.getAccessControlAllowHeaders().sizeHeaderList(); i++) {
  221.                     if(i>0) {
  222.                         bf.append(",");
  223.                     }
  224.                     bf.append(corsConfigurazione.getAccessControlAllowHeaders().getHeader(i));
  225.                 }
  226.                 corsAllowHeaders = bf.toString();
  227.             }
  228.             if(corsConfigurazione.getAccessControlAllowMethods()!=null && corsConfigurazione.getAccessControlAllowMethods().sizeMethodList()>0) {
  229.                 StringBuilder bf = new StringBuilder();
  230.                 for (int i = 0; i < corsConfigurazione.getAccessControlAllowMethods().sizeMethodList(); i++) {
  231.                     if(i>0) {
  232.                         bf.append(",");
  233.                     }
  234.                     bf.append(corsConfigurazione.getAccessControlAllowMethods().getMethod(i));
  235.                 }
  236.                 corsAllowMethods = bf.toString();
  237.             }
  238.             if(corsConfigurazione.getAccessControlExposeHeaders()!=null && corsConfigurazione.getAccessControlExposeHeaders().sizeHeaderList()>0) {
  239.                 StringBuilder bf = new StringBuilder();
  240.                 for (int i = 0; i < corsConfigurazione.getAccessControlExposeHeaders().sizeHeaderList(); i++) {
  241.                     if(i>0) {
  242.                         bf.append(",");
  243.                     }
  244.                     bf.append(corsConfigurazione.getAccessControlExposeHeaders().getHeader(i));
  245.                 }
  246.                 corsAllowExposeHeaders = bf.toString();
  247.             }
  248.         }
  249.        
  250.         ResponseCachingConfigurazione responseCachingConfigurazone = aPA.getResponseCaching();
  251.         String responseCacheStato = null;
  252.         Integer responseCacheSeconds = null;
  253.         Long responseCacheMaxMsgSize = null;
  254.         String responseCacheHashUrl = null;
  255.         String responseCacheHashQuery = null;
  256.         String responseCacheHashQueryList = null;
  257.         String responseCacheHashHeaders = null;
  258.         String responseCacheHashHeadersList = null;
  259.         String responseCacheHashPayload = null;
  260.         boolean responseCacheNoCache = true;
  261.         boolean responseCacheMaxAge = true;
  262.         boolean responseCacheNoStore = true;
  263.         List<ResponseCachingConfigurazioneRegola> responseCacheRegole = null;
  264.         if(responseCachingConfigurazone!=null) {
  265.             responseCacheStato = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getStato());
  266.             responseCacheSeconds = responseCachingConfigurazone.getCacheTimeoutSeconds();
  267.             responseCacheMaxMsgSize = responseCachingConfigurazone.getMaxMessageSize();
  268.             if(responseCachingConfigurazone.getControl()!=null) {
  269.                 responseCacheNoCache = responseCachingConfigurazone.getControl().getNoCache();
  270.                 responseCacheMaxAge = responseCachingConfigurazone.getControl().getMaxAge();
  271.                 responseCacheNoStore = responseCachingConfigurazone.getControl().getNoStore();
  272.             }
  273.             if(responseCachingConfigurazone.getHashGenerator()!=null) {
  274.                 responseCacheHashUrl = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getHashGenerator().getRequestUri());
  275.                
  276.                 responseCacheHashQuery = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getHashGenerator().getQueryParameters());
  277.                 if(StatoFunzionalitaCacheDigestQueryParameter.SELEZIONE_PUNTUALE.equals(responseCachingConfigurazone.getHashGenerator().getQueryParameters()) &&
  278.                     (responseCachingConfigurazone.getHashGenerator().getQueryParameterList()!=null && responseCachingConfigurazone.getHashGenerator().sizeQueryParameterList()>0)
  279.                     ){
  280.                     StringBuilder bf = new StringBuilder();
  281.                     for (int i = 0; i < responseCachingConfigurazone.getHashGenerator().sizeQueryParameterList(); i++) {
  282.                         if(i>0) {
  283.                             bf.append(",");
  284.                         }
  285.                         bf.append(responseCachingConfigurazone.getHashGenerator().getQueryParameter(i));
  286.                     }
  287.                     responseCacheHashQueryList = bf.toString();
  288.                 }
  289.                
  290.                 responseCacheHashHeaders = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getHashGenerator().getHeaders());
  291.                 if(StatoFunzionalita.ABILITATO.equals(responseCachingConfigurazone.getHashGenerator().getHeaders()) &&
  292.                     (responseCachingConfigurazone.getHashGenerator().getHeaderList()!=null && responseCachingConfigurazone.getHashGenerator().sizeHeaderList()>0)
  293.                     ){
  294.                     StringBuilder bf = new StringBuilder();
  295.                     for (int i = 0; i < responseCachingConfigurazone.getHashGenerator().sizeHeaderList(); i++) {
  296.                         if(i>0) {
  297.                             bf.append(",");
  298.                         }
  299.                         bf.append(responseCachingConfigurazone.getHashGenerator().getHeader(i));
  300.                     }
  301.                     responseCacheHashHeadersList = bf.toString();
  302.                 }
  303.                
  304.                 responseCacheHashPayload = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getHashGenerator().getPayload());
  305.             }
  306.             responseCacheRegole = responseCachingConfigurazone.getRegolaList();
  307.         }
  308.        
  309.         String behaviour = null;
  310.         if(aPA.getBehaviour()!=null) {
  311.             behaviour = aPA.getBehaviour().getNome();
  312.         }
  313.        
  314.         ConfigurazionePortaHandler configHandlers = aPA.getConfigurazioneHandler();
  315.        
  316.         ExtendedInfoManager extInfoManager = ExtendedInfoManager.getInstance();
  317.         IExtendedInfo extInfoConfigurazioneDriver = extInfoManager.newInstanceExtendedInfoPortaApplicativa();
  318.        
  319.         try {
  320.             int n = 0;
  321.             int i = 0;
  322.             long idPortaApplicativa = 0;
  323.             long idProprietario = DBUtils.getIdSoggetto(nomeProprietario, tipoProprietario, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
  324.             // preparo lo statement in base al tipo di operazione
  325.             switch (type) {
  326.             case CREATE:
  327.                 // CREATE

  328.                 //campi obbligatori
  329.                 //servizio ci deve essere l'id oppure tipo e nome
  330.                 String tipoServizio = (servizio != null ? servizio.getTipo() : null);
  331.                 String nomeServizio = (servizio != null ? servizio.getNome() : null);
  332.                 Integer versioneServizio = (servizio != null ? servizio.getVersione() : null);
  333.                 //se l'id non e' valido allora devono esserci necessariamente il tipo e il nome
  334.                 if(idServizio<=0){
  335.                     if(tipoServizio==null || tipoServizio.equals("")) throw new DriverConfigurazioneException("Tipo Servizio non impostato.");
  336.                     if(nomeServizio==null || nomeServizio.equals("")) throw new DriverConfigurazioneException("Nome Servizio non impostato.");
  337.                     if(versioneServizio==null) throw new DriverConfigurazioneException("Nome Servizio non impostato.");
  338.                 }

  339.                 //Azione
  340.                 String nomeAzione = (azione != null ? azione.getNome() : null);
  341.                 String patternAzione = (azione != null ? azione.getPattern() : null);
  342.                 String nomePortaDeleganteAzione = (azione != null ? azione.getNomePortaDelegante() : null);
  343.                 StatoFunzionalita forceInterfaceBased = (azione != null ? azione.getForceInterfaceBased() : null);
  344.                 PortaApplicativaAzioneIdentificazione modeAzione = (azione != null ? azione.getIdentificazione() : null);
  345.                 //Se il bean Azione nn e' presente allora non controllo nulla
  346.                 if(azione!=null){
  347.                     if(modeAzione==null || modeAzione.equals(""))
  348.                         modeAzione = PortaApplicativaAzioneIdentificazione.STATIC;
  349.                     switch (modeAzione) {
  350.                     case CONTENT_BASED:
  351.                     case URL_BASED:
  352.                     case HEADER_BASED:
  353.                         if(patternAzione==null || patternAzione.equals("")) throw new DriverConfigurazioneException("Pattern Azione non impostato.");
  354.                         nomeAzione=null;
  355.                         break;
  356.                     case DELEGATED_BY:
  357.                         if(nomePortaDeleganteAzione==null || nomePortaDeleganteAzione.equals("")) throw new DriverConfigurazioneException("Nome Porta Delegante Azione non impostata.");
  358.                         nomeAzione=null;
  359.                         break;
  360.                     case INPUT_BASED:
  361.                     case SOAP_ACTION_BASED:
  362.                     case INTERFACE_BASED:
  363.                     case PROTOCOL_BASED:
  364.                         //nessun campo obbligatorio
  365.                         break;
  366.                     case STATIC:
  367.                         //ci deve essere il nome
  368.                         if(nomeAzione==null || nomeAzione.equals("")) throw new DriverConfigurazioneException("Nome Azione non impostato.");
  369.                         patternAzione=null;
  370.                         break;
  371.                     default:
  372.                         break;
  373.                     }
  374.                 }
  375.                
  376.                 String utenteRichiedente = null;
  377.                 if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getUtenteRichiedente()!=null) {
  378.                     utenteRichiedente = aPA.getProprietaOggetto().getUtenteRichiedente();
  379.                 }
  380.                 else {
  381.                     utenteRichiedente = DBUtils.getSuperUserServizioSafe(DriverConfigurazioneDBLib.log, "CRUDPortaApplicativa",
  382.                                 idServizio, con, DriverConfigurazioneDBLib.tipoDB);
  383.                 }
  384.                
  385.                 Timestamp dataCreazione = null;
  386.                 if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getDataCreazione()!=null) {
  387.                     dataCreazione = new Timestamp(aPA.getProprietaOggetto().getDataCreazione().getTime());
  388.                 }
  389.                 else if(aPA.getOraRegistrazione()!=null){
  390.                     dataCreazione = new Timestamp(aPA.getOraRegistrazione().getTime());
  391.                 }
  392.                 else {
  393.                     dataCreazione = DateManager.getTimestamp();
  394.                 }
  395.                
  396.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  397.                 sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE);
  398.                 sqlQueryObject.addInsertField("nome_porta", "?");
  399.                 sqlQueryObject.addInsertField("descrizione", "?");
  400.                 sqlQueryObject.addInsertField("id_soggetto_virtuale", "?");
  401.                 sqlQueryObject.addInsertField("tipo_soggetto_virtuale", "?");
  402.                 sqlQueryObject.addInsertField("nome_soggetto_virtuale", "?");
  403.                 sqlQueryObject.addInsertField("id_servizio", "?");
  404.                 sqlQueryObject.addInsertField("tipo_servizio", "?");
  405.                 sqlQueryObject.addInsertField("servizio", "?");
  406.                 sqlQueryObject.addInsertField("versione_servizio", "?");
  407.                 sqlQueryObject.addInsertField("azione", "?");
  408.                 sqlQueryObject.addInsertField("mode_azione", "?");
  409.                 sqlQueryObject.addInsertField("pattern_azione", "?");
  410.                 sqlQueryObject.addInsertField("nome_porta_delegante_azione", "?");
  411.                 sqlQueryObject.addInsertField("force_interface_based_azione", "?");
  412.                 sqlQueryObject.addInsertField("mtom_request_mode", "?");
  413.                 sqlQueryObject.addInsertField("mtom_response_mode", "?");
  414.                 sqlQueryObject.addInsertField("security", "?");
  415.                 sqlQueryObject.addInsertField("security_mtom_req", "?");
  416.                 sqlQueryObject.addInsertField("security_mtom_res", "?");
  417.                 sqlQueryObject.addInsertField("security_request_mode", "?");
  418.                 sqlQueryObject.addInsertField("security_response_mode", "?");
  419.                 sqlQueryObject.addInsertField("id_soggetto", "?");
  420.                 sqlQueryObject.addInsertField("ricevuta_asincrona_sim", "?");
  421.                 sqlQueryObject.addInsertField("ricevuta_asincrona_asim", "?");
  422.                 sqlQueryObject.addInsertField("integrazione", "?");
  423.                 sqlQueryObject.addInsertField("validazione_contenuti_stato", "?");
  424.                 sqlQueryObject.addInsertField("validazione_contenuti_tipo", "?");
  425.                 sqlQueryObject.addInsertField("validazione_contenuti_mtom", "?");
  426.                 sqlQueryObject.addInsertField("allega_body", "?");
  427.                 sqlQueryObject.addInsertField("scarta_body", "?");
  428.                 sqlQueryObject.addInsertField("gestione_manifest", "?");
  429.                 sqlQueryObject.addInsertField("stateless", "?");
  430.                 sqlQueryObject.addInsertField("behaviour", "?");
  431.                 sqlQueryObject.addInsertField("autenticazione", "?");
  432.                 sqlQueryObject.addInsertField("autenticazione_opzionale", "?");
  433.                 sqlQueryObject.addInsertField("token_policy", "?");
  434.                 sqlQueryObject.addInsertField("token_opzionale", "?");
  435.                 sqlQueryObject.addInsertField("token_validazione", "?");
  436.                 sqlQueryObject.addInsertField("token_introspection", "?");
  437.                 sqlQueryObject.addInsertField("token_user_info", "?");
  438.                 sqlQueryObject.addInsertField("token_forward", "?");
  439.                 sqlQueryObject.addInsertField("token_options", "?");
  440.                 sqlQueryObject.addInsertField("token_authn_issuer", "?");
  441.                 sqlQueryObject.addInsertField("token_authn_client_id", "?");
  442.                 sqlQueryObject.addInsertField("token_authn_subject", "?");
  443.                 sqlQueryObject.addInsertField("token_authn_username", "?");
  444.                 sqlQueryObject.addInsertField("token_authn_email", "?");
  445.                 sqlQueryObject.addInsertField("autorizzazione", "?");
  446.                 sqlQueryObject.addInsertField("autorizzazione_xacml", "?");
  447.                 sqlQueryObject.addInsertField("autorizzazione_contenuto", "?");
  448.                 sqlQueryObject.addInsertField("ruoli_match", "?");
  449.                 sqlQueryObject.addInsertField("token_sa_stato", "?");
  450.                 sqlQueryObject.addInsertField("token_ruoli_stato", "?");
  451.                 sqlQueryObject.addInsertField("token_ruoli_match", "?");
  452.                 sqlQueryObject.addInsertField("token_ruoli_tipologia", "?");
  453.                 sqlQueryObject.addInsertField("scope_stato", "?");
  454.                 sqlQueryObject.addInsertField("scope_match", "?");
  455.                 sqlQueryObject.addInsertField("ricerca_porta_azione_delegata", "?");
  456.                 sqlQueryObject.addInsertField("msg_diag_severita", "?");
  457.                 sqlQueryObject.addInsertField("tracciamento_stato", "?");
  458.                 sqlQueryObject.addInsertField("tracciamento_esiti", "?");
  459.                 sqlQueryObject.addInsertField("transazioni_tempi", "?");
  460.                 sqlQueryObject.addInsertField("transazioni_token", "?");
  461.                 sqlQueryObject.addInsertField("stato", "?");
  462.                 // cors
  463.                 sqlQueryObject.addInsertField("cors_stato", "?");
  464.                 sqlQueryObject.addInsertField("cors_tipo", "?");
  465.                 sqlQueryObject.addInsertField("cors_all_allow_origins", "?");
  466.                 sqlQueryObject.addInsertField("cors_all_allow_methods", "?");
  467.                 sqlQueryObject.addInsertField("cors_all_allow_headers", "?");
  468.                 sqlQueryObject.addInsertField("cors_allow_credentials", "?");
  469.                 sqlQueryObject.addInsertField("cors_allow_max_age", "?");
  470.                 sqlQueryObject.addInsertField("cors_allow_max_age_seconds", "?");
  471.                 sqlQueryObject.addInsertField("cors_allow_origins", "?");
  472.                 sqlQueryObject.addInsertField("cors_allow_headers", "?");
  473.                 sqlQueryObject.addInsertField("cors_allow_methods", "?");
  474.                 sqlQueryObject.addInsertField("cors_allow_expose_headers", "?");
  475.                 // responseCaching
  476.                 sqlQueryObject.addInsertField("response_cache_stato", "?");
  477.                 sqlQueryObject.addInsertField("response_cache_seconds", "?");
  478.                 sqlQueryObject.addInsertField("response_cache_max_msg_size", "?");
  479.                 sqlQueryObject.addInsertField("response_cache_control_nocache", "?");
  480.                 sqlQueryObject.addInsertField("response_cache_control_maxage", "?");
  481.                 sqlQueryObject.addInsertField("response_cache_control_nostore", "?");
  482.                 sqlQueryObject.addInsertField("response_cache_hash_url", "?");
  483.                 sqlQueryObject.addInsertField("response_cache_hash_query", "?");
  484.                 sqlQueryObject.addInsertField("response_cache_hash_query_list", "?");
  485.                 sqlQueryObject.addInsertField("response_cache_hash_headers", "?");
  486.                 sqlQueryObject.addInsertField("response_cache_hash_hdr_list", "?");
  487.                 sqlQueryObject.addInsertField("response_cache_hash_payload", "?");
  488.                 // servizio applicativo default
  489.                 sqlQueryObject.addInsertField("id_sa_default", "?");
  490.                 // id
  491.                 sqlQueryObject.addInsertField("id_accordo", "?");
  492.                 sqlQueryObject.addInsertField("id_port_type", "?");
  493.                 sqlQueryObject.addInsertField("scadenza_correlazione_appl", "?");
  494.                 // options
  495.                 sqlQueryObject.addInsertField("options", "?");
  496.                 // canale
  497.                 sqlQueryObject.addInsertField("canale", "?");
  498.                 if(utenteRichiedente!=null) {
  499.                     sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE, "?");
  500.                 }
  501.                 if(dataCreazione!=null) {
  502.                     sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE, "?");
  503.                 }
  504.                 sqlQuery = sqlQueryObject.createSQLInsert();
  505.                 stm = con.prepareStatement(sqlQuery);
  506.                
  507.                 int index = 1;
  508.                
  509.                 stm.setString(index++, nomePorta);
  510.                 stm.setString(index++, descrizione);
  511.                 stm.setLong(index++, idSoggVirt);
  512.                 stm.setString(index++, tipoSoggVirt);//tipo sogg virt
  513.                 stm.setString(index++, nomeSoggVirt); //nome sogg virt
  514.                 stm.setLong(index++, idServizio);
  515.                 stm.setString(index++, tipoServizio);
  516.                 stm.setString(index++, nomeServizio);
  517.                 stm.setInt(index++, versioneServizio);
  518.                 stm.setString(index++, (azione != null ? azione.getNome() : null));
  519.                 if(modeAzione!=null){
  520.                     stm.setString(index++, modeAzione.toString());
  521.                 }
  522.                 else{
  523.                     stm.setString(index++, null);
  524.                 }
  525.                 stm.setString(index++, patternAzione);
  526.                 stm.setString(index++, nomePortaDeleganteAzione);
  527.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(forceInterfaceBased));
  528.                 // mtom
  529.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(mtomModeRequest));
  530.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(mtomModeResponse));
  531.                 // messageSecurity
  532.                 stm.setString(index++, messageSecurityStatus);
  533.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(messageSecurityApplyMtomRequest));
  534.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(messageSecurityApplyMtomResponse));
  535.                 stm.setString(index++, securityRequestMode);
  536.                 stm.setString(index++, securityResponseMode);
  537.                 // proprietario
  538.                 stm.setLong(index++, idProprietario);
  539.                 //ricevuta asincrona_asimmetrica/simmetrica
  540.                 stm.setString(index++, aPA.getRicevutaAsincronaSimmetrica()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicevutaAsincronaSimmetrica()) : null);
  541.                 stm.setString(index++, aPA.getRicevutaAsincronaAsimmetrica()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicevutaAsincronaAsimmetrica()) : null);
  542.                 //integrazione
  543.                 stm.setString(index++, aPA.getIntegrazione()!=null ? aPA.getIntegrazione() : null);
  544.                 //validazione xsd
  545.                 stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getStato()) : null);
  546.                 stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getTipo()) : null);
  547.                 stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getAcceptMtomMessage()) : null);
  548.                
  549.                 // InvocazionePorta: funzionalita' attachment
  550.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getAllegaBody()) : null);
  551.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getScartaBody()) : null);
  552.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getGestioneManifest()) : null);
  553.                
  554.                 // Stateless
  555.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getStateless()) : null);
  556.                
  557.                 // Behaviour
  558.                 stm.setString(index++, behaviour);
  559.                
  560.                 // Autenticazione
  561.                 stm.setString(index++, autenticazione);
  562.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getAutenticazioneOpzionale()) : null);
  563.                 // token
  564.                 stm.setString(index++, gestioneToken!=null ? gestioneToken.getPolicy() : null);
  565.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getTokenOpzionale()) : null);
  566.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getValidazione()) : null);
  567.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getIntrospection()) : null);
  568.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getUserInfo()) : null);
  569.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getForward()) : null);
  570.                 stm.setString(index++, gestioneToken!=null ? gestioneToken.getOptions() : null);
  571.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  572.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getIssuer()) : null);
  573.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  574.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getClientId()) : null);
  575.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  576.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getSubject()) : null);
  577.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  578.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getUsername()) : null);
  579.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  580.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getEmail()) : null);
  581.                 // Autorizzazione
  582.                 stm.setString(index++, autorizzazione);
  583.                 stm.setString(index++, autorizzazioneXacmlPolicy);
  584.                 stm.setString(index++, aPA!=null ? aPA.getAutorizzazioneContenuto() : null);
  585.                
  586.                 // Ruoli
  587.                 stm.setString(index++, aPA!=null && aPA.getRuoli()!=null && aPA.getRuoli().getMatch()!=null ?
  588.                         aPA.getRuoli().getMatch().getValue() : null);
  589.                
  590.                 // Token sa
  591.                 stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getAutorizzazioneApplicativi()!=null ?
  592.                         DriverConfigurazioneDBLib.getValue(aPA.getAutorizzazioneToken().getAutorizzazioneApplicativi()) : null);
  593.                
  594.                 // Token ruoli
  595.                 stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getAutorizzazioneRuoli()!=null ?
  596.                         DriverConfigurazioneDBLib.getValue(aPA.getAutorizzazioneToken().getAutorizzazioneRuoli()) : null);
  597.                 stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getRuoli()!=null &&
  598.                         aPA.getAutorizzazioneToken().getRuoli().getMatch()!=null ?
  599.                         aPA.getAutorizzazioneToken().getRuoli().getMatch().getValue() : null);
  600.                 stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getTipologiaRuoli()!=null ?
  601.                         aPA.getAutorizzazioneToken().getTipologiaRuoli().getValue() : null);
  602.                
  603.                 // Scope
  604.                 stm.setString(index++, aPA!=null && aPA.getScope()!=null && aPA.getScope().getStato()!=null ?
  605.                         DriverConfigurazioneDBLib.getValue(aPA.getScope().getStato()) : null);
  606.                 stm.setString(index++, aPA!=null && aPA.getScope()!=null && aPA.getScope().getMatch()!=null ?
  607.                         aPA.getScope().getMatch().getValue() : null);
  608.                
  609.                 // RicercaPortaAzioneDelegata
  610.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicercaPortaAzioneDelegata()) : null);
  611.                
  612.                 // Tracciamento
  613.                 stm.setString(index++, msgDiagSeverita);
  614.                 stm.setString(index++, tracciamentoStato);
  615.                 stm.setString(index++, tracciamentoEsiti);
  616.                 stm.setString(index++, transazioniTempiElaborazione);
  617.                 stm.setString(index++, transazioniToken);
  618.                
  619.                 // Stato
  620.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getStato()) : null);
  621.                
  622.                 // cors
  623.                 stm.setString(index++, corsStato);
  624.                 stm.setString(index++, corsTipo);
  625.                 stm.setString(index++, corsAllAllowOrigins);
  626.                 stm.setString(index++, corsAllAllowMethods);
  627.                 stm.setString(index++, corsAllAllowHeaders);
  628.                 stm.setString(index++, corsAllowCredentials);
  629.                 stm.setInt(index++, corsAllowMaxAge);
  630.                 if(corsAllowMaxAgeSeconds!=null) {
  631.                     stm.setInt(index++, corsAllowMaxAgeSeconds);
  632.                 }
  633.                 else {
  634.                     stm.setNull(index++, java.sql.Types.INTEGER);
  635.                 }
  636.                 stm.setString(index++, corsAllowOrigins);
  637.                 stm.setString(index++, corsAllowHeaders);
  638.                 stm.setString(index++, corsAllowMethods);
  639.                 stm.setString(index++, corsAllowExposeHeaders);
  640.                
  641.                 // responseCaching
  642.                 stm.setString(index++, responseCacheStato);
  643.                 if(responseCacheSeconds!=null) {
  644.                     stm.setInt(index++, responseCacheSeconds);
  645.                 }
  646.                 else {
  647.                     stm.setNull(index++, java.sql.Types.INTEGER);
  648.                 }
  649.                 if(responseCacheMaxMsgSize!=null) {
  650.                     stm.setLong(index++, responseCacheMaxMsgSize);
  651.                 }
  652.                 else {
  653.                     stm.setNull(index++, java.sql.Types.BIGINT);
  654.                 }
  655.                 stm.setInt(index++, responseCacheNoCache ? CostantiDB.TRUE : CostantiDB.FALSE);
  656.                 stm.setInt(index++, responseCacheMaxAge ? CostantiDB.TRUE : CostantiDB.FALSE);
  657.                 stm.setInt(index++, responseCacheNoStore ? CostantiDB.TRUE : CostantiDB.FALSE);
  658.                 stm.setString(index++, responseCacheHashUrl);
  659.                 stm.setString(index++, responseCacheHashQuery);
  660.                 stm.setString(index++, responseCacheHashQueryList);
  661.                 stm.setString(index++, responseCacheHashHeaders);
  662.                 stm.setString(index++, responseCacheHashHeadersList);
  663.                 stm.setString(index++, responseCacheHashPayload);
  664.                
  665.                 // servizio applicativo default
  666.                 long idServizioApplicativoDefault = -1;
  667.                 if(aPA.getServizioApplicativoDefault()!=null) {
  668.                     idServizioApplicativoDefault = DBUtils.getIdServizioApplicativo(aPA.getServizioApplicativoDefault(), tipoProprietario, nomeProprietario,
  669.                             con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
  670.                     if(idServizioApplicativoDefault<=0) {
  671.                         throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa(CREATE)] Impossibile recuperare l'ID del servizio applicativo di default '"+aPA.getServizioApplicativoDefault()+"'.");
  672.                     }
  673.                 }
  674.                 stm.setLong(index++, idServizioApplicativoDefault);
  675.                
  676.                 //idaccordo
  677.                 stm.setLong(index++, aPA.getIdAccordo()!=null ? aPA.getIdAccordo() : -1L);
  678.                 stm.setLong(index++, aPA.getIdPortType() !=null ? aPA.getIdPortType() : -1L);
  679.                
  680.                 // ScadenzaCorrelazioneApplicativa
  681.                 stm.setString(index++, aPA.getCorrelazioneApplicativa()!=null ? aPA.getCorrelazioneApplicativa().getScadenza() : null);
  682.                
  683.                 // options
  684.                 stm.setString(index++, aPA.getOptions());
  685.                
  686.                 // canale
  687.                 stm.setString(index++, aPA.getCanale());
  688.                
  689.                 if(utenteRichiedente!=null) {
  690.                     stm.setString(index++, utenteRichiedente);
  691.                 }
  692.                
  693.                 if(dataCreazione!=null) {
  694.                     stm.setTimestamp(index++, dataCreazione);
  695.                 }
  696.                
  697.                 n = stm.executeUpdate();
  698.                 stm.close();
  699.                 DriverConfigurazioneDBLib.logDebug("Created " + n + " row(s)");

  700.                 // recupero l'id della porta applicativa appena inserita
  701.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  702.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  703.                 sqlQueryObject.addSelectField("id");
  704.                 sqlQueryObject.addWhereCondition("id_soggetto = ?");
  705.                 sqlQueryObject.addWhereCondition("nome_porta = ?");
  706.                 sqlQueryObject.setANDLogicOperator(true);
  707.                 sqlQuery = sqlQueryObject.createSQLQuery();
  708.                 stm = con.prepareStatement(sqlQuery);
  709.                 stm.setLong(1, idProprietario);
  710.                 stm.setString(2, nomePorta);

  711.                 rs = stm.executeQuery();

  712.                 if (rs.next()) {
  713.                     idPortaApplicativa = rs.getLong("id");
  714.                     aPA.setId(idPortaApplicativa);
  715.                 } else {
  716.                     throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa(CREATE)] Impossibile recuperare l'ID della PortaApplicativa appena create.");
  717.                 }
  718.                 rs.close();
  719.                 stm.close();
  720.                
  721.                
  722.                 if(mtomProcessor!=null){
  723.                    
  724.                     MtomProcessorFlowParameter reqParam = null;
  725.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  726.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MTOM_REQUEST);
  727.                     sqlQueryObject.addInsertField("id_porta", "?");
  728.                     sqlQueryObject.addInsertField("nome", "?");
  729.                     sqlQueryObject.addInsertField("pattern", "?");
  730.                     sqlQueryObject.addInsertField("content_type", "?");
  731.                     sqlQueryObject.addInsertField("required", "?");
  732.                     sqlQuery = sqlQueryObject.createSQLInsert();
  733.                     stm = con.prepareStatement(sqlQuery);

  734.                     i = 0;
  735.                     if(mtomProcessor.getRequestFlow()!=null){
  736.                         MtomProcessorFlow flow = mtomProcessor.getRequestFlow();
  737.                         for (i = 0; i < flow.sizeParameterList(); i++) {
  738.                             reqParam = flow.getParameter(i);
  739.                             stm.setLong(1, idPortaApplicativa);
  740.                             stm.setString(2, reqParam.getNome());
  741.                             stm.setString(3, reqParam.getPattern());
  742.                             stm.setString(4, reqParam.getContentType());
  743.                             stm.setInt(5, reqParam.getRequired() ? CostantiDB.TRUE : CostantiDB.FALSE);

  744.                             stm.executeUpdate();
  745.                         }  
  746.                     }
  747.                     stm.close();
  748.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " mtom request flow con id=" + idPortaApplicativa);

  749.                     MtomProcessorFlowParameter resParam = null;
  750.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  751.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MTOM_RESPONSE);
  752.                     sqlQueryObject.addInsertField("id_porta", "?");
  753.                     sqlQueryObject.addInsertField("nome", "?");
  754.                     sqlQueryObject.addInsertField("pattern", "?");
  755.                     sqlQueryObject.addInsertField("content_type", "?");
  756.                     sqlQueryObject.addInsertField("required", "?");
  757.                     sqlQuery = sqlQueryObject.createSQLInsert();
  758.                     stm = con.prepareStatement(sqlQuery);
  759.                    
  760.                     i = 0;
  761.                     if(mtomProcessor.getResponseFlow()!=null){
  762.                         MtomProcessorFlow flow = mtomProcessor.getResponseFlow();
  763.                         for (i = 0; i < flow.sizeParameterList(); i++) {
  764.                             resParam = flow.getParameter(i);
  765.                             stm.setLong(1, idPortaApplicativa);
  766.                             stm.setString(2, resParam.getNome());
  767.                             stm.setString(3, resParam.getPattern());
  768.                             stm.setString(4, resParam.getContentType());
  769.                             stm.setInt(5, resParam.getRequired() ? CostantiDB.TRUE : CostantiDB.FALSE);
  770.    
  771.                             stm.executeUpdate();
  772.                         }
  773.                     }
  774.                     stm.close();
  775.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " mtom response flow con id=" + idPortaApplicativa);
  776.                    
  777.                 }
  778.                
  779.                 // se security abilitato setto la lista
  780.                 /**if ((messageSecurity != null) && CostantiConfigurazione.ABILITATO.toString().equals(messageSecurityStatus) )  {*/
  781.                 // Devo settarli sempre se ci sono, in modo che lo switch abilitato-disabilitato funzioni
  782.                 if ((messageSecurity != null) )  {
  783.                     MessageSecurityFlowParameter reqParam = null;
  784.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  785.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
  786.                     sqlQueryObject.addInsertField("id_porta", "?");
  787.                     sqlQueryObject.addInsertField("nome", "?");
  788.                     sqlQueryObject.addInsertField("valore", "?");
  789.                     sqlQueryObject.addInsertField("enc_value", "?");
  790.                     sqlQuery = sqlQueryObject.createSQLInsert();
  791.                     stm = con.prepareStatement(sqlQuery);

  792.                     i = 0;
  793.                     if(messageSecurity.getRequestFlow()!=null){
  794.                         MessageSecurityFlow flow = messageSecurity.getRequestFlow();
  795.                         for (i = 0; i < flow.sizeParameterList(); i++) {
  796.                             reqParam = flow.getParameter(i);
  797.                             int indexSec = 1;
  798.                             stm.setLong(indexSec++, idPortaApplicativa);
  799.                             stm.setString(indexSec++, reqParam.getNome());
  800.                            
  801.                             String plainValue = reqParam.getValore();
  802.                             String encValue = null;
  803.                             if(driverBYOK!=null &&
  804.                                     (
  805.                                             DriverConfigurazioneDB_genericPropertiesDriver.isConfidentialProperty(securityRequestMode, reqParam.getNome())
  806.                                             ||
  807.                                             BYOKUtilities.isWrappedValue(plainValue)
  808.                                     )
  809.                             ) {
  810.                                 BYOKWrappedValue byokValue = driverBYOK.wrap(plainValue);
  811.                                 if(byokValue!=null) {
  812.                                     encValue = byokValue.getWrappedValue();
  813.                                     plainValue = byokValue.getWrappedPlainValue();
  814.                                 }
  815.                             }
  816.                             stm.setString(indexSec++, plainValue);
  817.                             stm.setString(indexSec++, encValue);

  818.                             stm.executeUpdate();
  819.                         }
  820.                     }
  821.                     stm.close();
  822.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " request flow con id=" + idPortaApplicativa);

  823.                     MessageSecurityFlowParameter resParam = null;
  824.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  825.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
  826.                     sqlQueryObject.addInsertField("id_porta", "?");
  827.                     sqlQueryObject.addInsertField("nome", "?");
  828.                     sqlQueryObject.addInsertField("valore", "?");
  829.                     sqlQueryObject.addInsertField("enc_value", "?");
  830.                     sqlQuery = sqlQueryObject.createSQLInsert();
  831.                     stm = con.prepareStatement(sqlQuery);
  832.                    
  833.                     i = 0;
  834.                     if(messageSecurity.getResponseFlow()!=null){
  835.                         MessageSecurityFlow flow = messageSecurity.getResponseFlow();
  836.                         for (i = 0; i < flow.sizeParameterList(); i++) {
  837.                             resParam = flow.getParameter(i);
  838.                             int indexSec = 1;
  839.                             stm.setLong(indexSec++, idPortaApplicativa);
  840.                             stm.setString(indexSec++, resParam.getNome());
  841.                            
  842.                             String plainValue = resParam.getValore();
  843.                             String encValue = null;
  844.                             if(driverBYOK!=null &&
  845.                                     (
  846.                                             DriverConfigurazioneDB_genericPropertiesDriver.isConfidentialProperty(securityResponseMode, resParam.getNome())
  847.                                             ||
  848.                                             BYOKUtilities.isWrappedValue(plainValue)
  849.                                     )
  850.                             ) {
  851.                                 BYOKWrappedValue byokValue = driverBYOK.wrap(plainValue);
  852.                                 if(byokValue!=null) {
  853.                                     encValue = byokValue.getWrappedValue();
  854.                                     plainValue = byokValue.getWrappedPlainValue();
  855.                                 }
  856.                             }
  857.                             stm.setString(indexSec++, plainValue);
  858.                             stm.setString(indexSec++, encValue);
  859.                            
  860.                             stm.executeUpdate();
  861.                         }
  862.                     }
  863.                     stm.close();
  864.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " response flow con id=" + idPortaApplicativa);
  865.                 }

  866.                 // la lista di correlazioni applicative contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
  867.                 if (corrApp != null) {

  868.                     //inserisco i valori presenti nella lista
  869.                     CorrelazioneApplicativaElemento cae = null;
  870.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  871.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE);
  872.                     sqlQueryObject.addInsertField("id_porta", "?");
  873.                     sqlQueryObject.addInsertField("nome_elemento", "?");
  874.                     sqlQueryObject.addInsertField("mode_correlazione", "?");
  875.                     sqlQueryObject.addInsertField("pattern", "?");
  876.                     sqlQueryObject.addInsertField("identificazione_fallita", "?");
  877.                     sqlQuery = sqlQueryObject.createSQLInsert();
  878.                     stm = con.prepareStatement(sqlQuery);

  879.                     for (i = 0; i < corrApp.sizeElementoList(); i++) {
  880.                         cae = corrApp.getElemento(i);
  881.                         stm.setLong(1, idPortaApplicativa);
  882.                         stm.setString(2, cae.getNome());
  883.                         stm.setString(3, DriverConfigurazioneDBLib.getValue(cae.getIdentificazione()));
  884.                         if (cae.getPattern() != null)
  885.                             stm.setString(4, cae.getPattern());
  886.                         else
  887.                             stm.setString(4, "");
  888.                         stm.setString(5, DriverConfigurazioneDBLib.getValue(cae.getIdentificazioneFallita()));
  889.                         stm.executeUpdate();
  890.                     }
  891.                     stm.close();
  892.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " correlazione applicativa con id=" + idPortaApplicativa);
  893.                 }
  894.                
  895.                 // la lista di correlazioni applicative risposta contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
  896.                 if (corrAppRisposta != null) {

  897.                     //inserisco i valori presenti nella lista
  898.                     CorrelazioneApplicativaRispostaElemento cae = null;
  899.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  900.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE_RISPOSTA);
  901.                     sqlQueryObject.addInsertField("id_porta", "?");
  902.                     sqlQueryObject.addInsertField("nome_elemento", "?");
  903.                     sqlQueryObject.addInsertField("mode_correlazione", "?");
  904.                     sqlQueryObject.addInsertField("pattern", "?");
  905.                     sqlQueryObject.addInsertField("identificazione_fallita", "?");
  906.                     sqlQuery = sqlQueryObject.createSQLInsert();
  907.                     stm = con.prepareStatement(sqlQuery);

  908.                     for (i = 0; i < corrAppRisposta.sizeElementoList(); i++) {
  909.                         cae = corrAppRisposta.getElemento(i);
  910.                         stm.setLong(1, idPortaApplicativa);
  911.                         stm.setString(2, cae.getNome());
  912.                         stm.setString(3, DriverConfigurazioneDBLib.getValue(cae.getIdentificazione()));
  913.                         if (cae.getPattern() != null)
  914.                             stm.setString(4, cae.getPattern());
  915.                         else
  916.                             stm.setString(4, "");
  917.                         stm.setString(5, DriverConfigurazioneDBLib.getValue(cae.getIdentificazioneFallita()));
  918.                         stm.executeUpdate();
  919.                     }
  920.                     stm.close();
  921.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " correlazione applicativa risposta con id=" + idPortaApplicativa);
  922.                 }
  923.                
  924.                 // serviziapplicativi
  925.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  926.                 sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA);
  927.                 sqlQueryObject.addInsertField("id_porta", "?");
  928.                 sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
  929.                 sqlQueryObject.addInsertField("connettore_nome", "?");
  930.                 sqlQueryObject.addInsertField("connettore_notifica", "?");
  931.                 sqlQueryObject.addInsertField("connettore_descrizione", "?");
  932.                 sqlQueryObject.addInsertField("connettore_stato", "?");
  933.                 sqlQueryObject.addInsertField("connettore_scheduling", "?");
  934.                 sqlQueryObject.addInsertField("connettore_filtri", "?");
  935.                 sqlQueryObject.addInsertField("connettore_coda", "?");
  936.                 sqlQueryObject.addInsertField("connettore_priorita", "?");
  937.                 sqlQueryObject.addInsertField("connettore_max_priorita", "?");
  938.                 sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE, "?");
  939.                 sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE, "?");
  940.                 sqlQuery = sqlQueryObject.createSQLInsert();
  941.                 stm = con.prepareStatement(sqlQuery);

  942.                 List<Long> idsPaSa = new ArrayList<>();
  943.                 for (i = 0; i < aPA.sizeServizioApplicativoList(); i++) {
  944.                     PortaApplicativaServizioApplicativo servizioApplicativo = aPA.getServizioApplicativo(i);
  945.                     String nomeSA = servizioApplicativo.getNome();
  946.                     //nome/tipo soggetto proprietario servizio applicativo sono gli stessi della porta applicativa
  947.                     String nomeProprietarioSA = aPA.getNomeSoggettoProprietario();//servizioApplicativo.getNomeSoggettoProprietario();
  948.                     String tipoProprietarioSA = aPA.getTipoSoggettoProprietario();//servizioApplicativo.getTipoSoggettoProprietario();
  949.                     if (nomeSA == null || nomeSA.equals(""))
  950.                         throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)::Nome del ServizioApplicativo associato non valido.");
  951.                     if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
  952.                         throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)::Nome Proprietario del ServizioApplicativo associato non valido.");
  953.                     if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
  954.                         throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)::Tipo Proprietario del ServizioApplicativo associato non valido.");

  955.                     long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);

  956.                     if (idSA <= 0)
  957.                         throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
  958.                    
  959.                     idsPaSa.add(idSA);

  960.                     String utenteRichiedenteSA = null;
  961.                     if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
  962.                             servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteRichiedente()!=null) {
  963.                         utenteRichiedenteSA = servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteRichiedente();
  964.                     }
  965.                     else {
  966.                         utenteRichiedenteSA = utenteRichiedente; // uso richiedente della PA
  967.                     }
  968.                    
  969.                     Timestamp dataCreazioneSA = null;
  970.                     if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
  971.                             servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataCreazione()!=null) {
  972.                         dataCreazioneSA = new Timestamp(servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataCreazione().getTime());
  973.                     }
  974.                     else {
  975.                         dataCreazioneSA = dataCreazione; // uso data creazione della PA
  976.                     }
  977.                    
  978.                     int indexSA = 1;
  979.                     stm.setLong(indexSA++, idPortaApplicativa);
  980.                     stm.setLong(indexSA++, idSA);
  981.                     stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? servizioApplicativo.getDatiConnettore().getNome() : null);
  982.                     stm.setInt(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? (servizioApplicativo.getDatiConnettore().isNotifica() ? CostantiDB.TRUE : CostantiDB.FALSE) : CostantiDB.FALSE);
  983.                     stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? servizioApplicativo.getDatiConnettore().getDescrizione() : null);
  984.                     stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? DriverConfigurazioneDBLib.getValue(servizioApplicativo.getDatiConnettore().getStato()) : null);
  985.                     stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? DriverConfigurazioneDBLib.getValue(servizioApplicativo.getDatiConnettore().getScheduling()) : null);
  986.                    
  987.                     String filtri = null;
  988.                     if(servizioApplicativo.getDatiConnettore()!=null &&
  989.                         (servizioApplicativo.getDatiConnettore().getFiltroList()!=null && servizioApplicativo.getDatiConnettore().sizeFiltroList()>0)
  990.                         ){
  991.                         StringBuilder bf = new StringBuilder();
  992.                         for (int k = 0; k < servizioApplicativo.getDatiConnettore().sizeFiltroList(); k++) {
  993.                             if(k>0) {
  994.                                 bf.append(",");
  995.                             }
  996.                             bf.append(servizioApplicativo.getDatiConnettore().getFiltro(k));
  997.                         }
  998.                         filtri = bf.toString();
  999.                     }
  1000.                     stm.setString(indexSA++, filtri);
  1001.                    
  1002.                     if(servizioApplicativo.getDatiConnettore()!=null) {
  1003.                         stm.setString(indexSA++, servizioApplicativo.getDatiConnettore().getCoda()!=null ? servizioApplicativo.getDatiConnettore().getCoda() : CostantiConfigurazione.CODA_DEFAULT);
  1004.                         stm.setString(indexSA++, servizioApplicativo.getDatiConnettore().getPriorita()!=null ? servizioApplicativo.getDatiConnettore().getPriorita() : CostantiConfigurazione.PRIORITA_DEFAULT);
  1005.                         stm.setInt(indexSA++, servizioApplicativo.getDatiConnettore().isPrioritaMax() ? CostantiDB.TRUE : CostantiDB.FALSE);
  1006.                     }
  1007.                     else {
  1008.                         stm.setString(indexSA++, CostantiConfigurazione.CODA_DEFAULT);
  1009.                         stm.setString(indexSA++, CostantiConfigurazione.PRIORITA_DEFAULT);
  1010.                         stm.setInt(indexSA++, CostantiDB.FALSE);
  1011.                     }
  1012.                    
  1013.                     stm.setString(indexSA++, utenteRichiedenteSA);
  1014.                     stm.setTimestamp(indexSA++, dataCreazioneSA);
  1015.                    
  1016.                     stm.executeUpdate();
  1017.                    
  1018.                 }
  1019.                 stm.close();
  1020.                 DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi associati alla PortaApplicativa[" + idPortaApplicativa + "]");

  1021.                
  1022.                
  1023.                 // serviziapplicativi props        
  1024.                 for (i = 0; i < aPA.sizeServizioApplicativoList(); i++) {
  1025.                     PortaApplicativaServizioApplicativo servizioApplicativo = aPA.getServizioApplicativo(i);
  1026.                     String nomeSA = servizioApplicativo.getNome();
  1027.                    
  1028.                     if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().sizeProprietaList()>0) {
  1029.                    
  1030.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1031.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
  1032.                         sqlQueryObject.addSelectField("id");
  1033.                         sqlQueryObject.addWhereCondition("id_porta=?");
  1034.                         sqlQueryObject.addWhereCondition("id_servizio_applicativo=?");
  1035.                         sqlQueryObject.setANDLogicOperator(true);
  1036.                        
  1037.                         long idSA = idsPaSa.get(i);
  1038.                        
  1039.                         long idPA_SA = -1;
  1040.                         sqlQuery = sqlQueryObject.createSQLQuery();
  1041.                         stm = con.prepareStatement(sqlQuery);
  1042.                         stm.setLong(1, idPortaApplicativa);
  1043.                         stm.setLong(2, idSA);
  1044.                         rs = stm.executeQuery();
  1045.                         if(rs.next()) {
  1046.                             idPA_SA = rs.getLong("id");
  1047.                         }
  1048.                         rs.close();
  1049.                         stm.close();
  1050.                        
  1051.                         if(idPA_SA<=0) {
  1052.                             throw new DriverConfigurazioneException("Impossibile recuperare l'id della registrazione del Servizio Applicativo [" + nomeSA + "](id:"+idSA+") alla porta applicativa con id:"+idPortaApplicativa );
  1053.                         }
  1054.                        
  1055.                        
  1056.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1057.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA_PROPS);
  1058.                         sqlQueryObject.addInsertField("id_porta", "?");
  1059.                         sqlQueryObject.addInsertField("nome", "?");
  1060.                         sqlQueryObject.addInsertField("valore", "?");
  1061.                         sqlQuery = sqlQueryObject.createSQLInsert();
  1062.                         stm = con.prepareStatement(sqlQuery);
  1063.                        
  1064.                         int j = 0;
  1065.                         for ( ; j < servizioApplicativo.getDatiConnettore().sizeProprietaList(); j++) {
  1066.                            
  1067.                             Proprieta p = servizioApplicativo.getDatiConnettore().getProprieta(j);
  1068.                            
  1069.                             if(p.getValore()==null || "".equals(p.getValore())) {
  1070.                                 continue; // non devo serializzare valori vuoti o null (DB oracle non lo permette)
  1071.                             }
  1072.                            
  1073.                             stm.setLong(1, idPA_SA);
  1074.                             stm.setString(2, p.getNome());
  1075.                             stm.setString(3, p.getValore());
  1076.                             stm.executeUpdate();
  1077.                            
  1078.                         }
  1079.    
  1080.                         stm.close();
  1081.                         DriverConfigurazioneDBLib.logDebug("Inseriti " + j + " SetSAProp associati al Servizio Applicativo [" + nomeSA + "](id:"+idSA+") della PortaApplicativa[" + idPortaApplicativa + "]");
  1082.                     }
  1083.                 }
  1084.                
  1085.                
  1086.                 // set prop behaviour
  1087.                 if(aPA.getBehaviour()!=null) {
  1088.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1089.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_BEHAVIOUR_PROPS);
  1090.                     sqlQueryObject.addInsertField("id_porta", "?");
  1091.                     sqlQueryObject.addInsertField("nome", "?");
  1092.                     sqlQueryObject.addInsertField("valore", "?");
  1093.                     sqlQuery = sqlQueryObject.createSQLInsert();
  1094.                     stm = con.prepareStatement(sqlQuery);
  1095.                     for (i = 0; i < aPA.getBehaviour().sizeProprietaList(); i++) {
  1096.                         propProtocollo = aPA.getBehaviour().getProprieta(i);
  1097.                         stm.setLong(1, idPortaApplicativa);
  1098.                         stm.setString(2, propProtocollo.getNome());
  1099.                         stm.setString(3, propProtocollo.getValore());
  1100.                         stm.executeUpdate();
  1101.                     }
  1102.                     stm.close();
  1103.                     DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SeBehaviourProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  1104.                 }
  1105.                
  1106.                
  1107.                
  1108.                 // set prop autenticazione
  1109.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1110.                 sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTENTICAZIONE_PROP);
  1111.                 sqlQueryObject.addInsertField("id_porta", "?");
  1112.                 sqlQueryObject.addInsertField("nome", "?");
  1113.                 sqlQueryObject.addInsertField("valore", "?");
  1114.                 sqlQueryObject.addInsertField("enc_value", "?");
  1115.                 sqlQuery = sqlQueryObject.createSQLInsert();
  1116.                 stm = con.prepareStatement(sqlQuery);
  1117.                 for (i = 0; i < aPA.sizeProprietaAutenticazioneList(); i++) {
  1118.                     propProtocollo = aPA.getProprietaAutenticazione(i);

  1119.                     int indexP = 1;
  1120.                     stm.setLong(indexP++, idPortaApplicativa);
  1121.                     stm.setString(indexP++, propProtocollo.getNome());
  1122.                    
  1123.                     String plainValueP = propProtocollo.getValore();
  1124.                     String encValueP = null;
  1125.                     if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
  1126.                         BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
  1127.                         if(byokValue!=null) {
  1128.                             encValueP = byokValue.getWrappedValue();
  1129.                             plainValueP = byokValue.getWrappedPlainValue();
  1130.                         }
  1131.                     }
  1132.                    
  1133.                     stm.setString(indexP++, plainValueP);
  1134.                     stm.setString(indexP++, encValueP);
  1135.                    
  1136.                     stm.executeUpdate();
  1137.                 }
  1138.                 stm.close();
  1139.                 DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolPropAutenticazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  1140.                
  1141.                
  1142.                 // set prop autorizzazione
  1143.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1144.                 sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_PROP);
  1145.                 sqlQueryObject.addInsertField("id_porta", "?");
  1146.                 sqlQueryObject.addInsertField("nome", "?");
  1147.                 sqlQueryObject.addInsertField("valore", "?");
  1148.                 sqlQueryObject.addInsertField("enc_value", "?");
  1149.                 sqlQuery = sqlQueryObject.createSQLInsert();
  1150.                 stm = con.prepareStatement(sqlQuery);
  1151.                 for (i = 0; i < aPA.sizeProprietaAutorizzazioneList(); i++) {
  1152.                     propProtocollo = aPA.getProprietaAutorizzazione(i);

  1153.                     int indexP = 1;
  1154.                     stm.setLong(indexP++, idPortaApplicativa);
  1155.                     stm.setString(indexP++, propProtocollo.getNome());
  1156.                    
  1157.                     String plainValueP = propProtocollo.getValore();
  1158.                     String encValueP = null;
  1159.                     if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
  1160.                         BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
  1161.                         if(byokValue!=null) {
  1162.                             encValueP = byokValue.getWrappedValue();
  1163.                             plainValueP = byokValue.getWrappedPlainValue();
  1164.                         }
  1165.                     }
  1166.                    
  1167.                     stm.setString(indexP++, plainValueP);
  1168.                     stm.setString(indexP++, encValueP);
  1169.                    
  1170.                     stm.executeUpdate();
  1171.                 }
  1172.                 stm.close();
  1173.                 DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolPropAutorizzazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  1174.                
  1175.                
  1176.                
  1177.                 // set prop autorizzazione contenuti
  1178.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1179.                 sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_CONTENUTI_PROP);
  1180.                 sqlQueryObject.addInsertField("id_porta", "?");
  1181.                 sqlQueryObject.addInsertField("nome", "?");
  1182.                 sqlQueryObject.addInsertField("valore", "?");
  1183.                 sqlQueryObject.addInsertField("enc_value", "?");
  1184.                 sqlQuery = sqlQueryObject.createSQLInsert();
  1185.                 stm = con.prepareStatement(sqlQuery);
  1186.                 for (i = 0; i < aPA.sizeProprietaAutorizzazioneContenutoList(); i++) {
  1187.                     propProtocollo = aPA.getProprietaAutorizzazioneContenuto(i);

  1188.                     int indexP = 1;
  1189.                     stm.setLong(indexP++, idPortaApplicativa);
  1190.                     stm.setString(indexP++, propProtocollo.getNome());
  1191.                    
  1192.                     String plainValueP = propProtocollo.getValore();
  1193.                     String encValueP = null;
  1194.                     if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
  1195.                         BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
  1196.                         if(byokValue!=null) {
  1197.                             encValueP = byokValue.getWrappedValue();
  1198.                             plainValueP = byokValue.getWrappedPlainValue();
  1199.                         }
  1200.                     }
  1201.                    
  1202.                     stm.setString(indexP++, plainValueP);
  1203.                     stm.setString(indexP++, encValueP);
  1204.                    
  1205.                     stm.executeUpdate();
  1206.                 }
  1207.                 stm.close();
  1208.                 DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolPropAutorizzazioneContenuti associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  1209.                                
  1210.                
  1211.                
  1212.                 // set prop rate limiting
  1213.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1214.                 sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
  1215.                 sqlQueryObject.addInsertField("id_porta", "?");
  1216.                 sqlQueryObject.addInsertField("nome", "?");
  1217.                 sqlQueryObject.addInsertField("valore", "?");
  1218.                 sqlQuery = sqlQueryObject.createSQLInsert();
  1219.                 stm = con.prepareStatement(sqlQuery);
  1220.                 for (i = 0; i < aPA.sizeProprietaRateLimitingList(); i++) {
  1221.                     propProtocollo = aPA.getProprietaRateLimiting(i);
  1222.                     stm.setLong(1, idPortaApplicativa);
  1223.                     stm.setString(2, propProtocollo.getNome());
  1224.                     stm.setString(3, propProtocollo.getValore());
  1225.                     stm.executeUpdate();
  1226.                 }
  1227.                 stm.close();
  1228.                 DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolPropRateLimiting associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  1229.                
  1230.                
  1231.                
  1232.                
  1233.                
  1234.                 // set prop
  1235.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1236.                 sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_PROP);
  1237.                 sqlQueryObject.addInsertField("id_porta", "?");
  1238.                 sqlQueryObject.addInsertField("nome", "?");
  1239.                 sqlQueryObject.addInsertField("valore", "?");
  1240.                 sqlQueryObject.addInsertField("enc_value", "?");
  1241.                 sqlQuery = sqlQueryObject.createSQLInsert();
  1242.                 stm = con.prepareStatement(sqlQuery);
  1243.                 for (i = 0; i < aPA.sizeProprietaList(); i++) {
  1244.                     propProtocollo = aPA.getProprieta(i);
  1245.                    
  1246.                     int indexP = 1;
  1247.                     stm.setLong(indexP++, idPortaApplicativa);
  1248.                     stm.setString(indexP++, propProtocollo.getNome());
  1249.                    
  1250.                     String plainValueP = propProtocollo.getValore();
  1251.                     String encValueP = null;
  1252.                     if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
  1253.                         BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
  1254.                         if(byokValue!=null) {
  1255.                             encValueP = byokValue.getWrappedValue();
  1256.                             plainValueP = byokValue.getWrappedPlainValue();
  1257.                         }
  1258.                     }
  1259.                    
  1260.                     stm.setString(indexP++, plainValueP);
  1261.                     stm.setString(indexP++, encValueP);

  1262.                     stm.executeUpdate();
  1263.                 }
  1264.                 stm.close();
  1265.                 DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");

  1266.                
  1267.                 // Ruoli
  1268.                 n=0;
  1269.                 if(aPA.getRuoli()!=null && aPA.getRuoli().sizeRuoloList()>0){
  1270.                     for (int j = 0; j < aPA.getRuoli().sizeRuoloList(); j++) {
  1271.                         Ruolo ruolo = aPA.getRuoli().getRuolo(j);
  1272.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1273.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
  1274.                         sqlQueryObject.addInsertField("id_porta", "?");
  1275.                         sqlQueryObject.addInsertField("ruolo", "?");
  1276.                         sqlQuery = sqlQueryObject.createSQLInsert();
  1277.                         stm = con.prepareStatement(sqlQuery);
  1278.                         stm.setLong(1, aPA.getId());
  1279.                         stm.setString(2, ruolo.getNome());
  1280.                         stm.executeUpdate();
  1281.                         stm.close();
  1282.                         n++;
  1283.                         DriverConfigurazioneDBLib.logDebug("Aggiunto ruolo[" + ruolo.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
  1284.                     }
  1285.                 }
  1286.                
  1287.                 DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " ruoli alla PortaApplicativa[" + idPortaApplicativa + "]");
  1288.                
  1289.                
  1290.                 // Scope
  1291.                 n=0;
  1292.                 if(aPA.getScope()!=null && aPA.getScope().sizeScopeList()>0){
  1293.                     for (int j = 0; j < aPA.getScope().sizeScopeList(); j++) {
  1294.                         Scope scope = aPA.getScope().getScope(j);
  1295.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1296.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
  1297.                         sqlQueryObject.addInsertField("id_porta", "?");
  1298.                         sqlQueryObject.addInsertField("scope", "?");
  1299.                         sqlQuery = sqlQueryObject.createSQLInsert();
  1300.                         stm = con.prepareStatement(sqlQuery);
  1301.                         stm.setLong(1, aPA.getId());
  1302.                         stm.setString(2, scope.getNome());
  1303.                         stm.executeUpdate();
  1304.                         stm.close();
  1305.                         n++;
  1306.                         DriverConfigurazioneDBLib.logDebug("Aggiunto scope[" + scope.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
  1307.                     }
  1308.                 }
  1309.                
  1310.                 DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " scope alla PortaApplicativa[" + idPortaApplicativa + "]");
  1311.                
  1312.                
  1313.                 // Soggetti
  1314.                 n=0;
  1315.                 if(aPA.getSoggetti()!=null && aPA.getSoggetti().sizeSoggettoList()>0){
  1316.                     for (int j = 0; j < aPA.getSoggetti().sizeSoggettoList(); j++) {
  1317.                         PortaApplicativaAutorizzazioneSoggetto soggetto = aPA.getSoggetti().getSoggetto(j);
  1318.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1319.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
  1320.                         sqlQueryObject.addInsertField("id_porta", "?");
  1321.                         sqlQueryObject.addInsertField("tipo_soggetto", "?");
  1322.                         sqlQueryObject.addInsertField("nome_soggetto", "?");
  1323.                         sqlQuery = sqlQueryObject.createSQLInsert();
  1324.                         stm = con.prepareStatement(sqlQuery);
  1325.                         stm.setLong(1, aPA.getId());
  1326.                         stm.setString(2, soggetto.getTipo());
  1327.                         stm.setString(3, soggetto.getNome());
  1328.                         stm.executeUpdate();
  1329.                         stm.close();
  1330.                         n++;
  1331.                         DriverConfigurazioneDBLib.logDebug("Aggiunto soggetto [" + soggetto.getTipo() + "/"+soggetto.getNome()+"] alla PortaApplicativa[" + idPortaApplicativa + "]");
  1332.                     }
  1333.                 }
  1334.                
  1335.                 DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " soggetti alla PortaApplicativa[" + idPortaApplicativa + "]");
  1336.                
  1337.                
  1338.                 // serviziapplicativi autorizzati
  1339.                 if(aPA.getServiziApplicativiAutorizzati()!=null && aPA.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()>0) {
  1340.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1341.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);
  1342.                     sqlQueryObject.addInsertField("id_porta", "?");
  1343.                     sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
  1344.                     sqlQuery = sqlQueryObject.createSQLInsert();
  1345.                     stm = con.prepareStatement(sqlQuery);
  1346.    
  1347.                     for (i = 0; i < aPA.getServiziApplicativiAutorizzati().sizeServizioApplicativoList(); i++) {
  1348.                         PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativo = aPA.getServiziApplicativiAutorizzati().getServizioApplicativo(i);
  1349.                         String nomeSA = servizioApplicativo.getNome();
  1350.                         String nomeProprietarioSA = servizioApplicativo.getNomeSoggettoProprietario();
  1351.                         String tipoProprietarioSA = servizioApplicativo.getTipoSoggettoProprietario();
  1352.                         if (nomeSA == null || nomeSA.equals(""))
  1353.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Nome del ServizioApplicativo associato non valido.");
  1354.                         if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
  1355.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Nome Proprietario del ServizioApplicativo associato non valido.");
  1356.                         if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
  1357.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Tipo Proprietario del ServizioApplicativo associato non valido.");
  1358.    
  1359.                         long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
  1360.    
  1361.                         if (idSA <= 0)
  1362.                             throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
  1363.    
  1364.                         stm.setLong(1, idPortaApplicativa);
  1365.                         stm.setLong(2, idSA);
  1366.                         stm.executeUpdate();
  1367.                     }
  1368.                     stm.close();
  1369.                     DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi autorizzati associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  1370.                 }
  1371.                
  1372.                
  1373.                 // serviziapplicativi token autorizzati
  1374.                 if(aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getServiziApplicativi()!=null &&
  1375.                         aPA.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()>0) {
  1376.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1377.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);
  1378.                     sqlQueryObject.addInsertField("id_porta", "?");
  1379.                     sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
  1380.                     sqlQuery = sqlQueryObject.createSQLInsert();
  1381.                     stm = con.prepareStatement(sqlQuery);
  1382.    
  1383.                     for (i = 0; i < aPA.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList(); i++) {
  1384.                         PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativo = aPA.getAutorizzazioneToken().getServiziApplicativi().getServizioApplicativo(i);
  1385.                         String nomeSA = servizioApplicativo.getNome();
  1386.                         String nomeProprietarioSA = servizioApplicativo.getNomeSoggettoProprietario();
  1387.                         String tipoProprietarioSA = servizioApplicativo.getTipoSoggettoProprietario();
  1388.                         if (nomeSA == null || nomeSA.equals(""))
  1389.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Nome del ServizioApplicativo associato non valido.");
  1390.                         if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
  1391.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Nome Proprietario del ServizioApplicativo associato non valido.");
  1392.                         if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
  1393.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Tipo Proprietario del ServizioApplicativo associato non valido.");
  1394.    
  1395.                         long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
  1396.    
  1397.                         if (idSA <= 0)
  1398.                             throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
  1399.    
  1400.                         stm.setLong(1, idPortaApplicativa);
  1401.                         stm.setLong(2, idSA);
  1402.                         stm.executeUpdate();
  1403.                     }
  1404.                     stm.close();
  1405.                     DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi autorizzati (token) associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  1406.                 }
  1407.                
  1408.                
  1409.                 // Ruoli (token)
  1410.                 n=0;
  1411.                 if(aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getRuoli()!=null && aPA.getAutorizzazioneToken().getRuoli().sizeRuoloList()>0){
  1412.                     for (int j = 0; j < aPA.getAutorizzazioneToken().getRuoli().sizeRuoloList(); j++) {
  1413.                         Ruolo ruolo = aPA.getAutorizzazioneToken().getRuoli().getRuolo(j);
  1414.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1415.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
  1416.                         sqlQueryObject.addInsertField("id_porta", "?");
  1417.                         sqlQueryObject.addInsertField("ruolo", "?");
  1418.                         sqlQuery = sqlQueryObject.createSQLInsert();
  1419.                         stm = con.prepareStatement(sqlQuery);
  1420.                         stm.setLong(1, aPA.getId());
  1421.                         stm.setString(2, ruolo.getNome());
  1422.                         stm.executeUpdate();
  1423.                         stm.close();
  1424.                         n++;
  1425.                         DriverConfigurazioneDBLib.logDebug("Aggiunto ruolo[" + ruolo.getNome() + "] (token) alla PortaApplicativa[" + idPortaApplicativa + "]");
  1426.                     }
  1427.                 }
  1428.                
  1429.                 DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " ruoli (token) alla PortaApplicativa[" + idPortaApplicativa + "]");
  1430.                
  1431.                
  1432.                 // Azioni
  1433.                 n=0;
  1434.                 if(aPA.getAzione()!=null && aPA.getAzione().sizeAzioneDelegataList()>0){
  1435.                     for (int j = 0; j < aPA.getAzione().sizeAzioneDelegataList(); j++) {
  1436.                         String azioneDelegata = aPA.getAzione().getAzioneDelegata(j);
  1437.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1438.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
  1439.                         sqlQueryObject.addInsertField("id_porta", "?");
  1440.                         sqlQueryObject.addInsertField("azione", "?");
  1441.                         sqlQuery = sqlQueryObject.createSQLInsert();
  1442.                         stm = con.prepareStatement(sqlQuery);
  1443.                         stm.setLong(1, aPA.getId());
  1444.                         stm.setString(2, azioneDelegata);
  1445.                         stm.executeUpdate();
  1446.                         stm.close();
  1447.                         n++;
  1448.                         DriverConfigurazioneDBLib.logDebug("Aggiunto azione delegata [" + azioneDelegata + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
  1449.                     }
  1450.                 }
  1451.                
  1452.                 DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " azioni delegate alla PortaApplicativa[" + idPortaApplicativa + "]");
  1453.                
  1454.                
  1455.                
  1456.                 // Cache Regole
  1457.                 n=0;
  1458.                 if(responseCacheRegole!=null && responseCacheRegole.size()>0){
  1459.                     for (int j = 0; j < responseCacheRegole.size(); j++) {
  1460.                         ResponseCachingConfigurazioneRegola regola = responseCacheRegole.get(j);
  1461.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1462.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CACHE_REGOLE);
  1463.                         sqlQueryObject.addInsertField("id_porta", "?");
  1464.                         if(regola.getReturnCodeMin()!=null && regola.getReturnCodeMin()>0) {
  1465.                             sqlQueryObject.addInsertField("status_min", "?");
  1466.                         }
  1467.                         if(regola.getReturnCodeMax()!=null && regola.getReturnCodeMax()>0) {
  1468.                             sqlQueryObject.addInsertField("status_max", "?");
  1469.                         }
  1470.                         sqlQueryObject.addInsertField("fault", "?");
  1471.                         if(regola.getCacheTimeoutSeconds()!=null && regola.getCacheTimeoutSeconds()>0) {
  1472.                             sqlQueryObject.addInsertField("cache_seconds", "?");
  1473.                         }
  1474.                         sqlQuery = sqlQueryObject.createSQLInsert();
  1475.                         stm = con.prepareStatement(sqlQuery);
  1476.                         int indexCR = 1;
  1477.                         stm.setLong(indexCR++, aPA.getId());
  1478.                         if(regola.getReturnCodeMin()!=null && regola.getReturnCodeMin()>0) {
  1479.                             stm.setInt(indexCR++, regola.getReturnCodeMin());
  1480.                         }
  1481.                         if(regola.getReturnCodeMax()!=null && regola.getReturnCodeMax()>0) {
  1482.                             stm.setInt(indexCR++, regola.getReturnCodeMax());
  1483.                         }
  1484.                         stm.setInt(indexCR++, regola.getFault() ? CostantiDB.TRUE : CostantiDB.FALSE);
  1485.                         if(regola.getCacheTimeoutSeconds()!=null && regola.getCacheTimeoutSeconds()>0) {
  1486.                             stm.setInt(indexCR++, regola.getCacheTimeoutSeconds());
  1487.                         }
  1488.                         stm.executeUpdate();
  1489.                         stm.close();
  1490.                         n++;
  1491.                         DriverConfigurazioneDBLib.logDebug("Aggiunta regola di cache alla PortaApplicativa[" + idPortaApplicativa + "]");
  1492.                     }
  1493.                 }
  1494.                
  1495.                 DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " regole di cache alla PortaApplicativa[" + idPortaApplicativa + "]");
  1496.                
  1497.                
  1498.                
  1499.                 // AttributeAuthority
  1500.                 n=0;
  1501.                 if(aPA.sizeAttributeAuthorityList()>0){
  1502.                     for (int j = 0; j < aPA.sizeAttributeAuthorityList(); j++) {
  1503.                         AttributeAuthority aa = aPA.getAttributeAuthority(j);
  1504.                        
  1505.                         String attributi = null;
  1506.                         if(aa.sizeAttributoList()>0) {
  1507.                             StringBuilder bf = new StringBuilder();
  1508.                             for (int aaI = 0; aaI < aa.sizeAttributoList(); aaI++) {
  1509.                                 if(aaI>0) {
  1510.                                     bf.append(",");
  1511.                                 }
  1512.                                 bf.append(aa.getAttributo(aaI));
  1513.                             }
  1514.                             attributi = bf.toString();
  1515.                         }
  1516.                        
  1517.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1518.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
  1519.                         sqlQueryObject.addInsertField("id_porta", "?");
  1520.                         sqlQueryObject.addInsertField("nome", "?");
  1521.                         sqlQueryObject.addInsertField("attributi", "?");
  1522.                         sqlQuery = sqlQueryObject.createSQLInsert();
  1523.                         stm = con.prepareStatement(sqlQuery);
  1524.                         stm.setLong(1, aPA.getId());
  1525.                         stm.setString(2, aa.getNome());
  1526.                         stm.setString(3, attributi);
  1527.                         stm.executeUpdate();
  1528.                         stm.close();
  1529.                         n++;
  1530.                         DriverConfigurazioneDBLib.logDebug("Aggiunto A.A.[" + aa.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
  1531.                     }
  1532.                 }
  1533.                
  1534.                 DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " A.A. alla PortaApplicativa[" + idPortaApplicativa + "]");
  1535.                
  1536.                
  1537.                 // tracciamentoConfigurazione
  1538.                 DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoDatabase, aPA.getId(),
  1539.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
  1540.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_DB);
  1541.                
  1542.                 DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoFiletrace, aPA.getId(),
  1543.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
  1544.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_FILETRACE);
  1545.                
  1546.                 DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazioneFiletrace(type, con, tracciamentoFiletraceDetails, aPA.getId(),
  1547.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA);
  1548.                
  1549.                
  1550.                 // dumpConfigurazione
  1551.                 DriverConfigurazioneDB_dumpLIB.CRUDDumpConfigurazione(type, con, aPA.getDump(), aPA.getId(), CostantiDB.DUMP_CONFIGURAZIONE_PROPRIETARIO_PA);
  1552.                
  1553.                
  1554.                 // trasformazioni
  1555.                 DriverConfigurazioneDBTrasformazioniLib.CRUDTrasformazioni(type, con, aPA.getTrasformazioni(), aPA.getId(), false);
  1556.                
  1557.                                
  1558.                 // handlers
  1559.                 if(configHandlers!=null) {
  1560.                     if(configHandlers.getRequest()!=null) {
  1561.                         DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, aPA.getId(), true, configHandlers.getRequest());
  1562.                     }
  1563.                     if(configHandlers.getResponse()!=null) {
  1564.                         DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, aPA.getId(), false, configHandlers.getResponse());
  1565.                     }
  1566.                 }
  1567.            
  1568.                
  1569.                 // extendedInfo
  1570.                 i=0;
  1571.                 if(aPA.sizeExtendedInfoList()>0 &&
  1572.                     (extInfoConfigurazioneDriver!=null)
  1573.                     ){
  1574.                     for (i = 0; i < aPA.sizeExtendedInfoList(); i++) {
  1575.                         extInfoConfigurazioneDriver.createExtendedInfo(con, DriverConfigurazioneDBLib.log, aPA, aPA.getExtendedInfo(i), CRUDType.CREATE);
  1576.                     }
  1577.                 }
  1578.                 DriverConfigurazioneDBLib.logDebug("Aggiunte " + i + " associazioni ExtendedInfo<->PortaApplicativa associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  1579.                
  1580.                
  1581.                 break;

  1582.             case UPDATE:
  1583.                 // UPDATE
  1584.                 String oldNomePA = null;
  1585.                 if(aPA.getOldIDPortaApplicativaForUpdate()!=null){
  1586.                     oldNomePA = aPA.getOldIDPortaApplicativaForUpdate().getNome();
  1587.                 }
  1588.                 if (oldNomePA == null || oldNomePA.equals(""))
  1589.                     oldNomePA = nomePorta;

  1590.                 //campi obbligatori
  1591.                 //servizio ci deve essere l'id oppure tipo e nome
  1592.                 tipoServizio = (servizio != null ? servizio.getTipo() : null);
  1593.                 nomeServizio = (servizio != null ? servizio.getNome() : null);
  1594.                 versioneServizio = (servizio != null ? servizio.getVersione() : null);
  1595.                 //se l'id non e' valido allora devono esserci necessariamente il tipo e il nome
  1596.                 if(idServizio<=0){
  1597.                     if(tipoServizio==null || tipoServizio.equals("")) throw new DriverConfigurazioneException("Tipo Servizio non impostato.");
  1598.                     if(nomeServizio==null || nomeServizio.equals("")) throw new DriverConfigurazioneException("Nome Servizio non impostato.");
  1599.                     if(versioneServizio==null) throw new DriverConfigurazioneException("Versione Servizio non impostato.");
  1600.                 }
  1601.                
  1602.                 //Azione
  1603.                 nomeAzione = (azione != null ? azione.getNome() : null);
  1604.                 patternAzione = (azione != null ? azione.getPattern() : null);
  1605.                 nomePortaDeleganteAzione = (azione != null ? azione.getNomePortaDelegante() : null);
  1606.                 forceInterfaceBased = (azione != null ? azione.getForceInterfaceBased() : null);
  1607.                 modeAzione = (azione != null ? azione.getIdentificazione() : null);
  1608.                 //Se il bean Azione nn e' presente allora non controllo nulla
  1609.                 if(azione!=null){
  1610.                     if(modeAzione==null || modeAzione.equals(""))
  1611.                         modeAzione = PortaApplicativaAzioneIdentificazione.STATIC;
  1612.                     switch (modeAzione) {
  1613.                     case CONTENT_BASED:
  1614.                     case URL_BASED:
  1615.                     case HEADER_BASED:
  1616.                         if(patternAzione==null || patternAzione.equals("")) throw new DriverConfigurazioneException("Pattern Azione non impostato.");
  1617.                         nomeAzione=null;
  1618.                         break;
  1619.                     case DELEGATED_BY:
  1620.                         if(nomePortaDeleganteAzione==null || nomePortaDeleganteAzione.equals("")) throw new DriverConfigurazioneException("Nome Porta Delegante Azione non impostata.");
  1621.                         nomeAzione=null;
  1622.                         break;
  1623.                     case INPUT_BASED:
  1624.                     case SOAP_ACTION_BASED:
  1625.                     case INTERFACE_BASED:
  1626.                     case PROTOCOL_BASED:
  1627.                         //nessun campo obbligatorio
  1628.                         break;
  1629.                     case STATIC:
  1630.                         //ci deve essere il nome
  1631.                         if(nomeAzione==null || nomeAzione.equals("")) throw new DriverConfigurazioneException("Nome Azione non impostato.");
  1632.                         patternAzione=null;
  1633.                         break;
  1634.                     default:
  1635.                         break;
  1636.                     }
  1637.                 }

  1638.                 String utenteUltimaModifica = null;
  1639.                 if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getUtenteUltimaModifica()!=null) {
  1640.                     utenteUltimaModifica = aPA.getProprietaOggetto().getUtenteUltimaModifica();
  1641.                 }
  1642.                
  1643.                 Timestamp dataUltimaModifica = null;
  1644.                 if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getDataUltimaModifica()!=null) {
  1645.                     dataUltimaModifica = new Timestamp(aPA.getProprietaOggetto().getDataUltimaModifica().getTime());
  1646.                 }
  1647.                 else {
  1648.                     dataUltimaModifica = DateManager.getTimestamp();
  1649.                 }
  1650.                
  1651.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1652.                 sqlQueryObject.addUpdateTable(CostantiDB.PORTE_APPLICATIVE);
  1653.                 sqlQueryObject.addUpdateField("descrizione", "?");
  1654.                 sqlQueryObject.addUpdateField("id_soggetto_virtuale", "?");
  1655.                 sqlQueryObject.addUpdateField("tipo_soggetto_virtuale", "?");
  1656.                 sqlQueryObject.addUpdateField("nome_soggetto_virtuale", "?");
  1657.                 sqlQueryObject.addUpdateField("id_servizio", "?");
  1658.                 sqlQueryObject.addUpdateField("tipo_servizio", "?");
  1659.                 sqlQueryObject.addUpdateField("servizio", "?");
  1660.                 sqlQueryObject.addUpdateField("versione_servizio", "?");
  1661.                 sqlQueryObject.addUpdateField("azione", "?");
  1662.                 sqlQueryObject.addUpdateField("mode_azione", "?");
  1663.                 sqlQueryObject.addUpdateField("pattern_azione", "?");
  1664.                 sqlQueryObject.addUpdateField("nome_porta_delegante_azione", "?");
  1665.                 sqlQueryObject.addUpdateField("force_interface_based_azione", "?");
  1666.                 sqlQueryObject.addUpdateField("mtom_request_mode", "?");
  1667.                 sqlQueryObject.addUpdateField("mtom_response_mode", "?");
  1668.                 sqlQueryObject.addUpdateField("security", "?");
  1669.                 sqlQueryObject.addUpdateField("security_mtom_req", "?");
  1670.                 sqlQueryObject.addUpdateField("security_mtom_res", "?");
  1671.                 sqlQueryObject.addUpdateField("security_request_mode", "?");
  1672.                 sqlQueryObject.addUpdateField("security_response_mode", "?");
  1673.                 sqlQueryObject.addUpdateField("nome_porta", "?");
  1674.                 sqlQueryObject.addUpdateField("ricevuta_asincrona_sim", "?");
  1675.                 sqlQueryObject.addUpdateField("ricevuta_asincrona_asim", "?");
  1676.                 sqlQueryObject.addUpdateField("integrazione", "?");
  1677.                 sqlQueryObject.addUpdateField("validazione_contenuti_stato", "?");
  1678.                 sqlQueryObject.addUpdateField("validazione_contenuti_tipo", "?");
  1679.                 sqlQueryObject.addUpdateField("validazione_contenuti_mtom", "?");  
  1680.                 sqlQueryObject.addUpdateField("id_soggetto", "?");
  1681.                 sqlQueryObject.addUpdateField("allega_body", "?");
  1682.                 sqlQueryObject.addUpdateField("scarta_body", "?");
  1683.                 sqlQueryObject.addUpdateField("gestione_manifest", "?");
  1684.                 sqlQueryObject.addUpdateField("stateless", "?");
  1685.                 sqlQueryObject.addUpdateField("behaviour", "?");
  1686.                 sqlQueryObject.addUpdateField("autenticazione", "?");
  1687.                 sqlQueryObject.addUpdateField("autenticazione_opzionale", "?");
  1688.                 sqlQueryObject.addUpdateField("token_policy", "?");
  1689.                 sqlQueryObject.addUpdateField("token_opzionale", "?");
  1690.                 sqlQueryObject.addUpdateField("token_validazione", "?");
  1691.                 sqlQueryObject.addUpdateField("token_introspection", "?");
  1692.                 sqlQueryObject.addUpdateField("token_user_info", "?");
  1693.                 sqlQueryObject.addUpdateField("token_forward", "?");
  1694.                 sqlQueryObject.addUpdateField("token_options", "?");
  1695.                 sqlQueryObject.addUpdateField("token_authn_issuer", "?");
  1696.                 sqlQueryObject.addUpdateField("token_authn_client_id", "?");
  1697.                 sqlQueryObject.addUpdateField("token_authn_subject", "?");
  1698.                 sqlQueryObject.addUpdateField("token_authn_username", "?");
  1699.                 sqlQueryObject.addUpdateField("token_authn_email", "?");
  1700.                 sqlQueryObject.addUpdateField("autorizzazione", "?");
  1701.                 sqlQueryObject.addUpdateField("autorizzazione_xacml", "?");
  1702.                 sqlQueryObject.addUpdateField("autorizzazione_contenuto", "?");
  1703.                 sqlQueryObject.addUpdateField("ruoli_match", "?");
  1704.                 sqlQueryObject.addUpdateField("token_sa_stato", "?");
  1705.                 sqlQueryObject.addUpdateField("token_ruoli_stato", "?");
  1706.                 sqlQueryObject.addUpdateField("token_ruoli_match", "?");
  1707.                 sqlQueryObject.addUpdateField("token_ruoli_tipologia", "?");
  1708.                 sqlQueryObject.addUpdateField("scope_stato", "?");
  1709.                 sqlQueryObject.addUpdateField("scope_match", "?");
  1710.                 sqlQueryObject.addUpdateField("ricerca_porta_azione_delegata", "?");
  1711.                 sqlQueryObject.addUpdateField("msg_diag_severita", "?");
  1712.                 sqlQueryObject.addUpdateField("tracciamento_stato", "?");
  1713.                 sqlQueryObject.addUpdateField("tracciamento_esiti", "?");
  1714.                 sqlQueryObject.addUpdateField("transazioni_tempi", "?");
  1715.                 sqlQueryObject.addUpdateField("transazioni_token", "?");
  1716.                 sqlQueryObject.addUpdateField("stato", "?");
  1717.                 // cors
  1718.                 sqlQueryObject.addUpdateField("cors_stato", "?");
  1719.                 sqlQueryObject.addUpdateField("cors_tipo", "?");
  1720.                 sqlQueryObject.addUpdateField("cors_all_allow_origins", "?");
  1721.                 sqlQueryObject.addUpdateField("cors_all_allow_methods", "?");
  1722.                 sqlQueryObject.addUpdateField("cors_all_allow_headers", "?");
  1723.                 sqlQueryObject.addUpdateField("cors_allow_credentials", "?");
  1724.                 sqlQueryObject.addUpdateField("cors_allow_max_age", "?");
  1725.                 sqlQueryObject.addUpdateField("cors_allow_max_age_seconds", "?");
  1726.                 sqlQueryObject.addUpdateField("cors_allow_origins", "?");
  1727.                 sqlQueryObject.addUpdateField("cors_allow_headers", "?");
  1728.                 sqlQueryObject.addUpdateField("cors_allow_methods", "?");
  1729.                 sqlQueryObject.addUpdateField("cors_allow_expose_headers", "?");
  1730.                 // responseCaching
  1731.                 sqlQueryObject.addUpdateField("response_cache_stato", "?");
  1732.                 sqlQueryObject.addUpdateField("response_cache_seconds", "?");
  1733.                 sqlQueryObject.addUpdateField("response_cache_max_msg_size", "?");
  1734.                 sqlQueryObject.addUpdateField("response_cache_control_nocache", "?");
  1735.                 sqlQueryObject.addUpdateField("response_cache_control_maxage", "?");
  1736.                 sqlQueryObject.addUpdateField("response_cache_control_nostore", "?");
  1737.                 sqlQueryObject.addUpdateField("response_cache_hash_url", "?");
  1738.                 sqlQueryObject.addUpdateField("response_cache_hash_query", "?");
  1739.                 sqlQueryObject.addUpdateField("response_cache_hash_query_list", "?");
  1740.                 sqlQueryObject.addUpdateField("response_cache_hash_headers", "?");
  1741.                 sqlQueryObject.addUpdateField("response_cache_hash_hdr_list", "?");
  1742.                 sqlQueryObject.addUpdateField("response_cache_hash_payload", "?");
  1743.                 // servizio applicativo default
  1744.                 sqlQueryObject.addUpdateField("id_sa_default", "?");
  1745.                 // id
  1746.                 sqlQueryObject.addUpdateField("id_accordo", "?");
  1747.                 sqlQueryObject.addUpdateField("id_port_type", "?");
  1748.                 sqlQueryObject.addUpdateField("scadenza_correlazione_appl", "?");
  1749.                 // options
  1750.                 sqlQueryObject.addUpdateField("options", "?");
  1751.                 // canale
  1752.                 sqlQueryObject.addUpdateField("canale", "?");
  1753.                
  1754.                 if(utenteUltimaModifica!=null) {
  1755.                     sqlQueryObject.addUpdateField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA, "?");
  1756.                 }
  1757.                 if(dataUltimaModifica!=null) {
  1758.                     sqlQueryObject.addUpdateField(CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA, "?");
  1759.                 }
  1760.                
  1761.                 sqlQueryObject.addWhereCondition("nome_porta=?");
  1762.                 sqlQueryObject.setANDLogicOperator(true);
  1763.                 sqlQuery = sqlQueryObject.createSQLUpdate();
  1764.                 stm = con.prepareStatement(sqlQuery);

  1765.                 idPortaApplicativa = DBUtils.getIdPortaApplicativa(oldNomePA, con, DriverConfigurazioneDBLib.tipoDB);
  1766.                 //  Puo' darsi che l'old soggetto e il nuovo soggetto siano la stesso soggetto della tabella. E' stato cambiato il nome.
  1767.                 if(idPortaApplicativa<=0) {
  1768.                     idPortaApplicativa = DBUtils.getIdPortaApplicativa(oldNomePA, con, DriverConfigurazioneDBLib.tipoDB);
  1769.                 }
  1770.                 if(idPortaApplicativa<=0)
  1771.                     throw new DriverConfigurazioneException("Impossibile recuperare l'id della Porta Applicativa nomePA["+oldNomePA+"] (old["+
  1772.                             (aPA.getOldIDPortaApplicativaForUpdate()!=null?aPA.getOldIDPortaApplicativaForUpdate().getNome():null)+"]");
  1773.                                        
  1774.                 index = 1;
  1775.                
  1776.                 stm.setString(index++, descrizione);
  1777.                 stm.setLong(index++, idSoggVirt);
  1778.                 stm.setString(index++, tipoSoggVirt);//(soggVirt != null ? soggVirt.getTipo() : null));
  1779.                 stm.setString(index++, nomeSoggVirt);//(soggVirt != null ? soggVirt.getNome() : null));
  1780.                 stm.setLong(index++, idServizio);
  1781.                 stm.setString(index++, tipoServizio);
  1782.                 stm.setString(index++, nomeServizio);
  1783.                 stm.setInt(index++, versioneServizio);
  1784.                 stm.setString(index++, (azione != null ? azione.getNome() : null));
  1785.                 if(modeAzione!=null){
  1786.                     stm.setString(index++, modeAzione.toString());
  1787.                 }
  1788.                 else{
  1789.                     stm.setString(index++, null);
  1790.                 }
  1791.                 stm.setString(index++, patternAzione);
  1792.                 stm.setString(index++, nomePortaDeleganteAzione);
  1793.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(forceInterfaceBased));
  1794.                 // mtom
  1795.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(mtomModeRequest));
  1796.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(mtomModeResponse));
  1797.                 // messageSecurity
  1798.                 stm.setString(index++, messageSecurityStatus);
  1799.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(messageSecurityApplyMtomRequest));
  1800.                 stm.setString(index++, DriverConfigurazioneDBLib.getValue(messageSecurityApplyMtomResponse));
  1801.                 stm.setString(index++, securityRequestMode);
  1802.                 stm.setString(index++, securityResponseMode);
  1803.                 // nomePorta
  1804.                 stm.setString(index++, nomePorta);
  1805.                 //ricevuta asincrona_asimmetrica/simmetrica
  1806.                 stm.setString(index++, aPA.getRicevutaAsincronaSimmetrica()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicevutaAsincronaSimmetrica()) : null);
  1807.                 stm.setString(index++, aPA.getRicevutaAsincronaAsimmetrica()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicevutaAsincronaAsimmetrica()) : null);
  1808.                 //integrazione
  1809.                 stm.setString(index++, aPA.getIntegrazione()!=null ? aPA.getIntegrazione() : null);
  1810.                 //validazione xsd
  1811.                 stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getStato()) : null);
  1812.                 stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getTipo()) : null);
  1813.                 stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getAcceptMtomMessage()) : null);
  1814.                 stm.setLong(index++, idProprietario);//il nuovo proprietario se cambiato
  1815.                 // InvocazionePorta: funzionalita' attachment
  1816.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getAllegaBody()) : null);
  1817.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getScartaBody()) : null);
  1818.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getGestioneManifest()) : null);
  1819.                 // Stateless
  1820.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getStateless()) : null);
  1821.                 // Behaviour
  1822.                 stm.setString(index++, behaviour);
  1823.                 // Autenticazione
  1824.                 stm.setString(index++, autenticazione);
  1825.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getAutenticazioneOpzionale()) : null);
  1826.                 // token
  1827.                 stm.setString(index++, gestioneToken!=null ? gestioneToken.getPolicy() : null);
  1828.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getTokenOpzionale()) : null);
  1829.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getValidazione()) : null);
  1830.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getIntrospection()) : null);
  1831.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getUserInfo()) : null);
  1832.                 stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getForward()) : null);
  1833.                 stm.setString(index++, gestioneToken!=null ? gestioneToken.getOptions() : null);
  1834.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  1835.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getIssuer()) : null);
  1836.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  1837.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getClientId()) : null);
  1838.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  1839.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getSubject()) : null);
  1840.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  1841.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getUsername()) : null);
  1842.                 stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
  1843.                         DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getEmail()) : null);
  1844.                 // Autorizzazione
  1845.                 stm.setString(index++, autorizzazione);
  1846.                 stm.setString(index++, autorizzazioneXacmlPolicy);
  1847.                 stm.setString(index++, aPA!=null ? aPA.getAutorizzazioneContenuto() : null);
  1848.                 // Ruoli
  1849.                 stm.setString(index++, aPA!=null && aPA.getRuoli()!=null && aPA.getRuoli().getMatch()!=null ?
  1850.                         aPA.getRuoli().getMatch().getValue() : null);
  1851.                 // Token sa
  1852.                 stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getAutorizzazioneApplicativi()!=null ?
  1853.                         DriverConfigurazioneDBLib.getValue(aPA.getAutorizzazioneToken().getAutorizzazioneApplicativi()) : null);    
  1854.                 // Token ruoli
  1855.                 stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getAutorizzazioneRuoli()!=null ?
  1856.                         DriverConfigurazioneDBLib.getValue(aPA.getAutorizzazioneToken().getAutorizzazioneRuoli()) : null);
  1857.                 stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getRuoli()!=null &&
  1858.                         aPA.getAutorizzazioneToken().getRuoli().getMatch()!=null ?
  1859.                         aPA.getAutorizzazioneToken().getRuoli().getMatch().getValue() : null);
  1860.                 stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getTipologiaRuoli()!=null ?
  1861.                         aPA.getAutorizzazioneToken().getTipologiaRuoli().getValue() : null);
  1862.                 // Scope
  1863.                 stm.setString(index++, aPA!=null && aPA.getScope()!=null && aPA.getScope().getStato()!=null ?
  1864.                         DriverConfigurazioneDBLib.getValue(aPA.getScope().getStato()) : null);
  1865.                 stm.setString(index++, aPA!=null && aPA.getScope()!=null && aPA.getScope().getMatch()!=null ?
  1866.                         aPA.getScope().getMatch().getValue() : null);
  1867.                 // RicercaPortaAzioneDelegata
  1868.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicercaPortaAzioneDelegata()) : null);
  1869.                 // Tracciamento
  1870.                 stm.setString(index++, msgDiagSeverita);
  1871.                 stm.setString(index++, tracciamentoStato);
  1872.                 stm.setString(index++, tracciamentoEsiti);
  1873.                 stm.setString(index++, transazioniTempiElaborazione);
  1874.                 stm.setString(index++, transazioniToken);
  1875.                 // Stato
  1876.                 stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getStato()) : null);
  1877.                 // cors
  1878.                 stm.setString(index++, corsStato);
  1879.                 stm.setString(index++, corsTipo);
  1880.                 stm.setString(index++, corsAllAllowOrigins);
  1881.                 stm.setString(index++, corsAllAllowMethods);
  1882.                 stm.setString(index++, corsAllAllowHeaders);
  1883.                 stm.setString(index++, corsAllowCredentials);
  1884.                 stm.setInt(index++, corsAllowMaxAge);
  1885.                 if(corsAllowMaxAgeSeconds!=null) {
  1886.                     stm.setInt(index++, corsAllowMaxAgeSeconds);
  1887.                 }
  1888.                 else {
  1889.                     stm.setNull(index++, java.sql.Types.INTEGER);
  1890.                 }
  1891.                 stm.setString(index++, corsAllowOrigins);
  1892.                 stm.setString(index++, corsAllowHeaders);
  1893.                 stm.setString(index++, corsAllowMethods);
  1894.                 stm.setString(index++, corsAllowExposeHeaders);            
  1895.                 // responseCaching
  1896.                 stm.setString(index++, responseCacheStato);
  1897.                 if(responseCacheSeconds!=null) {
  1898.                     stm.setInt(index++, responseCacheSeconds);
  1899.                 }
  1900.                 else {
  1901.                     stm.setNull(index++, java.sql.Types.INTEGER);
  1902.                 }
  1903.                 if(responseCacheMaxMsgSize!=null) {
  1904.                     stm.setLong(index++, responseCacheMaxMsgSize);
  1905.                 }
  1906.                 else {
  1907.                     stm.setNull(index++, java.sql.Types.BIGINT);
  1908.                 }
  1909.                 stm.setInt(index++, responseCacheNoCache ? CostantiDB.TRUE : CostantiDB.FALSE);
  1910.                 stm.setInt(index++, responseCacheMaxAge ? CostantiDB.TRUE : CostantiDB.FALSE);
  1911.                 stm.setInt(index++, responseCacheNoStore ? CostantiDB.TRUE : CostantiDB.FALSE);
  1912.                 stm.setString(index++, responseCacheHashUrl);
  1913.                 stm.setString(index++, responseCacheHashQuery);
  1914.                 stm.setString(index++, responseCacheHashQueryList);
  1915.                 stm.setString(index++, responseCacheHashHeaders);
  1916.                 stm.setString(index++, responseCacheHashHeadersList);
  1917.                 stm.setString(index++, responseCacheHashPayload);
  1918.                
  1919.                 // servizio applicativo default
  1920.                 idServizioApplicativoDefault = -1;
  1921.                 if(aPA.getServizioApplicativoDefault()!=null) {
  1922.                     idServizioApplicativoDefault = DBUtils.getIdServizioApplicativo(aPA.getServizioApplicativoDefault(), tipoProprietario, nomeProprietario,
  1923.                             con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
  1924.                     if(idServizioApplicativoDefault<=0) {
  1925.                         throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa(CREATE)] Impossibile recuperare l'ID del servizio applicativo di default '"+aPA.getServizioApplicativoDefault()+"'.");
  1926.                     }
  1927.                 }
  1928.                 stm.setLong(index++, idServizioApplicativoDefault);
  1929.                
  1930.                 // id
  1931.                 stm.setLong(index++, aPA.getIdAccordo() !=null ? aPA.getIdAccordo() : -1L);
  1932.                 stm.setLong(index++, aPA.getIdPortType() !=null ? aPA.getIdPortType() : -1L);
  1933.                 // ScadenzaCorrelazioneApplicativa
  1934.                 stm.setString(index++, aPA.getCorrelazioneApplicativa()!=null ? aPA.getCorrelazioneApplicativa().getScadenza() : null);
  1935.                 // options
  1936.                 stm.setString(index++, aPA.getOptions());
  1937.                 // canale
  1938.                 stm.setString(index++, aPA.getCanale());
  1939.                
  1940.                 if(utenteUltimaModifica!=null) {
  1941.                     stm.setString(index++, utenteUltimaModifica);
  1942.                 }
  1943.                
  1944.                 if(dataUltimaModifica!=null) {
  1945.                     stm.setTimestamp(index++, dataUltimaModifica);
  1946.                 }
  1947.                
  1948.                 // where
  1949.                 stm.setString(index++, oldNomePA);

  1950.                 n = stm.executeUpdate();
  1951.                 stm.close();
  1952.                 DriverConfigurazioneDBLib.logDebug("Updated " + n + " row(s).");

  1953.                
  1954.                
  1955.                 // mtom
  1956.                
  1957.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1958.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MTOM_REQUEST);
  1959.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1960.                 sqlQuery = sqlQueryObject.createSQLDelete();
  1961.                 stm = con.prepareStatement(sqlQuery);
  1962.                 stm.setLong(1, idPortaApplicativa);
  1963.                 stm.executeUpdate();
  1964.                 stm.close();

  1965.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1966.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MTOM_RESPONSE);
  1967.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1968.                 sqlQuery = sqlQueryObject.createSQLDelete();
  1969.                 stm = con.prepareStatement(sqlQuery);
  1970.                 stm.setLong(1, idPortaApplicativa);
  1971.                 stm.executeUpdate();
  1972.                 stm.close();
  1973.                
  1974.                 if(mtomProcessor!=null){
  1975.                
  1976.                     MtomProcessorFlowParameter reqParam = null;
  1977.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  1978.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MTOM_REQUEST);
  1979.                     sqlQueryObject.addInsertField("id_porta", "?");
  1980.                     sqlQueryObject.addInsertField("nome", "?");
  1981.                     sqlQueryObject.addInsertField("pattern", "?");
  1982.                     sqlQueryObject.addInsertField("content_type", "?");
  1983.                     sqlQueryObject.addInsertField("required", "?");
  1984.                     sqlQuery = sqlQueryObject.createSQLInsert();
  1985.                     stm = con.prepareStatement(sqlQuery);
  1986.    
  1987.                     i = 0;
  1988.                     if(mtomProcessor.getRequestFlow()!=null){
  1989.                         MtomProcessorFlow flow = mtomProcessor.getRequestFlow();
  1990.                         for (i = 0; i < flow.sizeParameterList(); i++) {
  1991.                             reqParam = flow.getParameter(i);
  1992.                             stm.setLong(1, idPortaApplicativa);
  1993.                             stm.setString(2, reqParam.getNome());
  1994.                             stm.setString(3, reqParam.getPattern());
  1995.                             stm.setString(4, reqParam.getContentType());
  1996.                             stm.setInt(5, reqParam.getRequired() ? CostantiDB.TRUE : CostantiDB.FALSE);
  1997.    
  1998.                             stm.executeUpdate();
  1999.                         }  
  2000.                     }
  2001.                     stm.close();
  2002.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " mtom request flow con id=" + idPortaApplicativa);
  2003.    
  2004.                     MtomProcessorFlowParameter resParam = null;
  2005.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2006.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MTOM_RESPONSE);
  2007.                     sqlQueryObject.addInsertField("id_porta", "?");
  2008.                     sqlQueryObject.addInsertField("nome", "?");
  2009.                     sqlQueryObject.addInsertField("pattern", "?");
  2010.                     sqlQueryObject.addInsertField("content_type", "?");
  2011.                     sqlQueryObject.addInsertField("required", "?");
  2012.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2013.                     stm = con.prepareStatement(sqlQuery);
  2014.                    
  2015.                     i = 0;
  2016.                     if(mtomProcessor.getResponseFlow()!=null){
  2017.                         MtomProcessorFlow flow = mtomProcessor.getResponseFlow();
  2018.                         for (i = 0; i < flow.sizeParameterList(); i++) {
  2019.                             resParam = flow.getParameter(i);
  2020.                             stm.setLong(1, idPortaApplicativa);
  2021.                             stm.setString(2, resParam.getNome());
  2022.                             stm.setString(3, resParam.getPattern());
  2023.                             stm.setString(4, resParam.getContentType());
  2024.                             stm.setInt(5, resParam.getRequired() ? CostantiDB.TRUE : CostantiDB.FALSE);
  2025.    
  2026.                             stm.executeUpdate();
  2027.                         }
  2028.                     }
  2029.                     stm.close();
  2030.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " mtom response flow con id=" + idPortaApplicativa);
  2031.                    
  2032.                 }
  2033.                
  2034.                
  2035.                 // se security abilitato setto la lista
  2036.                 // la lista contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
  2037.                 /**if ((messageSecurity != null) && CostantiConfigurazione.ABILITATO.toString().equals(messageSecurityStatus) )  {*/
  2038.                 // Devo settarli sempre se ci sono, in modo che lo switch abilitato-disabilitato funzioni
  2039.                 if ((messageSecurity != null) )  {

  2040.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2041.                     sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
  2042.                     sqlQueryObject.addWhereCondition("id_porta=?");
  2043.                     sqlQuery = sqlQueryObject.createSQLDelete();
  2044.                     stm = con.prepareStatement(sqlQuery);
  2045.                     stm.setLong(1, idPortaApplicativa);
  2046.                     stm.executeUpdate();
  2047.                     stm.close();

  2048.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2049.                     sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
  2050.                     sqlQueryObject.addWhereCondition("id_porta=?");
  2051.                     sqlQuery = sqlQueryObject.createSQLDelete();
  2052.                     stm = con.prepareStatement(sqlQuery);
  2053.                     stm.setLong(1, idPortaApplicativa);
  2054.                     stm.executeUpdate();
  2055.                     stm.close();

  2056.                     //inserisco i valori presenti nella lista
  2057.                     MessageSecurityFlowParameter reqParam = null;
  2058.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2059.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
  2060.                     sqlQueryObject.addInsertField("id_porta", "?");
  2061.                     sqlQueryObject.addInsertField("nome", "?");
  2062.                     sqlQueryObject.addInsertField("valore", "?");
  2063.                     sqlQueryObject.addInsertField("enc_value", "?");
  2064.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2065.                     stm = con.prepareStatement(sqlQuery);

  2066.                     i = 0;
  2067.                     if(messageSecurity.getRequestFlow()!=null){
  2068.                         MessageSecurityFlow flow = messageSecurity.getRequestFlow();
  2069.                         for (i = 0; i < flow.sizeParameterList(); i++) {
  2070.                             reqParam = flow.getParameter(i);
  2071.                             int indexSec = 1;
  2072.                             stm.setLong(indexSec++, idPortaApplicativa);
  2073.                             stm.setString(indexSec++, reqParam.getNome());
  2074.                            
  2075.                             String plainValue = reqParam.getValore();
  2076.                             String encValue = null;
  2077.                             if(driverBYOK!=null &&
  2078.                                     (
  2079.                                             DriverConfigurazioneDB_genericPropertiesDriver.isConfidentialProperty(securityRequestMode, reqParam.getNome())
  2080.                                             ||
  2081.                                             BYOKUtilities.isWrappedValue(plainValue)
  2082.                                     )
  2083.                             ) {
  2084.                                 BYOKWrappedValue byokValue = driverBYOK.wrap(plainValue);
  2085.                                 if(byokValue!=null) {
  2086.                                     encValue = byokValue.getWrappedValue();
  2087.                                     plainValue = byokValue.getWrappedPlainValue();
  2088.                                 }
  2089.                             }
  2090.                             stm.setString(indexSec++, plainValue);
  2091.                             stm.setString(indexSec++, encValue);
  2092.                            
  2093.                             stm.executeUpdate();
  2094.                         }
  2095.                     }
  2096.                     stm.close();
  2097.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " request flow con id=" + idPortaApplicativa);

  2098.                     MessageSecurityFlowParameter resParam = null;
  2099.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2100.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
  2101.                     sqlQueryObject.addInsertField("id_porta", "?");
  2102.                     sqlQueryObject.addInsertField("nome", "?");
  2103.                     sqlQueryObject.addInsertField("valore", "?");
  2104.                     sqlQueryObject.addInsertField("enc_value", "?");
  2105.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2106.                     stm = con.prepareStatement(sqlQuery);
  2107.                    
  2108.                     i = 0;
  2109.                     if(messageSecurity.getResponseFlow()!=null){
  2110.                         MessageSecurityFlow flow = messageSecurity.getResponseFlow();
  2111.                         for (i = 0; i < flow.sizeParameterList(); i++) {
  2112.                             resParam = flow.getParameter(i);
  2113.                             int indexSec = 1;
  2114.                             stm.setLong(indexSec++, idPortaApplicativa);
  2115.                             stm.setString(indexSec++, resParam.getNome());
  2116.                            
  2117.                             String plainValue = resParam.getValore();
  2118.                             String encValue = null;
  2119.                             if(driverBYOK!=null &&
  2120.                                     (
  2121.                                             DriverConfigurazioneDB_genericPropertiesDriver.isConfidentialProperty(securityResponseMode, resParam.getNome())
  2122.                                             ||
  2123.                                             BYOKUtilities.isWrappedValue(plainValue)
  2124.                                     )
  2125.                             ) {
  2126.                                 BYOKWrappedValue byokValue = driverBYOK.wrap(plainValue);
  2127.                                 if(byokValue!=null) {
  2128.                                     encValue = byokValue.getWrappedValue();
  2129.                                     plainValue = byokValue.getWrappedPlainValue();
  2130.                                 }
  2131.                             }
  2132.                             stm.setString(indexSec++, plainValue);
  2133.                             stm.setString(indexSec++, encValue);
  2134.                            
  2135.                             stm.executeUpdate();
  2136.                         }
  2137.                     }
  2138.                     stm.close();
  2139.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " response flow con id=" + idPortaApplicativa);
  2140.                 }

  2141.                
  2142.                 // la lista di correlazioni applicative contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
  2143.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2144.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE);
  2145.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2146.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2147.                 stm = con.prepareStatement(sqlQuery);
  2148.                 stm.setLong(1, idPortaApplicativa);
  2149.                 stm.executeUpdate();
  2150.                 stm.close();
  2151.                
  2152.                 if (corrApp != null) {
  2153.                     //inserisco i valori presenti nella lista
  2154.                     CorrelazioneApplicativaElemento cae = null;
  2155.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2156.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE);
  2157.                     sqlQueryObject.addInsertField("id_porta", "?");
  2158.                     sqlQueryObject.addInsertField("nome_elemento", "?");
  2159.                     sqlQueryObject.addInsertField("mode_correlazione", "?");
  2160.                     sqlQueryObject.addInsertField("pattern", "?");
  2161.                     sqlQueryObject.addInsertField("identificazione_fallita", "?");
  2162.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2163.                     stm = con.prepareStatement(sqlQuery);

  2164.                     for (i = 0; i < corrApp.sizeElementoList(); i++) {
  2165.                         cae = corrApp.getElemento(i);
  2166.                         stm.setLong(1, idPortaApplicativa);
  2167.                         stm.setString(2, cae.getNome());
  2168.                         stm.setString(3, DriverConfigurazioneDBLib.getValue(cae.getIdentificazione()));
  2169.                         if (cae.getPattern() != null)
  2170.                             stm.setString(4, cae.getPattern());
  2171.                         else
  2172.                             stm.setString(4, "");
  2173.                         stm.setString(5, DriverConfigurazioneDBLib.getValue(cae.getIdentificazioneFallita()));
  2174.                         stm.executeUpdate();
  2175.                     }
  2176.                     stm.close();
  2177.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " correlazione applicativa con id=" + idPortaApplicativa);
  2178.                 }
  2179.                
  2180.                 // la lista di correlazioni applicative risposta contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
  2181.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2182.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE_RISPOSTA);
  2183.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2184.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2185.                 stm = con.prepareStatement(sqlQuery);
  2186.                 stm.setLong(1, idPortaApplicativa);
  2187.                 stm.executeUpdate();
  2188.                 stm.close();
  2189.                
  2190.                 if (corrAppRisposta != null) {
  2191.                     //inserisco i valori presenti nella lista
  2192.                     CorrelazioneApplicativaRispostaElemento cae = null;
  2193.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2194.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE_RISPOSTA);
  2195.                     sqlQueryObject.addInsertField("id_porta", "?");
  2196.                     sqlQueryObject.addInsertField("nome_elemento", "?");
  2197.                     sqlQueryObject.addInsertField("mode_correlazione", "?");
  2198.                     sqlQueryObject.addInsertField("pattern", "?");
  2199.                     sqlQueryObject.addInsertField("identificazione_fallita", "?");
  2200.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2201.                     stm = con.prepareStatement(sqlQuery);

  2202.                     for (i = 0; i < corrAppRisposta.sizeElementoList(); i++) {
  2203.                         cae = corrAppRisposta.getElemento(i);
  2204.                         stm.setLong(1, idPortaApplicativa);
  2205.                         stm.setString(2, cae.getNome());
  2206.                         stm.setString(3, DriverConfigurazioneDBLib.getValue(cae.getIdentificazione()));
  2207.                         if (cae.getPattern() != null)
  2208.                             stm.setString(4, cae.getPattern());
  2209.                         else
  2210.                             stm.setString(4, "");
  2211.                         stm.setString(5, DriverConfigurazioneDBLib.getValue(cae.getIdentificazioneFallita()));
  2212.                         stm.executeUpdate();
  2213.                     }
  2214.                     stm.close();
  2215.                     DriverConfigurazioneDBLib.logDebug("Inserted " + i + " correlazione applicativa risposta con id=" + idPortaApplicativa);
  2216.                 }
  2217.        
  2218.                
  2219.                 /*Sincronizzazione servizi applicativi*/
  2220.                 //la lista dei servizi applicativi passata contiene tutti e soli i servizi applicativi necessari
  2221.                 //quindi nel db devono essere presenti tutti e solo quelli presenti nella lista

  2222.                
  2223.                
  2224.                 // serviziapplicativi props        
  2225.                
  2226.                 idsPaSa = new ArrayList<>();
  2227.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2228.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
  2229.                 sqlQueryObject.addSelectField("id");
  2230.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2231.                 sqlQueryObject.setANDLogicOperator(true);
  2232.                 sqlQuery = sqlQueryObject.createSQLQuery();
  2233.                 stm = con.prepareStatement(sqlQuery);
  2234.                 stm.setLong(1, idPortaApplicativa);
  2235.                 rs = stm.executeQuery();
  2236.                 while(rs.next()) {
  2237.                     idsPaSa.add(rs.getLong("id"));
  2238.                 }
  2239.                 rs.close();
  2240.                 stm.close();
  2241.                
  2242.                 if(!idsPaSa.isEmpty()) {
  2243.                     for (Long idsapa : idsPaSa) {
  2244.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2245.                         sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA_PROPS);
  2246.                         sqlQueryObject.addWhereCondition("id_porta=?");
  2247.                         sqlQuery = sqlQueryObject.createSQLDelete();
  2248.                         stm = con.prepareStatement(sqlQuery);
  2249.                         stm.setLong(1, idsapa);
  2250.                         n=stm.executeUpdate();
  2251.                         stm.close();
  2252.                         DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta relative all'associazione '"+idsapa+"' (Porta Applicativa "+idPortaApplicativa+")");
  2253.                     }
  2254.                 }
  2255.                
  2256.                
  2257.                 //cancello i servizi applicativi associati alla porta e inserisco tutti e soli quelli presenti in lista
  2258.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2259.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA);
  2260.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2261.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2262.                 stm = con.prepareStatement(sqlQuery);
  2263.                 stm.setLong(1, idPortaApplicativa);
  2264.                 n=stm.executeUpdate();
  2265.                 stm.close();
  2266.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi associati alla Porta Applicativa "+idPortaApplicativa);
  2267.                
  2268.                
  2269.                
  2270.                 //scrivo la lista nel db
  2271.                 n=0;
  2272.                 idsPaSa = new ArrayList<>();
  2273.                 for (i = 0; i < aPA.sizeServizioApplicativoList(); i++) {
  2274.                     PortaApplicativaServizioApplicativo servizioApplicativo = aPA.getServizioApplicativo(i);

  2275.                     String nomeSA = servizioApplicativo.getNome();
  2276.                     //il tipo e il nome proprietario servizio applicativo sono gli stessi della porta delegata
  2277.                     String nomeProprietarioSA = aPA.getNomeSoggettoProprietario();
  2278.                     String tipoProprietarioSA = aPA.getTipoSoggettoProprietario();
  2279.                     if (nomeSA == null || nomeSA.equals(""))
  2280.                         throw new DriverConfigurazioneException("Nome del ServizioApplicativo associato non valido.");
  2281.                     if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
  2282.                         throw new DriverConfigurazioneException("Nome Proprietario del ServizioApplicativo associato non valido.");
  2283.                     if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
  2284.                         throw new DriverConfigurazioneException("Tipo Proprietario del ServizioApplicativo associato non valido.");

  2285.                     long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);

  2286.                     if (idSA <= 0)
  2287.                         throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");

  2288.                     idsPaSa.add(idSA);
  2289.                    
  2290.                     String utenteRichiedenteSA = null;
  2291.                     if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
  2292.                             servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteRichiedente()!=null) {
  2293.                         utenteRichiedenteSA = servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteRichiedente();
  2294.                     }
  2295.                     else if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getUtenteRichiedente()!=null) {
  2296.                         utenteRichiedenteSA =   aPA.getProprietaOggetto().getUtenteRichiedente(); // uso richiedente della PA
  2297.                     }
  2298.                    
  2299.                     Timestamp dataCreazioneSA = null;
  2300.                     if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
  2301.                             servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataCreazione()!=null) {
  2302.                         dataCreazioneSA = new Timestamp(servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataCreazione().getTime());
  2303.                     }
  2304.                     else if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getDataCreazione()!=null) {
  2305.                         dataCreazioneSA =   new Timestamp(aPA.getProprietaOggetto().getDataCreazione().getTime()); // uso data creazione della PA
  2306.                     }
  2307.                     else {
  2308.                         dataCreazioneSA = DateManager.getTimestamp();
  2309.                     }
  2310.                    
  2311.                     String utenteUltimaModificaSA = null;
  2312.                     if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
  2313.                             servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteUltimaModifica()!=null) {
  2314.                         utenteUltimaModificaSA = servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteUltimaModifica();
  2315.                     }
  2316.                    
  2317.                     Timestamp dataUltimaModificaSA = null;
  2318.                     if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
  2319.                             servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataUltimaModifica()!=null) {
  2320.                         dataUltimaModificaSA = new Timestamp(servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataUltimaModifica().getTime());
  2321.                     }
  2322.                     /**else { In modo da gestire la data di creazione che comunque si figura sempre all'interno di un update della porta applicativa
  2323.                         dataUltimaModificaSA = DateManager.getTimestamp();
  2324.                     }*/
  2325.                    
  2326.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2327.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA);
  2328.                     sqlQueryObject.addInsertField("id_porta", "?");
  2329.                     sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
  2330.                     sqlQueryObject.addInsertField("connettore_nome", "?");
  2331.                     sqlQueryObject.addInsertField("connettore_notifica", "?");
  2332.                     sqlQueryObject.addInsertField("connettore_descrizione", "?");
  2333.                     sqlQueryObject.addInsertField("connettore_stato", "?");
  2334.                     sqlQueryObject.addInsertField("connettore_scheduling", "?");
  2335.                     sqlQueryObject.addInsertField("connettore_filtri", "?");
  2336.                     sqlQueryObject.addInsertField("connettore_coda", "?");
  2337.                     sqlQueryObject.addInsertField("connettore_priorita", "?");
  2338.                     sqlQueryObject.addInsertField("connettore_max_priorita", "?");
  2339.                     sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE, "?");
  2340.                     sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE, "?");
  2341.                     sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA, "?");
  2342.                     sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA, "?");
  2343.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2344.                     stm = con.prepareStatement(sqlQuery);
  2345.                
  2346.                     int indexSA = 1;
  2347.                     stm.setLong(indexSA++, idPortaApplicativa);
  2348.                     stm.setLong(indexSA++, idSA);
  2349.                     stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? servizioApplicativo.getDatiConnettore().getNome() : null);
  2350.                     stm.setInt(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? (servizioApplicativo.getDatiConnettore().isNotifica() ? CostantiDB.TRUE : CostantiDB.FALSE) : CostantiDB.FALSE);
  2351.                     stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? servizioApplicativo.getDatiConnettore().getDescrizione() : null);
  2352.                     stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? DriverConfigurazioneDBLib.getValue(servizioApplicativo.getDatiConnettore().getStato()) : null);
  2353.                     stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? DriverConfigurazioneDBLib.getValue(servizioApplicativo.getDatiConnettore().getScheduling()) : null);
  2354.                    
  2355.                     String filtri = null;
  2356.                     if(servizioApplicativo.getDatiConnettore()!=null &&
  2357.                         (servizioApplicativo.getDatiConnettore().getFiltroList()!=null && servizioApplicativo.getDatiConnettore().sizeFiltroList()>0)
  2358.                         ){
  2359.                         StringBuilder bf = new StringBuilder();
  2360.                         for (int k = 0; k < servizioApplicativo.getDatiConnettore().sizeFiltroList(); k++) {
  2361.                             if(k>0) {
  2362.                                 bf.append(",");
  2363.                             }
  2364.                             bf.append(servizioApplicativo.getDatiConnettore().getFiltro(k));
  2365.                         }
  2366.                         filtri = bf.toString();
  2367.                     }
  2368.                     stm.setString(indexSA++, filtri);
  2369.                    
  2370.                     if(servizioApplicativo.getDatiConnettore()!=null) {
  2371.                         stm.setString(indexSA++, servizioApplicativo.getDatiConnettore().getCoda()!=null ? servizioApplicativo.getDatiConnettore().getCoda() : CostantiConfigurazione.CODA_DEFAULT);
  2372.                         stm.setString(indexSA++, servizioApplicativo.getDatiConnettore().getPriorita()!=null ? servizioApplicativo.getDatiConnettore().getPriorita() : CostantiConfigurazione.PRIORITA_DEFAULT);
  2373.                         stm.setInt(indexSA++, servizioApplicativo.getDatiConnettore().isPrioritaMax() ? CostantiDB.TRUE : CostantiDB.FALSE);
  2374.                     }
  2375.                     else {
  2376.                         stm.setString(indexSA++, CostantiConfigurazione.CODA_DEFAULT);
  2377.                         stm.setString(indexSA++, CostantiConfigurazione.PRIORITA_DEFAULT);
  2378.                         stm.setInt(indexSA++, CostantiDB.FALSE);
  2379.                     }

  2380.                     stm.setString(indexSA++, utenteRichiedenteSA);
  2381.                     stm.setTimestamp(indexSA++, dataCreazioneSA);
  2382.                     stm.setString(indexSA++, utenteUltimaModificaSA);
  2383.                     stm.setTimestamp(indexSA++, dataUltimaModificaSA);
  2384.                    
  2385.                     stm.executeUpdate();
  2386.                     stm.close();
  2387.                     n++;
  2388.                     DriverConfigurazioneDBLib.logDebug("Aggiunta associazione PortaApplicativa<->ServizioApplicativo [" + idPortaApplicativa + "]<->[" + idSA + "]");
  2389.                 }

  2390.                 DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " associazioni PortaApplicativa<->ServizioApplicativo associati alla PortaDelegata[" + idPortaApplicativa + "]");


  2391.                 // serviziapplicativi props        
  2392.                
  2393.                 for (i = 0; i < aPA.sizeServizioApplicativoList(); i++) {
  2394.                     PortaApplicativaServizioApplicativo servizioApplicativo = aPA.getServizioApplicativo(i);
  2395.                     String nomeSA = servizioApplicativo.getNome();
  2396.                    
  2397.                     if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().sizeProprietaList()>0) {
  2398.                    
  2399.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2400.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
  2401.                         sqlQueryObject.addSelectField("id");
  2402.                         sqlQueryObject.addWhereCondition("id_porta=?");
  2403.                         sqlQueryObject.addWhereCondition("id_servizio_applicativo=?");
  2404.                         sqlQueryObject.setANDLogicOperator(true);
  2405.                         sqlQuery = sqlQueryObject.createSQLQuery();
  2406.                        
  2407.                         long idSA = idsPaSa.get(i);
  2408.                        
  2409.                         long idPaSa = -1;
  2410.                         stm = con.prepareStatement(sqlQuery);
  2411.                         stm.setLong(1, idPortaApplicativa);
  2412.                         stm.setLong(2, idSA);
  2413.                         rs = stm.executeQuery();
  2414.                         if(rs.next()) {
  2415.                             idPaSa = rs.getLong("id");
  2416.                         }
  2417.                         rs.close();
  2418.                         stm.close();
  2419.                        
  2420.                         if(idPaSa<=0) {
  2421.                             throw new DriverConfigurazioneException("Impossibile recuperare l'id della registrazione del Servizio Applicativo [" + nomeSA + "](id:"+idSA+") alla porta applicativa con id:"+idPortaApplicativa );
  2422.                         }
  2423.                        
  2424.                        
  2425.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2426.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA_PROPS);
  2427.                         sqlQueryObject.addInsertField("id_porta", "?");
  2428.                         sqlQueryObject.addInsertField("nome", "?");
  2429.                         sqlQueryObject.addInsertField("valore", "?");
  2430.                         sqlQuery = sqlQueryObject.createSQLInsert();
  2431.                         stm = con.prepareStatement(sqlQuery);
  2432.                        
  2433.                         int j = 0;
  2434.                         for ( ; j < servizioApplicativo.getDatiConnettore().sizeProprietaList(); j++) {
  2435.                            
  2436.                             Proprieta p = servizioApplicativo.getDatiConnettore().getProprieta(j);
  2437.                            
  2438.                             if(p.getValore()==null || "".equals(p.getValore())) {
  2439.                                 continue; // non devo serializzare valori vuoti o null (DB oracle non lo permette)
  2440.                             }
  2441.                            
  2442.                             stm.setLong(1, idPaSa);
  2443.                             stm.setString(2, p.getNome());
  2444.                             stm.setString(3, p.getValore());
  2445.                             stm.executeUpdate();
  2446.                            
  2447.                         }
  2448.    
  2449.                         stm.close();
  2450.                         DriverConfigurazioneDBLib.logDebug("Inseriti " + j + " SetSAProp associati al Servizio Applicativo [" + nomeSA + "](id:"+idSA+") della PortaApplicativa[" + idPortaApplicativa + "]");
  2451.                     }
  2452.                 }
  2453.                
  2454.                
  2455.                 // set prop behaviour
  2456.                
  2457.                 //La lista di proprieta contiene tutte e sole le proprieta associate alla porta
  2458.                 //cancello le proprieta per poi sincronizzarle con la lista passata
  2459.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2460.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_BEHAVIOUR_PROPS);
  2461.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2462.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2463.                 stm = con.prepareStatement(sqlQuery);
  2464.                 stm.setLong(1, idPortaApplicativa);
  2465.                 n=stm.executeUpdate();
  2466.                 stm.close();
  2467.                
  2468.                 if(aPA.getBehaviour()!=null) {
  2469.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2470.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_BEHAVIOUR_PROPS);
  2471.                     sqlQueryObject.addInsertField("id_porta", "?");
  2472.                     sqlQueryObject.addInsertField("nome", "?");
  2473.                     sqlQueryObject.addInsertField("valore", "?");
  2474.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2475.                     stm = con.prepareStatement(sqlQuery);
  2476.                     for (i = 0; i < aPA.getBehaviour().sizeProprietaList(); i++) {
  2477.                         propProtocollo = aPA.getBehaviour().getProprieta(i);
  2478.                         stm.setLong(1, idPortaApplicativa);
  2479.                         stm.setString(2, propProtocollo.getNome());
  2480.                         stm.setString(3, propProtocollo.getValore());
  2481.                         stm.executeUpdate();
  2482.                     }
  2483.                     stm.close();
  2484.                     DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SeBehaviourProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  2485.                 }
  2486.                
  2487.                
  2488.                
  2489.                
  2490.                
  2491.                
  2492.                
  2493.                
  2494.                
  2495.                 /*Proprieta autenticazione associate alla Porta Applicativa*/
  2496.                 //La lista di proprieta contiene tutte e sole le proprieta associate alla porta
  2497.                 //cancello le proprieta per poi sincronizzarle con la lista passata
  2498.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2499.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTENTICAZIONE_PROP);
  2500.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2501.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2502.                 stm = con.prepareStatement(sqlQuery);
  2503.                 stm.setLong(1, idPortaApplicativa);
  2504.                 n=stm.executeUpdate();
  2505.                 stm.close();
  2506.                 DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta di autenticazione associate alla Porta Applicativa "+idPortaApplicativa);
  2507.                 // set prop
  2508.                 int newProps = 0;
  2509.                 for (i = 0; i < aPA.sizeProprietaAutenticazioneList(); i++) {
  2510.                     propProtocollo = aPA.getProprietaAutenticazione(i);

  2511.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2512.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTENTICAZIONE_PROP);
  2513.                     sqlQueryObject.addInsertField("id_porta", "?");
  2514.                     sqlQueryObject.addInsertField("nome", "?");
  2515.                     sqlQueryObject.addInsertField("valore", "?");
  2516.                     sqlQueryObject.addInsertField("enc_value", "?");
  2517.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2518.                     stm = con.prepareStatement(sqlQuery);

  2519.                     int indexP = 1;
  2520.                     stm.setLong(indexP++, idPortaApplicativa);
  2521.                     stm.setString(indexP++, propProtocollo.getNome());
  2522.                    
  2523.                     String plainValueP = propProtocollo.getValore();
  2524.                     String encValueP = null;
  2525.                     if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
  2526.                         BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
  2527.                         if(byokValue!=null) {
  2528.                             encValueP = byokValue.getWrappedValue();
  2529.                             plainValueP = byokValue.getWrappedPlainValue();
  2530.                         }
  2531.                     }
  2532.                    
  2533.                     stm.setString(indexP++, plainValueP);
  2534.                     stm.setString(indexP++, encValueP);
  2535.                    
  2536.                     stm.executeUpdate();
  2537.                     stm.close();
  2538.                     newProps++;
  2539.                 }
  2540.                 DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolPropAutenticazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  2541.                
  2542.                
  2543.                
  2544.                 /*Proprieta autorizzazione associate alla Porta Applicativa*/
  2545.                 //La lista di proprieta contiene tutte e sole le proprieta associate alla porta
  2546.                 //cancello le proprieta per poi sincronizzarle con la lista passata
  2547.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2548.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_PROP);
  2549.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2550.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2551.                 stm = con.prepareStatement(sqlQuery);
  2552.                 stm.setLong(1, idPortaApplicativa);
  2553.                 n=stm.executeUpdate();
  2554.                 stm.close();
  2555.                 DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta di autorizzazione associate alla Porta Applicativa "+idPortaApplicativa);
  2556.                 // set prop
  2557.                 newProps = 0;
  2558.                 for (i = 0; i < aPA.sizeProprietaAutorizzazioneList(); i++) {
  2559.                     propProtocollo = aPA.getProprietaAutorizzazione(i);

  2560.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2561.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_PROP);
  2562.                     sqlQueryObject.addInsertField("id_porta", "?");
  2563.                     sqlQueryObject.addInsertField("nome", "?");
  2564.                     sqlQueryObject.addInsertField("valore", "?");
  2565.                     sqlQueryObject.addInsertField("enc_value", "?");
  2566.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2567.                     stm = con.prepareStatement(sqlQuery);

  2568.                     int indexP = 1;
  2569.                     stm.setLong(indexP++, idPortaApplicativa);
  2570.                     stm.setString(indexP++, propProtocollo.getNome());
  2571.                    
  2572.                     String plainValueP = propProtocollo.getValore();
  2573.                     String encValueP = null;
  2574.                     if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
  2575.                         BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
  2576.                         if(byokValue!=null) {
  2577.                             encValueP = byokValue.getWrappedValue();
  2578.                             plainValueP = byokValue.getWrappedPlainValue();
  2579.                         }
  2580.                     }
  2581.                    
  2582.                     stm.setString(indexP++, plainValueP);
  2583.                     stm.setString(indexP++, encValueP);
  2584.                    
  2585.                     stm.executeUpdate();
  2586.                     stm.close();
  2587.                     newProps++;
  2588.                 }
  2589.                 DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolPropAutorizzazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  2590.                
  2591.                
  2592.                
  2593.                
  2594.                 /*Proprieta autorizzazione contenuti associate alla Porta Applicativa*/
  2595.                 //La lista di proprieta contiene tutte e sole le proprieta associate alla porta
  2596.                 //cancello le proprieta per poi sincronizzarle con la lista passata
  2597.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2598.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_CONTENUTI_PROP);
  2599.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2600.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2601.                 stm = con.prepareStatement(sqlQuery);
  2602.                 stm.setLong(1, idPortaApplicativa);
  2603.                 n=stm.executeUpdate();
  2604.                 stm.close();
  2605.                 DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta di autorizzazione contenuti associate alla Porta Applicativa "+idPortaApplicativa);
  2606.                 // set prop
  2607.                 newProps = 0;
  2608.                 for (i = 0; i < aPA.sizeProprietaAutorizzazioneContenutoList(); i++) {
  2609.                     propProtocollo = aPA.getProprietaAutorizzazioneContenuto(i);

  2610.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2611.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_CONTENUTI_PROP);
  2612.                     sqlQueryObject.addInsertField("id_porta", "?");
  2613.                     sqlQueryObject.addInsertField("nome", "?");
  2614.                     sqlQueryObject.addInsertField("valore", "?");
  2615.                     sqlQueryObject.addInsertField("enc_value", "?");
  2616.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2617.                     stm = con.prepareStatement(sqlQuery);

  2618.                     int indexP = 1;
  2619.                     stm.setLong(indexP++, idPortaApplicativa);
  2620.                     stm.setString(indexP++, propProtocollo.getNome());
  2621.                    
  2622.                     String plainValueP = propProtocollo.getValore();
  2623.                     String encValueP = null;
  2624.                     if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
  2625.                         BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
  2626.                         if(byokValue!=null) {
  2627.                             encValueP = byokValue.getWrappedValue();
  2628.                             plainValueP = byokValue.getWrappedPlainValue();
  2629.                         }
  2630.                     }
  2631.                    
  2632.                     stm.setString(indexP++, plainValueP);
  2633.                     stm.setString(indexP++, encValueP);
  2634.                    
  2635.                     stm.executeUpdate();
  2636.                     stm.close();
  2637.                     newProps++;
  2638.                 }
  2639.                 DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolPropAutorizzazioneContenuto associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  2640.                
  2641.                
  2642.                
  2643.                
  2644.                
  2645.                
  2646.                
  2647.                
  2648.                
  2649.                 /*Proprieta rate limiting associate alla Porta Applicativa*/
  2650.                 //La lista di proprieta contiene tutte e sole le proprieta associate alla porta
  2651.                 //cancello le proprieta per poi sincronizzarle con la lista passata
  2652.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2653.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
  2654.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2655.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2656.                 stm = con.prepareStatement(sqlQuery);
  2657.                 stm.setLong(1, idPortaApplicativa);
  2658.                 n=stm.executeUpdate();
  2659.                 stm.close();
  2660.                 DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta di rate limiting associate alla Porta Applicativa "+idPortaApplicativa);
  2661.                 // set prop
  2662.                 newProps = 0;
  2663.                 for (i = 0; i < aPA.sizeProprietaRateLimitingList(); i++) {
  2664.                     propProtocollo = aPA.getProprietaRateLimiting(i);

  2665.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2666.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
  2667.                     sqlQueryObject.addInsertField("id_porta", "?");
  2668.                     sqlQueryObject.addInsertField("nome", "?");
  2669.                     sqlQueryObject.addInsertField("valore", "?");
  2670.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2671.                     stm = con.prepareStatement(sqlQuery);

  2672.                     stm.setLong(1, idPortaApplicativa);
  2673.                     stm.setString(2, propProtocollo.getNome());
  2674.                     stm.setString(3, propProtocollo.getValore());
  2675.                     stm.executeUpdate();
  2676.                     stm.close();
  2677.                     newProps++;
  2678.                 }
  2679.                 DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolPropRateLimiting associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  2680.                
  2681.                
  2682.                
  2683.                
  2684.                
  2685.                
  2686.                 /*Proprieta associate alla Porta Applicativa*/
  2687.                 //La lista di proprieta contiene tutte e sole le proprieta associate alla porta
  2688.                 //cancello le proprieta per poi sincronizzarle con la lista passata
  2689.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2690.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_PROP);
  2691.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2692.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2693.                 stm = con.prepareStatement(sqlQuery);
  2694.                 stm.setLong(1, idPortaApplicativa);
  2695.                 n=stm.executeUpdate();
  2696.                 stm.close();
  2697.                 DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta associate alla Porta Applicativa "+idPortaApplicativa);
  2698.                 // set prop
  2699.                 newProps = 0;
  2700.                 for (i = 0; i < aPA.sizeProprietaList(); i++) {
  2701.                     propProtocollo = aPA.getProprieta(i);

  2702.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2703.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_PROP);
  2704.                     sqlQueryObject.addInsertField("id_porta", "?");
  2705.                     sqlQueryObject.addInsertField("nome", "?");
  2706.                     sqlQueryObject.addInsertField("valore", "?");
  2707.                     sqlQueryObject.addInsertField("enc_value", "?");
  2708.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2709.                     stm = con.prepareStatement(sqlQuery);

  2710.                     int indexP = 1;
  2711.                     stm.setLong(indexP++, idPortaApplicativa);
  2712.                     stm.setString(indexP++, propProtocollo.getNome());
  2713.                    
  2714.                     String plainValueP = propProtocollo.getValore();
  2715.                     String encValueP = null;
  2716.                     if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
  2717.                         BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
  2718.                         if(byokValue!=null) {
  2719.                             encValueP = byokValue.getWrappedValue();
  2720.                             plainValueP = byokValue.getWrappedPlainValue();
  2721.                         }
  2722.                     }
  2723.                    
  2724.                     stm.setString(indexP++, plainValueP);
  2725.                     stm.setString(indexP++, encValueP);
  2726.                    
  2727.                     stm.executeUpdate();
  2728.                     stm.close();
  2729.                     newProps++;
  2730.                 }
  2731.                 DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");

  2732.                
  2733.                
  2734.                 // Ruoli
  2735.                
  2736.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2737.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
  2738.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2739.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2740.                 stm = con.prepareStatement(sqlQuery);
  2741.                 stm.setLong(1, idPortaApplicativa);
  2742.                 n=stm.executeUpdate();
  2743.                 stm.close();
  2744.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" ruoli associati alla Porta Applicativa "+idPortaApplicativa);
  2745.                
  2746.                 n=0;
  2747.                 if(aPA.getRuoli()!=null && aPA.getRuoli().sizeRuoloList()>0){
  2748.                     for (int j = 0; j < aPA.getRuoli().sizeRuoloList(); j++) {
  2749.                         Ruolo ruolo = aPA.getRuoli().getRuolo(j);
  2750.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2751.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
  2752.                         sqlQueryObject.addInsertField("id_porta", "?");
  2753.                         sqlQueryObject.addInsertField("ruolo", "?");
  2754.                         sqlQuery = sqlQueryObject.createSQLInsert();
  2755.                         stm = con.prepareStatement(sqlQuery);
  2756.                         stm.setLong(1, idPortaApplicativa);
  2757.                         stm.setString(2, ruolo.getNome());
  2758.                         stm.executeUpdate();
  2759.                         stm.close();
  2760.                         n++;
  2761.                         DriverConfigurazioneDBLib.logDebug("Aggiunto ruolo[" + ruolo.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
  2762.                     }
  2763.                 }
  2764.                
  2765.                 DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " ruoli alla PortaApplicativa[" + idPortaApplicativa + "]");
  2766.                
  2767.                
  2768.                
  2769.                 // Scope
  2770.                
  2771.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2772.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
  2773.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2774.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2775.                 stm = con.prepareStatement(sqlQuery);
  2776.                 stm.setLong(1, idPortaApplicativa);
  2777.                 n=stm.executeUpdate();
  2778.                 stm.close();
  2779.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" scope associati alla Porta Applicativa "+idPortaApplicativa);
  2780.                
  2781.                 n=0;
  2782.                 if(aPA.getScope()!=null && aPA.getScope().sizeScopeList()>0){
  2783.                     for (int j = 0; j < aPA.getScope().sizeScopeList(); j++) {
  2784.                         Scope scope = aPA.getScope().getScope(j);
  2785.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2786.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
  2787.                         sqlQueryObject.addInsertField("id_porta", "?");
  2788.                         sqlQueryObject.addInsertField("scope", "?");
  2789.                         sqlQuery = sqlQueryObject.createSQLInsert();
  2790.                         stm = con.prepareStatement(sqlQuery);
  2791.                         stm.setLong(1, idPortaApplicativa);
  2792.                         stm.setString(2, scope.getNome());
  2793.                         stm.executeUpdate();
  2794.                         stm.close();
  2795.                         n++;
  2796.                         DriverConfigurazioneDBLib.logDebug("Aggiunto scope[" + scope.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
  2797.                     }
  2798.                 }
  2799.                
  2800.                 DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " scope alla PortaApplicativa[" + idPortaApplicativa + "]");
  2801.                
  2802.                
  2803.                
  2804.                 // Soggetti
  2805.                
  2806.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2807.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
  2808.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2809.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2810.                 stm = con.prepareStatement(sqlQuery);
  2811.                 stm.setLong(1, idPortaApplicativa);
  2812.                 n=stm.executeUpdate();
  2813.                 stm.close();
  2814.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" soggetti associati alla Porta Applicativa "+idPortaApplicativa);
  2815.                
  2816.                 n=0;
  2817.                 if(aPA.getSoggetti()!=null && aPA.getSoggetti().sizeSoggettoList()>0){
  2818.                     for (int j = 0; j < aPA.getSoggetti().sizeSoggettoList(); j++) {
  2819.                         PortaApplicativaAutorizzazioneSoggetto soggetto = aPA.getSoggetti().getSoggetto(j);
  2820.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2821.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
  2822.                         sqlQueryObject.addInsertField("id_porta", "?");
  2823.                         sqlQueryObject.addInsertField("tipo_soggetto", "?");
  2824.                         sqlQueryObject.addInsertField("nome_soggetto", "?");
  2825.                         sqlQuery = sqlQueryObject.createSQLInsert();
  2826.                         stm = con.prepareStatement(sqlQuery);
  2827.                         stm.setLong(1, idPortaApplicativa);
  2828.                         stm.setString(2, soggetto.getTipo());
  2829.                         stm.setString(3, soggetto.getNome());
  2830.                         stm.executeUpdate();
  2831.                         stm.close();
  2832.                         n++;
  2833.                         DriverConfigurazioneDBLib.logDebug("Aggiunto soggetto [" + soggetto.getTipo() + "/"+soggetto.getNome()+"] alla PortaApplicativa[" + idPortaApplicativa + "]");
  2834.                     }
  2835.                 }
  2836.                
  2837.                 DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " soggetti alla PortaApplicativa[" + idPortaApplicativa + "]");
  2838.                
  2839.                
  2840.                
  2841.                
  2842.                 //la lista dei servizi applicativi passata contiene tutti e soli i servizi applicativi necessari
  2843.                 //quindi nel db devono essere presenti tutti e solo quelli presenti nella lista

  2844.                 //cancello i servizi applicativi associati alla porta e inserisco tutti e soli quelli presenti in lista
  2845.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2846.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);
  2847.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2848.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2849.                 stm = con.prepareStatement(sqlQuery);
  2850.                 stm.setLong(1, idPortaApplicativa);
  2851.                 n=stm.executeUpdate();
  2852.                 stm.close();
  2853.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi autorizzati associati alla Porta Applicativa "+idPortaApplicativa);
  2854.                
  2855.                 //scrivo la lista nel db
  2856.                 if(aPA.getServiziApplicativiAutorizzati()!=null && aPA.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()>0) {
  2857.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2858.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);
  2859.                     sqlQueryObject.addInsertField("id_porta", "?");
  2860.                     sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
  2861.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2862.                     stm = con.prepareStatement(sqlQuery);
  2863.    
  2864.                     for (i = 0; i < aPA.getServiziApplicativiAutorizzati().sizeServizioApplicativoList(); i++) {
  2865.                         PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativoAutorizzato = aPA.getServiziApplicativiAutorizzati().getServizioApplicativo(i);
  2866.                         String nomeSA = servizioApplicativoAutorizzato.getNome();
  2867.                         String nomeProprietarioSA = servizioApplicativoAutorizzato.getNomeSoggettoProprietario();
  2868.                         String tipoProprietarioSA = servizioApplicativoAutorizzato.getTipoSoggettoProprietario();
  2869.                         if (nomeSA == null || nomeSA.equals(""))
  2870.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Nome del ServizioApplicativo associato non valido.");
  2871.                         if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
  2872.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Nome Proprietario del ServizioApplicativo associato non valido.");
  2873.                         if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
  2874.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Tipo Proprietario del ServizioApplicativo associato non valido.");
  2875.    
  2876.                         long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
  2877.    
  2878.                         if (idSA <= 0)
  2879.                             throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
  2880.    
  2881.                         stm.setLong(1, idPortaApplicativa);
  2882.                         stm.setLong(2, idSA);
  2883.                         stm.executeUpdate();
  2884.                     }
  2885.                     stm.close();
  2886.                     DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi autorizzati associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  2887.                 }
  2888.                
  2889.                
  2890.                
  2891.                
  2892.                 //la lista dei servizi applicativi passata contiene tutti e soli i servizi applicativi necessari
  2893.                 //quindi nel db devono essere presenti tutti e solo quelli presenti nella lista

  2894.                 //cancello i servizi applicativi associati alla porta e inserisco tutti e soli quelli presenti in lista
  2895.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2896.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);
  2897.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2898.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2899.                 stm = con.prepareStatement(sqlQuery);
  2900.                 stm.setLong(1, idPortaApplicativa);
  2901.                 n=stm.executeUpdate();
  2902.                 stm.close();
  2903.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi autorizzati (token) associati alla Porta Applicativa "+idPortaApplicativa);
  2904.                
  2905.                 //scrivo la lista nel db
  2906.                 if(aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getServiziApplicativi()!=null &&
  2907.                         aPA.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()>0) {
  2908.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2909.                     sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);
  2910.                     sqlQueryObject.addInsertField("id_porta", "?");
  2911.                     sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
  2912.                     sqlQuery = sqlQueryObject.createSQLInsert();
  2913.                     stm = con.prepareStatement(sqlQuery);
  2914.    
  2915.                     for (i = 0; i < aPA.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList(); i++) {
  2916.                         PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativoAutorizzato = aPA.getAutorizzazioneToken().getServiziApplicativi().getServizioApplicativo(i);
  2917.                         String nomeSA = servizioApplicativoAutorizzato.getNome();
  2918.                         String nomeProprietarioSA = servizioApplicativoAutorizzato.getNomeSoggettoProprietario();
  2919.                         String tipoProprietarioSA = servizioApplicativoAutorizzato.getTipoSoggettoProprietario();
  2920.                         if (nomeSA == null || nomeSA.equals(""))
  2921.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Nome del ServizioApplicativo associato non valido.");
  2922.                         if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
  2923.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Nome Proprietario del ServizioApplicativo associato non valido.");
  2924.                         if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
  2925.                             throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Tipo Proprietario del ServizioApplicativo associato non valido.");
  2926.    
  2927.                         long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
  2928.    
  2929.                         if (idSA <= 0)
  2930.                             throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
  2931.    
  2932.                         stm.setLong(1, idPortaApplicativa);
  2933.                         stm.setLong(2, idSA);
  2934.                         stm.executeUpdate();
  2935.                     }
  2936.                     stm.close();
  2937.                     DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi autorizzati (token) associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  2938.                 }
  2939.                
  2940.                
  2941.                
  2942.                 // Ruoli (token)
  2943.                
  2944.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2945.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
  2946.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2947.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2948.                 stm = con.prepareStatement(sqlQuery);
  2949.                 stm.setLong(1, idPortaApplicativa);
  2950.                 n=stm.executeUpdate();
  2951.                 stm.close();
  2952.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" ruoli (token) associati alla Porta Applicativa "+idPortaApplicativa);
  2953.                
  2954.                 n=0;
  2955.                 if(aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getRuoli()!=null && aPA.getAutorizzazioneToken().getRuoli().sizeRuoloList()>0){
  2956.                     for (int j = 0; j < aPA.getAutorizzazioneToken().getRuoli().sizeRuoloList(); j++) {
  2957.                         Ruolo ruolo = aPA.getAutorizzazioneToken().getRuoli().getRuolo(j);
  2958.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2959.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
  2960.                         sqlQueryObject.addInsertField("id_porta", "?");
  2961.                         sqlQueryObject.addInsertField("ruolo", "?");
  2962.                         sqlQuery = sqlQueryObject.createSQLInsert();
  2963.                         stm = con.prepareStatement(sqlQuery);
  2964.                         stm.setLong(1, idPortaApplicativa);
  2965.                         stm.setString(2, ruolo.getNome());
  2966.                         stm.executeUpdate();
  2967.                         stm.close();
  2968.                         n++;
  2969.                         DriverConfigurazioneDBLib.logDebug("Aggiunto ruolo[" + ruolo.getNome() + "] (token) alla PortaApplicativa[" + idPortaApplicativa + "]");
  2970.                     }
  2971.                 }
  2972.                
  2973.                 DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " ruoli (token) alla PortaApplicativa[" + idPortaApplicativa + "]");
  2974.                
  2975.                
  2976.                
  2977.                 // Azioni
  2978.                
  2979.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2980.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
  2981.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2982.                 sqlQuery = sqlQueryObject.createSQLDelete();
  2983.                 stm = con.prepareStatement(sqlQuery);
  2984.                 stm.setLong(1, idPortaApplicativa);
  2985.                 n=stm.executeUpdate();
  2986.                 stm.close();
  2987.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" azioni associati alla Porta Applicativa "+idPortaApplicativa);
  2988.                
  2989.                 n=0;
  2990.                 if(aPA.getAzione()!=null && aPA.getAzione().sizeAzioneDelegataList()>0){
  2991.                     for (int j = 0; j < aPA.getAzione().sizeAzioneDelegataList(); j++) {
  2992.                         String azioneDelegata = aPA.getAzione().getAzioneDelegata(j);
  2993.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  2994.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
  2995.                         sqlQueryObject.addInsertField("id_porta", "?");
  2996.                         sqlQueryObject.addInsertField("azione", "?");
  2997.                         sqlQuery = sqlQueryObject.createSQLInsert();
  2998.                         stm = con.prepareStatement(sqlQuery);
  2999.                         stm.setLong(1, idPortaApplicativa);
  3000.                         stm.setString(2, azioneDelegata);
  3001.                         stm.executeUpdate();
  3002.                         stm.close();
  3003.                         n++;
  3004.                         DriverConfigurazioneDBLib.logDebug("Aggiunto azione delegata [" + azioneDelegata + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
  3005.                     }
  3006.                 }
  3007.                
  3008.                 DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " azione delegate alla PortaApplicativa[" + idPortaApplicativa + "]");
  3009.                
  3010.            
  3011.                
  3012.                
  3013.                 // Cache Regole
  3014.                
  3015.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3016.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CACHE_REGOLE);
  3017.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3018.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3019.                 stm = con.prepareStatement(sqlQuery);
  3020.                 stm.setLong(1, idPortaApplicativa);
  3021.                 n=stm.executeUpdate();
  3022.                 stm.close();
  3023.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" regole di cache associate alla PortaApplicativa "+idPortaApplicativa);
  3024.                
  3025.                 n=0;
  3026.                 if(responseCacheRegole!=null && responseCacheRegole.size()>0){
  3027.                     for (int j = 0; j < responseCacheRegole.size(); j++) {
  3028.                         ResponseCachingConfigurazioneRegola regola = responseCacheRegole.get(j);
  3029.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3030.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CACHE_REGOLE);
  3031.                         sqlQueryObject.addInsertField("id_porta", "?");
  3032.                         if(regola.getReturnCodeMin()!=null && regola.getReturnCodeMin()>0) {
  3033.                             sqlQueryObject.addInsertField("status_min", "?");
  3034.                         }
  3035.                         if(regola.getReturnCodeMax()!=null && regola.getReturnCodeMax()>0) {
  3036.                             sqlQueryObject.addInsertField("status_max", "?");
  3037.                         }
  3038.                         sqlQueryObject.addInsertField("fault", "?");
  3039.                         if(regola.getCacheTimeoutSeconds()!=null && regola.getCacheTimeoutSeconds()>0) {
  3040.                             sqlQueryObject.addInsertField("cache_seconds", "?");
  3041.                         }
  3042.                         sqlQuery = sqlQueryObject.createSQLInsert();
  3043.                         stm = con.prepareStatement(sqlQuery);
  3044.                         int indexCR = 1;
  3045.                         stm.setLong(indexCR++, idPortaApplicativa);
  3046.                         if(regola.getReturnCodeMin()!=null && regola.getReturnCodeMin()>0) {
  3047.                             stm.setInt(indexCR++, regola.getReturnCodeMin());
  3048.                         }
  3049.                         if(regola.getReturnCodeMax()!=null && regola.getReturnCodeMax()>0) {
  3050.                             stm.setInt(indexCR++, regola.getReturnCodeMax());
  3051.                         }
  3052.                         stm.setInt(indexCR++, regola.getFault() ? CostantiDB.TRUE : CostantiDB.FALSE);
  3053.                         if(regola.getCacheTimeoutSeconds()!=null && regola.getCacheTimeoutSeconds()>0) {
  3054.                             stm.setInt(indexCR++, regola.getCacheTimeoutSeconds());
  3055.                         }
  3056.                         stm.executeUpdate();
  3057.                         stm.close();
  3058.                         n++;
  3059.                         DriverConfigurazioneDBLib.logDebug("Aggiunta regola di cache alla PortaApplicativa[" + idPortaApplicativa + "]");
  3060.                     }
  3061.                 }
  3062.                
  3063.                 DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " regole di cache alla PortaApplicativa[" + idPortaApplicativa + "]");
  3064.                
  3065.                
  3066.                
  3067.                 // AttributeAuthority
  3068.                
  3069.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3070.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
  3071.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3072.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3073.                 stm = con.prepareStatement(sqlQuery);
  3074.                 stm.setLong(1, idPortaApplicativa);
  3075.                 n=stm.executeUpdate();
  3076.                 stm.close();
  3077.                 DriverConfigurazioneDBLib.logDebug("Cancellate "+n+" A.A. associate alla Porta Applicativa "+idPortaApplicativa);
  3078.                
  3079.                 n=0;
  3080.                 if(aPA.sizeAttributeAuthorityList()>0){
  3081.                     for (int j = 0; j < aPA.sizeAttributeAuthorityList(); j++) {
  3082.                         AttributeAuthority aa = aPA.getAttributeAuthority(j);
  3083.                        
  3084.                         String attributi = null;
  3085.                         if(aa.sizeAttributoList()>0) {
  3086.                             StringBuilder bf = new StringBuilder();
  3087.                             for (int aaI = 0; aaI < aa.sizeAttributoList(); aaI++) {
  3088.                                 if(aaI>0) {
  3089.                                     bf.append(",");
  3090.                                 }
  3091.                                 bf.append(aa.getAttributo(aaI));
  3092.                             }
  3093.                             attributi = bf.toString();
  3094.                         }
  3095.                        
  3096.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3097.                         sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
  3098.                         sqlQueryObject.addInsertField("id_porta", "?");
  3099.                         sqlQueryObject.addInsertField("nome", "?");
  3100.                         sqlQueryObject.addInsertField("attributi", "?");
  3101.                         sqlQuery = sqlQueryObject.createSQLInsert();
  3102.                         stm = con.prepareStatement(sqlQuery);
  3103.                         stm.setLong(1, idPortaApplicativa);
  3104.                         stm.setString(2, aa.getNome());
  3105.                         stm.setString(3, attributi);
  3106.                         stm.executeUpdate();
  3107.                         stm.close();
  3108.                         n++;
  3109.                         DriverConfigurazioneDBLib.logDebug("Aggiunto A.A.[" + aa.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
  3110.                     }
  3111.                 }
  3112.                
  3113.                 DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " A.A. alla PortaApplicativa[" + idPortaApplicativa + "]");
  3114.                
  3115.                
  3116.                 // tracciamentoConfigurazione
  3117.                 DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoDatabase, idPortaApplicativa,
  3118.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
  3119.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_DB);
  3120.                
  3121.                 DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoFiletrace, idPortaApplicativa,
  3122.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
  3123.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_FILETRACE);
  3124.                
  3125.                 DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazioneFiletrace(type, con, tracciamentoFiletraceDetails, idPortaApplicativa,
  3126.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA);
  3127.                
  3128.                
  3129.                 // dumpConfigurazione
  3130.                 DriverConfigurazioneDB_dumpLIB.CRUDDumpConfigurazione(type, con, aPA.getDump(), idPortaApplicativa, CostantiDB.DUMP_CONFIGURAZIONE_PROPRIETARIO_PA);
  3131.                
  3132.                
  3133.                 // trasformazioni
  3134.                 DriverConfigurazioneDBTrasformazioniLib.CRUDTrasformazioni(type, con, aPA.getTrasformazioni(), idPortaApplicativa, false);

  3135.                
  3136.                 // Handlers
  3137.                 DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, idPortaApplicativa, true, (configHandlers!=null) ? configHandlers.getRequest() : null);
  3138.                 DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, idPortaApplicativa, false, (configHandlers!=null) ? configHandlers.getResponse() : null);
  3139.                        
  3140.                
  3141.                 // extendedInfo
  3142.                 if(extInfoConfigurazioneDriver!=null){
  3143.                     extInfoConfigurazioneDriver.deleteAllExtendedInfo(con, DriverConfigurazioneDBLib.log,  aPA, CRUDType.UPDATE);
  3144.                 }
  3145.                
  3146.                 i=0;
  3147.                 if(aPA.sizeExtendedInfoList()>0 &&
  3148.                     (extInfoConfigurazioneDriver!=null)
  3149.                     ){
  3150.                     for (i = 0; i < aPA.sizeExtendedInfoList(); i++) {
  3151.                         extInfoConfigurazioneDriver.createExtendedInfo(con, DriverConfigurazioneDBLib.log,  aPA, aPA.getExtendedInfo(i), CRUDType.UPDATE);
  3152.                     }
  3153.                 }
  3154.                 DriverConfigurazioneDBLib.logDebug("Aggiunte " + i + " associazioni ExtendedInfo<->PortaApplicativa associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  3155.                                
  3156.                 break;

  3157.             case DELETE:
  3158.                 // DELETE
  3159.                 /** if(aPA.getId()==null || aPA.getId()<=0) throw new
  3160.                 // DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa(DELETE)]
  3161.                 // id della PortaApplicativa non valida.");*/


  3162.                 idPortaApplicativa = DBUtils.getIdPortaApplicativa(nomePorta, con, DriverConfigurazioneDBLib.tipoDB);
  3163.                 if (idPortaApplicativa <= 0)
  3164.                     throw new DriverConfigurazioneException("Non e' stato possibile recuperare l'id della Porta Applicativa.");

  3165.                 // tracciamentoConfigurazione
  3166.                 DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoDatabase, idPortaApplicativa,
  3167.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
  3168.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_DB);
  3169.                
  3170.                 DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoFiletrace, idPortaApplicativa,
  3171.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
  3172.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_FILETRACE);
  3173.                
  3174.                 DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazioneFiletrace(type, con, tracciamentoFiletraceDetails, idPortaApplicativa,
  3175.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA);
  3176.                
  3177.                 // dumpConfigurazione
  3178.                 DriverConfigurazioneDB_dumpLIB.CRUDDumpConfigurazione(type, con, aPA.getDump(), idPortaApplicativa, CostantiDB.DUMP_CONFIGURAZIONE_PROPRIETARIO_PA);
  3179.                
  3180.                 // trasformazioni
  3181.                 DriverConfigurazioneDBTrasformazioniLib.CRUDTrasformazioni(type, con, aPA.getTrasformazioni(), idPortaApplicativa, false);
  3182.                
  3183.                 // Handlers
  3184.                 DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, idPortaApplicativa, true, (configHandlers!=null) ? configHandlers.getRequest() : null);
  3185.                 DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, idPortaApplicativa, false, (configHandlers!=null) ? configHandlers.getResponse() : null);
  3186.                
  3187.                 // AttributeAuthority
  3188.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3189.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
  3190.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3191.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3192.                 stm = con.prepareStatement(sqlQuery);
  3193.                 stm.setLong(1, idPortaApplicativa);
  3194.                 n=stm.executeUpdate();
  3195.                 stm.close();
  3196.                 DriverConfigurazioneDBLib.logDebug("Cancellate "+n+" A.A. associate alla Porta Applicativa "+idPortaApplicativa);
  3197.                
  3198.                 // Cache Regole
  3199.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3200.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CACHE_REGOLE);
  3201.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3202.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3203.                 stm = con.prepareStatement(sqlQuery);
  3204.                 stm.setLong(1, idPortaApplicativa);
  3205.                 n=stm.executeUpdate();
  3206.                 stm.close();
  3207.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" regole di cache associate alla Porta Applicativa "+idPortaApplicativa);
  3208.                
  3209.                 // azioni delegate
  3210.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3211.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
  3212.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3213.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3214.                 stm = con.prepareStatement(sqlQuery);
  3215.                 stm.setLong(1, idPortaApplicativa);
  3216.                 n=stm.executeUpdate();
  3217.                 stm.close();
  3218.                 DriverConfigurazioneDBLib.logDebug("Cancellate "+n+" azioni delegate associate alla Porta Applicativa "+idPortaApplicativa);
  3219.                
  3220.                 // ruoli (token)
  3221.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3222.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
  3223.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3224.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3225.                 stm = con.prepareStatement(sqlQuery);
  3226.                 stm.setLong(1, idPortaApplicativa);
  3227.                 n=stm.executeUpdate();
  3228.                 stm.close();
  3229.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" ruoli (token) associati alla Porta Applicativa "+idPortaApplicativa);
  3230.                
  3231.                 // sa autorizzati (token)
  3232.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3233.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);
  3234.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3235.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3236.                 stm = con.prepareStatement(sqlQuery);
  3237.                 stm.setLong(1, idPortaApplicativa);
  3238.                 n=stm.executeUpdate();
  3239.                 stm.close();
  3240.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi autorizzati (token) associati alla Porta Applicativa "+idPortaApplicativa);
  3241.                
  3242.                 // sa autorizzati
  3243.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3244.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);
  3245.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3246.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3247.                 stm = con.prepareStatement(sqlQuery);
  3248.                 stm.setLong(1, idPortaApplicativa);
  3249.                 n=stm.executeUpdate();
  3250.                 stm.close();
  3251.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi autorizzati associati alla Porta Applicativa "+idPortaApplicativa);
  3252.                
  3253.                 // soggetti
  3254.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3255.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
  3256.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3257.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3258.                 stm = con.prepareStatement(sqlQuery);
  3259.                 stm.setLong(1, idPortaApplicativa);
  3260.                 n=stm.executeUpdate();
  3261.                 stm.close();
  3262.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" soggetti associati alla Porta Applicativa "+idPortaApplicativa);
  3263.                
  3264.                 // ruoli
  3265.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3266.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
  3267.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3268.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3269.                 stm = con.prepareStatement(sqlQuery);
  3270.                 stm.setLong(1, idPortaApplicativa);
  3271.                 n=stm.executeUpdate();
  3272.                 stm.close();
  3273.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" ruoli associati alla Porta Applicativa "+idPortaApplicativa);
  3274.                
  3275.                 // scope
  3276.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3277.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
  3278.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3279.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3280.                 stm = con.prepareStatement(sqlQuery);
  3281.                 stm.setLong(1, idPortaApplicativa);
  3282.                 n=stm.executeUpdate();
  3283.                 stm.close();
  3284.                 DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" scope associati alla Porta Applicativa "+idPortaApplicativa);
  3285.                
  3286.                 // mtom
  3287.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3288.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MTOM_REQUEST);
  3289.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3290.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3291.                 stm = con.prepareStatement(sqlQuery);
  3292.                 stm.setLong(1, idPortaApplicativa);
  3293.                 n=stm.executeUpdate();
  3294.                 stm.close();
  3295.                 DriverConfigurazioneDBLib.logDebug("Deleted " + n + " request flow con id=" + idPortaApplicativa);

  3296.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3297.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MTOM_RESPONSE);
  3298.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3299.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3300.                 stm = con.prepareStatement(sqlQuery);
  3301.                 stm.setLong(1, idPortaApplicativa);
  3302.                 n=stm.executeUpdate();
  3303.                 stm.close();
  3304.                 DriverConfigurazioneDBLib.logDebug("Deleted " + n + " response flow con id=" + idPortaApplicativa);
  3305.                
  3306.                
  3307.                 // message security
  3308.                 //if ( CostantiConfigurazione.ABILITATO.toString().equals(messageSecurityStatus) )  {
  3309.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3310.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
  3311.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3312.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3313.                 stm = con.prepareStatement(sqlQuery);
  3314.                 stm.setLong(1, idPortaApplicativa);
  3315.                 n=stm.executeUpdate();
  3316.                 stm.close();
  3317.                 DriverConfigurazioneDBLib.logDebug("Deleted " + n + " request flow con id=" + idPortaApplicativa);

  3318.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3319.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
  3320.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3321.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3322.                 stm = con.prepareStatement(sqlQuery);
  3323.                 stm.setLong(1, idPortaApplicativa);
  3324.                 n=stm.executeUpdate();
  3325.                 stm.close();
  3326.                 DriverConfigurazioneDBLib.logDebug("Deleted " + n + " response flow con id=" + idPortaApplicativa);
  3327.                 //}

  3328.                 // serviziapplicativi props
  3329.                 idsPaSa = new ArrayList<>();
  3330.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3331.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
  3332.                 sqlQueryObject.addSelectField("id");
  3333.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3334.                 sqlQueryObject.setANDLogicOperator(true);
  3335.                 sqlQuery = sqlQueryObject.createSQLQuery();
  3336.                 stm = con.prepareStatement(sqlQuery);
  3337.                 stm.setLong(1, idPortaApplicativa);
  3338.                 rs = stm.executeQuery();
  3339.                 while(rs.next()) {
  3340.                     idsPaSa.add(rs.getLong("id"));
  3341.                 }
  3342.                 rs.close();
  3343.                 stm.close();
  3344.                
  3345.                 if(!idsPaSa.isEmpty()) {
  3346.                     for (Long idsapa : idsPaSa) {
  3347.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3348.                         sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA_PROPS);
  3349.                         sqlQueryObject.addWhereCondition("id_porta=?");
  3350.                         sqlQuery = sqlQueryObject.createSQLDelete();
  3351.                         stm = con.prepareStatement(sqlQuery);
  3352.                         stm.setLong(1, idsapa);
  3353.                         n=stm.executeUpdate();
  3354.                         stm.close();
  3355.                         DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta relative all'associazione '"+idsapa+"' (Porta Applicativa "+idPortaApplicativa+")");
  3356.                     }
  3357.                 }
  3358.                
  3359.                 // serviziapplicativi
  3360.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3361.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA);
  3362.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3363.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3364.                 stm = con.prepareStatement(sqlQuery);
  3365.                 stm.setLong(1, idPortaApplicativa);
  3366.                 n=stm.executeUpdate();
  3367.                 stm.close();
  3368.                 DriverConfigurazioneDBLib.logDebug("Deleted " + n + " servizi applicativi associati alla PortaApplicativa[" + idPortaApplicativa + "]");

  3369.                 // cancello le prop relative al behaviour
  3370.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3371.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_BEHAVIOUR_PROPS);
  3372.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3373.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3374.                 stm = con.prepareStatement(sqlQuery);
  3375.                 stm.setLong(1, idPortaApplicativa);
  3376.                 n=stm.executeUpdate();
  3377.                 stm.close();
  3378.                 if (n > 0)
  3379.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " BehaviourProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  3380.                
  3381.                 // cancello anche le flow di request/response associate a questa
  3382.                 // porta applicativa
  3383.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3384.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
  3385.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3386.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3387.                 stm = con.prepareStatement(sqlQuery);
  3388.                 stm.setLong(1, idPortaApplicativa);
  3389.                 n=stm.executeUpdate();
  3390.                 stm.close();
  3391.                 if (n > 0)
  3392.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " security_request flow associate alla PortaApplicativa[" + idPortaApplicativa + "]");

  3393.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3394.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
  3395.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3396.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3397.                 stm = con.prepareStatement(sqlQuery);
  3398.                 stm.setLong(1, idPortaApplicativa);
  3399.                 n=stm.executeUpdate();
  3400.                 stm.close();
  3401.                 if (n > 0)
  3402.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " security_response flow associate alla PortaApplicativa[" + idPortaApplicativa + "]");

  3403.                
  3404.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3405.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE);
  3406.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3407.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3408.                 stm = con.prepareStatement(sqlQuery);
  3409.                 stm.setLong(1, idPortaApplicativa);

  3410.                 n = stm.executeUpdate();
  3411.                 stm.close();
  3412.                 if (n > 0)
  3413.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " correlazione associate alla PortaApplicativa[" + idPortaApplicativa + "]");
  3414.                
  3415.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3416.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE_RISPOSTA);
  3417.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3418.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3419.                 stm = con.prepareStatement(sqlQuery);
  3420.                 stm.setLong(1, idPortaApplicativa);

  3421.                 n = stm.executeUpdate();
  3422.                 stm.close();
  3423.                 if (n > 0)
  3424.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " correlazione della risposta associate alla PortaApplicativa[" + idPortaApplicativa + "]");
  3425.                                
  3426.                 // cancello le prop
  3427.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3428.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_PROP);
  3429.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3430.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3431.                 stm = con.prepareStatement(sqlQuery);
  3432.                 stm.setLong(1, idPortaApplicativa);
  3433.                 n=stm.executeUpdate();
  3434.                 stm.close();
  3435.                 if (n > 0)
  3436.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");

  3437.                 // cancello le prop di rate limiting
  3438.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3439.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
  3440.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3441.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3442.                 stm = con.prepareStatement(sqlQuery);
  3443.                 stm.setLong(1, idPortaApplicativa);
  3444.                 n=stm.executeUpdate();
  3445.                 stm.close();
  3446.                 if (n > 0)
  3447.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolPropRateLimiting associati alla PortaApplicativa[" + idPortaApplicativa + "]");

  3448.                
  3449.                 // cancello le prop di autorizzazione contenuti
  3450.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3451.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_CONTENUTI_PROP);
  3452.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3453.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3454.                 stm = con.prepareStatement(sqlQuery);
  3455.                 stm.setLong(1, idPortaApplicativa);
  3456.                 n=stm.executeUpdate();
  3457.                 stm.close();
  3458.                 if (n > 0)
  3459.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolPropAutorizzazioneContenuto associati alla PortaApplicativa[" + idPortaApplicativa + "]");

  3460.                 // cancello le prop di autorizzazione
  3461.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3462.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_PROP);
  3463.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3464.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3465.                 stm = con.prepareStatement(sqlQuery);
  3466.                 stm.setLong(1, idPortaApplicativa);
  3467.                 n=stm.executeUpdate();
  3468.                 stm.close();
  3469.                 if (n > 0)
  3470.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolPropAutorizzazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
  3471.                
  3472.                 // cancello le prop di autenticazione
  3473.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3474.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTENTICAZIONE_PROP);
  3475.                 sqlQueryObject.addWhereCondition("id_porta=?");
  3476.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3477.                 stm = con.prepareStatement(sqlQuery);
  3478.                 stm.setLong(1, idPortaApplicativa);
  3479.                 n=stm.executeUpdate();
  3480.                 stm.close();
  3481.                 if (n > 0)
  3482.                     DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolPropAutenticazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");

  3483.                 // extendedInfo
  3484.                 if(extInfoConfigurazioneDriver!=null){
  3485.                     extInfoConfigurazioneDriver.deleteAllExtendedInfo(con, DriverConfigurazioneDBLib.log,  aPA, CRUDType.DELETE);
  3486.                 }
  3487.                
  3488.                 // porta applicativa
  3489.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
  3490.                 sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE);
  3491.                 sqlQueryObject.addWhereCondition("id=?");
  3492.                 sqlQueryObject.addWhereCondition("id_soggetto=?");
  3493.                 sqlQueryObject.addWhereCondition("nome_porta=?");
  3494.                 sqlQueryObject.setANDLogicOperator(true);
  3495.                 sqlQuery = sqlQueryObject.createSQLDelete();
  3496.                 stm = con.prepareStatement(sqlQuery);
  3497.                 stm.setLong(1, idPortaApplicativa);
  3498.                 stm.setLong(2, idProprietario);
  3499.                 stm.setString(3, nomePorta);
  3500.                 n=stm.executeUpdate();
  3501.                 stm.close();
  3502.                 DriverConfigurazioneDBLib.logDebug("Deleted " + n + " row(s).");

  3503.                 break;
  3504.             }

  3505.             return idPortaApplicativa;
  3506.         } catch (DriverConfigurazioneException e) {
  3507.             throw e;
  3508.         } catch (SQLException se) {
  3509.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa] SQLException [" + se.getMessage() + "].",se);
  3510.         } catch (Exception e) {
  3511.             throw new DriverConfigurazioneException("Errore durante operazione("+type+") CRUDPortaApplicativa.",e);
  3512.         }finally {
  3513.             //Chiudo statement and resultset
  3514.             JDBCUtilities.closeResources(rs, stm);
  3515.         }
  3516.     }
  3517.    
  3518. }