public class StatementSpy extends java.lang.Object implements java.sql.Statement, Spy
Modifier and Type | Field and Description |
---|---|
protected ConnectionSpy |
connectionSpy
The Connection that created this Statement.
|
protected java.util.List |
currentBatch
Tracking of current batch (see addBatch, clearBatch and executeBatch)
//todo: should access to this List be synchronized?
|
protected SpyLogDelegator |
log |
protected java.sql.Statement |
realStatement
The real statement that this StatementSpy wraps.
|
Constructor and Description |
---|
StatementSpy(ConnectionSpy connectionSpy,
java.sql.Statement realStatement)
Create a StatementSpy that wraps another Statement
for the purpose of logging all method calls, sql, exceptions and return values.
|
Modifier and Type | Method and Description |
---|---|
void |
addBatch(java.lang.String sql) |
void |
cancel() |
void |
clearBatch() |
void |
clearWarnings() |
void |
close() |
void |
closeOnCompletion() |
boolean |
execute(java.lang.String sql) |
boolean |
execute(java.lang.String sql,
int autoGeneratedKeys) |
boolean |
execute(java.lang.String sql,
int[] columnIndexes) |
boolean |
execute(java.lang.String sql,
java.lang.String[] columnNames) |
int[] |
executeBatch() |
java.sql.ResultSet |
executeQuery(java.lang.String sql) |
int |
executeUpdate(java.lang.String sql) |
int |
executeUpdate(java.lang.String sql,
int autoGeneratedKeys) |
int |
executeUpdate(java.lang.String sql,
int[] columnIndexes) |
int |
executeUpdate(java.lang.String sql,
java.lang.String[] columnNames) |
java.lang.String |
getClassType()
Get the type of class being spied upon.
|
java.sql.Connection |
getConnection() |
java.lang.Integer |
getConnectionNumber()
Get the connection number.
|
int |
getFetchDirection() |
int |
getFetchSize() |
java.sql.ResultSet |
getGeneratedKeys() |
int |
getMaxFieldSize() |
int |
getMaxRows() |
boolean |
getMoreResults() |
boolean |
getMoreResults(int current) |
int |
getQueryTimeout() |
java.sql.Statement |
getRealStatement()
Get the real Statement that this StatementSpy wraps.
|
java.sql.ResultSet |
getResultSet() |
int |
getResultSetConcurrency() |
int |
getResultSetHoldability() |
int |
getResultSetType() |
int |
getUpdateCount() |
java.sql.SQLWarning |
getWarnings() |
boolean |
isClosed() |
boolean |
isCloseOnCompletion() |
boolean |
isPoolable() |
boolean |
isWrapperFor(java.lang.Class<?> iface) |
protected void |
reportAllReturns(java.lang.String methodCall,
java.lang.String msg)
Report (for logging) that a method returned.
|
protected void |
reportException(java.lang.String methodCall,
java.sql.SQLException exception)
Report an exception to be logged.
|
protected void |
reportException(java.lang.String methodCall,
java.sql.SQLException exception,
java.lang.String sql)
Report an exception to be logged.
|
protected void |
reportException(java.lang.String methodCall,
java.sql.SQLException exception,
java.lang.String sql,
long execTime)
Report an exception to be logged which includes timing data on a sql failure.
|
protected void |
reportReturn(java.lang.String methodCall)
Conveniance method to report (for logging) that a method returned (void return type).
|
protected boolean |
reportReturn(java.lang.String methodCall,
boolean value)
Conveniance method to report (for logging) that a method returned a boolean value.
|
protected byte |
reportReturn(java.lang.String methodCall,
byte value)
Conveniance method to report (for logging) that a method returned a byte value.
|
protected double |
reportReturn(java.lang.String methodCall,
double value)
Conveniance method to report (for logging) that a method returned a double value.
|
protected float |
reportReturn(java.lang.String methodCall,
float value)
Conveniance method to report (for logging) that a method returned a float value.
|
protected int |
reportReturn(java.lang.String methodCall,
int value)
Conveniance method to report (for logging) that a method returned a int value.
|
protected long |
reportReturn(java.lang.String methodCall,
long value)
Conveniance method to report (for logging) that a method returned a long value.
|
protected java.lang.Object |
reportReturn(java.lang.String methodCall,
java.lang.Object value)
Conveniance method to report (for logging) that a method returned an Object.
|
protected short |
reportReturn(java.lang.String methodCall,
short value)
Conveniance method to report (for logging) that a method returned a short value.
|
protected void |
reportSql(java.lang.String sql,
java.lang.String methodCall)
Report SQL for logging.
|
protected void |
reportSqlTiming(long execTime,
java.lang.String sql,
java.lang.String methodCall)
Report SQL for logging.
|
protected void |
reportStatementSql(java.lang.String sql,
java.lang.String methodCall)
Report SQL for logging with a warning that it was generated from a statement.
|
protected void |
reportStatementSqlTiming(long execTime,
java.lang.String sql,
java.lang.String methodCall)
Report SQL for logging with a warning that it was generated from a statement.
|
void |
setCursorName(java.lang.String name) |
void |
setEscapeProcessing(boolean enable) |
void |
setFetchDirection(int direction) |
void |
setFetchSize(int rows) |
void |
setMaxFieldSize(int max) |
void |
setMaxRows(int max) |
void |
setPoolable(boolean poolable) |
void |
setQueryTimeout(int seconds) |
<T> T |
unwrap(java.lang.Class<T> iface) |
protected final SpyLogDelegator log
protected ConnectionSpy connectionSpy
protected java.sql.Statement realStatement
protected java.util.List currentBatch
public StatementSpy(ConnectionSpy connectionSpy, java.sql.Statement realStatement)
connectionSpy
- Connection that created this Statement.realStatement
- real underlying Statement that this StatementSpy wraps.public java.sql.Statement getRealStatement()
public java.lang.String getClassType()
Spy
getClassType
in interface Spy
public java.lang.Integer getConnectionNumber()
Spy
getConnectionNumber
in interface Spy
protected void reportException(java.lang.String methodCall, java.sql.SQLException exception, java.lang.String sql, long execTime)
methodCall
- description of method call and arguments passed to it that generated the exception.exception
- exception that was generatedsql
- SQL associated with the call.execTime
- amount of time that the jdbc driver was chugging on the SQL before it threw an exception.protected void reportException(java.lang.String methodCall, java.sql.SQLException exception, java.lang.String sql)
methodCall
- description of method call and arguments passed to it that generated the exception.exception
- exception that was generatedsql
- SQL associated with the call.protected void reportException(java.lang.String methodCall, java.sql.SQLException exception)
methodCall
- description of method call and arguments passed to it that generated the exception.exception
- exception that was generatedprotected void reportAllReturns(java.lang.String methodCall, java.lang.String msg)
methodCall
- description of method call and arguments passed to it that returned.msg
- description of what the return value that was returned. may be an empty String for void return types.protected boolean reportReturn(java.lang.String methodCall, boolean value)
methodCall
- description of method call and arguments passed to it that returned.value
- boolean return value.protected byte reportReturn(java.lang.String methodCall, byte value)
methodCall
- description of method call and arguments passed to it that returned.value
- byte return value.protected int reportReturn(java.lang.String methodCall, int value)
methodCall
- description of method call and arguments passed to it that returned.value
- int return value.protected double reportReturn(java.lang.String methodCall, double value)
methodCall
- description of method call and arguments passed to it that returned.value
- double return value.protected short reportReturn(java.lang.String methodCall, short value)
methodCall
- description of method call and arguments passed to it that returned.value
- short return value.protected long reportReturn(java.lang.String methodCall, long value)
methodCall
- description of method call and arguments passed to it that returned.value
- long return value.protected float reportReturn(java.lang.String methodCall, float value)
methodCall
- description of method call and arguments passed to it that returned.value
- float return value.protected java.lang.Object reportReturn(java.lang.String methodCall, java.lang.Object value)
methodCall
- description of method call and arguments passed to it that returned.value
- return Object.protected void reportReturn(java.lang.String methodCall)
methodCall
- description of method call and arguments passed to it that returned.protected void reportStatementSql(java.lang.String sql, java.lang.String methodCall)
sql
- the SQL being runmethodCall
- the name of the method that was running the SQLprotected void reportStatementSqlTiming(long execTime, java.lang.String sql, java.lang.String methodCall)
execTime
- execution time in msec.sql
- the SQL being runmethodCall
- the name of the method that was running the SQLprotected void reportSqlTiming(long execTime, java.lang.String sql, java.lang.String methodCall)
execTime
- execution time in msec.sql
- the SQL being runmethodCall
- the name of the method that was running the SQLprotected void reportSql(java.lang.String sql, java.lang.String methodCall)
sql
- the SQL being runmethodCall
- the name of the method that was running the SQLpublic java.sql.SQLWarning getWarnings() throws java.sql.SQLException
getWarnings
in interface java.sql.Statement
java.sql.SQLException
public int executeUpdate(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
executeUpdate
in interface java.sql.Statement
java.sql.SQLException
public boolean execute(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
execute
in interface java.sql.Statement
java.sql.SQLException
public void setMaxRows(int max) throws java.sql.SQLException
setMaxRows
in interface java.sql.Statement
java.sql.SQLException
public boolean getMoreResults() throws java.sql.SQLException
getMoreResults
in interface java.sql.Statement
java.sql.SQLException
public void clearWarnings() throws java.sql.SQLException
clearWarnings
in interface java.sql.Statement
java.sql.SQLException
public void addBatch(java.lang.String sql) throws java.sql.SQLException
addBatch
in interface java.sql.Statement
java.sql.SQLException
public int getResultSetType() throws java.sql.SQLException
getResultSetType
in interface java.sql.Statement
java.sql.SQLException
public void clearBatch() throws java.sql.SQLException
clearBatch
in interface java.sql.Statement
java.sql.SQLException
public void setFetchDirection(int direction) throws java.sql.SQLException
setFetchDirection
in interface java.sql.Statement
java.sql.SQLException
public int[] executeBatch() throws java.sql.SQLException
executeBatch
in interface java.sql.Statement
java.sql.SQLException
public void setFetchSize(int rows) throws java.sql.SQLException
setFetchSize
in interface java.sql.Statement
java.sql.SQLException
public int getQueryTimeout() throws java.sql.SQLException
getQueryTimeout
in interface java.sql.Statement
java.sql.SQLException
public java.sql.Connection getConnection() throws java.sql.SQLException
getConnection
in interface java.sql.Statement
java.sql.SQLException
public java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException
getGeneratedKeys
in interface java.sql.Statement
java.sql.SQLException
public void setEscapeProcessing(boolean enable) throws java.sql.SQLException
setEscapeProcessing
in interface java.sql.Statement
java.sql.SQLException
public int getFetchDirection() throws java.sql.SQLException
getFetchDirection
in interface java.sql.Statement
java.sql.SQLException
public void setQueryTimeout(int seconds) throws java.sql.SQLException
setQueryTimeout
in interface java.sql.Statement
java.sql.SQLException
public boolean getMoreResults(int current) throws java.sql.SQLException
getMoreResults
in interface java.sql.Statement
java.sql.SQLException
public java.sql.ResultSet executeQuery(java.lang.String sql) throws java.sql.SQLException
executeQuery
in interface java.sql.Statement
java.sql.SQLException
public int getMaxFieldSize() throws java.sql.SQLException
getMaxFieldSize
in interface java.sql.Statement
java.sql.SQLException
public int executeUpdate(java.lang.String sql) throws java.sql.SQLException
executeUpdate
in interface java.sql.Statement
java.sql.SQLException
public void cancel() throws java.sql.SQLException
cancel
in interface java.sql.Statement
java.sql.SQLException
public void setCursorName(java.lang.String name) throws java.sql.SQLException
setCursorName
in interface java.sql.Statement
java.sql.SQLException
public int getFetchSize() throws java.sql.SQLException
getFetchSize
in interface java.sql.Statement
java.sql.SQLException
public int getResultSetConcurrency() throws java.sql.SQLException
getResultSetConcurrency
in interface java.sql.Statement
java.sql.SQLException
public int getResultSetHoldability() throws java.sql.SQLException
getResultSetHoldability
in interface java.sql.Statement
java.sql.SQLException
public boolean isClosed() throws java.sql.SQLException
isClosed
in interface java.sql.Statement
java.sql.SQLException
public void setPoolable(boolean poolable) throws java.sql.SQLException
setPoolable
in interface java.sql.Statement
java.sql.SQLException
public boolean isPoolable() throws java.sql.SQLException
isPoolable
in interface java.sql.Statement
java.sql.SQLException
public void setMaxFieldSize(int max) throws java.sql.SQLException
setMaxFieldSize
in interface java.sql.Statement
java.sql.SQLException
public boolean execute(java.lang.String sql) throws java.sql.SQLException
execute
in interface java.sql.Statement
java.sql.SQLException
public int executeUpdate(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
executeUpdate
in interface java.sql.Statement
java.sql.SQLException
public boolean execute(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
execute
in interface java.sql.Statement
java.sql.SQLException
public int executeUpdate(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
executeUpdate
in interface java.sql.Statement
java.sql.SQLException
public boolean execute(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
execute
in interface java.sql.Statement
java.sql.SQLException
public java.sql.ResultSet getResultSet() throws java.sql.SQLException
getResultSet
in interface java.sql.Statement
java.sql.SQLException
public int getMaxRows() throws java.sql.SQLException
getMaxRows
in interface java.sql.Statement
java.sql.SQLException
public void close() throws java.sql.SQLException
close
in interface java.lang.AutoCloseable
close
in interface java.sql.Statement
java.sql.SQLException
public int getUpdateCount() throws java.sql.SQLException
getUpdateCount
in interface java.sql.Statement
java.sql.SQLException
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
unwrap
in interface java.sql.Wrapper
java.sql.SQLException
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
isWrapperFor
in interface java.sql.Wrapper
java.sql.SQLException
public void closeOnCompletion() throws java.sql.SQLException
closeOnCompletion
in interface java.sql.Statement
java.sql.SQLException
public boolean isCloseOnCompletion() throws java.sql.SQLException
isCloseOnCompletion
in interface java.sql.Statement
java.sql.SQLException