public class DefaultDatatypeCoder extends java.lang.Object implements DatatypeCoder
Implements the encoding and decoding for the wire protocol.
As a lot of the implementation also applies to the big endian and little endian decoders for the JNA implementation,
this class is not placed in package org.firebirdsql.gds.ng.wire
DatatypeCoder.RawDateTimeStructFRACTIONS_PER_HOUR, FRACTIONS_PER_MILLISECOND, FRACTIONS_PER_MINUTE, FRACTIONS_PER_SECOND, NANOSECONDS_PER_FRACTION| Constructor and Description |
|---|
DefaultDatatypeCoder(IEncodingFactory encodingFactory) |
| Modifier and Type | Method and Description |
|---|---|
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. |
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. |
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. |
java.lang.String |
decodeString(byte[] value,
Encoding encoding,
java.lang.String mappingPath) |
java.lang.String |
decodeString(byte[] value,
java.lang.String javaEncoding,
java.lang.String mappingPath)
Decode an encoded
byte array into a String using a given encoding. |
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[] |
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. |
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. |
byte[] |
encodeShort(short value)
Encode a
short value as a byte array. |
byte[] |
encodeString(java.lang.String value,
Encoding encoding,
java.lang.String mappingPath) |
byte[] |
encodeString(java.lang.String value,
java.lang.String javaEncoding,
java.lang.String mappingPath)
Encode a
String value into a byte array using a given encoding. |
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. |
IEncodingFactory |
getEncodingFactory() |
protected byte[] |
intToBytes(int value)
Encode an
int value as a byte array in network-order(big-endian) representation. |
public DefaultDatatypeCoder(IEncodingFactory encodingFactory)
public byte[] encodeShort(short value)
DatatypeCodershort value as a byte array.encodeShort in interface DatatypeCodervalue - The value to be encodedvalue encoded as a byte arrayDatatypeCoder.encodeShort(int)public byte[] encodeShort(int value)
DatatypeCodershort value as a byte array.encodeShort in interface DatatypeCodervalue - The value to be encodedvalue encoded as a byte arraypublic short decodeShort(byte[] byte_int)
DatatypeCoderbyte array into a short value.decodeShort in interface DatatypeCoderbyte_int - The byte array to be decodedshort value of the decoded byte arraypublic byte[] encodeInt(int value)
DatatypeCoderint value as a byte array.encodeInt in interface DatatypeCodervalue - The value to be encodedvalue encoded as a byte arrayprotected byte[] intToBytes(int value)
int value as a byte array in network-order(big-endian) representation.value - The value to be encodedvalue encoded as a
byte arraypublic int decodeInt(byte[] byte_int)
DatatypeCoderbyte array into an int value.decodeInt in interface DatatypeCoderbyte_int - The byte array to be decodedint value of the decoded byte arraypublic byte[] encodeLong(long value)
DatatypeCoderlong value as a byte array.encodeLong in interface DatatypeCodervalue - The value to be encodedvalue encoded as a byte arraypublic long decodeLong(byte[] byte_int)
DatatypeCoderbyte array into a long value.decodeLong in interface DatatypeCoderbyte_int - The byte array to be decodedlong value of the decoded byte arraypublic byte[] encodeFloat(float value)
DatatypeCoderfloat value as a byte array.encodeFloat in interface DatatypeCodervalue - The value to be encodedvalue encoded as a byte arraypublic float decodeFloat(byte[] byte_int)
DatatypeCoderbyte array into a float value.decodeFloat in interface DatatypeCoderbyte_int - The byte array to be decodedfloat value of the decoded byte arraypublic byte[] encodeDouble(double value)
DatatypeCoderdouble value as a byte array.encodeDouble in interface DatatypeCodervalue - The value to be encodedvalue encoded as a byte arraypublic double decodeDouble(byte[] byte_int)
DatatypeCoderbyte array into a double value.decodeDouble in interface DatatypeCoderbyte_int - The byte array to be decodeddouble value of the decoded byte arraypublic byte[] encodeString(java.lang.String value,
java.lang.String javaEncoding,
java.lang.String mappingPath)
throws java.sql.SQLException
DatatypeCoderString value into a byte array using a given encoding.encodeString in interface DatatypeCodervalue - The String to be encodedjavaEncoding - The java encoding to use in the encoding processmappingPath - The character mapping path to be used in the encodingvalue as a byte arrayjava.sql.SQLException - if the given encoding cannot be found, or an error
occurs during the encodingpublic byte[] encodeString(java.lang.String value,
Encoding encoding,
java.lang.String mappingPath)
throws java.sql.SQLException
encodeString in interface DatatypeCoderjava.sql.SQLExceptionpublic java.lang.String decodeString(byte[] value,
java.lang.String javaEncoding,
java.lang.String mappingPath)
throws java.sql.SQLException
DatatypeCoderbyte array into a String using a given encoding.decodeString in interface DatatypeCodervalue - The value to be decodedjavaEncoding - The java encoding to be used in the decoding processmappingPath - The character mapping path to be used in the decodingStringjava.sql.SQLException - if the given encoding cannot be found, or an
error occurs during the decodingpublic java.lang.String decodeString(byte[] value,
Encoding encoding,
java.lang.String mappingPath)
throws java.sql.SQLException
decodeString in interface DatatypeCoderjava.sql.SQLExceptionpublic java.sql.Timestamp encodeTimestamp(java.sql.Timestamp value,
java.util.Calendar cal)
DatatypeCoderTimestamp using a given Calendar.encodeTimestamp in interface DatatypeCodervalue - The Timestamp to be encodedcal - The Calendar to be used for encoding, may be nullpublic java.sql.Timestamp encodeTimestamp(java.sql.Timestamp value,
java.util.Calendar cal,
boolean invertTimeZone)
DatatypeCoderTimestamp using a given Calendar.encodeTimestamp in interface DatatypeCodervalue - The Timestamp to be encodedcal - The Calendar to be used for encoding,
may be nullinvertTimeZone - If true, the timezone offset value
will be subtracted from the encoded value, otherwise it will
be addedTimestamppublic byte[] encodeTimestamp(java.sql.Timestamp value)
DatatypeCoderTimestamp as a byte array.encodeTimestamp in interface DatatypeCodervalue - The Timestamp to be encodedbytes that represents the given Timestamp valuepublic byte[] encodeTimestampRaw(DatatypeCoder.RawDateTimeStruct raw)
DatatypeCoderbyte array.encodeTimestampRaw in interface DatatypeCoderraw - The RawDateTimeStruct to be encodedbytes representing the date and time of the given RawDateTimeStructpublic byte[] encodeTimestampCalendar(java.sql.Timestamp value,
java.util.Calendar c)
encodeTimestampCalendar in interface DatatypeCoderpublic java.sql.Timestamp decodeTimestamp(java.sql.Timestamp value,
java.util.Calendar cal)
DatatypeCoderTimestamp value using a given Calendar.decodeTimestamp in interface DatatypeCodervalue - The Timestamp to be decodedcal - The Calendar to be used in decoding,
may be nullTimestamppublic java.sql.Timestamp decodeTimestamp(java.sql.Timestamp value,
java.util.Calendar cal,
boolean invertTimeZone)
DatatypeCoderTimestamp value using a given Calendar.decodeTimestamp in interface DatatypeCodervalue - The Timestamp to be decodedcal - The Calendar to be used in decoding,
may be nullinvertTimeZone - If true, the timezone offset value
will be subtracted from the decoded value, otherwise it will
be addedTimestamppublic java.sql.Timestamp decodeTimestamp(byte[] byte_long)
DatatypeCoderbyte array into a Timestamp.decodeTimestamp in interface DatatypeCoderbyte_long - The byte array to be decodedTimestamp value from the decoded bytespublic DatatypeCoder.RawDateTimeStruct decodeTimestampRaw(byte[] byte_long)
DatatypeCoderbyte array into a raw date time struct.decodeTimestampRaw in interface DatatypeCoderbyte_long - The byte array to be decodedDatatypeCoder.RawDateTimeStruct.public java.sql.Timestamp decodeTimestampCalendar(byte[] byte_long,
java.util.Calendar c)
decodeTimestampCalendar in interface DatatypeCoderpublic java.sql.Time encodeTime(java.sql.Time d,
java.util.Calendar cal,
boolean invertTimeZone)
DatatypeCoderTime value using a given Calendar.encodeTime in interface DatatypeCoderd - The Time to be encodedcal - The Calendar to be used in the encoding, may be nullTimepublic byte[] encodeTime(java.sql.Time d)
DatatypeCoderTime value into a byte array.encodeTime in interface DatatypeCoderd - The Time to be encodedbytes representing the given Timepublic byte[] encodeTimeRaw(DatatypeCoder.RawDateTimeStruct raw)
DatatypeCoderbyte array.encodeTimeRaw in interface DatatypeCoderraw - The RawDateTimeStruct to be encodedbytes representing the time of the given RawDateTimeStructpublic byte[] encodeTimeCalendar(java.sql.Time d,
java.util.Calendar c)
encodeTimeCalendar in interface DatatypeCoderpublic java.sql.Time decodeTime(java.sql.Time d,
java.util.Calendar cal,
boolean invertTimeZone)
DatatypeCoderTime value using a given Calendar.decodeTime in interface DatatypeCoderd - The Time to be decodedcal - The Calendar to be used in the decoding, may be nullTimepublic java.sql.Time decodeTime(byte[] int_byte)
DatatypeCoderbyte array into a Time value.decodeTime in interface DatatypeCoderint_byte - The byte array to be decodedTimepublic DatatypeCoder.RawDateTimeStruct decodeTimeRaw(byte[] int_byte)
DatatypeCoderbyte array into a raw date time struct.decodeTimeRaw in interface DatatypeCoderint_byte - The byte array to be decodedDatatypeCoder.RawDateTimeStructpublic java.sql.Time decodeTimeCalendar(byte[] int_byte,
java.util.Calendar c)
decodeTimeCalendar in interface DatatypeCoderpublic java.sql.Date encodeDate(java.sql.Date d,
java.util.Calendar cal)
DatatypeCoderDate value using a given Calendar.encodeDate in interface DatatypeCoderd - The Date to be encodedcal - The Calendar to be used in the encoding, may be nullDatepublic byte[] encodeDate(java.sql.Date d)
DatatypeCoderDate value into a byte array.encodeDate in interface DatatypeCoderd - The Date to be encodedbytes representing the given Datepublic byte[] encodeDateRaw(DatatypeCoder.RawDateTimeStruct raw)
DatatypeCoderbyte array.encodeDateRaw in interface DatatypeCoderraw - The RawDateTimeStruct to be encodedbytes representing the date of the given RawDateTimeStructpublic byte[] encodeDateCalendar(java.sql.Date d,
java.util.Calendar c)
encodeDateCalendar in interface DatatypeCoderpublic java.sql.Date decodeDate(java.sql.Date d,
java.util.Calendar cal)
DatatypeCoderDate value using a given Calendar.decodeDate in interface DatatypeCoderd - The Date to be decodedcal - The Calendar to be used in the decoding, may be nullDatepublic java.sql.Date decodeDate(byte[] byte_int)
DatatypeCoderbyte array into a Date value.decodeDate in interface DatatypeCoderbyte_int - The byte array to be decodedDatepublic DatatypeCoder.RawDateTimeStruct decodeDateRaw(byte[] byte_int)
DatatypeCoderbyte array into a raw date time struct.decodeDateRaw in interface DatatypeCoderbyte_int - The byte array to be decodedDatatypeCoder.RawDateTimeStructpublic java.sql.Date decodeDateCalendar(byte[] byte_int,
java.util.Calendar c)
decodeDateCalendar in interface DatatypeCoderpublic boolean decodeBoolean(byte[] data)
DatatypeCoderdecodeBoolean in interface DatatypeCoderdata - (expected) 1 bytesfalse when 0, true for all other valuespublic byte[] encodeBoolean(boolean value)
DatatypeCoderencodeBoolean in interface DatatypeCodervalue - Boolean value to encodetrue as 1, false as 0.public byte[] encodeLocalTime(int hour,
int minute,
int second,
int nanos)
DatatypeCoderencodeLocalTime in interface DatatypeCoderhour - 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)public byte[] encodeLocalDate(int year,
int month,
int day)
DatatypeCoderencodeLocalDate in interface DatatypeCoderyear - Yearmonth - Month (is assumed to be 1..12)day - Day (is assumed to be valid for year and month)public byte[] encodeLocalDateTime(int year,
int month,
int day,
int hour,
int minute,
int second,
int nanos)
DatatypeCoderencodeLocalDateTime in interface DatatypeCoderyear - Yearmonth - 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)public IEncodingFactory getEncodingFactory()
getEncodingFactory in interface DatatypeCoderCopyright © 2001-2021 Jaybird (Firebird JDBC/JCA) team. All rights reserved.