com.ibm.websphere.rsadapter
Class CloudscapeDataStoreHelper

java.lang.Object
  |
  +--com.ibm.websphere.rsadapter.GenericDataStoreHelper
        |
        +--com.ibm.websphere.rsadapter.CloudscapeDataStoreHelper
All Implemented Interfaces:
DataStoreHelper, java.io.Serializable
Direct Known Subclasses:
CloudscapeNetworkServerDataStoreHelper

public class CloudscapeDataStoreHelper
extends GenericDataStoreHelper
implements java.io.Serializable

This is a helper class customized for the Cloudscape database. It allows us to plug in data store specific functions. When trying to map an exception, the Cloudscape errormap will be searched first then the generic one will be searched.

If you have any special Cloudscape requirements, you might want to look into extending this class and overwriting the methods you wish to change.

See Also:
Serialized Form

Field Summary
protected  java.util.HashMap db2jErrorMap
           
protected static com.ibm.ejs.ras.TraceComponent db2jTc
           
 
Fields inherited from class com.ibm.websphere.rsadapter.GenericDataStoreHelper
EOLN, genErrorMap, resBundle
 
Fields inherited from interface com.ibm.websphere.rsadapter.DataStoreHelper
CLOUDSCAPE_HELPER, CLOUDSCAPE_NETWORK_SERVER_HELPER, CONNECTJDBC_HELPER, CUSTOM_HELPER, DATADIRECT_HELPER, DB2_390_HELPER, DB2_390_LOCAL_HELPER, DB2_400_HELPER, DB2_HELPER, DB2_UNIVERSAL_HELPER, GENERIC_HELPER, INFORMIX_HELPER, MSSQL_HELPER, ORACLE_HELPER, POTENTIAL_DEADLOCK, POTENTIAL_LOST_UPDATE, SEQUELINK_HELPER, SYBASE_HELPER, SYBASE11_HELPER, TX_REPEATABLE_READ_FORUPDATE, TX_SERIALIZABLE_FORUPDATE, UPDATE_ON_READONLY, WSCONNECTJDBC_HELPER
 
Constructor Summary
CloudscapeDataStoreHelper(java.util.Properties props)
          Constructor, the property is passed in case some info is needed in the future, for now this parameter is not used.
 
Method Summary
 void doStatementCleanup(java.sql.PreparedStatement stmt)
          Clean up a statement before it is placed in the cache.
 java.lang.Class findMappingClass(java.sql.SQLException e)
          This method returns mapping for a given exception if one is found.
 int getIsolationLevel(com.ibm.websphere.appprofile.accessintent.AccessIntent aIntent)
          This method returns the isolation level given the Intent object.
 int getResultSetConcurrency(com.ibm.websphere.appprofile.accessintent.AccessIntent intent)
          This method returns the resultSet concurrency given the Intent Object.
 void setUserDefinedMap(java.util.Map newmap)
          This method is used to add user defined error maps.
 java.lang.String showLockInfo(java.util.Properties props)
          This method returns lock information for Cloudscape.
 
Methods inherited from class com.ibm.websphere.rsadapter.GenericDataStoreHelper
calcPartitionNumber, doConnectionCleanup, doConnectionSetup, getLockType, getMetaData, getPrintWriter, getResultSetType, getXAExceptionContents, hasLostUpdateOrDeadLockOccurred, isBatchUpdateSupportedWithAccessIntent, isConnectionError, mapException, mapException, modifyXAFlag, processGenericCredentials
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

db2jTc

protected static final com.ibm.ejs.ras.TraceComponent db2jTc

db2jErrorMap

protected java.util.HashMap db2jErrorMap
Constructor Detail

CloudscapeDataStoreHelper

public CloudscapeDataStoreHelper(java.util.Properties props)
Constructor, the property is passed in case some info is needed in the future, for now this parameter is not used.
Parameters:
props - not needed here, entry will be ignored
Method Detail

doStatementCleanup

