Module org.firebirdsql.jaybird
Package org.firebirdsql.encodings

# Class DefaultEncodingDefinition

java.lang.Object
org.firebirdsql.encodings.DefaultEncodingDefinition

All Implemented Interfaces:
  `EncodingDefinition`

public final class DefaultEncodingDefinition extends Object implements EncodingDefinition
Definition of a Firebird encoding. This is the default implementation of `EncodingDefinition`.

Since:
  3.0
Author:
  Mark Rotteveel

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultEncodingDefinition(String firebirdEncodingName, String charsetName, int maxBytesPerChar, int firebirdCharacterSetId, boolean firebirdOnly)`
  Initializes an instance of DefaultEncodingDefinition.
  `DefaultEncodingDefinition(String firebirdEncodingName, Charset charset, int maxBytesPerChar, int firebirdCharacterSetId, boolean firebirdOnly)`
  Initializes an instance of DefaultEncodingDefinition.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object o)`
  `Encoding`
  `getEncoding()`
  Returns the `Encoding` instance for this definition.
  `int`
  `getFirebirdCharacterSetId()`
  `String`
  `getFirebirdEncodingName()`
  `Charset`
  `getJavaCharset()`
  `String`
  `getJavaEncodingName()`
  `int`
  `getMaxBytesPerChar()`
  `int`
  `hashCode()`
  `boolean`
  `isFirebirdOnly()`
  Can (or should) this encoding be used for reverse mapping from Java to Firebird.
  `boolean`
  `isInformationOnly()`
  Can this implementation create an `Encoding` instance, or does it provide information only (e.g.
  `String`
  `toString()`

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

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

- ## Constructor Details

  - ### DefaultEncodingDefinition

    public DefaultEncodingDefinition(String firebirdEncodingName, Charset charset, int maxBytesPerChar, int firebirdCharacterSetId, boolean firebirdOnly)
    Initializes an instance of DefaultEncodingDefinition.
    Parameters:
      `firebirdEncodingName` - Name of the Firebird encoding
      `charset` - Java `Charset` instance (`null` for information-only instances)
      `maxBytesPerChar` - Maximum number of bytes per character (eg 1 for ISO8859_1, 4 for UTF8, 3 for UNICODE-FSS)
      `firebirdCharacterSetId` - Firebird character set id
      `firebirdOnly` - Mapping only applies from Firebird to Java, but not from Java to Firebird (e.g. Firebird UNICODE-FSS maps to Java UTF-8, but Java UTF-8 does not map to Firebird UNICODE-FSS (but to Firebird UTF8)

  - ### DefaultEncodingDefinition

    public DefaultEncodingDefinition(String firebirdEncodingName, String charsetName, int maxBytesPerChar, int firebirdCharacterSetId, boolean firebirdOnly)
    Initializes an instance of DefaultEncodingDefinition.

    The actual Java character set is loaded on-demand. If the provided name cannot be resolved to a `Charset` at on-demand load time, it will be handled as information-only.

    Parameters:
      `firebirdEncodingName` - Name of the Firebird encoding
      `charsetName` - Java character set name, or `null` for information-only instances
      `maxBytesPerChar` - Maximum number of bytes per character (eg 1 for ISO8859_1, 4 for UTF8, 3 for UNICODE-FSS)
      `firebirdCharacterSetId` - Firebird character set id
      `firebirdOnly` - Mapping only applies from Firebird to Java, but not from Java to Firebird (e.g. Firebird UNICODE-FSS maps to Java UTF-8, but Java UTF-8 does not map to Firebird UNICODE-FSS (but to Firebird UTF8)

- ## Method Details

  - ### getMaxBytesPerChar

    public int getMaxBytesPerChar()
    Specified by:
      `getMaxBytesPerChar` in interface `EncodingDefinition`
    Returns:
      Maximum number of bytes per character.

  - ### getJavaEncodingName

    public String getJavaEncodingName()
    Specified by:
      `getJavaEncodingName` in interface `EncodingDefinition`
    Returns:
      Java name of the encoding

  - ### getJavaCharset

    public Charset getJavaCharset()
    Specified by:
      `getJavaCharset` in interface `EncodingDefinition`
    Returns:
      Java `Charset` for this encoding

  - ### getFirebirdEncodingName

    public String getFirebirdEncodingName()
    Specified by:
      `getFirebirdEncodingName` in interface `EncodingDefinition`
    Returns:
      Firebird name of the encoding

  - ### getFirebirdCharacterSetId

    public int getFirebirdCharacterSetId()
    Specified by:
      `getFirebirdCharacterSetId` in interface `EncodingDefinition`
    Returns:
      Firebird id of the encoding

  - ### isFirebirdOnly

    public boolean isFirebirdOnly()
    Description copied from interface: `EncodingDefinition`
    Can (or should) this encoding be used for reverse mapping from Java to Firebird.

    The best example of this is the Firebird character set `UNICODE-FSS` which maps to the Java character set `UTF-8`, but when Java character set`UTF-8` is requested, Jaybird should (in general) map to Firebird character set `UTF8`.

    Specified by:
      `isFirebirdOnly` in interface `EncodingDefinition`
    Returns:
      `true` when this encoding maps from Java to Firebird, `false` otherwise

  - ### isInformationOnly

    public boolean isInformationOnly()
    Description copied from interface: `EncodingDefinition`
    Can this implementation create an `Encoding` instance, or does it provide information only (e.g. about unsupported character sets)
    Specified by:
      `isInformationOnly` in interface `EncodingDefinition`
    Returns:
      `true` if this EncodingDefinition only provides information, and is not capable of building a concrete implementation.

  - ### getEncoding

    public Encoding getEncoding()
    Returns the `Encoding` instance for this definition. The same object is returned each time this method is called.
    Specified by:
      `getEncoding` in interface `EncodingDefinition`
    Returns:
      Encoding object or `null` if this is an information only EncodingDefinition
    See Also:
      - `EncodingDefinition.isInformationOnly()`

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### equals

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

  - ### hashCode

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