/* * Copyright 2006-2012 Amazon Technologies, Inc. or its affiliates. * Amazon, Amazon.com and Carbonado are trademarks or registered trademarks * of Amazon Technologies, Inc. or its affiliates. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.amazon.carbonado.repo.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.io.PrintWriter; import java.util.Properties; import javax.sql.DataSource; /** * SimpleDataSource does not implement any connection pooling. * * @author Brian S O'Neill */ public class SimpleDataSource implements DataSource { private final String mURL; private final Properties mProperties; private PrintWriter mLogWriter; /** * @param driverClass JDBC driver to load; can pass null if already loaded * @param driverURL JDBC driver URL * @param properties optional connection properties * @since 1.2 */ public SimpleDataSource(String driverClass, String driverURL, Properties properties) throws SQLException { this(driverClass, driverURL, null, null, properties); } /** * @param driverClass JDBC driver to load; can pass null if already loaded * @param driverURL JDBC driver URL * @param username optional username to connect with * @param password optional password to connect with */ public SimpleDataSource(String driverClass, String driverURL, String username, String password) throws SQLException { this(driverClass, driverURL, username, password, null); } /** * @param driverClass JDBC driver to load; can pass null if already loaded * @param driverURL JDBC driver URL * @param username optional username to connect with * @param password optional password to connect with * @param properties optional connection properties * @since 1.2 */ public SimpleDataSource(String driverClass, String driverURL, String username, String password, Properties properties) throws SQLException { if (driverURL == null) { throw new IllegalArgumentException("Must supply JDBC URL"); } if (driverClass != null) { try { Class.forName(driverClass); } catch (ClassNotFoundException e) { SQLException e2 = new SQLException(); e2.initCause(e); throw e2; } } if (properties == null) { properties = new Properties(); } if (username != null) { properties.put("user", username); } if (password != null) { properties.put("password", password); } mURL = driverURL; mProperties = properties; } public Connection getConnection() throws SQLException { return DriverManager.getConnection(mURL, mProperties); } public Connection getConnection(String username, String password) throws SQLException { Properties properties = new Properties(mProperties); if (username != null) { properties.put("user", username); } if (password != null) { properties.put("password", password); } return DriverManager.getConnection(mURL, properties); } public PrintWriter getLogWriter() throws SQLException { return mLogWriter; } public void setLogWriter(PrintWriter writer) throws SQLException { mLogWriter = writer; } public void setLoginTimeout(int seconds) throws SQLException { } public int getLoginTimeout() throws SQLException { return 0; } /** * @since 1.2 */ public void close() throws SQLException { } /** * @since 1.2 */ public T unwrap(Class iface) throws SQLException { throw new UnsupportedOperationException(); } /** * @since 1.2 */ public boolean isWrapperFor(Class iface) throws SQLException { throw new UnsupportedOperationException(); } public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException { throw new SQLFeatureNotSupportedException(); } }