public void doStatementCleanup(java.sql.PreparedStatement stmt)
                        throws java.sql.SQLException
Clean up a statement before it is placed in the cache. This method is called only for statements which are being cached. It is called only if certain statement properties have changed. See DataStoreHelper.
Overrides:
doStatementCleanup in class GenericDataStoreHelper
Parameters:
stmt - the PreparedStatement.
Throws:
java.sql.SQLException - if an error occurs cleaning up the statement.

findMappingClass

public final java.lang.Class findMappingClass(java.sql.SQLException e)
This method returns mapping for a given exception if one is found. First the user defined map is searched followed by the predefined Cloudscape map. If nothing is found, the search continues in the parent class - GenericHelper. The search is done in the following order:
  1. first the errorCode is searched
  2. then the SQLState.

If a user wants to override the mapping of a specific Exception, they can override this method and either return the same exception class or return null. In the mapexception() which calls this method if the map found is null then the original exception is returned. A user can also cancel the mapping by returning null for that exception map.

Overrides:
findMappingClass in class GenericDataStoreHelper
Parameters:
e - The SQLException we need to find a mapping class for
Returns:
java.lang.Class - The mapped class

getIsolationLevel

public final int getIsolationLevel(com.ibm.websphere.appprofile.accessintent.AccessIntent aIntent)
                            throws javax.resource.ResourceException
This method returns the isolation level given the Intent object. If the intent Object passed is null, the websphere default is returned. The websphere default is dependent on the backend database. In this case it will be TRANSACTION_REPEATABLE_READ If this value is not desired one could override it in a subclass.

For Access Type: Optimistic --> map to RC; PessimisticRead -> map to RR

Pessimistic Update:

Note:
We don't allow pessimistic_update_random, therefore, this assumption is made when calculation is done

Overrides:
getIsolationLevel in class GenericDataStoreHelper
Parameters:
aIntent - AccessIntent
Returns:
int - An isolation level. The value is based on the isolation level that is defined in the java.sql.Connection.
Throws:
javax.resource.ResourceException -  
See Also:
Intent

getResultSetConcurrency

public int getResultSetConcurrency(com.ibm.websphere.appprofile.accessintent.AccessIntent intent)
                            throws javax.resource.ResourceException
This method returns the resultSet concurrency given the Intent Object. For Cloudscape, CONCUR_READ_ONLY is the only supported value. CONCUR_READ_ONLY is also the default JDBC value. So the Intent Object is always ignored. If this value is not desired one could override it in a subclass. This method has the same implementation as the Generic but we duplicate code here for the Trace to print correctly.
Overrides:
getResultSetConcurrency in class GenericDataStoreHelper
Parameters:
intent - AccessIntent
Returns:
CONCUR_READ_ONLY in all cases
Throws:
javax.resource.ResourceException -  
See Also:
AccessIntent

showLockInfo

public final java.lang.String showLockInfo(java.util.Properties props)
                                    throws java.lang.Exception
This method returns lock information for Cloudscape. We depend on Cloudscape's mechanism to generate the lock information. Cloudscape puts this information into a result set. We extract the information from the result set and return it as a String.
Overrides:
showLockInfo in class GenericDataStoreHelper
Parameters:
props - Props should have the following data to establish a connection with Cloudscape:
  1. user - username that has a DBA authority, default if non specified null
  2. password - default if non specified is : null
  3. databaseName - database name, default if non specified is "c:/db2jdb"
Returns:
Output string with locking info for Cloudscape.
Throws:
java.lang.Exception - Could range from java.io exceptions to javax.sql exceptions since we are running operations against the OS

setUserDefinedMap

public final void setUserDefinedMap(java.util.Map newmap)
This method is used to add user defined error maps. It is useful when the user wants a slght tweaking of the map. For a comprehensive change it might be advisable to extend this object.
Overrides:
setUserDefinedMap in class GenericDataStoreHelper
Parameters:
newmap - a list of SQL error codes / states and the Exception class