/* * Copyright (C) 2014 Intel Corporation * All rights reserved. */ package com.intel.mtwilson.util.dbcp; import com.intel.dcsg.cpg.util.jdbc.ConnectionPool; import com.intel.dcsg.cpg.util.jdbc.PoolingDataSource; //import org.apache.commons.dbcp.BasicDataSource; import com.intel.dcsg.cpg.util.jdbc.ValidatingConnectionPool; import javax.sql.DataSource; import org.apache.commons.configuration.Configuration; /** * * @author jbuhacoff */ public class DataSourceFactory { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(DataSourceFactory.class); // private static DataSource ds = null; /** * @param ds * @return */ public static DataSource createObjectPool(DataSource ds) { ConnectionPool connectionPool = new ConnectionPool(); connectionPool.setDataSource(ds); return new PoolingDataSource(connectionPool); } /** * @param ds * @param configuration * @return */ public static DataSource createConfigurableObjectPool(DataSource ds, Configuration configuration) { String validationQuery = configuration.getString("dbcp.validation.query"); // dbcp.validation.query default null boolean validateOnBorrow = configuration.getBoolean("dbcp.validation.on.borrow", true); // dbcp.validation.on.borrow default true boolean validateOnReturn = configuration.getBoolean("dbcp.validation.on.return", false); // dbcp.validation.on.return default false if (validationQuery == null || validationQuery.isEmpty()) { log.debug("validate on borrow and validate on return are forced off because validation query is not defined"); validateOnBorrow = false; validateOnReturn = false; } ValidatingConnectionPool connectionPool = new ValidatingConnectionPool(); connectionPool.setDataSource(ds); log.debug("validating on borrow={}, on return={}, with query={}", validateOnBorrow, validateOnReturn, validationQuery); connectionPool.setValidateOnBorrow(validateOnBorrow); connectionPool.setValidateOnReturn(validateOnReturn); connectionPool.setValidationQuery(validationQuery); return new PoolingDataSource(connectionPool); } /* public static DataSource getInstance() { try { if (ds == null) { String driver = My.jdbc().driver(); String dbUrl = My.jdbc().url(); BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName(driver); // or com.mysql.jdbc.Driver for mysql dataSource.setUrl(dbUrl); dataSource.setUsername(My.configuration().getDatabaseUsername()); dataSource.setPassword(My.configuration().getDatabasePassword()); ds = createConfigurableObjectPool(dataSource, My.configuration().getConfiguration()); } } catch (Exception ex) { log.error("Error connecting to the database. {}", ex.getMessage()); } return ds; } */ }