public abstract class DatasourceAccessor extends java.lang.Object implements Accessor
DatasourceAccessor
is an abstract implementation
of the Accessor
interface providing common functionality to the concrete database and EIS accessors.
It is responsible for
connecting,
transactions,
call executionModifier and Type | Field and Description |
---|---|
protected int |
callCount
Keep track of the number of concurrent active calls.
|
protected java.lang.Object |
datasourceConnection
Store the reference to the driver level connection.
|
protected boolean |
isConnected
Keep track of whether the accessor is "connected".
|
protected boolean |
isInTransaction
Keep track if the accessor is within a transaction context
|
protected Login |
login
Store the login information that connected this accessor.
|
protected DatasourcePlatform |
platform
This is also required to ensure all accessors for a session are using the same platform.
|
Constructor and Description |
---|
DatasourceAccessor()
Default Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
afterJTSTransaction()
To be called after JTS transaction has been completed (committed or rolled back)
|
protected abstract void |
basicBeginTransaction(AbstractSession session)
Begin the driver level transaction.
|
protected abstract void |
basicCommitTransaction(AbstractSession session)
Commit the driver level transaction.
|
protected abstract java.lang.Object |
basicExecuteCall(Call call,
AbstractRecord row,
AbstractSession session)
Execute the call to driver level datasource.
|
protected abstract void |
basicRollbackTransaction(AbstractSession session)
Rollback the driver level transaction.
|
void |
beginTransaction(AbstractSession session)
Begin a transaction on the database.
|
protected abstract void |
buildConnectLog(AbstractSession session)
Build a log string of any driver metadata that can be obtained.
|
java.lang.Object |
clone()
Clone the accessor.
|
void |
closeConnection()
Close the accessor's connection.
|
protected abstract void |
closeDatasourceConnection()
Close the connection to the driver level datasource.
|
void |
commitTransaction(AbstractSession session)
Commit a transaction on the database.
|
protected void |
connect(Login login)
Connect to the database.
|
void |
connect(Login login,
AbstractSession session)
Connect to the datasource.
|
void |
decrementCallCount()
Used for load balancing and external pooling.
|
void |
disconnect(AbstractSession session)
Disconnect from the datasource.
|
java.lang.Object |
executeCall(Call call,
AbstractRecord translationRow,
AbstractSession session)
Execute the call.
|
void |
flushSelectCalls(AbstractSession session)
Added as a result of Bug 2804663 - satisfy the Accessor interface
implementation.
|
int |
getCallCount()
Used for load balancing and external pooling.
|
java.util.Vector |
getColumnInfo(java.lang.String catalog,
java.lang.String schema,
java.lang.String tableName,
java.lang.String columnName,
AbstractSession session)
Return column information for the specified
database objects.
|
java.sql.Connection |
getConnection()
Helper method to return the JDBC connection for DatabaseAccessor.
|
java.lang.Object |
getDatasourceConnection()
Return the driver level connection.
|
DatasourcePlatform |
getDatasourcePlatform()
Return the platform.
|
Login |
getLogin()
Return the login
|
java.util.Vector |
getTableInfo(java.lang.String catalog,
java.lang.String schema,
java.lang.String tableName,
java.lang.String[] types,
AbstractSession session)
Return table information for the specified
database objects.
|
void |
incrementCallCount(AbstractSession session)
Used for load balancing and external pooling.
|
boolean |
isConnected()
Return true if the accessor is currently connected to a data source.
|
protected abstract boolean |
isDatasourceConnected()
Return if the driver level connection is connected.
|
boolean |
isInTransaction()
Return the transaction status of the receiver.
|
protected void |
reconnect(AbstractSession session)
Attempt to save some of the cost associated with getting a fresh connection.
|
void |
reestablishConnection(AbstractSession session)
PUBLIC:
Reconnect to the database.
|
void |
rollbackTransaction(AbstractSession session)
Rollback the transaction on the datasource.
|
protected void |
setCallCount(int callCount)
Used for load balancing and external pooling.
|
protected void |
setDatasourceConnection(java.lang.Object connection)
If client requires to manually set connection they can use the connection manager.
|
void |
setDatasourcePlatform(DatasourcePlatform platform)
Set the platform.
|
protected void |
setIsConnected(boolean isConnected)
Set whether the accessor has a connection to the "data store".
|
protected void |
setIsInTransaction(boolean value)
Set the transaction transaction status of the receiver.
|
protected void |
setLogin(Login login)
SECURE:
set the login
|
boolean |
usesExternalConnectionPooling()
Return true if some external connection pool is in use.
|
boolean |
usesExternalTransactionController()
Return true if some external transaction service is controlling transactions.
|
void |
writesCompleted(AbstractSession session)
This method will be called after a series of writes have been issued to
mark where a particular set of writes has completed.
|
protected java.lang.Object datasourceConnection
protected Login login
protected int callCount
protected boolean isInTransaction
protected boolean isConnected
protected DatasourcePlatform platform
public java.lang.Object clone()
public void afterJTSTransaction()
afterJTSTransaction
in interface Accessor
protected void setIsInTransaction(boolean value)
public boolean isInTransaction()
public boolean usesExternalConnectionPooling()
public void beginTransaction(AbstractSession session) throws DatabaseException
beginTransaction
in interface Accessor
DatabaseException
protected abstract void basicBeginTransaction(AbstractSession session)
protected abstract void basicCommitTransaction(AbstractSession session)
protected abstract void basicRollbackTransaction(AbstractSession session)
public void decrementCallCount()
decrementCallCount
in interface Accessor
public void incrementCallCount(AbstractSession session)
incrementCallCount
in interface Accessor
protected void connect(Login login) throws DatabaseException
DatabaseException
protected void setIsConnected(boolean isConnected)
protected void setCallCount(int callCount)
public int getCallCount()
getCallCount
in interface Accessor
public void commitTransaction(AbstractSession session) throws DatabaseException
commitTransaction
in interface Accessor
DatabaseException
public void connect(Login login, AbstractSession session) throws DatabaseException
connect
in interface Accessor
DatabaseException
protected abstract void closeDatasourceConnection()
protected abstract java.lang.Object basicExecuteCall(Call call, AbstractRecord row, AbstractSession session)
protected abstract void buildConnectLog(AbstractSession session)
public Login getLogin()
protected void setLogin(Login login)
public void disconnect(AbstractSession session) throws DatabaseException
disconnect
in interface Accessor
DatabaseException
public void closeConnection()
closeConnection
in interface Accessor
public java.lang.Object executeCall(Call call, AbstractRecord translationRow, AbstractSession session) throws DatabaseException
executeCall
in interface Accessor
DatabaseException
public void reestablishConnection(AbstractSession session) throws DatabaseException
reestablishConnection
in interface Accessor
DatabaseException
protected void reconnect(AbstractSession session) throws DatabaseException
DatabaseException
public DatasourcePlatform getDatasourcePlatform()
public void setDatasourcePlatform(DatasourcePlatform platform)
public java.lang.Object getDatasourceConnection()
getDatasourceConnection
in interface Accessor
public java.sql.Connection getConnection()
getConnection
in interface Accessor
public java.util.Vector getColumnInfo(java.lang.String catalog, java.lang.String schema, java.lang.String tableName, java.lang.String columnName, AbstractSession session) throws DatabaseException
getColumnInfo
in interface Accessor
DatabaseException
public java.util.Vector getTableInfo(java.lang.String catalog, java.lang.String schema, java.lang.String tableName, java.lang.String[] types, AbstractSession session) throws DatabaseException
getTableInfo
in interface Accessor
DatabaseException
protected void setDatasourceConnection(java.lang.Object connection)
public void rollbackTransaction(AbstractSession session) throws DatabaseException
rollbackTransaction
in interface Accessor
DatabaseException
public boolean usesExternalTransactionController()
usesExternalTransactionController
in interface Accessor
public boolean isConnected()
isConnected
in interface Accessor
protected abstract boolean isDatasourceConnected()
public void flushSelectCalls(AbstractSession session)
flushSelectCalls
in interface Accessor
oracle.toplink.essentials.internal.helper.LOBValueWriter#buildAndExecuteCallForLocator(DatabaseCall,Session,Accessor)
public void writesCompleted(AbstractSession session)
writesCompleted
in interface Accessor