DODS 5.1 API

com.lutris.appserver.server.sql.standard
Class StandardDBConnection

java.lang.Object
  |
  +--com.lutris.appserver.server.sql.standard.StandardDBConnection
All Implemented Interfaces:
DBConnection
Direct Known Subclasses:
InformixDBConnection, OracleDBConnection

public class StandardDBConnection
extends java.lang.Object
implements DBConnection

Standard implementation of the DBConnection object.

Since:
LBS1.7
Version:
$Revision: 1.2 $
Author:
Mark Diekhans
, Kyle Clark
See Also:
DBConnection

Field Summary
protected  java.sql.Connection connection
          JDBC connection object.
protected  ConnectionAllocator connectionAllocator
           
protected  java.lang.String password
          Database user password.
protected  java.lang.String url
          Database URL, used for error messages.
protected  java.lang.String user
          Database user, for error messages.
 
Constructor Summary
protected StandardDBConnection(ConnectionAllocator connectionAllocatorObj, java.lang.String url, java.lang.String user, java.lang.String password, int maxPreparedStatements, boolean logging, int generation)
          Initialize the connection to a database.
 
Method Summary
 void allocate()
          Method called when this connection object is allocated from the connection allocator.
 void close()
          Close this connection.
 void commit()
          Commit a transaction.
 boolean execute(java.lang.String sql)
          Execute a SQL statement that does not return a resultset.
 java.sql.ResultSet executeQuery(java.sql.PreparedStatement preparedStmt, java.lang.String msg)
          Execute a prepared query statement.
 java.sql.ResultSet executeQuery(java.lang.String sql)
          Execute a SQL query statement.
 int executeUpdate(java.sql.PreparedStatement preparedStmt, java.lang.String msg)
          Execute a prepared update statement.
 int executeUpdate(java.lang.String sql)
          Execute a SQL update statement.
 java.sql.Connection getConnection()
          Get the underlying Connection object.
 int getGeneration()
          Get the generation number specified when the connection was created.
 java.lang.String getUrl()
          Get the database URL.
 java.lang.String getUser()
          Get the database user name.
 boolean handleException(java.sql.SQLException sqlExcept)
          Check if a connection is valid after an SQL exception is thrown.
 void incrRequestCount()
          Increment the count of the number of requests against this connection.
 boolean isMarkedForDrop()
           
protected  void logDebug(java.lang.String str)
          Debug logging.
protected  void logDebug(java.lang.String str, java.sql.Statement stmt)
          Debug logging.
 java.sql.CallableStatement prepareCall(java.lang.String sql)
          Creates a CallableStatement object for calling database stored procedures.
 java.sql.PreparedStatement prepareStatement(java.lang.String sql)
          Get a prepared statement given an SQL string.
 void release()
          Return this connection to its allocator.
 void reset()
          Closes down all query-specific resources.
 void rollback()
          Rollback a transaction.
 void setAutoCommit(boolean on)
          Autocommit on/off.
 void validate()
          Validates this connection.
 void warningCheck(java.sql.ResultSet resultSet)
          Check for warnings in a result set.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

connection

protected java.sql.Connection connection
JDBC connection object.


url

protected java.lang.String url
Database URL, used for error messages.


user

protected java.lang.String user
Database user, for error messages.


password

protected java.lang.String password
Database user password.


connectionAllocator

protected ConnectionAllocator connectionAllocator
Constructor Detail

StandardDBConnection

protected StandardDBConnection(ConnectionAllocator connectionAllocatorObj,
                               java.lang.String url,
                               java.lang.String user,
                               java.lang.String password,
                               int maxPreparedStatements,
                               boolean logging,
                               int generation)
                        throws java.sql.SQLException
Initialize the connection to a database.

Parameters:
url - JDBC URL of database.
user - SQL user name.
password - SQL password.
connectionAllocatorObj - The connection allocator that this connection belongs to.
maxPreparedStatements - Maximum number of preparse statements. a value of less than zero queries JDBC for the value.
logging - Specifying true enables SQL logging.
generation - A generation number used to drop old connection when they are released.
Throws:
java.sql.SQLException - If a connection can't be established.
Method Detail

allocate

public void allocate()
              throws java.sql.SQLException
Method called when this connection object is allocated from the connection allocator.

Specified by:
allocate in interface DBConnection
Throws:
java.sql.SQLException - If reset had no been called on the previous operation.

validate

public void validate()
              throws java.sql.SQLException
Validates this connection. Check to see that it is not closed and has been properly allocated.

Specified by:
validate in interface DBConnection
Throws:
java.sql.SQLException - If it is not valid.

reset

public void reset()
           throws java.sql.SQLException
Closes down all query-specific resources.

Specified by:
reset in interface DBConnection
Throws:
java.sql.SQLException - If a database error occurs.

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql)
                                            throws java.sql.SQLException
Get a prepared statement given an SQL string. If the statement is cached, return that statement, otherwise prepare and save in the cache.

Specified by:
prepareStatement in interface DBConnection
Parameters:
sql - The SQL statement to prepared.
Returns:
The prepared statement, which is associated only with this connection and must not be used once the connection is released.
Throws:
java.sql.SQLException - If a SQL error occured compiling the statement.

prepareCall

public java.sql.CallableStatement prepareCall(java.lang.String sql)
                                       throws java.sql.SQLException
Creates a CallableStatement object for calling database stored procedures. Refer to jdk api refernece.

Specified by:
prepareCall in interface DBConnection
Parameters:
sql - The SQL statement to be called.
Returns:
a new CallableStatement object containing the pre-compiled SQL statement.
Throws:
java.sql.SQLException - If a database access error occurs statement.

