package pool; import java.sql.*; import java.util.*; import java.io.*; public class JDCConnection implements Connection { private JDCConnectionPool pool; private Connection conn; private boolean inuse; private long timestamp; public JDCConnection(Connection conn, JDCConnectionPool pool) { this.conn=conn; this.pool=pool; this.inuse=false; this.timestamp=0; } public synchronized boolean lease() { if(inuse) { return false; } else { inuse=true; timestamp=System.currentTimeMillis(); return true; } } public boolean validate() { try { conn.getMetaData(); }catch (Exception e) { return false; } return true; } public boolean inUse() { return inuse; } public long getLastUse() { return timestamp; } public void close() throws SQLException { pool.returnConnection(this); } protected void expireLease() { inuse=false; } protected Connection getConnection() { return conn; } public PreparedStatement prepareStatement(String sql) throws SQLException { return conn.prepareStatement(sql); } public CallableStatement prepareCall(String sql) throws SQLException { return conn.prepareCall(sql); } public Statement createStatement() throws SQLException { return conn.createStatement(); } public String nativeSQL(String sql) throws SQLException { return conn.nativeSQL(sql); } public void setAutoCommit(boolean autoCommit) throws SQLException { conn.setAutoCommit(autoCommit); } public boolean getAutoCommit() throws SQLException { return conn.getAutoCommit(); } public void commit() throws SQLException { conn.commit(); } public void rollback() throws SQLException { conn.rollback(); } public boolean isClosed() throws SQLException { return conn.isClosed(); } public DatabaseMetaData getMetaData() throws SQLException { return conn.getMetaData(); } public void setReadOnly(boolean readOnly) throws SQLException { conn.setReadOnly(readOnly); } public boolean isReadOnly() throws SQLException { return conn.isReadOnly(); } public void setCatalog(String catalog) throws SQLException { conn.setCatalog(catalog); } public String getCatalog() throws SQLException { return conn.getCatalog(); } public void setTransactionIsolation(int level) throws SQLException { conn.setTransactionIsolation(level); } public int getTransactionIsolation() throws SQLException { return conn.getTransactionIsolation(); } public SQLWarning getWarnings() throws SQLException { return conn.getWarnings(); } public void clearWarnings() throws SQLException { conn.clearWarnings(); } }