DBManager.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.core.monitor.rs.server.config;
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.util.Enumeration;
- import javax.naming.InitialContext;
- import javax.sql.DataSource;
- import org.openspcoop2.generic_project.utils.ServiceManagerProperties;
- import org.openspcoop2.utils.jdbc.JDBCUtilities;
- import org.slf4j.Logger;
- /**
- * DBManager
- *
- * @author Andrea Poli (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- *
- */
- public class DBManager {
- private static Logger checkLogger = null;
- private static boolean checkIsClosed = true;
- private static boolean checkAutocommit = true;
- public static boolean isCheckIsClosed() {
- return checkIsClosed;
- }
- public static void setCheckIsClosed(boolean checkIsClosed) {
- DBManager.checkIsClosed = checkIsClosed;
- }
- public static boolean isCheckAutocommit() {
- return checkAutocommit;
- }
- public static void setCheckAutocommit(boolean checkAutocommit) {
- DBManager.checkAutocommit = checkAutocommit;
- }
- public static Logger getCheckLogger() {
- return checkLogger;
- }
- public static void setCheckLogger(Logger checkLogger) {
- DBManager.checkLogger = checkLogger;
- }
-
- /** Logger utilizzato per debug. */
- private static Logger log = null;
- /** DBManager */
- private static DBManager manager = null;
- private static boolean initialized = false;
- /** DataSource dove attingere connessioni della configurazione */
- private ServiceManagerProperties serviceManagerPropertiesConfig;
- public ServiceManagerProperties getServiceManagerPropertiesConfig() {
- return this.serviceManagerPropertiesConfig;
- }
-
- private DataSource dataSourceConfig = null;
- private String dataSourceConfigName = null;
- private java.util.Properties dataSourceConfigContext = null;
- public String getDataSourceConfigName() {
- return this.dataSourceConfigName;
- }
- public java.util.Properties getDataSourceConfigContext() {
- return this.dataSourceConfigContext;
- }
-
- /** DataSource dove attingere connessioni delle tracce */
-
- private ServiceManagerProperties serviceManagerPropertiesTracce;
- public ServiceManagerProperties getServiceManagerPropertiesTracce() {
- return this.serviceManagerPropertiesTracce;
- }
-
- private DataSource dataSourceTracce = null;
- private String dataSourceTracceName = null;
- private java.util.Properties dataSourceTracceContext = null;
- public String getDataSourceTracceName() {
- return this.dataSourceTracceName;
- }
- public java.util.Properties getDataSourceTracceContext() {
- return this.dataSourceTracceContext;
- }
-
- /** DataSource dove attingere connessioni delle statistiche */
-
- private ServiceManagerProperties serviceManagerPropertiesStatistiche;
- public ServiceManagerProperties getServiceManagerPropertiesStatistiche() {
- return this.serviceManagerPropertiesStatistiche;
- }
-
- private DataSource dataSourceStatistiche = null;
- private String dataSourceStatisticheName = null;
- private java.util.Properties dataSourceStatisticheContext = null;
- public String getDataSourceStatisticheName() {
- return this.dataSourceStatisticheName;
- }
- public java.util.Properties getDataSourceStatisticheContext() {
- return this.dataSourceStatisticheContext;
- }
-
-
-
- /**
- * Viene chiamato in causa per istanziare il datasource
- *
- * @param jndiName
- * Nome JNDI del Datasource
- * @param context
- * Contesto JNDI da utilizzare
- */
- private DBManager(String jndiNameConfig, java.util.Properties contextConfig, String tipoDBConfig,
- String jndiNameTracce, java.util.Properties contextTracce, String tipoDBTracce,
- String jndiNameStatistiche, java.util.Properties contextStatistiche, String tipoDBStatistiche,
- boolean debug) throws Exception {
- try {
- DBManager.log = LoggerProperties.getLoggerCore();
-
-
- /** DataSource dove attingere connessioni della configurazione */
-
- this.dataSourceConfigName = jndiNameConfig;
- this.dataSourceConfigContext = contextConfig;
-
- if (this.dataSourceConfigContext != null) {
- DBManager.log.info("Proprieta' di contesto:" + this.dataSourceConfigContext.size());
- Enumeration<?> en = this.dataSourceConfigContext.keys();
- while (en.hasMoreElements()) {
- String key = (String) en.nextElement();
- DBManager.log.info("\tNome[" + key + "] Valore[" + this.dataSourceConfigContext.getProperty(key) + "]");
- }
- } else {
- DBManager.log.info("Proprieta' di contesto non fornite");
- }
- DBManager.log.info("Nome dataSource:" + this.dataSourceConfigName);
- InitialContext initC = null;
- if (this.dataSourceConfigContext != null && this.dataSourceConfigContext.size() > 0)
- initC = new InitialContext(this.dataSourceConfigContext);
- else
- initC = new InitialContext();
- this.dataSourceConfig = (DataSource) initC.lookup(this.dataSourceConfigName);
- initC.close();
-
- this.serviceManagerPropertiesConfig = new ServiceManagerProperties();
- this.serviceManagerPropertiesConfig.setDatabaseType(tipoDBConfig);
- this.serviceManagerPropertiesConfig.setShowSql(debug);
-
-
- /** DataSource dove attingere connessioni per le tracce */
-
- this.dataSourceTracceName = jndiNameTracce;
- this.dataSourceTracceContext = contextTracce;
-
- if (this.dataSourceTracceContext != null) {
- DBManager.log.info("Proprieta' di contesto:" + this.dataSourceTracceContext.size());
- Enumeration<?> en = this.dataSourceTracceContext.keys();
- while (en.hasMoreElements()) {
- String key = (String) en.nextElement();
- DBManager.log.info("\tNome[" + key + "] Valore[" + this.dataSourceTracceContext.getProperty(key) + "]");
- }
- } else {
- DBManager.log.info("Proprieta' di contesto non fornite");
- }
- DBManager.log.info("Nome dataSource:" + this.dataSourceTracceName);
- initC = null;
- if (this.dataSourceTracceContext != null && this.dataSourceTracceContext.size() > 0)
- initC = new InitialContext(this.dataSourceTracceContext);
- else
- initC = new InitialContext();
- this.dataSourceTracce = (DataSource) initC.lookup(this.dataSourceTracceName);
- initC.close();
-
- this.serviceManagerPropertiesTracce = new ServiceManagerProperties();
- this.serviceManagerPropertiesTracce.setDatabaseType(tipoDBTracce);
- this.serviceManagerPropertiesTracce.setShowSql(debug);
-
-
- /** DataSource dove attingere connessioni per le statistiche */
-
- this.dataSourceStatisticheName = jndiNameStatistiche;
- this.dataSourceStatisticheContext = contextStatistiche;
-
- if (this.dataSourceStatisticheContext != null) {
- DBManager.log.info("Proprieta' di contesto:" + this.dataSourceStatisticheContext.size());
- Enumeration<?> en = this.dataSourceStatisticheContext.keys();
- while (en.hasMoreElements()) {
- String key = (String) en.nextElement();
- DBManager.log.info("\tNome[" + key + "] Valore[" + this.dataSourceStatisticheContext.getProperty(key) + "]");
- }
- } else {
- DBManager.log.info("Proprieta' di contesto non fornite");
- }
- DBManager.log.info("Nome dataSource:" + this.dataSourceStatisticheName);
- initC = null;
- if (this.dataSourceStatisticheContext != null && this.dataSourceStatisticheContext.size() > 0)
- initC = new InitialContext(this.dataSourceStatisticheContext);
- else
- initC = new InitialContext();
- this.dataSourceStatistiche = (DataSource) initC.lookup(this.dataSourceStatisticheName);
- initC.close();
-
- this.serviceManagerPropertiesStatistiche = new ServiceManagerProperties();
- this.serviceManagerPropertiesStatistiche.setDatabaseType(tipoDBStatistiche);
- this.serviceManagerPropertiesStatistiche.setShowSql(debug);
- } catch (Exception e) {
- DBManager.log.error("Lookup datasource non riuscita", e);
- throw e;
- }
- }
- /**
- * Il Metodo si occupa di inizializzare il propertiesReader del QueueManager
- *
- */
- public static synchronized boolean initialize(String jndiNameConfig, java.util.Properties contextConfig, String tipoDBConfig,
- String jndiNameTracce, java.util.Properties contextTracce, String tipoDBTracce,
- String jndiNameStatistiche, java.util.Properties contextStatistiche, String tipoDBStatistiche,
- boolean debug) throws Exception {
- try {
- if (DBManager.manager == null) {
- DBManager.manager = new DBManager(jndiNameConfig, contextConfig, tipoDBConfig,
- jndiNameTracce, contextTracce, tipoDBTracce,
- jndiNameStatistiche, contextStatistiche, tipoDBStatistiche,
- debug);
- DBManager.setInitialized(true);
- }
- return true;
- } catch (Exception e) {
- DBManager.setInitialized(false);
- DBManager.log.debug("Errore di inizializzazione del Database", e);
- throw e;
- }
- }
- /**
- * Ritorna l'istanza di questo DBManager
- *
- * @return Istanza di DBManager
- */
- public static DBManager getInstance() {
- // spotbugs warning 'SING_SINGLETON_GETTER_NOT_SYNCHRONIZED': l'istanza viene creata allo startup
- if(DBManager.manager==null) {
- synchronized (DBManager.class) {
- return DBManager.manager;
- }
- }
- return DBManager.manager;
- }
- /**
- * Viene chiamato in causa per ottenere una connessione al DB
- */
- public java.sql.Connection getConnectionConfig() {
- if (this.dataSourceConfig == null) {
- return null;
- }
- Connection connectionDB = null;
- try {
- connectionDB = this.dataSourceConfig.getConnection();
- } catch (Exception e) {
- DBManager.log.error("getConnectionConfig from db", e);
- return null;
- }
- return connectionDB;
- }
- /**
- * Viene chiamato in causa per rilasciare una connessione al DB, effettuando
- * precedentemente un commit
- *
- * @param connectionDB
- * Connessione da rilasciare.
- */
- public void releaseConnectionConfig(java.sql.Connection connectionDB) {
- try {
- JDBCUtilities.closeConnection(checkLogger, connectionDB, checkAutocommit, checkIsClosed);
- } catch (SQLException e) {
- DBManager.log.error("closeConnection config db", e);
- }
- }
-
- /**
- * Viene chiamato in causa per ottenere una connessione al DB
- */
- public java.sql.Connection getConnectionTracce() {
- if (this.dataSourceTracce == null) {
- return null;
- }
- Connection connectionDB = null;
- try {
- connectionDB = this.dataSourceTracce.getConnection();
- } catch (Exception e) {
- DBManager.log.error("getConnectionTracce from db", e);
- return null;
- }
- return connectionDB;
- }
- /**
- * Viene chiamato in causa per rilasciare una connessione al DB, effettuando
- * precedentemente un commit
- *
- * @param connectionDB
- * Connessione da rilasciare.
- */
- public void releaseConnectionTracce(java.sql.Connection connectionDB) {
- try {
- JDBCUtilities.closeConnection(checkLogger, connectionDB, checkAutocommit, checkIsClosed);
- } catch (SQLException e) {
- DBManager.log.error("closeConnection tracce db", e);
- }
- }
- /**
- * Viene chiamato in causa per ottenere una connessione al DB
- */
- public java.sql.Connection getConnectionStatistiche() {
- if (this.dataSourceStatistiche == null) {
- return null;
- }
- Connection connectionDB = null;
- try {
- connectionDB = this.dataSourceStatistiche.getConnection();
- } catch (Exception e) {
- DBManager.log.error("getConnectionStatistiche from db", e);
- return null;
- }
- return connectionDB;
- }
- /**
- * Viene chiamato in causa per rilasciare una connessione al DB, effettuando
- * precedentemente un commit
- *
- * @param connectionDB
- * Connessione da rilasciare.
- */
- public void releaseConnectionStatistiche(java.sql.Connection connectionDB) {
- try {
- JDBCUtilities.closeConnection(checkLogger, connectionDB, checkAutocommit, checkIsClosed);
- } catch (SQLException e) {
- DBManager.log.error("closeConnection statistiche db", e);
- }
- }
-
- public static boolean isInitialized() {
- return DBManager.initialized;
- }
- private static void setInitialized(boolean initialized) {
- DBManager.initialized = initialized;
- }
- }