/* * Copyright 2013 The Solmix Project * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software 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 * Lesser General Public License for more details. * * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.gnu.org/licenses/ * or see the FSF site: http://www.fsf.org. */ package org.solmix.sql; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import javax.sql.DataSource; /** * * @author solmix.f@gmail.com * @version $Id$ 2014年6月15日 */ public class DriverManagerDataSource implements DataSource { protected PrintWriter _logWriter = null; private final String jdbcUrl; private final boolean credentialsInURL; private final String userName; private final String password; DriverManagerDataSource(String jdbcUrl, String userName, String password, boolean credentialsInURL) { this.jdbcUrl = jdbcUrl; this.userName = userName; this.password = password; this.credentialsInURL = credentialsInURL; } /** * {@inheritDoc} * * @see javax.sql.CommonDataSource#getLogWriter() */ @Override public PrintWriter getLogWriter() throws SQLException { return _logWriter; } /** * {@inheritDoc} * * @see javax.sql.CommonDataSource#setLogWriter(java.io.PrintWriter) */ @Override public void setLogWriter(PrintWriter out) throws SQLException { _logWriter = out; } /** * {@inheritDoc} * * @see javax.sql.CommonDataSource#setLoginTimeout(int) */ @Override public void setLoginTimeout(int seconds) throws SQLException { throw new UnsupportedOperationException( "Login timeout is not supported."); } /** * {@inheritDoc} * * @see javax.sql.CommonDataSource#getLoginTimeout() */ @Override public int getLoginTimeout() throws SQLException { throw new UnsupportedOperationException( "Login timeout is not supported."); } /** * {@inheritDoc} * * @see java.sql.Wrapper#unwrap(java.lang.Class) */ @Override public <T> T unwrap(Class<T> iface) throws SQLException { throw new SQLException("JdbcDataSource is not a wrapper."); } /** * {@inheritDoc} * * @see java.sql.Wrapper#isWrapperFor(java.lang.Class) */ @Override public boolean isWrapperFor(Class<?> iface) throws SQLException { return false; } /** * {@inheritDoc} * * @see javax.sql.DataSource#getConnection() */ @Override public Connection getConnection() throws SQLException { if (credentialsInURL) return DriverManager.getConnection(jdbcUrl); else return DriverManager.getConnection(jdbcUrl, userName, password); } /** * {@inheritDoc} * * @see javax.sql.DataSource#getConnection(java.lang.String, * java.lang.String) */ @Override public Connection getConnection(String username, String password) throws SQLException { return DriverManager.getConnection(jdbcUrl, username, password); } }