/** * H2GIS is a library that brings spatial support to the H2 Database Engine * <http://www.h2database.com>. H2GIS is developed by CNRS * <http://www.cnrs.fr/>. * * This code is part of the H2GIS project. H2GIS 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; * version 3.0 of the License. * * H2GIS 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 <http://www.gnu.org/licenses/>. * * * For more information, please consult: <http://www.h2gis.org/> * or contact directly: info_at_h2gis.org */ package org.h2gis.utilities.wrapper; import javax.sql.DataSource; import java.io.PrintWriter; import java.sql.Connection; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.util.logging.Logger; /** * Entry point for spatial wrapper of SQL Interfaces. * @author Nicolas Fortin */ public class DataSourceWrapper implements DataSource { private DataSource dataSource; public DataSourceWrapper(DataSource dataSource) { this.dataSource = dataSource; } @Override public Connection getConnection() throws SQLException { return new ConnectionWrapper(dataSource.getConnection()); } @Override public Connection getConnection(String username, String password) throws SQLException { return new ConnectionWrapper(dataSource.getConnection(username, password)); } @Override public PrintWriter getLogWriter() throws SQLException { return dataSource.getLogWriter(); } @Override public void setLogWriter(PrintWriter out) throws SQLException { dataSource.setLogWriter(out); } @Override public void setLoginTimeout(int seconds) throws SQLException { dataSource.setLoginTimeout(seconds); } @Override public int getLoginTimeout() throws SQLException { return dataSource.getLoginTimeout(); } // @Override -- Commented out for Java 6 compatibility. public Logger getParentLogger() throws SQLFeatureNotSupportedException { throw new UnsupportedOperationException("This Java 7 method is not yet supported."); } @Override public <T> T unwrap(Class<T> iface) throws SQLException { if(iface.isInstance(dataSource)) { return iface.cast(dataSource); } else { return dataSource.unwrap(iface); } } @Override public boolean isWrapperFor(Class<?> iface) throws SQLException { return iface.isInstance(this) || iface.isInstance(dataSource) || dataSource.isWrapperFor(iface); } }