Module org.firebirdsql.jaybird
Package org.firebirdsql.jdbc

# Class FBTpbMapper

java.lang.Object
org.firebirdsql.jdbc.FBTpbMapper

All Implemented Interfaces:
  `Serializable`

@InternalApi public final class FBTpbMapper extends Object implements Serializable
This class provides mapping capabilities between standard JDBC transaction isolation level and Firebird Transaction Parameters Blocks (TPBs).

This class is internal API of Jaybird. Future versions may radically change, move, or make inaccessible this type.

Author:
  Roman Rokytskyy
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `TRANSACTION_NONE`
  Indicates that transactions are not supported.
  `static final String`
  `TRANSACTION_READ_COMMITTED`
  Dirty reads are prevented; non-repeatable reads and phantom reads can occur.
  `static final String`
  `TRANSACTION_READ_UNCOMMITTED`
  Dirty reads, non-repeatable reads and phantom reads can occur.
  `static final String`
  `TRANSACTION_REPEATABLE_READ`
  Dirty reads and non-repeatable reads are prevented; phantom reads can occur.
  `static final String`
  `TRANSACTION_SERIALIZABLE`
  Dirty reads, non-repeatable reads and phantom reads are prevented.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FBTpbMapper()`
  Create instance of this class with the default mapping of JDBC transaction isolation levels to Firebird TPB.
  `FBTpbMapper(String mappingResource, ClassLoader cl)`
  Create instance of this class and load mapping from the specified resource.
  `FBTpbMapper(Map<String,String> stringMapping)`
  Create instance of this class for the specified string mapping.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static FBTpbMapper`
  `copyOf(FBTpbMapper tpbMapper)`
  `boolean`
  `equals(Object obj)`
  `static FBTpbMapper`
  `getDefaultMapper()`
  Creates a new instance with the default configuration.
  `TransactionParameterBuffer`
  `getDefaultMapping()`
  Get default mapping.
  `TransactionParameterBuffer`
  `getMapping(int transactionIsolation)`
  Get mapping for the specified transaction isolation level.
  `static int`
  `getTransactionIsolationLevel(String isolationName)`
  Convert transaction isolation level name into a corresponding constant.
  `static String`
  `getTransactionIsolationName(int isolationLevel)`
  Convert transaction isolation level into string.
  `int`
  `hashCode()`
  `static TransactionParameterBuffer`
  `processMapping(String mapping)`
  Process comma-separated list of keywords and convert them into TPB values.
  `static void`
  `processMapping(FirebirdConnectionProperties connectionProperties, Map<String,String> info)`
  This method extracts TPB mapping information from the connection parameters and adds it to the connectionProperties.
  `static void`
  `processMapping(FirebirdConnectionProperties connectionProperties, Properties info)`
  This method extracts TPB mapping information from the connection parameters and adds it to the connectionProperties.
  `void`
  `setMapping(int transactionIsolation, TransactionParameterBuffer tpb)`
  Set mapping for the specified transaction isolation.

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### TRANSACTION_SERIALIZABLE

    public static final 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 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 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 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 String TRANSACTION_NONE
    Indicates that transactions are not supported. This level is not supported
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### FBTpbMapper

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

  - ### FBTpbMapper

    public FBTpbMapper(Map<String,String> stringMapping) throws SQLException
    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 the 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 constants. Meaning of these constants and possible combinations you can find in a documentation.
    Throws:
      `SQLException` - if mapping contains incorrect values.

  - ### FBTpbMapper

    public FBTpbMapper(String mappingResource, ClassLoader cl) throws SQLException
    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:
      `SQLException` - if resource cannot be loaded or contains incorrect values.

- ## Method Details

  - ### getDefaultMapper

    public static FBTpbMapper getDefaultMapper()
    Creates a new instance with the default configuration.
    Returns:
      instance with the default mapper configuration

  - ### getTransactionIsolationName

    public static 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(String isolationName)
    Convert transaction isolation level name into a corresponding constant.
    Parameters:
      `isolationName` - name of the transaction isolation.
    Returns:
      corresponding constant.

  - ### processMapping

    public static void processMapping(FirebirdConnectionProperties connectionProperties, Properties info) throws SQLException
    This method extracts TPB mapping information from the connection parameters and adds it to the connectionProperties. The following format is supported:

    `info` contains separate mappings for each of following transaction isolation levels: `"TRANSACTION_SERIALIZABLE"`, `"TRANSACTION_REPEATABLE_READ"` and `"TRANSACTION_READ_COMMITTED"`.

    Parameters:
      `connectionProperties` - FirebirdConnectionProperties to set transaction state
      `info` - connection parameters passed into a driver.
    Throws:
      `SQLException` - if specified mapping is incorrect.
    See Also:
      - `processMapping(FirebirdConnectionProperties, Map)`

  - ### processMapping

    public static void processMapping(FirebirdConnectionProperties connectionProperties, Map<String,String> info) throws SQLException
    This method extracts TPB mapping information from the connection parameters and adds it to the connectionProperties. The following format is supported:

    `info` contains separate mappings for each of following transaction isolation levels: `"TRANSACTION_SERIALIZABLE"`, `"TRANSACTION_REPEATABLE_READ"` and `"TRANSACTION_READ_COMMITTED"`.

    Parameters:
      `connectionProperties` - FirebirdConnectionProperties to set transaction state
      `info` - connection parameters passed into a driver.
    Throws:
      `SQLException` - if specified mapping is incorrect.
    See Also:
      - `processMapping(FirebirdConnectionProperties, Properties)`

  - ### processMapping

    public static TransactionParameterBuffer processMapping(String mapping) throws SQLException
    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:
      `SQLException` - 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:
      `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:
      `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.

  - ### equals

    public boolean equals(Object obj)
    Overrides:
      `equals` in class `Object`

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### copyOf

    public static FBTpbMapper copyOf(FBTpbMapper tpbMapper)