org.apache.commons.dbcp
Class DelegatingStatement

java.lang.Object
  |
  +--org.apache.commons.dbcp.AbandonedTrace
        |
        +--org.apache.commons.dbcp.DelegatingStatement
All Implemented Interfaces:
java.sql.Statement

public class DelegatingStatement
extends AbandonedTrace
implements java.sql.Statement

A base delegating implementation of Statement.

All of the methods from the Statement interface simply check to see that the Statement is active, and call the corresponding method on the "delegate" provided in my constructor.

Extends AbandonedTrace to implement Statement tracking and logging of code which created the Statement. Tracking the Statement ensures that the Connection which created it can close any open Statement's on Connection close.

Author:
Rodney Waldhoff (rwaldhof@us.britannica.com), Glenn L. Nielsen, James House (james@interobjective.com)

Field Summary
protected  boolean _closed
           
protected  DelegatingConnection _conn
          The connection that created me.
protected  java.sql.Statement _stmt
          My delegate.
 
Constructor Summary
DelegatingStatement(DelegatingConnection c, java.sql.Statement s)
          Create a wrapper for the Statement which traces this Statement to the Connection which created it and the code which created it.
 
Method Summary
protected  void activate()
           
 void addBatch(java.lang.String sql)
           
 void cancel()
           
protected  void checkOpen()
           
 void clearBatch()
           
 void clearWarnings()
           
 void close()
          Close this DelegatingStatement, and close any ResultSets that were not explicitly closed.
 boolean execute(java.lang.String sql)
           
 int[] executeBatch()
           
 java.sql.ResultSet executeQuery(java.lang.String sql)
           
 int executeUpdate(java.lang.String sql)
           
 java.sql.Connection getConnection()
           
 java.sql.Statement getDelegate()
          Returns my underlying Statement.
 int getFetchDirection()
           
 int getFetchSize()
           
 java.sql.Statement getInnermostDelegate()
          If my underlying Statement is not a DelegatingStatement, returns it, otherwise recursively invokes this method on my delegate.
 int getMaxFieldSize()
           
 int getMaxRows()
           
 boolean getMoreResults()
           
 int getQueryTimeout()
           
 java.sql.ResultSet getResultSet()
           
 int getResultSetConcurrency()
           
 int getResultSetType()
           
 int getUpdateCount()
           
 java.sql.SQLWarning getWarnings()
           
protected  void passivate()
           
 void setCursorName(java.lang.String name)
           
 void setDelegate(java.sql.Statement s)
          Sets my delegate.
 void setEscapeProcessing(boolean enable)
           
 void setFetchDirection(int direction)
           
 void setFetchSize(int rows)
           
 void setMaxFieldSize(int max)
           
 void setMaxRows(int max)
           
 void setQueryTimeout(int seconds)
           
 
Methods inherited from class org.apache.commons.dbcp.AbandonedTrace
addTrace, clearTrace, getConfig, getLastUsed, getTrace, printStackTrace, removeTrace, setLastUsed, setLastUsed, setStackTrace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_closed

protected boolean _closed

_conn

protected DelegatingConnection _conn
The connection that created me.

_stmt

protected java.sql.Statement _stmt
My delegate.
Constructor Detail

DelegatingStatement

public DelegatingStatement(DelegatingConnection c,
                           java.sql.Statement s)
Create a wrapper for the Statement which traces this Statement to the Connection which created it and the code which created it.
Parameters:
s - the Statement to delegate all calls to.
c - the DelegatingConnection that created this statement.
Method Detail

activate

protected void activate()

addBatch

public void addBatch(java.lang.String sql)
              throws java.sql.SQLException
Specified by:
addBatch in interface java.sql.Statement

cancel

public void cancel()
            throws java.sql.SQLException
Specified by:
cancel in interface java.sql.Statement

checkOpen

protected void checkOpen()
                  throws java.sql.SQLException

clearBatch

public void clearBatch()
                throws java.sql.SQLException
Specified by:
clearBatch in interface java.sql.Statement

clearWarnings

public void clearWarnings()
                   throws java.sql.SQLException
Specified by:
clearWarnings in interface java.sql.Statement

close

public void close()
           throws java.sql.SQLException
Close this DelegatingStatement, and close any ResultSets that were not explicitly closed.
Specified by:
close in interface java.sql.Statement

execute

public boolean execute(java.lang.String sql)
                throws java.sql.SQLException
Specified by:
execute in interface java.sql.Statement

executeBatch

public int[] executeBatch()
                   throws java.sql.SQLException
Specified by:
executeBatch in interface java.sql.Statement

executeQuery

public java.sql.ResultSet executeQuery(java.lang.String sql)
                                throws java.sql.SQLException
Specified by:
executeQuery in interface java.sql.Statement

executeUpdate

public int executeUpdate(java.lang.String sql)
                  throws java.sql.SQLException
Specified by:
executeUpdate in interface java.sql.Statement

getConnection

public java.sql.Connection getConnection()
                                  throws java.sql.SQLException
Specified by:
getConnection in interface java.sql.Statement

getDelegate

public java.sql.Statement getDelegate()
Returns my underlying Statement.
Returns:
my underlying Statement.

getFetchDirection

public int getFetchDirection()
                      throws java.sql.SQLException
Specified by:
getFetchDirection in interface java.sql.Statement

getFetchSize

public int getFetchSize()
                 throws java.sql.SQLException
Specified by:
getFetchSize in interface java.sql.Statement

getInnermostDelegate

public java.sql.Statement getInnermostDelegate()
If my underlying Statement is not a DelegatingStatement, returns it, otherwise recursively invokes this method on my delegate.

Hence this method will return the first delegate that is not a DelegatingStatement or null when no non-DelegatingStatement delegate can be found by transversing this chain.

This method is useful when you may have nested DelegatingStatements, and you want to make sure to obtain a "genuine" Statement.


getMaxFieldSize

public int getMaxFieldSize()
                    throws java.sql.SQLException
Specified by:
getMaxFieldSize in interface java.sql.Statement

getMaxRows

public int getMaxRows()
               throws java.sql.SQLException
Specified by:
getMaxRows in interface java.sql.Statement

getMoreResults

public boolean getMoreResults()
                       throws java.sql.SQLException
Specified by:
getMoreResults in interface java.sql.Statement

getQueryTimeout

public int getQueryTimeout()
                    throws java.sql.SQLException
Specified by:
getQueryTimeout in interface java.sql.Statement

getResultSet

public java.sql.ResultSet getResultSet()
                                throws java.sql.SQLException
Specified by:
getResultSet in interface java.sql.Statement

getResultSetConcurrency

public int getResultSetConcurrency()
                            throws java.sql.SQLException
Specified by:
getResultSetConcurrency in interface java.sql.Statement

getResultSetType

public int getResultSetType()
                     throws java.sql.SQLException
Specified by:
getResultSetType in interface java.sql.Statement

getUpdateCount

public int getUpdateCount()
                   throws java.sql.SQLException
Specified by:
getUpdateCount in interface java.sql.Statement

getWarnings

public java.sql.SQLWarning getWarnings()
                                throws java.sql.SQLException
Specified by:
getWarnings in interface java.sql.Statement

passivate

protected void passivate()
                  throws java.sql.SQLException

setCursorName

public void setCursorName(java.lang.String name)
                   throws java.sql.SQLException
Specified by:
setCursorName in interface java.sql.Statement

setDelegate

public void setDelegate(java.sql.Statement s)
Sets my delegate.

setEscapeProcessing

public void setEscapeProcessing(boolean enable)
                         throws java.sql.SQLException
Specified by:
setEscapeProcessing in interface java.sql.Statement

setFetchDirection

public void setFetchDirection(int direction)
                       throws java.sql.SQLException
Specified by:
setFetchDirection in interface java.sql.Statement

setFetchSize

public void setFetchSize(int rows)
                  throws java.sql.SQLException
Specified by:
setFetchSize in interface java.sql.Statement

setMaxFieldSize

public void setMaxFieldSize(int max)
                     throws java.sql.SQLException
Specified by:
setMaxFieldSize in interface java.sql.Statement

setMaxRows

public void setMaxRows(int max)
                throws java.sql.SQLException
Specified by:
setMaxRows in interface java.sql.Statement

setQueryTimeout

public void setQueryTimeout(int seconds)
                     throws java.sql.SQLException
Specified by:
setQueryTimeout in interface java.sql.Statement


Copyright © 2001 Apache Software Foundation. Documenation generated February 27 2003.