ServiziApplicativiCore.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.web.ctrlstat.servlet.sa;

  21. import java.sql.Connection;
  22. import java.util.ArrayList;
  23. import java.util.EnumMap;
  24. import java.util.List;
  25. import java.util.Map;

  26. import org.openspcoop2.core.commons.ErrorsHandlerCostant;
  27. import org.openspcoop2.core.commons.ISearch;
  28. import org.openspcoop2.core.config.Proprieta;
  29. import org.openspcoop2.core.config.ProprietaOggetto;
  30. import org.openspcoop2.core.config.ServizioApplicativo;
  31. import org.openspcoop2.core.config.constants.CredenzialeTipo;
  32. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  33. import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
  34. import org.openspcoop2.core.config.driver.FiltroRicercaServiziApplicativi;
  35. import org.openspcoop2.core.config.driver.db.IDServizioApplicativoDB;
  36. import org.openspcoop2.core.id.IDServizioApplicativo;
  37. import org.openspcoop2.core.id.IDSoggetto;
  38. import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
  39. import org.openspcoop2.pdd.core.autenticazione.ApiKey;
  40. import org.openspcoop2.pdd.core.autenticazione.ApiKeyUtilities;
  41. import org.openspcoop2.protocol.engine.ConfigurazioneFiltroServiziApplicativi;
  42. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  43. import org.openspcoop2.protocol.engine.utils.DBOggettiInUsoUtils;
  44. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  45. import org.openspcoop2.utils.certificate.CertificateInfo;
  46. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  47. import org.openspcoop2.web.ctrlstat.driver.DriverControlStationDB;
  48. import org.openspcoop2.web.ctrlstat.driver.DriverControlStationException;

  49. /**
  50.  * ServiziApplicativiCore
  51.  *
  52.  * @author Poli Andrea (apoli@link.it)
  53.  * @author $Author$
  54.  * @version $Rev$, $Date$
  55.  */
  56. public class ServiziApplicativiCore extends ControlStationCore {

  57.     public ServiziApplicativiCore() throws DriverControlStationException {
  58.         super();
  59.     }
  60.     public ServiziApplicativiCore(ControlStationCore core) throws DriverControlStationException {
  61.         super(core);
  62.     }
  63.        
  64.     public ServizioApplicativo getServizioApplicativo(long idServizioApplicativo) throws DriverConfigurazioneNotFound, DriverConfigurazioneException {
  65.         Connection con = null;
  66.         String nomeMetodo = "getServizioApplicativo";
  67.         DriverControlStationDB driver = null;

  68.         try {
  69.             // prendo una connessione
  70.             con = ControlStationCore.dbM.getConnection();
  71.             // istanzio il driver
  72.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  73.             return driver.getDriverConfigurazioneDB().getServizioApplicativo(idServizioApplicativo);

  74.         } catch (DriverConfigurazioneNotFound e) {
  75.             ControlStationCore.logDebug(getPrefixError(nomeMetodo,  e),e);
  76.             throw e;
  77.         } catch (Exception e) {
  78.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  79.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  80.         } finally {
  81.             ControlStationCore.dbM.releaseConnection(con);
  82.         }
  83.     }

  84.     public ServizioApplicativo getServizioApplicativo(IDServizioApplicativo idServizioApplicativo) throws DriverConfigurazioneException {
  85.         Connection con = null;
  86.         String nomeMetodo = "getServizioApplicativo(IDServizioApplicativo)";
  87.         DriverControlStationDB driver = null;

  88.         try {
  89.             // prendo una connessione
  90.             con = ControlStationCore.dbM.getConnection();
  91.             // istanzio il driver
  92.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  93.             return driver.getDriverConfigurazioneDB().getServizioApplicativo(idServizioApplicativo);

  94.         }
  95.         catch (DriverConfigurazioneNotFound  e) {
  96.             // Lasciare DEBUG, usato anche in servizio API RS
  97.             ControlStationCore.logDebug("[ControlStationCore::" + nomeMetodo + "] ExceptionNotFound :" + e.getMessage(), e);
  98.             throw new DriverConfigurazioneException("[ControlStationCore::" + nomeMetodo + "] NotFound :" + e.getMessage(),e);
  99.         }
  100.         catch (Exception e) {
  101.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  102.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  103.         } finally {
  104.             ControlStationCore.dbM.releaseConnection(con);
  105.         }

  106.     }
  107.    
  108.     public ProprietaOggetto getProprietaOggetto(IDServizioApplicativo idServizioApplicativo) throws DriverConfigurazioneException {
  109.         Connection con = null;
  110.         String nomeMetodo = "getProprietaOggetto(IDServizioApplicativo)";
  111.         DriverControlStationDB driver = null;

  112.         try {
  113.             // prendo una connessione
  114.             con = ControlStationCore.dbM.getConnection();
  115.             // istanzio il driver
  116.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  117.             return driver.getDriverConfigurazioneDB().getProprietaOggetto(idServizioApplicativo);

  118.         }
  119.         catch (DriverConfigurazioneNotFound  e) {
  120.             // Lasciare DEBUG, usato anche in servizio API RS
  121.             ControlStationCore.logDebug("[ControlStationCore::" + nomeMetodo + "] ExceptionNotFound :" + e.getMessage(), e);
  122.             throw new DriverConfigurazioneException("[ControlStationCore::" + nomeMetodo + "] NotFound :" + e.getMessage(),e);
  123.         }
  124.         catch (Exception e) {
  125.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  126.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  127.         } finally {
  128.             ControlStationCore.dbM.releaseConnection(con);
  129.         }

  130.     }
  131.    
  132.    
  133.     public boolean isSupportatoAutenticazioneApplicativiErogazione(String protocollo) throws DriverRegistroServiziException {
  134.         String nomeMetodo = "isSupportatoAutenticazioneApplicativiErogazione";
  135.         try{
  136.            
  137.             return this.protocolFactoryManager.getProtocolFactoryByName(protocollo).createProtocolConfiguration().isSupportoAutenticazioneApplicativiErogazioni();
  138.            
  139.         }catch (Exception e) {
  140.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  141.             throw new DriverRegistroServiziException(getPrefixError(nomeMetodo,  e),e);
  142.         }
  143.     }
  144.    
  145.     public boolean isSupportatoAutenticazioneApplicativiEsterniErogazione(String protocollo) throws DriverRegistroServiziException {
  146.         String nomeMetodo = "isSupportatoAutenticazioneApplicativiEsterniErogazione";
  147.         try{
  148.            
  149.             return this.protocolFactoryManager.getProtocolFactoryByName(protocollo).createProtocolConfiguration().isSupportoAutenticazioneApplicativiEsterniErogazioni();
  150.            
  151.         }catch (Exception e) {
  152.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  153.             throw new DriverRegistroServiziException(getPrefixError(nomeMetodo,  e),e);
  154.         }
  155.     }
  156.    
  157.     public long getIdServizioApplicativo(IDSoggetto idSoggetto, String nomeServizioApplicativo) throws DriverConfigurazioneException {
  158.         Connection con = null;
  159.         String nomeMetodo = "getIdServizioApplicativo";
  160.         DriverControlStationDB driver = null;

  161.         try {
  162.             // prendo una connessione
  163.             con = ControlStationCore.dbM.getConnection();
  164.             // istanzio il driver
  165.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  166.             return driver.getDriverConfigurazioneDB().getIdServizioApplicativo(idSoggetto, nomeServizioApplicativo);

  167.         } catch (Exception e) {
  168.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  169.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  170.         } finally {
  171.             ControlStationCore.dbM.releaseConnection(con);
  172.         }

  173.     }

  174.     public List<ServizioApplicativo> servizioApplicativoWithCredenzialiBasicList(String utente, String password, boolean checkPassword) throws DriverConfigurazioneException {
  175.         Connection con = null;
  176.         String nomeMetodo = "servizioApplicativoWithCredenzialiBasicList";
  177.         DriverControlStationDB driver = null;

  178.         try {
  179.             // prendo una connessione
  180.             con = ControlStationCore.dbM.getConnection();
  181.             // istanzio il driver
  182.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  183.             return driver.getDriverConfigurazioneDB().servizioApplicativoWithCredenzialiBasicList(utente, password, checkPassword);

  184.         } catch (Exception e) {
  185.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  186.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  187.         } finally {
  188.             ControlStationCore.dbM.releaseConnection(con);
  189.         }

  190.     }
  191.    
  192.     public String toAppId(String protocollo, IDServizioApplicativo idSA,  boolean multipleApiKeys) throws DriverConfigurazioneException {
  193.        
  194.         Connection con = null;
  195.         String nomeMetodo = "toAppId";
  196.         DriverControlStationDB driver = null;

  197.         try {
  198.             // prendo una connessione
  199.             con = ControlStationCore.dbM.getConnection();
  200.             // istanzio il driver
  201.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  202.             return ApiKeyUtilities.toAppId(protocollo, idSA, multipleApiKeys, driver.getDriverConfigurazioneDB());

  203.         } catch (Exception e) {
  204.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  205.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  206.         } finally {
  207.             ControlStationCore.dbM.releaseConnection(con);
  208.         }
  209.        
  210.     }
  211.    
  212.     public ApiKey newApiKey(String protocollo, IDServizioApplicativo idSA) throws DriverConfigurazioneException {
  213.        
  214.         Connection con = null;
  215.         String nomeMetodo = "newApiKey";
  216.         DriverControlStationDB driver = null;

  217.         try {
  218.             // prendo una connessione
  219.             con = ControlStationCore.dbM.getConnection();
  220.             // istanzio il driver
  221.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  222.             return ApiKeyUtilities.newApiKey(protocollo, idSA, this.getApplicativiApiKeyLunghezzaPasswordGenerate(), driver.getDriverConfigurazioneDB());

  223.         } catch (Exception e) {
  224.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  225.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  226.         } finally {
  227.             ControlStationCore.dbM.releaseConnection(con);
  228.         }
  229.        
  230.     }
  231.    
  232.     public ApiKey newMultipleApiKey() throws DriverConfigurazioneException {
  233.        
  234.         String nomeMetodo = "newMultipleApiKey";
  235.         try {
  236.             return ApiKeyUtilities.newMultipleApiKey(this.getApplicativiApiKeyLunghezzaPasswordGenerate());
  237.         } catch (Exception e) {
  238.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  239.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  240.         }
  241.        
  242.     }
  243.    
  244.     public List<ServizioApplicativo> servizioApplicativoWithCredenzialiApiKeyList(String utente, boolean appId) throws DriverConfigurazioneException {
  245.         Connection con = null;
  246.         String nomeMetodo = "servizioApplicativoWithCredenzialiApiKeyList";
  247.         DriverControlStationDB driver = null;

  248.         try {
  249.             // prendo una connessione
  250.             con = ControlStationCore.dbM.getConnection();
  251.             // istanzio il driver
  252.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  253.             return driver.getDriverConfigurazioneDB().servizioApplicativoWithCredenzialiApiKeyList(utente, appId);

  254.         } catch (Exception e) {
  255.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  256.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  257.         } finally {
  258.             ControlStationCore.dbM.releaseConnection(con);
  259.         }

  260.     }

  261.     public List<ServizioApplicativo> servizioApplicativoWithCredenzialiSslList(String subject, String issuer,
  262.             ConfigurazioneFiltroServiziApplicativi filtro) throws DriverConfigurazioneException {
  263.         Connection con = null;
  264.         String nomeMetodo = "servizioApplicativoWithCredenzialiSslList";
  265.         DriverControlStationDB driver = null;

  266.         try {
  267.             // prendo una connessione
  268.             con = ControlStationCore.dbM.getConnection();
  269.             // istanzio il driver
  270.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  271.             return driver.getDriverConfigurazioneDB().servizioApplicativoWithCredenzialiSslList(subject, issuer,
  272.                     filtro.getTipiSoggetti(), filtro.isIncludiApplicativiNonModI(), filtro.isIncludiApplicativiModIEsterni(), filtro.isIncludiApplicativiModIInterni());

  273.         } catch (Exception e) {
  274.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  275.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  276.         } finally {
  277.             ControlStationCore.dbM.releaseConnection(con);
  278.         }

  279.     }
  280.     public List<ServizioApplicativo> servizioApplicativoWithCredenzialiSslList(CertificateInfo certificate, boolean strictVerifier,
  281.             ConfigurazioneFiltroServiziApplicativi filtro) throws DriverConfigurazioneException {
  282.         Connection con = null;
  283.         String nomeMetodo = "servizioApplicativoWithCredenzialiSslList";
  284.         DriverControlStationDB driver = null;

  285.         try {
  286.             // prendo una connessione
  287.             con = ControlStationCore.dbM.getConnection();
  288.             // istanzio il driver
  289.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  290.             return driver.getDriverConfigurazioneDB().servizioApplicativoWithCredenzialiSslList(certificate, strictVerifier,
  291.                     filtro.getTipiSoggetti(), filtro.isIncludiApplicativiNonModI(), filtro.isIncludiApplicativiModIEsterni(), filtro.isIncludiApplicativiModIInterni());

  292.         } catch (Exception e) {
  293.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  294.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  295.         } finally {
  296.             ControlStationCore.dbM.releaseConnection(con);
  297.         }

  298.     }
  299.    
  300.     public List<ServizioApplicativo> servizioApplicativoWithCredenzialiPrincipalList(String principal) throws DriverConfigurazioneException {
  301.         Connection con = null;
  302.         String nomeMetodo = "servizioApplicativoWithCredenzialiPrincipalList";
  303.         DriverControlStationDB driver = null;

  304.         try {
  305.             // prendo una connessione
  306.             con = ControlStationCore.dbM.getConnection();
  307.             // istanzio il driver
  308.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  309.             return driver.getDriverConfigurazioneDB().servizioApplicativoWithCredenzialiPrincipalList(principal);

  310.         } catch (Exception e) {
  311.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  312.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  313.         } finally {
  314.             ControlStationCore.dbM.releaseConnection(con);
  315.         }

  316.     }
  317.    
  318.     public List<ServizioApplicativo> servizioApplicativoWithCredenzialiTokenList(String tokenPolicy, String tokenClientId) throws DriverConfigurazioneException {
  319.         Connection con = null;
  320.         String nomeMetodo = "servizioApplicativoWithCredenzialiTokenList";
  321.         DriverControlStationDB driver = null;

  322.         try {
  323.             // prendo una connessione
  324.             con = ControlStationCore.dbM.getConnection();
  325.             // istanzio il driver
  326.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  327.             boolean tokenWithHttpsEnabled = false;
  328.             // basta un protocollo che lo supporta per doverli cercare anche con la funzionalita' abilitata
  329.             for(IProtocolFactory<?> protocolFactory: ProtocolFactoryManager.getInstance().getProtocolFactories().values()) {
  330.                 if(protocolFactory.createProtocolConfiguration().isSupportatoAutenticazioneApplicativiHttpsConToken()) {
  331.                     tokenWithHttpsEnabled = true;
  332.                     break;
  333.                 }
  334.             }
  335.            
  336.             return driver.getDriverConfigurazioneDB().servizioApplicativoWithCredenzialiTokenList(tokenPolicy, tokenClientId, tokenWithHttpsEnabled);

  337.         } catch (Exception e) {
  338.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  339.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  340.         } finally {
  341.             ControlStationCore.dbM.releaseConnection(con);
  342.         }

  343.     }
  344.    
  345.     public List<ServizioApplicativo> servizioApplicativoList(ISearch ricerca) throws DriverConfigurazioneException {
  346.         Connection con = null;
  347.         String nomeMetodo = "servizioApplicativoList";
  348.         DriverControlStationDB driver = null;

  349.         try {
  350.             // prendo una connessione
  351.             con = ControlStationCore.dbM.getConnection();
  352.             // istanzio il driver
  353.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  354.             return driver.getDriverConfigurazioneDB().servizioApplicativoList(ricerca);

  355.         } catch (Exception e) {
  356.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  357.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  358.         } finally {
  359.             ControlStationCore.dbM.releaseConnection(con);
  360.         }

  361.     }
  362.    
  363.     public List<ServizioApplicativo> servizioApplicativoList(IDSoggetto idSoggetto,ISearch ricerca) throws DriverConfigurazioneException {
  364.         Connection con = null;
  365.         String nomeMetodo = "servizioApplicativoList";
  366.         DriverControlStationDB driver = null;

  367.         try {
  368.             // prendo una connessione
  369.             con = ControlStationCore.dbM.getConnection();
  370.             // istanzio il driver
  371.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  372.             return driver.getDriverConfigurazioneDB().servizioApplicativoList(idSoggetto,ricerca);

  373.         } catch (Exception e) {
  374.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  375.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  376.         } finally {
  377.             ControlStationCore.dbM.releaseConnection(con);
  378.         }

  379.     }

  380.    

  381.     public boolean isServizioApplicativoInUsoComeErogatore(ServizioApplicativo sa, Map<ErrorsHandlerCostant, String> whereIsInUso) throws DriverConfigurazioneException {
  382.         Connection con = null;
  383.         String nomeMetodo = "isServizioApplicativoInUso";
  384.         DriverControlStationDB driver = null;

  385.         try {
  386.             // prendo una connessione
  387.             con = ControlStationCore.dbM.getConnection();
  388.             // istanzio il driver
  389.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  390.             return driver.getDriverConfigurazioneDB().isServizioApplicativoInUsoComeErogatore(sa, whereIsInUso);

  391.         } catch (Exception e) {
  392.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  393.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e), e);
  394.         } finally {
  395.             ControlStationCore.dbM.releaseConnection(con);
  396.         }

  397.     }
  398.    
  399.    
  400.     public boolean existsServizioApplicativo(IDServizioApplicativo idSA) throws DriverConfigurazioneException {
  401.         Connection con = null;
  402.         String nomeMetodo = "existsServizioApplicativo";
  403.         DriverControlStationDB driver = null;

  404.         try {
  405.             // prendo una connessione
  406.             con = ControlStationCore.dbM.getConnection();
  407.             // istanzio il driver
  408.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  409.             return driver.getDriverConfigurazioneDB().existsServizioApplicativo(idSA);

  410.         } catch (Exception e) {
  411.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  412.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  413.         } finally {
  414.             ControlStationCore.dbM.releaseConnection(con);
  415.         }
  416.     }
  417.    
  418.     public List<IDServizioApplicativoDB> getIdServiziApplicativiWithIdErogatore(Long idErogatore) throws DriverConfigurazioneException {
  419.         return getIdServiziApplicativiWithIdErogatore(idErogatore, null, false, false);
  420.     }
  421.     public List<IDServizioApplicativoDB> getIdServiziApplicativiWithIdErogatore(Long idErogatore,
  422.             boolean checkIM, boolean checkConnettoreAbilitato) throws DriverConfigurazioneException {
  423.         return getIdServiziApplicativiWithIdErogatore(idErogatore, null, checkIM, checkConnettoreAbilitato);
  424.     }
  425.     public List<IDServizioApplicativoDB> getIdServiziApplicativiWithIdErogatore(Long idErogatore, String tipo,
  426.             boolean checkIM, boolean checkConnettoreAbilitato) throws DriverConfigurazioneException {
  427.         Connection con = null;
  428.         String nomeMetodo = "getServiziApplicativiWithIdErogatore";
  429.         DriverControlStationDB driver = null;

  430.         try {
  431.             // prendo una connessione
  432.             con = ControlStationCore.dbM.getConnection();
  433.             // istanzio il driver
  434.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  435.             return driver.getDriverConfigurazioneDB().getIdServiziApplicativiWithIdErogatore(idErogatore, tipo, checkIM, checkConnettoreAbilitato);

  436.         } catch (Exception e) {
  437.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  438.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  439.         } finally {
  440.             ControlStationCore.dbM.releaseConnection(con);
  441.         }
  442.     }

  443.     public List<IDServizioApplicativoDB> soggettiServizioApplicativoList(IDSoggetto idSoggetto,String superuser,CredenzialeTipo credenziale, Boolean appId, String tipo,
  444.             boolean bothSslAndToken, String tokenPolicy) throws DriverConfigurazioneException {
  445.         return soggettiServizioApplicativoList(idSoggetto, superuser, credenziale, appId, tipo,
  446.                 bothSslAndToken, tokenPolicy, false);
  447.     }
  448.     public List<IDServizioApplicativoDB> soggettiServizioApplicativoList(IDSoggetto idSoggetto,String superuser,CredenzialeTipo credenziale, Boolean appId, String tipo,
  449.             boolean bothSslAndToken, String tokenPolicy, boolean tokenPolicyOR) throws DriverConfigurazioneException {
  450.         Connection con = null;
  451.         String nomeMetodo = "soggettiServizioApplicativoList(soggetto,user,credenziale,appId,tipo,ssl,token)";
  452.         DriverControlStationDB driver = null;

  453.         try {
  454.             // prendo una connessione
  455.             con = ControlStationCore.dbM.getConnection();
  456.             // istanzio il driver
  457.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  458.             return driver.getDriverConfigurazioneDB().soggettiServizioApplicativoList(idSoggetto,superuser,credenziale, appId, tipo,
  459.                     bothSslAndToken, tokenPolicy, tokenPolicyOR);

  460.         } catch (Exception e) {
  461.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  462.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  463.         } finally {
  464.             ControlStationCore.dbM.releaseConnection(con);
  465.         }
  466.     }

  467.     public List<ServizioApplicativo> soggettiServizioApplicativoList(String superuser, ISearch ricerca) throws DriverConfigurazioneException {
  468.         Connection con = null;
  469.         String nomeMetodo = "soggettiServizioApplicativoList";
  470.         DriverControlStationDB driver = null;

  471.         try {
  472.             // prendo una connessione
  473.             con = ControlStationCore.dbM.getConnection();
  474.             // istanzio il driver
  475.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  476.             return driver.getDriverConfigurazioneDB().soggettiServizioApplicativoList(superuser, ricerca);

  477.         } catch (Exception e) {
  478.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  479.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  480.         } finally {
  481.             ControlStationCore.dbM.releaseConnection(con);
  482.         }
  483.     }
  484.    
  485.     public List<ServizioApplicativo> soggettiServizioApplicativoList(ISearch ricerca,Long idSoggetto) throws DriverConfigurazioneException {
  486.         Connection con = null;
  487.         String nomeMetodo = "soggettiServizioApplicativoList";
  488.         DriverControlStationDB driver = null;

  489.         try {
  490.             // prendo una connessione
  491.             con = ControlStationCore.dbM.getConnection();
  492.             // istanzio il driver
  493.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  494.             return driver.getDriverConfigurazioneDB().soggettiServizioApplicativoList(idSoggetto, ricerca);

  495.         } catch (Exception e) {
  496.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  497.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  498.         } finally {
  499.             ControlStationCore.dbM.releaseConnection(con);
  500.         }
  501.     }
  502.    
  503.     public boolean isServizioApplicativoInUso(IDServizioApplicativo idServizioApplicativo,
  504.             Map<ErrorsHandlerCostant, List<String>> whereIsInUso, boolean isRegistroServiziLocale, boolean normalizeObjectIds, boolean verificaRuoli) throws DriverConfigurazioneException {
  505.         Connection con = null;
  506.         String nomeMetodo = "isServizioApplicativoInUso";
  507.        
  508.         try {
  509.             // prendo una connessione
  510.             con = ControlStationCore.dbM.getConnection();

  511.             return DBOggettiInUsoUtils.isServizioApplicativoInUso(con, this.tipoDB, idServizioApplicativo, whereIsInUso, isRegistroServiziLocale, normalizeObjectIds, verificaRuoli);

  512.         } catch (Exception e) {
  513.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  514.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  515.         } finally {
  516.             ControlStationCore.dbM.releaseConnection(con);
  517.         }
  518.     }

  519.    
  520.     public List<IDServizioApplicativo> getAllIdServiziApplicativi(FiltroRicercaServiziApplicativi filtroRicerca) throws DriverConfigurazioneException {
  521.         Connection con = null;
  522.         String nomeMetodo = "getAllIdServiziApplicativi";
  523.         DriverControlStationDB driver = null;

  524.         try {
  525.             // prendo una connessione
  526.             con = ControlStationCore.dbM.getConnection();
  527.             // istanzio il driver
  528.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  529.             return driver.getDriverConfigurazioneDB().getAllIdServiziApplicativi(filtroRicerca);

  530.         } catch (DriverConfigurazioneNotFound e) {
  531.             ControlStationCore.logDebug(getPrefixError(nomeMetodo,  e),e);
  532.             return new ArrayList<>();
  533.         } catch (Exception e) {
  534.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  535.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  536.         } finally {
  537.             ControlStationCore.dbM.releaseConnection(con);
  538.         }
  539.     }
  540.    
  541.     public List<String> servizioApplicativoRuoliList(long idSA, ISearch ricerca) throws DriverConfigurazioneException {
  542.         Connection con = null;
  543.         String nomeMetodo = "servizioApplicativoRuoliList";
  544.         DriverControlStationDB driver = null;

  545.         try {
  546.             // prendo una connessione
  547.             con = ControlStationCore.dbM.getConnection();
  548.             // istanzio il driver
  549.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  550.             return driver.getDriverConfigurazioneDB().servizioApplicativoRuoliList(idSA, ricerca);

  551.         } catch (Exception e) {
  552.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  553.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  554.         } finally {
  555.             ControlStationCore.dbM.releaseConnection(con);
  556.         }

  557.     }
  558.    
  559.     public long getIdServizioApplicativoByConnettore(long idConnettore) throws DriverConfigurazioneException {
  560.         Connection con = null;
  561.         String nomeMetodo = "getIdServizioApplicativoByConnettore";
  562.         DriverControlStationDB driver = null;

  563.         try {
  564.             // prendo una connessione
  565.             con = ControlStationCore.dbM.getConnection();
  566.             // istanzio il driver
  567.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  568.             return driver.getDriverConfigurazioneDB().getIdServizioApplicativoByConnettore(idConnettore);

  569.         } catch (Exception e) {
  570.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  571.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  572.         } finally {
  573.             ControlStationCore.dbM.releaseConnection(con);
  574.         }
  575.     }
  576.    
  577.     public String getDettagliServizioApplicativoInUso(IDServizioApplicativo idServizioApplicativo, boolean verificaRuoli) throws DriverConfigurazioneException {
  578.         EnumMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new EnumMap<>(ErrorsHandlerCostant.class);
  579.         boolean normalizeObjectIds = true;
  580.         boolean saInUso  = this.isServizioApplicativoInUso(idServizioApplicativo, whereIsInUso, this.isRegistroServiziLocale(), normalizeObjectIds, verificaRuoli );
  581.        
  582.         StringBuilder inUsoMessage = new StringBuilder();
  583.         if(saInUso) {
  584.             String s = DBOggettiInUsoUtils.toString(idServizioApplicativo, whereIsInUso, false, "\n", normalizeObjectIds);
  585.             if(s!=null && s.startsWith("\n") && s.length()>1) {
  586.                 s = s.substring(1);
  587.             }
  588.             inUsoMessage.append(s);
  589.             inUsoMessage.append("\n");
  590.         } else {
  591.             inUsoMessage.append(ServiziApplicativiCostanti.LABEL_IN_USO_BODY_HEADER_NESSUN_RISULTATO);
  592.         }
  593.        
  594.         return inUsoMessage.toString();
  595.     }
  596.     public List<Proprieta> serviziApplicativiProprietaList(int idSA, ISearch ricerca) throws DriverConfigurazioneException {
  597.         Connection con = null;
  598.         String nomeMetodo = "serviziApplicativiProprietaList";
  599.         DriverControlStationDB driver = null;

  600.         try {
  601.             // prendo una connessione
  602.             con = ControlStationCore.dbM.getConnection();
  603.             // istanzio il driver
  604.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  605.             return driver.getDriverConfigurazioneDB().serviziApplicativiProprietaList(idSA, ricerca);

  606.         } catch (Exception e) {
  607.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  608.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  609.         } finally {
  610.             ControlStationCore.dbM.releaseConnection(con);
  611.         }
  612.     }
  613.    
  614.     public List<String> nomiProprietaSA(String filterSoggettoTipo, String filterSoggettoNome, List<String> tipoSoggettiProtocollo) throws DriverConfigurazioneException {
  615.         Connection con = null;
  616.         String nomeMetodo = "nomiProprietaSA";
  617.         DriverControlStationDB driver = null;

  618.         try {
  619.             // prendo una connessione
  620.             con = ControlStationCore.dbM.getConnection();
  621.             // istanzio il driver
  622.             driver = new DriverControlStationDB(con, null, this.tipoDB);

  623.             return driver.getDriverConfigurazioneDB().nomiProprietaSA(filterSoggettoTipo, filterSoggettoNome, tipoSoggettiProtocollo);

  624.         } catch (Exception e) {
  625.             ControlStationCore.logError(getPrefixError(nomeMetodo,  e), e);
  626.             throw new DriverConfigurazioneException(getPrefixError(nomeMetodo,  e),e);
  627.         } finally {
  628.             ControlStationCore.dbM.releaseConnection(con);
  629.         }
  630.     }
  631. }