Package org.firebirdsql.encodings

## Class DefaultEncodingDefinition

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

- All Implemented Interfaces:
    `EncodingDefinition`

      public final class DefaultEncodingDefinition
      extends java.lang.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​(java.lang.String firebirdEncodingName, java.lang.String charsetName, int maxBytesPerChar, int firebirdCharacterSetId, boolean firebirdOnly)` | Initializes an instance of DefaultEncodingDefinition.
    `DefaultEncodingDefinition​(java.lang.String firebirdEncodingName, java.nio.charset.Charset charset, int maxBytesPerChar, int firebirdCharacterSetId, boolean firebirdOnly)` | Initializes an instance of DefaultEncodingDefinition.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(java.lang.Object o)` |
    `Encoding` | `getEncoding()` | Returns the `Encoding` instance for this definition.
    `int` | `getFirebirdCharacterSetId()` |
    `java.lang.String` | `getFirebirdEncodingName()` |
    `java.nio.charset.Charset` | `getJavaCharset()` |
    `java.lang.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.
    `java.lang.String` | `toString()` |

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

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

- - ### Constructor Detail

    - #### DefaultEncodingDefinition

          public DefaultEncodingDefinition​(java.lang.String firebirdEncodingName,
                                           java.nio.charset.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​(java.lang.String firebirdEncodingName,
                                           java.lang.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 Detail

    - #### getMaxBytesPerChar

          public int getMaxBytesPerChar()

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

    - #### getJavaEncodingName

          public java.lang.String getJavaEncodingName()

      Specified by:
        `getJavaEncodingName` in interface `EncodingDefinition`
      Returns:
        Java name of the encoding

    - #### getJavaCharset

          public java.nio.charset.Charset getJavaCharset()

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

    - #### getFirebirdEncodingName

          public java.lang.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 java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### equals

          public boolean equals​(java.lang.Object o)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`