org.firebirdsql.jdbc
Class FBTpbMapper

java.lang.Object
  extended by org.firebirdsql.jdbc.FBTpbMapper
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable

public class FBTpbMapper
extends java.lang.Object
implements java.io.Serializable, java.lang.Cloneable

This class is provides mapping capabilities between standard JDBC transaction isolation level and Firebird Transaction Parameters Block (TPB).

Author:
Roman Rokytskyy
See Also:
Serialized Form

Field Summary
static java.lang.String DEFAULT_MAPPING_RESOURCE
           
static java.lang.String TRANSACTION_NONE
          Indicates that transactions are not supported.
static java.lang.String TRANSACTION_READ_COMMITTED
          Dirty reads are prevented; non-repeatable reads and phantom reads can occur.
static java.lang.String TRANSACTION_READ_UNCOMMITTED
          Dirty reads, non-repeatable reads and phantom reads can occur.
static java.lang.String TRANSACTION_REPEATABLE_READ
          Dirty reads and non-repeatable reads are prevented; phantom reads can occur.
static java.lang.String TRANSACTION_SERIALIZABLE
          Dirty reads, non-repeatable reads and phantom reads are prevented.
 
Constructor Summary
FBTpbMapper(GDS gds)
          Create instance of this class with the default mapping of JDBC transaction isolation levels to Firebird TPB.
FBTpbMapper(GDS gds, java.util.Map stringMapping)
          Create instance of this class for the specified string mapping.
FBTpbMapper(GDS gds, java.lang.String mappingResource, java.lang.ClassLoader cl)
          Create instance of this class and load mapping from the specified resource.
 
Method Summary
 java.lang.Object clone()
           
 boolean equals(java.lang.Object obj)
           
static FBTpbMapper getDefaultMapper(GDS gds)
           
 TransactionParameterBuffer getDefaultMapping()
          Get default mapping.
 int getDefaultTransactionIsolation()
           
 TransactionParameterBuffer getMapping(int transactionIsolation)
          Get mapping for the specified transaction isolation level.
static int getTransactionIsolationLevel(java.lang.String isolationName)
          Convert transaction isolation level name into a corresponding constant.
static java.lang.String getTransactionIsolationName(int isolationLevel)
          Convert transaction isolation level into string.
 int hashCode()
           
static TransactionParameterBuffer processMapping(GDS gds, java.lang.String mapping)
          Process comma-separated list of keywords and convert them into TPB values.
 void setDefaultTransactionIsolation(int isolationLevel)
           
 void setMapping(int transactionIsolation, TransactionParameterBuffer tpb)
          Set mapping for the specified transaction isolation.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_MAPPING_RESOURCE

public static final java.lang.String DEFAULT_MAPPING_RESOURCE
See Also:
Constant Field Values

TRANSACTION_SERIALIZABLE

public static final java.lang.String TRANSACTION_SERIALIZABLE
Dirty reads, non-repeatable reads and phantom reads are prevented. This level includes the prohibitions in TRANSACTION_REPEATABLE_READ and further prohibits the situation where one transaction reads all rows that satisfy a WHERE condition, a second transaction inserts a row that satisfies that WHERE condition, and the first transaction rereads for the same condition, retrieving the additional "phantom" row in the second read.

See Also:
Constant Field Values

TRANSACTION_REPEATABLE_READ

public static final java.lang.String TRANSACTION_REPEATABLE_READ
Dirty reads and non-repeatable reads are prevented; phantom reads can occur. This level prohibits a transaction from reading a row with uncommitted changes in it, and it also prohibits the situation where one transaction reads a row, a second transaction alters the row, and the first transaction rereads the row, getting different values the second time (a "non-repeatable read").

See Also:
Constant Field Values

TRANSACTION_READ_COMMITTED

public static final java.lang.String TRANSACTION_READ_COMMITTED
Dirty reads are prevented; non-repeatable reads and phantom reads can occur. This level only prohibits a transaction from reading a row with uncommitted changes in it.

See Also:
Constant Field Values

TRANSACTION_READ_UNCOMMITTED

public static final java.lang.String TRANSACTION_READ_UNCOMMITTED
Dirty reads, non-repeatable reads and phantom reads can occur. This level allows a row changed by one transaction to be read by another transaction before any changes in that row have been committed (a "dirty read"). If any of the changes are rolled back, the second transaction will have retrieved an invalid row. This level is not actually supported