executeQuery

public java.sql.ResultSet executeQuery(java.sql.PreparedStatement preparedStmt,
                                       java.lang.String msg)
                                throws java.sql.SQLException
Execute a prepared query statement. Once the query has completed, reset() should be called.

Specified by:
executeQuery in interface DBConnection
Parameters:
preparedStmt - The statement to execute.
msg - for logging/debug purposes
Returns:
Query result set, do not call close, use reset(),
Throws:
java.sql.SQLException - If a SQL error occured executing the statement.

executeQuery

public java.sql.ResultSet executeQuery(java.lang.String sql)
                                throws java.sql.SQLException
Execute a SQL query statement. This is a wrapper that adds logging. Once the query has completed, reset() should be called.

Specified by:
executeQuery in interface DBConnection
Parameters:
sql - The SQL query statement
Returns:
Query result set, do not call close, use reset(),
Throws:
java.sql.SQLException - If a SQL error occured executing the statement.

executeUpdate

public int executeUpdate(java.lang.String sql)
                  throws java.sql.SQLException
Execute a SQL update statement. This is a wrapper that adds logging. Once the update has completed, reset() should be called.

Specified by:
executeUpdate in interface DBConnection
Parameters:
sql - The SQL query statement
Returns:
Either the row count for UPDATE, INSERT, DELETE or 0 for SQL statements that return nothing.
Throws:
java.sql.SQLException - If a SQL error occured executing the update.

executeUpdate

public int executeUpdate(java.sql.PreparedStatement preparedStmt,
                         java.lang.String msg)
                  throws java.sql.SQLException
Execute a prepared update statement. Once the update has completed, reset() should be called.

Specified by:
executeUpdate in interface DBConnection
Parameters:
preparedStmt - The statement to execute.
msg - for logging/debug purposes
Returns:
Either the row count for UPDATE, INSERT, DELETE or 0 for SQL statements that return nothing.
Throws:
java.sql.SQLException - If a SQL error occured executing the statement.

execute

public boolean execute(java.lang.String sql)
                throws java.sql.SQLException
Execute a SQL statement that does not return a resultset. This is a wrapper that adds logging. Once the query has completed, reset() should be called.

Specified by:
execute in interface DBConnection
Parameters:
sql - The SQL query statement
Returns:
True if the next result is a ResultSet; false if it is an update count or there are no more results.
Throws:
java.sql.SQLException - If a SQL error occured executing the statement.

warningCheck

public void warningCheck(java.sql.ResultSet resultSet)
                  throws java.sql.SQLException
Check for warnings in a result set.

Specified by:
warningCheck in interface DBConnection
Parameters:
resultSet - The result set to check for warnings.
Throws:
java.sql.SQLException - If a SQL error occured compiling the statement.

release

public void release()
Return this connection to its allocator. This object should not be used after calling this function.

Specified by:
release in interface DBConnection

handleException

public boolean handleException(java.sql.SQLException sqlExcept)
Check if a connection is valid after an SQL exception is thrown. If it is not usable, then the connection is dropped from the connection allocator and closed. The connection is then no longer usable.

Specified by:
handleException in interface DBConnection
Parameters:
sqlExcept - The SQL exception that occured.
Returns:
true if the exception does not affect this connection object. False otherwise - in which case this connection object is no longer usable.

getGeneration

public int getGeneration()
Get the generation number specified when the connection was created.

Specified by:
getGeneration in interface DBConnection
Returns:
The generation number.

close

public void close()
Close this connection. Use by the connection allocator when this object is no longer used. Errors are ignored.

Specified by:
close in interface DBConnection

setAutoCommit

public void setAutoCommit(boolean on)
                   throws java.sql.SQLException
Autocommit on/off.

Specified by:
setAutoCommit in interface DBConnection
Parameters:
on - - False to disable auto commit mode. True to enable.
Throws:
java.sql.SQLException - If a database access error occurs.

commit

public void commit()
            throws java.sql.SQLException
Commit a transaction.

Specified by:
commit in interface DBConnection
Throws:
java.sql.SQLException - If a database access error occurs.

rollback

public void rollback()
              throws java.sql.SQLException
Rollback a transaction. Should only be used when auto-commit mode has been disabled.

Specified by:
rollback in interface DBConnection
Throws:
java.sql.SQLException - If a database access error occurs.

logDebug

protected void logDebug(java.lang.String str)
Debug logging.

Parameters:
str - The data to log.

logDebug

protected void logDebug(java.lang.String str,
                        java.sql.Statement stmt)
Debug logging.

Parameters:
str - The data to log.
stmt - The statement to log.

incrRequestCount

public void incrRequestCount()
Increment the count of the number of requests against this connection.

Specified by:
incrRequestCount in interface DBConnection

getUrl

public java.lang.String getUrl()
Get the database URL.

Specified by:
getUrl in interface DBConnection
Returns:
The database URL.

getUser

public java.lang.String getUser()
Get the database user name. Normally user for error messages.

Specified by:
getUser in interface DBConnection
Returns:
The database user name.

getConnection

public java.sql.Connection getConnection()
Get the underlying Connection object. Use with extreme caution.

Specified by:
getConnection in interface DBConnection
Returns:
the connection object

isMarkedForDrop

public boolean isMarkedForDrop()
Specified by:
isMarkedForDrop in interface DBConnection
Returns:
true if this connection is marked to be dropped out of the connection pool and closed.

DODS 5.1 API