Interface DatatypeCoder

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      java.io.Reader createReader​(java.io.InputStream inputStream)
      Creates a reader wrapping an input stream.
      java.io.Writer createWriter​(java.io.OutputStream outputStream)
      Creates a writer wrapping an input stream.
      boolean decodeBoolean​(byte[] data)
      Decode boolean from supplied data.
      java.sql.Date decodeDate​(byte[] byte_int)
      Decode a byte array into a Date value.
      java.sql.Date decodeDate​(java.sql.Date d, java.util.Calendar cal)
      Decode a Date value using a given Calendar.
      java.sql.Date decodeDateCalendar​(byte[] byte_int, java.util.Calendar c)  
      DatatypeCoder.RawDateTimeStruct decodeDateRaw​(byte[] byte_int)
      Decode a byte array into a raw date time struct.
      Decimal128 decodeDecimal128​(byte[] data)
      Decodes a decimal128 from byte array.
      Decimal64 decodeDecimal64​(byte[] data)
      Decodes a decimal64 from byte array.
      double decodeDouble​(byte[] byte_int)
      Decode a byte array into a double value.
      float decodeFloat​(byte[] byte_int)
      Decode a byte array into a float value.
      int decodeInt​(byte[] byte_int)
      Decode a byte array into an int value.
      int decodeInt​(byte[] bytes, int fromIndex)
      Decode a byte array to an int value.
      java.math.BigInteger decodeInt128​(byte[] data)
      Decodes a BigInteger from byte array.
      long decodeLong​(byte[] byte_int)
      Decode a byte array into a long value.
      short decodeShort​(byte[] byte_int)
      Decode a byte array into a short value.
      short decodeShort​(byte[] bytes, int fromIndex)
      Decode from a byte array to a short value.
      java.lang.String decodeString​(byte[] value)
      Decode an encoded byte array into a String using the encoding of this datatype coder.
      java.sql.Time decodeTime​(byte[] int_byte)
      Decode a byte array into a Time value.
      java.sql.Time decodeTime​(java.sql.Time d, java.util.Calendar cal, boolean invertTimeZone)
      Decode a Time value using a given Calendar.
      java.sql.Time decodeTimeCalendar​(byte[] int_byte, java.util.Calendar c)  
      DatatypeCoder.RawDateTimeStruct decodeTimeRaw​(byte[] int_byte)
      Decode a byte array into a raw date time struct.
      java.sql.Timestamp decodeTimestamp​(byte[] byte_long)
      Decode a 8-byte byte array into a Timestamp.
      java.sql.Timestamp decodeTimestamp​(java.sql.Timestamp value, java.util.Calendar cal)
      Decode a Timestamp value using a given Calendar.
      java.sql.Timestamp decodeTimestamp​(java.sql.Timestamp value, java.util.Calendar cal, boolean invertTimeZone)
      Decode a Timestamp value using a given Calendar.
      java.sql.Timestamp decodeTimestampCalendar​(byte[] byte_long, java.util.Calendar c)  
      DatatypeCoder.RawDateTimeStruct decodeTimestampRaw​(byte[] byte_long)
      Decode a 8-byte byte array into a raw date time struct.
      byte[] encodeBoolean​(boolean value)
      Encodes boolean to 1 byte data.
      byte[] encodeDate​(java.sql.Date d)
      Encode a Date value into a byte array.
      java.sql.Date encodeDate​(java.sql.Date d, java.util.Calendar cal)
      Encode a given Date value using a given Calendar.
      byte[] encodeDateCalendar​(java.sql.Date d, java.util.Calendar c)  
      byte[] encodeDateRaw​(DatatypeCoder.RawDateTimeStruct raw)
      Encode the date portion of a raw date time struct into a byte array.
      byte[] encodeDecimal128​(Decimal128 decimal128)
      Encodes a decimal128 to a byte array.
      byte[] encodeDecimal64​(Decimal64 decimal64)
      Encodes a decimal64 to a byte array.
      byte[] encodeDouble​(double value)
      Encode a double value as a byte array.
      byte[] encodeFloat​(float value)
      Encode a float value as a byte array.
      byte[] encodeInt​(int value)
      Encode an int value as a byte array.
      void encodeInt​(int value, byte[] target, int fromIndex)
      Encode an int value into the target byte array starting at index fromIndex.
      byte[] encodeInt128​(java.math.BigInteger bigInteger)
      Encodes a BigInteger to a 16-byte byte array.
      byte[] encodeLocalDate​(int year, int month, int day)
      Encodes a java.time.LocalDate equivalent to date bytes.
      byte[] encodeLocalDateTime​(int year, int month, int day, int hour, int minute, int second, int nanos)
      Encodes a java.time.LocalDateTime equivalent to timestamp bytes.
      byte[] encodeLocalTime​(int hour, int minute, int second, int nanos)
      Encodes a java.time.LocalTime equivalent to time bytes.
      byte[] encodeLong​(long value)
      Encode a long value as a byte array.
      byte[] encodeShort​(int value)
      Encode a short value as a byte array.
      void encodeShort​(int value, byte[] target, int fromIndex)
      Encode a short value into the target byte array starting at index fromIndex.
      byte[] encodeShort​(short value)
      Encode a short value as a byte array.
      byte[] encodeString​(java.lang.String value)
      Encode a String value into a byte array using the encoding of this datatype coder.
      byte[] encodeTime​(java.sql.Time d)
      Encode a Time value into a byte array.
      java.sql.Time encodeTime​(java.sql.Time d, java.util.Calendar cal, boolean invertTimeZone)
      Encode a given Time value using a given Calendar.
      byte[] encodeTimeCalendar​(java.sql.Time d, java.util.Calendar c)  
      byte[] encodeTimeRaw​(DatatypeCoder.RawDateTimeStruct raw)
      Encode the time portion of a raw date time struct into a byte array.
      byte[] encodeTimestamp​(java.sql.Timestamp value)
      Encode a Timestamp as a byte array.
      java.sql.Timestamp encodeTimestamp​(java.sql.Timestamp value, java.util.Calendar cal)
      Encode a Timestamp using a given Calendar.
      java.sql.Timestamp encodeTimestamp​(java.sql.Timestamp value, java.util.Calendar cal, boolean invertTimeZone)
      Encode a Timestamp using a given Calendar.
      byte[] encodeTimestampCalendar​(java.sql.Timestamp value, java.util.Calendar c)  
      byte[] encodeTimestampRaw​(DatatypeCoder.RawDateTimeStruct raw)
      Encode the date and time portions of a raw date time struct into a byte array.
      boolean equals​(java.lang.Object other)
      DatatypeCoder forEncodingDefinition​(EncodingDefinition encodingDefinition)
      Return a derived datatype coder that applies the supplied encoding definition for string conversions.
      Encoding getEncoding()  
      EncodingDefinition getEncodingDefinition()  
      IEncodingFactory getEncodingFactory()  
      int hashCode()  
      int sizeOfShort()
      The size of an encoded short in this data type coder.
      DatatypeCoder unwrap()
      Unwrap this datatype coder to its parent (or itself).
    • Method Detail

      • sizeOfShort

        int sizeOfShort()
        The size of an encoded short in this data type coder.
        Returns:
        The size of an encoded short (either 2 or 4 bytes)
        Since:
        4.0
      • encodeShort

        byte[] encodeShort​(short value)
        Encode a short value as a byte array.
        Parameters:
        value - The value to be encoded
        Returns:
        The value of value encoded as a byte array
        See Also:
        encodeShort(int)
      • encodeShort

        byte[] encodeShort​(int value)
        Encode a short value as a byte array.
        Parameters:
        value - The value to be encoded
        Returns:
        The value of value encoded as a byte array
      • encodeShort

        void encodeShort​(int value,
                         byte[] target,
                         int fromIndex)
        Encode a short value into the target byte array starting at index fromIndex.
        Parameters:
        value - The value to be encoded
        target - Target byte array of sufficient size (warning: this may be datatype coder specific)
        fromIndex - Index to start writing
        Since:
        4.0
      • decodeShort

        short decodeShort​(byte[] byte_int)
        Decode a byte array into a short value.
        Parameters:
        byte_int - The byte array to be decoded
        Returns:
        The short value of the decoded byte array
      • decodeShort

        short decodeShort​(byte[] bytes,
                          int fromIndex)
        Decode from a byte array to a short value.
        Parameters:
        bytes - The byte array to be decoded
        fromIndex - The index to start reading
        Returns:
        The short value of the decoded byte array
        Since:
        4.0
      • encodeInt

        byte[] encodeInt​(int value)
        Encode an int value as a byte array.
        Parameters:
        value - The value to be encoded
        Returns:
        The value of value encoded as a byte array
      • encodeInt

        void encodeInt​(int value,
                       byte[] target,
                       int fromIndex)
        Encode an int value into the target byte array starting at index fromIndex.
        Parameters:
        value - The value to be encoded
        target - Target byte array of sufficient size
        fromIndex - Index to start writing
        Since:
        4.0
      • decodeInt

        int decodeInt​(byte[] byte_int)
        Decode a byte array into an int value.
        Parameters:
        byte_int - The byte array to be decoded
        Returns:
        The int value of the decoded byte array
      • decodeInt

        int decodeInt​(byte[] bytes,
                      int fromIndex)
        Decode a byte array to an int value.
        Parameters:
        bytes - The byte array to be decoded
        fromIndex - The index to start reading
        Returns:
        The int value of the decoded byte array
        Since:
        4.0
      • encodeLong

        byte[] encodeLong​(long value)
        Encode a long value as a byte array.
        Parameters:
        value - The value to be encoded
        Returns:
        The value of value encoded as a byte array
      • decodeLong

        long decodeLong​(byte[] byte_int)
        Decode a byte array into a long value.
        Parameters:
        byte_int - The byte array to be decoded
        Returns:
        The long value of the decoded byte array
      • encodeFloat

        byte[] encodeFloat​(float value)
        Encode a float value as a byte array.
        Parameters:
        value - The value to be encoded
        Returns:
        The value of value encoded as a byte array
      • decodeFloat

        float decodeFloat​(byte[] byte_int)
        Decode a byte array into a float value.
        Parameters:
        byte_int - The byte array to be decoded
        Returns:
        The float value of the decoded byte array
      • encodeDouble

        byte[] encodeDouble​(double value)
        Encode a double value as a byte array.
        Parameters:
        value - The value to be encoded
        Returns:
        The value of value encoded as a byte array
      • decodeDouble

        double decodeDouble​(byte[] byte_int)
        Decode a byte array into a double value.
        Parameters:
        byte_int - The byte array to be decoded
        Returns:
        The double value of the decoded byte array
      • encodeString

        byte[] encodeString​(java.lang.String value)
        Encode a String value into a byte array using the encoding of this datatype coder.
        Parameters:
        value - The String to be encoded
        Returns:
        The value of value as a byte array
        Since:
        4.0
      • createWriter

        java.io.Writer createWriter​(java.io.OutputStream outputStream)
        Creates a writer wrapping an input stream.
        Parameters:
        outputStream - Input stream
        Returns:
        Writer applying the encoding of this datatype when writing
        Since:
        4.0
      • decodeString

        java.lang.String decodeString​(byte[] value)
        Decode an encoded byte array into a String using the encoding of this datatype coder.
        Parameters:
        value - The value to be decoded
        Returns:
        The decoded String
        Since:
        4.0
      • createReader

        java.io.Reader createReader​(java.io.InputStream inputStream)
        Creates a reader wrapping an input stream.
        Parameters:
        inputStream - Input stream
        Returns:
        Reader applying the encoding of this datatype coder when reading
        Since:
        4.0
      • encodeTimestamp

        java.sql.Timestamp encodeTimestamp​(java.sql.Timestamp value,
                                           java.util.Calendar cal)
        Encode a Timestamp using a given Calendar.
        Parameters:
        value - The Timestamp to be encoded
        cal - The Calendar to be used for encoding, may be null
      • encodeTimestamp

        java.sql.Timestamp encodeTimestamp​(java.sql.Timestamp value,
                                           java.util.Calendar cal,
                                           boolean invertTimeZone)
        Encode a Timestamp using a given Calendar.
        Parameters:
        value - The Timestamp to be encoded
        cal - The Calendar to be used for encoding, may be null
        invertTimeZone - If true, the timezone offset value will be subtracted from the encoded value, otherwise it will be added
        Returns:
        The encoded Timestamp
      • encodeTimestamp

        byte[] encodeTimestamp​(java.sql.Timestamp value)
        Encode a Timestamp as a byte array.
        Parameters:
        value - The Timestamp to be encoded
        Returns:
        The array of bytes that represents the given Timestamp value
      • encodeTimestampRaw

        byte[] encodeTimestampRaw​(DatatypeCoder.RawDateTimeStruct raw)
        Encode the date and time portions of a raw date time struct into a byte array.
        Parameters:
        raw - The RawDateTimeStruct to be encoded
        Returns:
        The array of bytes representing the date and time of the given RawDateTimeStruct
      • encodeTimestampCalendar

        byte[] encodeTimestampCalendar​(java.sql.Timestamp value,
                                       java.util.Calendar c)
      • decodeTimestamp

        java.sql.Timestamp decodeTimestamp​(java.sql.Timestamp value,
                                           java.util.Calendar cal)
        Decode a Timestamp value using a given Calendar.
        Parameters:
        value - The Timestamp to be decoded
        cal - The Calendar to be used in decoding, may be null
        Returns:
        The decoded Timestamp
      • decodeTimestamp

        java.sql.Timestamp decodeTimestamp​(java.sql.Timestamp value,
                                           java.util.Calendar cal,
                                           boolean invertTimeZone)
        Decode a Timestamp value using a given Calendar.
        Parameters:
        value - The Timestamp to be decoded
        cal - The Calendar to be used in decoding, may be null
        invertTimeZone - If true, the timezone offset value will be subtracted from the decoded value, otherwise it will be added
        Returns:
        The encoded Timestamp
      • decodeTimestamp

        java.sql.Timestamp decodeTimestamp​(byte[] byte_long)
        Decode a 8-byte byte array into a Timestamp.
        Parameters:
        byte_long - The byte array to be decoded
        Returns:
        A Timestamp value from the decoded bytes
      • decodeTimestampCalendar

        java.sql.Timestamp decodeTimestampCalendar​(byte[] byte_long,
                                                   java.util.Calendar c)
      • encodeTime

        java.sql.Time encodeTime​(java.sql.Time d,
                                 java.util.Calendar cal,
                                 boolean invertTimeZone)
        Encode a given Time value using a given Calendar.
        Parameters:
        d - The Time to be encoded
        cal - The Calendar to be used in the encoding, may be null
        Returns:
        The encoded Time
      • encodeTime

        byte[] encodeTime​(java.sql.Time d)
        Encode a Time value into a byte array.
        Parameters:
        d - The Time to be encoded
        Returns:
        The array of bytes representing the given Time
      • encodeTimeRaw

        byte[] encodeTimeRaw​(DatatypeCoder.RawDateTimeStruct raw)
        Encode the time portion of a raw date time struct into a byte array.
        Parameters:
        raw - The RawDateTimeStruct to be encoded
        Returns:
        The array of bytes representing the time of the given RawDateTimeStruct
      • encodeTimeCalendar

        byte[] encodeTimeCalendar​(java.sql.Time d,
                                  java.util.Calendar c)
      • decodeTime

        java.sql.Time decodeTime​(java.sql.Time d,
                                 java.util.Calendar cal,
                                 boolean invertTimeZone)
        Decode a Time value using a given Calendar.
        Parameters:
        d - The Time to be decoded
        cal - The Calendar to be used in the decoding, may be null
        Returns:
        The decooded Time
      • decodeTime

        java.sql.Time decodeTime​(byte[] int_byte)
        Decode a byte array into a Time value.
        Parameters:
        int_byte - The byte array to be decoded
        Returns:
        The decoded Time
      • decodeTimeCalendar

        java.sql.Time decodeTimeCalendar​(byte[] int_byte,
                                         java.util.Calendar c)
      • encodeDate

        java.sql.Date encodeDate​(java.sql.Date d,
                                 java.util.Calendar cal)
        Encode a given Date value using a given Calendar.
        Parameters:
        d - The Date to be encoded
        cal - The Calendar to be used in the encoding, may be null
        Returns:
        The encoded Date
      • encodeDate

        byte[] encodeDate​(java.sql.Date d)
        Encode a Date value into a byte array.
        Parameters:
        d - The Date to be encoded
        Returns:
        The array of bytes representing the given Date
      • encodeDateRaw

        byte[] encodeDateRaw​(DatatypeCoder.RawDateTimeStruct raw)
        Encode the date portion of a raw date time struct into a byte array.
        Parameters:
        raw - The RawDateTimeStruct to be encoded
        Returns:
        The array of bytes representing the date of the given RawDateTimeStruct
      • encodeDateCalendar

        byte[] encodeDateCalendar​(java.sql.Date d,
                                  java.util.Calendar c)
      • decodeDate

        java.sql.Date decodeDate​(java.sql.Date d,
                                 java.util.Calendar cal)
        Decode a Date value using a given Calendar.
        Parameters:
        d - The Date to be decoded
        cal - The Calendar to be used in the decoding, may be null
        Returns:
        The decoded Date
      • decodeDate

        java.sql.Date decodeDate​(byte[] byte_int)
        Decode a byte array into a Date value.
        Parameters:
        byte_int - The byte array to be decoded
        Returns:
        The decoded Date
      • decodeDateCalendar

        java.sql.Date decodeDateCalendar​(byte[] byte_int,
                                         java.util.Calendar c)
      • decodeBoolean

        boolean decodeBoolean​(byte[] data)
        Decode boolean from supplied data.
        Parameters:
        data - (expected) 1 bytes
        Returns:
        false when 0, true for all other values
      • encodeBoolean

        byte[] encodeBoolean​(boolean value)
        Encodes boolean to 1 byte data.
        Parameters:
        value - Boolean value to encode
        Returns:
        true as 1, false as 0.
      • encodeLocalTime

        byte[] encodeLocalTime​(int hour,
                               int minute,
                               int second,
                               int nanos)
        Encodes a java.time.LocalTime equivalent to time bytes.
        Parameters:
        hour - Number of hours (is assumed to be 0..23)
        minute - Number of minutes (is assumed to be 0..59)
        second - Number of seconds (is assumed to be 0..59)
        nanos - Sub-second nanoseconds (actual resolution is 100 microseconds, is assumed to be 0 .. 10^9 - 1 ns)
        Returns:
        Byte array for time
      • encodeLocalDate

        byte[] encodeLocalDate​(int year,
                               int month,
                               int day)
        Encodes a java.time.LocalDate equivalent to date bytes.
        Parameters:
        year - Year
        month - Month (is assumed to be 1..12)
        day - Day (is assumed to be valid for year and month)
        Returns:
        Byte array for date
      • encodeLocalDateTime

        byte[] encodeLocalDateTime​(int year,
                                   int month,
                                   int day,
                                   int hour,
                                   int minute,
                                   int second,
                                   int nanos)
        Encodes a java.time.LocalDateTime equivalent to timestamp bytes.
        Parameters:
        year - Year
        month - Month (is assumed to be 1..12)
        day - Day (is assumed to be valid for year and month)
        hour - Number of hours (is assumed to be 0..23)
        minute - Number of minutes (is assumed to be 0..59)
        second - Number of seconds (is assumed to be 0..59)
        nanos - Sub-second nanoseconds (actual resolution is 100 microseconds, is assumed to be 0 .. 10^9 - 1 ns)
        Returns:
        Byte array for timestamp
      • decodeDecimal64

        Decimal64 decodeDecimal64​(byte[] data)
        Decodes a decimal64 from byte array.
        Parameters:
        data - Data to decode (expected 8 bytes)
        Returns:
        Decimal64 value
      • encodeDecimal64

        byte[] encodeDecimal64​(Decimal64 decimal64)
        Encodes a decimal64 to a byte array.
        Parameters:
        decimal64 - The decimal64 value to be encoded
        Returns:
        Byte array for decimal64 value
      • decodeDecimal128

        Decimal128 decodeDecimal128​(byte[] data)
        Decodes a decimal128 from byte array.
        Parameters:
        data - Data to decode (expected 16 bytes)
        Returns:
        Decimal128 value
      • encodeDecimal128

        byte[] encodeDecimal128​(Decimal128 decimal128)
        Encodes a decimal128 to a byte array.
        Parameters:
        decimal128 - The decimal128 value to be encoded
        Returns:
        Byte array for decimal128 value
      • decodeInt128

        java.math.BigInteger decodeInt128​(byte[] data)
        Decodes a BigInteger from byte array.
        Parameters:
        data - Data to decode (expected 16 bytes)
        Returns:
        BigInteger value
      • encodeInt128

        byte[] encodeInt128​(java.math.BigInteger bigInteger)
        Encodes a BigInteger to a 16-byte byte array.

        The implementation expects to be passed a value that fits in 16 bytes. If a larger value is passed, and IllegalArgumentException is thrown.

        Parameters:
        bigInteger - The BigInteger value to be encoded
        Returns:
        Byte array for bigInteger value
      • getEncodingFactory

        IEncodingFactory getEncodingFactory()
        Returns:
        The encoding factory.
      • getEncodingDefinition

        EncodingDefinition getEncodingDefinition()
        Returns:
        The encoding definition used by this datatype coder for string conversions.
      • getEncoding

        Encoding getEncoding()
        Returns:
        The encoding used by this datatype coder for string conversions.
      • forEncodingDefinition

        DatatypeCoder forEncodingDefinition​(EncodingDefinition encodingDefinition)
        Return a derived datatype coder that applies the supplied encoding definition for string conversions.
        Parameters:
        encodingDefinition - Encoding definition
        Returns:
        Derived datatype coder (may be this instance if encoding definition is the same)
        Since:
        4.0
      • unwrap

        DatatypeCoder unwrap()
        Unwrap this datatype coder to its parent (or itself).
        Returns:
        Return the parent of this datatype code, or itself if it has no parent.
        Since:
        4.0
      • equals

        boolean equals​(java.lang.Object other)

        Equality: same basic type (ie: wire protocol/JNA type + endianness) and same encoding definition.

        This does not need to take into account the encoding factory, as usage should be limited to datatype coders derived from the same connection.

        Overrides:
        equals in class java.lang.Object
        Parameters:
        other - Object to compare to
        Returns:
        true if other is an equivalent datatype coder.
      • hashCode

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