📄 statementinpool.java
字号:
/*
* Licensed under the X license (see http://www.x.org/terms.htm)
*/
package org.ofbiz.minerva.pool.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.SQLWarning;
/**
* Wraps a Statement to track errors and the last used time for the owning
* connection. That time is updated every time a SQL action is performed
* (executeQuery, executeUpdate, etc.).
*
* @author Aaron Mulder (ammulder@alumni.princeton.edu)
*/
public class StatementInPool implements Statement {
private final static String CLOSED = "Statement has been closed!";
private Statement impl;
private ConnectionWrapper con;
/**
* Creates a new statement from a source statement and wrapper connection.
*/
public StatementInPool(Statement source, ConnectionWrapper owner) {
if (source == null || owner == null) throw new NullPointerException();
impl = source;
con = owner;
}
/**
* Updates the last used time for the owning connection to the current time.
*/
public void setLastUsed() {
if (con != null)
con.setLastUsed();
}
/**
* Indicates that an error occured on the owning connection.
*/
public void setError(SQLException e) {
if (con != null)
con.setError(e);
}
/**
* Gets a reference to the "real" Statement. This should only be used if
* you need to cast that to a specific type to call a proprietary method -
* you will defeat all the pooling if you use the underlying Statement
* directly.
*/
public Statement getUnderlyingStatement() {
return impl;
}
// ---- Implementation of java.sql.Statement ----
public void addBatch(String arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.addBatch(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void cancel() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.cancel();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void clearBatch() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.clearBatch();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void clearWarnings() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.clearWarnings();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void close() throws SQLException {
if (impl != null) {
impl.close();
con.statementClosed(this);
}
clearFields();
}
protected void clearFields() {
con = null;
impl = null;
}
public boolean execute(String arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
setLastUsed();
return impl.execute(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public int[] executeBatch() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
setLastUsed();
return impl.executeBatch();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public ResultSet executeQuery(String arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
setLastUsed();
return new ResultSetInPool(impl.executeQuery(arg0), this);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public int executeUpdate(String arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
setLastUsed();
return impl.executeUpdate(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public Connection getConnection() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
return con;
}
public int getFetchDirection() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getFetchDirection();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public int getFetchSize() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getFetchSize();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public int getMaxFieldSize() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getMaxFieldSize();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public int getMaxRows() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getMaxRows();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public boolean getMoreResults() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getMoreResults();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public int getQueryTimeout() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getQueryTimeout();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public ResultSet getResultSet() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
ResultSet rs = impl.getResultSet();
return rs == null ? null : new ResultSetInPool(rs, this);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public int getResultSetConcurrency() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getResultSetConcurrency();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public int getResultSetType() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getResultSetType();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public int getUpdateCount() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getUpdateCount();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public SQLWarning getWarnings() throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
return impl.getWarnings();
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void setCursorName(String arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.setCursorName(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void setEscapeProcessing(boolean arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.setEscapeProcessing(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void setFetchDirection(int arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.setFetchDirection(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void setFetchSize(int arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.setFetchSize(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void setMaxFieldSize(int arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.setMaxFieldSize(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void setMaxRows(int arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.setMaxRows(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
public void setQueryTimeout(int arg0) throws SQLException {
if (impl == null) throw new SQLException(CLOSED);
try {
impl.setQueryTimeout(arg0);
} catch (SQLException e) {
setError(e);
throw e;
}
}
// ------- J2SE 1.4 methods comment; needed to compile -------
/* (non-Javadoc)
* @see java.sql.Statement#getMoreResults(int)
*/
public boolean getMoreResults(int arg0) throws SQLException {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see java.sql.Statement#getGeneratedKeys()
*/
public ResultSet getGeneratedKeys() throws SQLException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see java.sql.Statement#executeUpdate(java.lang.String, int)
*/
public int executeUpdate(String arg0, int arg1) throws SQLException {
// TODO Auto-generated method stub
return 0;
}
/* (non-Javadoc)
* @see java.sql.Statement#executeUpdate(java.lang.String, int[])
*/
public int executeUpdate(String arg0, int[] arg1) throws SQLException {
// TODO Auto-generated method stub
return 0;
}
/* (non-Javadoc)
* @see java.sql.Statement#executeUpdate(java.lang.String, java.lang.String[])
*/
public int executeUpdate(String arg0, String[] arg1) throws SQLException {
// TODO Auto-generated method stub
return 0;
}
/* (non-Javadoc)
* @see java.sql.Statement#execute(java.lang.String, int)
*/
public boolean execute(String arg0, int arg1) throws SQLException {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see java.sql.Statement#execute(java.lang.String, int[])
*/
public boolean execute(String arg0, int[] arg1) throws SQLException {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see java.sql.Statement#execute(java.lang.String, java.lang.String[])
*/
public boolean execute(String arg0, String[] arg1) throws SQLException {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see java.sql.Statement#getResultSetHoldability()
*/
public int getResultSetHoldability() throws SQLException {
// TODO Auto-generated method stub
return 0;
}
// ---- End Implementation of Statement ----
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -