org.objectweb.easybeans.dbpool
Class JStatement

java.lang.Object
  extended by org.objectweb.easybeans.dbpool.JStatement
All Implemented Interfaces:
java.sql.PreparedStatement, java.sql.Statement

public class JStatement
extends java.lang.Object
implements java.sql.PreparedStatement

Wrapper on a PreparedStatement. This wrapper is used to track close method in order to avoid closing the statement, and putting it instead in a pool.

Author:
Philippe Durieux, Florent Benoit

Field Summary
private  boolean changed
          Properties of this statement has been changed ? Needs to be be cleared when reused.
private  boolean closing
          Being closed.
private  int hashCode
          Hashcode computed in constructor.
private  JLog logger
          Logger.
private  JManagedConnection mc
          Managed Connection the Statement belongs to.
private  boolean opened
          Is that this statement is opened ?
private  java.sql.PreparedStatement ps
          Physical PreparedStatement object on which the wrapper is.
private  java.lang.String sql
          SQL used as statement.
 
Fields inherited from interface java.sql.Statement
CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO
 
Constructor Summary
JStatement(java.sql.PreparedStatement ps, JManagedConnection mc, java.lang.String sql)
          Builds a new statement with the given wrapped statement of given connection and given sql query.
 
Method Summary
 void addBatch()
          
 void addBatch(java.lang.String sql)
          
 void cancel()
          
 void clearBatch()
          
 void clearParameters()
          
 void clearWarnings()
          
 void close()
          
 boolean equals(java.lang.Object stmt)
           
 boolean execute()
          
 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.sql.ResultSet executeQuery(java.lang.String sql)
          
 int executeUpdate()
          
 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)
          
 boolean forceClose()
          Force a close on the Prepare Statement.
 void forget()
          Physically close this Statement.
 java.sql.Connection getConnection()
          
 int getFetchDirection()
          
 int getFetchSize()
          
 java.sql.ResultSet getGeneratedKeys()
          
 int getMaxFieldSize()
          
 int getMaxRows()
          
 java.sql.ResultSetMetaData getMetaData()
          
 boolean getMoreResults()
          
 boolean getMoreResults(int current)
          
 java.sql.ParameterMetaData getParameterMetaData()
          
 int getQueryTimeout()
          
 java.sql.ResultSet getResultSet()
          
 int getResultSetConcurrency()
          
 int getResultSetHoldability()
          
 int getResultSetType()
          
 java.lang.String getSql()
           
 int getUpdateCount()
          
 java.sql.SQLWarning getWarnings()
          
 int hashCode()
           
 boolean isClosed()
           
 void reuse()
          Reuses this statement so reset properties.
 void setArray(int i, java.sql.Array x)
          
 void setAsciiStream(int parameterIndex, java.io.InputStream x, int length)
          
 void setBigDecimal(int parameterIndex, java.math.BigDecimal x)
          
 void setBinaryStream(int parameterIndex, java.io.InputStream x, int length)
          
 void setBlob(int i, java.sql.Blob x)
          
 void setBoolean(int parameterIndex, boolean x)
          
 void setByte(int parameterIndex, byte x)
          
 void setBytes(int parameterIndex, byte[] x)
          
 void setCharacterStream(int parameterIndex, java.io.Reader reader, int length)
          
 void setClob(int i, java.sql.Clob x)
          
 void setCursorName(java.lang.String name)
          
 void setDate(int parameterIndex, java.sql.Date x)
          
 void setDate(int parameterIndex, java.sql.Date x, java.util.Calendar cal)
          
 void setDouble(int parameterIndex, double x)
          
 void setEscapeProcessing(boolean enable)
          
 void setFetchDirection(int direction)
          
 void setFetchSize(int rows)
          
 void setFloat(int parameterIndex, float x)
          
 void setInt(int parameterIndex, int x)
          
 void setLong(int parameterIndex, long x)
          
 void setMaxFieldSize(int max)
          
 void setMaxRows(int max)
          
 void setNull(int parameterIndex, int sqlType)
          
 void setNull(int paramIndex, int sqlType, java.lang.String typeName)
          
 void setObject(int parameterIndex, java.lang.Object x)
          
 void setObject(int parameterIndex, java.lang.Object x, int targetSqlType)
          
 void setObject(int parameterIndex, java.lang.Object x, int targetSqlType, int scale)
          
 void setQueryTimeout(int seconds)
          
 void setRef(int i, java.sql.Ref x)
          
 void setShort(int parameterIndex, short x)
          
 void setString(int parameterIndex, java.lang.String x)
          
 void setTime(int parameterIndex, java.sql.Time x)
          
 void setTime(int parameterIndex, java.sql.Time x, java.util.Calendar cal)
          
 void setTimestamp(int parameterIndex, java.sql.Timestamp x)
          
 void setTimestamp(int parameterIndex, java.sql.Timestamp x, java.util.Calendar cal)
          
 void setUnicodeStream(int parameterIndex, java.io.InputStream x, int length)
          
 void setURL(int parameterIndex, java.net.URL x)
          
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

changed

private boolean changed
Properties of this statement has been changed ? Needs to be be cleared when reused.


opened

private boolean opened
Is that this statement is opened ?


closing

private boolean closing
Being closed. (in close method).


ps

private java.sql.PreparedStatement ps
Physical PreparedStatement object on which the wrapper is.


mc

private JManagedConnection mc
Managed Connection the Statement belongs to.


hashCode

private int hashCode
Hashcode computed in constructor.


sql

private java.lang.String sql
SQL used as statement.


logger

private JLog logger
Logger.

Constructor Detail

JStatement

public JStatement(java.sql.PreparedStatement ps,
                  JManagedConnection mc,
                  java.lang.String sql)
Builds a new statement with the given wrapped statement of given connection and given sql query.

Parameters:
ps - the prepared statement.
mc - managed connection
sql - query.
Method Detail

getSql

public java.lang.String getSql()
Returns:
Sql query used.

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object
Returns:
hashcode of the object

equals

public boolean equals(java.lang.Object stmt)
Overrides:
equals in class java.lang.Object
Parameters:
stmt - given statement for comparing it
Returns:
true if given object is equals to this current object

forceClose

public boolean forceClose()
Force a close on the Prepare Statement. Usually, it's the caller that did not close it explicitly

Returns:
true if it was open

reuse

public void reuse()
           throws java.sql.SQLException
Reuses this statement so reset properties.

Throws:
java.sql.SQLException - if reset fails

isClosed

public boolean isClosed()
Returns:
true if this statement has been closed, else false.

forget

public void forget()
Physically close this Statement.

Throws:
java.sql.SQLException

executeUpdate

public int executeUpdate()
                  throws java.sql.SQLException

Specified by:
executeUpdate in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

addBatch

public void addBatch()
              throws java.sql.SQLException

Specified by:
addBatch in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

clearParameters

public void clearParameters()
                     throws java.sql.SQLException

Specified by:
clearParameters in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

execute

public boolean execute()
                throws java.sql.SQLException

Specified by:
execute in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setByte

public void setByte(int parameterIndex,
                    byte x)
             throws java.sql.SQLException

Specified by:
setByte in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setDouble

public void setDouble(int parameterIndex,
                      double x)
               throws java.sql.SQLException

Specified by:
setDouble in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setFloat

public void setFloat(int parameterIndex,
                     float x)
              throws java.sql.SQLException

Specified by:
setFloat in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setInt

public void setInt(int parameterIndex,
                   int x)
            throws java.sql.SQLException

Specified by:
setInt in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setNull

public void setNull(int parameterIndex,
                    int sqlType)
             throws java.sql.SQLException

Specified by:
setNull in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setLong

public void setLong(int parameterIndex,
                    long x)
             throws java.sql.SQLException

Specified by:
setLong in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setShort

public void setShort(int parameterIndex,
                     short x)
              throws java.sql.SQLException

Specified by:
setShort in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setBoolean

public void setBoolean(int parameterIndex,
                       boolean x)
                throws java.sql.SQLException

Specified by:
setBoolean in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setBytes

public void setBytes(int parameterIndex,
                     byte[] x)
              throws java.sql.SQLException

Specified by:
setBytes in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setAsciiStream

public void setAsciiStream(int parameterIndex,
                           java.io.InputStream x,
                           int length)
                    throws java.sql.SQLException

Specified by:
setAsciiStream in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setBinaryStream

public void setBinaryStream(int parameterIndex,
                            java.io.InputStream x,
                            int length)
                     throws java.sql.SQLException

Specified by:
setBinaryStream in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setUnicodeStream

public void setUnicodeStream(int parameterIndex,
                             java.io.InputStream x,
                             int length)
                      throws java.sql.SQLException

Specified by:
setUnicodeStream in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setCharacterStream

public void setCharacterStream(int parameterIndex,
                               java.io.Reader reader,
                               int length)
                        throws java.sql.SQLException

Specified by:
setCharacterStream in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setObject

public void setObject(int parameterIndex,
                      java.lang.Object x)
               throws java.sql.SQLException

Specified by:
setObject in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setObject

public void setObject(int parameterIndex,
                      java.lang.Object x,
                      int targetSqlType)
               throws java.sql.SQLException

Specified by:
setObject in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setObject

public void setObject(int parameterIndex,
                      java.lang.Object x,
                      int targetSqlType,
                      int scale)
               throws java.sql.SQLException

Specified by:
setObject in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setNull

public void setNull(int paramIndex,
                    int sqlType,
                    java.lang.String typeName)
             throws java.sql.SQLException

Specified by:
setNull in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setString

public void setString(int parameterIndex,
                      java.lang.String x)
               throws java.sql.SQLException

Specified by:
setString in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setBigDecimal

public void setBigDecimal(int parameterIndex,
                          java.math.BigDecimal x)
                   throws java.sql.SQLException

Specified by:
setBigDecimal in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setURL

public void setURL(int parameterIndex,
                   java.net.URL x)
            throws java.sql.SQLException

Specified by:
setURL in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setArray

public void setArray(int i,
                     java.sql.Array x)
              throws java.sql.SQLException

Specified by:
setArray in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setBlob

public void setBlob(int i,
                    java.sql.Blob x)
             throws java.sql.SQLException

Specified by:
setBlob in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setClob

public void setClob(int i,
                    java.sql.Clob x)
             throws java.sql.SQLException

Specified by:
setClob in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setDate

public void setDate(int parameterIndex,
                    java.sql.Date x)
             throws java.sql.SQLException

Specified by:
setDate in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

getParameterMetaData

public java.sql.ParameterMetaData getParameterMetaData()
                                                throws java.sql.SQLException

Specified by:
getParameterMetaData in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setRef

public void setRef(int i,
                   java.sql.Ref x)
            throws java.sql.SQLException

Specified by:
setRef in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

executeQuery

public java.sql.ResultSet executeQuery()
                                throws java.sql.SQLException

Specified by:
executeQuery in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

getMetaData

public java.sql.ResultSetMetaData getMetaData()
                                       throws java.sql.SQLException

Specified by:
getMetaData in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setTime

public void setTime(int parameterIndex,
                    java.sql.Time x)
             throws java.sql.SQLException

Specified by:
setTime in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setTimestamp

public void setTimestamp(int parameterIndex,
                         java.sql.Timestamp x)
                  throws java.sql.SQLException

Specified by:
setTimestamp in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setDate

public void setDate(int parameterIndex,
                    java.sql.Date x,
                    java.util.Calendar cal)
             throws java.sql.SQLException

Specified by:
setDate in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setTime

public void setTime(int parameterIndex,
                    java.sql.Time x,
                    java.util.Calendar cal)
             throws java.sql.SQLException

Specified by:
setTime in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

setTimestamp

public void setTimestamp(int parameterIndex,
                         java.sql.Timestamp x,
                         java.util.Calendar cal)
                  throws java.sql.SQLException

Specified by:
setTimestamp in interface java.sql.PreparedStatement
Throws:
java.sql.SQLException

getFetchDirection

public int getFetchDirection()
                      throws java.sql.SQLException

Specified by:
getFetchDirection in interface java.sql.Statement
Throws:
java.sql.SQLException

getFetchSize

public int getFetchSize()
                 throws java.sql.SQLException

Specified by:
getFetchSize in interface java.sql.Statement
Throws:
java.sql.SQLException

getMaxFieldSize

public int getMaxFieldSize()
                    throws java.sql.SQLException

Specified by:
getMaxFieldSize in interface java.sql.Statement
Throws:
java.sql.SQLException

getMaxRows

public int getMaxRows()
               throws java.sql.SQLException

Specified by:
getMaxRows in interface java.sql.Statement
Throws:
java.sql.SQLException

getQueryTimeout

public int getQueryTimeout()
                    throws java.sql.SQLException

Specified by:
getQueryTimeout in interface java.sql.Statement
Throws:
java.sql.SQLException

getResultSetConcurrency

public int getResultSetConcurrency()
                            throws java.sql.SQLException

Specified by:
getResultSetConcurrency in interface java.sql.Statement
Throws:
java.sql.SQLException

getResultSetHoldability

public int getResultSetHoldability()
                            throws java.sql.SQLException

Specified by:
getResultSetHoldability in interface java.sql.Statement
Throws:
java.sql.SQLException

getResultSetType

public int getResultSetType()
                     throws java.sql.SQLException

Specified by:
getResultSetType in interface java.sql.Statement
Throws:
java.sql.SQLException

getUpdateCount

public int getUpdateCount()
                   throws java.sql.SQLException

Specified by:
getUpdateCount in interface java.sql.Statement
Throws:
java.sql.SQLException

cancel

public void cancel()
            throws java.sql.SQLException

Specified by:
cancel in interface java.sql.Statement
Throws:
java.sql.SQLException

clearBatch

public void clearBatch()
                throws java.sql.SQLException

Specified by:
clearBatch in interface java.sql.Statement
Throws:
java.sql.SQLException

clearWarnings

public void clearWarnings()
                   throws java.sql.SQLException

Specified by:
clearWarnings in interface java.sql.Statement
Throws:
java.sql.SQLException

close

public void close()
           throws java.sql.SQLException

Specified by:
close in interface java.sql.Statement
Throws:
java.sql.SQLException

getMoreResults

public boolean getMoreResults()
                       throws java.sql.SQLException

Specified by:
getMoreResults in interface java.sql.Statement
Throws:
java.sql.SQLException

executeBatch

public int[] executeBatch()
                   throws java.sql.SQLException

Specified by:
executeBatch in interface java.sql.Statement
Throws:
java.sql.SQLException

setFetchDirection

public void setFetchDirection(int direction)
                       throws java.sql.SQLException

Specified by:
setFetchDirection in interface java.sql.Statement
Throws:
java.sql.SQLException

setFetchSize

public void setFetchSize(int rows)
                  throws java.sql.SQLException

Specified by:
setFetchSize in interface java.sql.Statement
Throws:
java.sql.SQLException

setMaxFieldSize

public void setMaxFieldSize(int max)
                     throws java.sql.SQLException

Specified by:
setMaxFieldSize in interface java.sql.Statement
Throws:
java.sql.SQLException

setMaxRows

public void setMaxRows(int max)
                throws java.sql.SQLException

Specified by:
setMaxRows in interface java.sql.Statement
Throws:
java.sql.SQLException

setQueryTimeout

public void setQueryTimeout(int seconds)
                     throws java.sql.SQLException

Specified by:
setQueryTimeout in interface java.sql.Statement
Throws:
java.sql.SQLException

getMoreResults

public boolean getMoreResults(int current)
                       throws java.sql.SQLException

Specified by:
getMoreResults in interface java.sql.Statement
Throws:
java.sql.SQLException

setEscapeProcessing

public void setEscapeProcessing(boolean enable)
                         throws java.sql.SQLException

Specified by:
setEscapeProcessing in interface java.sql.Statement
Throws:
java.sql.SQLException

executeUpdate

public int executeUpdate(java.lang.String sql)
                  throws java.sql.SQLException

Specified by:
executeUpdate in interface java.sql.Statement
Throws:
java.sql.SQLException

addBatch

public void addBatch(java.lang.String sql)
              throws java.sql.SQLException

Specified by:
addBatch in interface java.sql.Statement
Throws:
java.sql.SQLException

setCursorName

public void setCursorName(java.lang.String name)
                   throws java.sql.SQLException

Specified by:
setCursorName in interface java.sql.Statement
Throws:
java.sql.SQLException

execute

public boolean execute(java.lang.String sql)
                throws java.sql.SQLException

Specified by:
execute in interface java.sql.Statement
Throws:
java.sql.SQLException

executeUpdate

public int executeUpdate(java.lang.String sql,
                         int autoGeneratedKeys)
                  throws java.sql.SQLException

Specified by:
executeUpdate in interface java.sql.Statement
Throws:
java.sql.SQLException

execute

public boolean execute(java.lang.String sql,
                       int autoGeneratedKeys)
                throws java.sql.SQLException

Specified by:
execute in interface java.sql.Statement
Throws:
java.sql.SQLException

executeUpdate

public int executeUpdate(java.lang.String sql,
                         int[] columnIndexes)
                  throws java.sql.SQLException

Specified by:
executeUpdate in interface java.sql.Statement
Throws:
java.sql.SQLException

execute

public boolean execute(java.lang.String sql,
                       int[] columnIndexes)
                throws java.sql.SQLException

Specified by:
execute in interface java.sql.Statement
Throws:
java.sql.SQLException

getConnection

public java.sql.Connection getConnection()
                                  throws java.sql.SQLException

Specified by:
getConnection in interface java.sql.Statement
Throws:
java.sql.SQLException

getGeneratedKeys

public java.sql.ResultSet getGeneratedKeys()
                                    throws java.sql.SQLException

Specified by:
getGeneratedKeys in interface java.sql.Statement
Throws:
java.sql.SQLException

getResultSet

public java.sql.ResultSet getResultSet()
                                throws java.sql.SQLException

Specified by:
getResultSet in interface java.sql.Statement
Throws:
java.sql.SQLException

getWarnings

public java.sql.SQLWarning getWarnings()
                                throws java.sql.SQLException

Specified by:
getWarnings in interface java.sql.Statement
Throws:
java.sql.SQLException

executeUpdate

public int executeUpdate(java.lang.String sql,
                         java.lang.String[] columnNames)
                  throws java.sql.SQLException

Specified by:
executeUpdate in interface java.sql.Statement
Throws:
java.sql.SQLException

execute

public boolean execute(java.lang.String sql,
                       java.lang.String[] columnNames)
                throws java.sql.SQLException

Specified by:
execute in interface java.sql.Statement
Throws:
java.sql.SQLException

executeQuery

public java.sql.ResultSet executeQuery(java.lang.String sql)
                                throws java.sql.SQLException

Specified by:
executeQuery in interface java.sql.Statement
Throws:
java.sql.SQLException