See Also:
Constant Field Values

TRANSACTION_NONE

public static final java.lang.String TRANSACTION_NONE
Indicates that transactions are not supported. This level is not supported

See Also:
Constant Field Values
Constructor Detail

FBTpbMapper

public FBTpbMapper(GDS gds)
Create instance of this class with the default mapping of JDBC transaction isolation levels to Firebird TPB.


FBTpbMapper

public FBTpbMapper(GDS gds,
                   java.util.Map stringMapping)
            throws FBResourceException
Create instance of this class for the specified string mapping.

Parameters:
stringMapping - mapping of JDBC transaction isolation to Firebird mapping. Keys and values of this map must be strings. Keys can have following values:
  • "TRANSACTION_SERIALIZABLE"
  • "TRANSACTION_REPEATABLE_READ"
  • "TRANSACTION_READ_COMMITTED"
  • "TRANSACTION_READ_UNCOMMITTED"
Values are specified as comma-separated list of following keywords:
  • "isc_tpb_consistency"
  • "isc_tpb_concurrency"
  • "isc_tpb_read_committed"
  • "isc_tpb_rec_version"
  • "isc_tpb_no_rec_version"
  • "isc_tpb_wait"
  • "isc_tpb_nowait"
  • "isc_tpb_read"
  • "isc_tpb_write"
  • "isc_tpb_lock_read"
  • "isc_tpb_lock_write"
  • "isc_tpb_shared"
  • "isc_tpb_protected"
It is also allowed to strip "isc_tpb_" prefix from above shown constans. Meaning of these constants and possible combinations you can find in a documentation.
Throws:
FBResourceException - if mapping contains incorrect values.

FBTpbMapper

public FBTpbMapper(GDS gds,
                   java.lang.String mappingResource,
                   java.lang.ClassLoader cl)
            throws FBResourceException
Create instance of this class and load mapping from the specified resource.

Parameters:
mappingResource - name of the resource to load.
cl - class loader that should be used to load specified resource.
Throws:
FBResourceException - if resource cannot be loaded or contains incorrect values.
Method Detail

getDefaultMapper

public static FBTpbMapper getDefaultMapper(GDS gds)

getTransactionIsolationName

public static java.lang.String getTransactionIsolationName(int isolationLevel)
Convert transaction isolation level into string.

Parameters:
isolationLevel - transaction isolation level as integer constant.
Returns:
corresponding string representation.

getTransactionIsolationLevel

public static int getTransactionIsolationLevel(java.lang.String isolationName)
Convert transaction isolation level name into a corresponding constant.

Parameters:
isolationName - name of the transaction isolation.
Returns:
corresponding constant.

processMapping

public static TransactionParameterBuffer processMapping(GDS gds,
                                                        java.lang.String mapping)
                                                 throws FBResourceException
Process comma-separated list of keywords and convert them into TPB values.

Parameters:
mapping - comma-separated list of keywords.
Returns:
set containing values corresponding to the specified keywords.
Throws:
FBResourceException - if mapping contains keyword that is not a TPB parameter.

getMapping

public TransactionParameterBuffer getMapping(int transactionIsolation)
Get mapping for the specified transaction isolation level.

Parameters:
transactionIsolation - transaction isolation level.
Returns:
set with TPB parameters.
Throws:
java.lang.IllegalArgumentException - if specified transaction isolation level is unknown.

setMapping

public void setMapping(int transactionIsolation,
                       TransactionParameterBuffer tpb)
Set mapping for the specified transaction isolation.

Parameters:
transactionIsolation - transaction isolation level.
tpb - TPB parameters.
Throws:
java.lang.IllegalArgumentException - if incorrect isolation level is specified.

getDefaultMapping

public TransactionParameterBuffer getDefaultMapping()
Get default mapping. Default mapping represents a TPB mapping for the default transaction isolation level (read committed).

Returns:
mapping for the default transaction isolation level.

getDefaultTransactionIsolation

public int getDefaultTransactionIsolation()

setDefaultTransactionIsolation

public void setDefaultTransactionIsolation(int isolationLevel)

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

clone

public java.lang.Object clone()
Overrides:
clone in class java.lang.Object


Copyright © 2001-2019 Jaybird (Firebird JDBC/JCA) team. All rights reserved.