Package org.firebirdsql.gds.ng
Class EncodingSpecificDatatypeCoder
java.lang.Object
org.firebirdsql.gds.ng.EncodingSpecificDatatypeCoder
- All Implemented Interfaces:
DatatypeCoder
Datatype coder wrapping another datatype coder and applying a specific encoding definition, while delegating other
methods to the wrapped datatype coder.
- Since:
- 4.0
- Author:
- Mark Rotteveel
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.firebirdsql.gds.ng.DatatypeCoder
DatatypeCoder.RawDateTimeStruct -
Field Summary
Fields inherited from interface org.firebirdsql.gds.ng.DatatypeCoder
FRACTIONS_PER_HOUR, FRACTIONS_PER_MILLISECOND, FRACTIONS_PER_MINUTE, FRACTIONS_PER_SECOND, NANOSECONDS_PER_FRACTION -
Method Summary
Modifier and TypeMethodDescriptioncreateReader(InputStream inputStream) Creates a reader wrapping an input stream.createWriter(OutputStream outputStream) Creates a writer wrapping an input stream.booleandecodeBoolean(byte[] data) Decode boolean from supplied data.decodeDate(byte[] byte_int) Decode abytearray into aDatevalue.decodeDate(Date d, Calendar cal) Decode aDatevalue using a givenCalendar.decodeDateCalendar(byte[] byte_int, Calendar c) decodeDateRaw(byte[] byte_int) Decode abytearray into a raw date time struct.decodeDecimal128(byte[] data) Decodes a decimal128 from byte array.decodeDecimal64(byte[] data) Decodes a decimal64 from byte array.doubledecodeDouble(byte[] byte_int) Decode abytearray into adoublevalue.floatdecodeFloat(byte[] byte_int) Decode abytearray into afloatvalue.intdecodeInt(byte[] byte_int) Decode abytearray into anintvalue.intdecodeInt(byte[] bytes, int fromIndex) Decode abytearray to anintvalue.decodeInt128(byte[] data) Decodes a BigInteger from byte array.longdecodeLong(byte[] byte_int) Decode abytearray into alongvalue.shortdecodeShort(byte[] byte_int) Decode abytearray into ashortvalue.shortdecodeShort(byte[] bytes, int fromIndex) Decode from abytearray to ashortvalue.decodeString(byte[] value) Decode an encodedbytearray into aStringusing the encoding of this datatype coder.decodeTime(byte[] int_byte) Decode abytearray into aTimevalue.decodeTime(Time d, Calendar cal, boolean invertTimeZone) Decode aTimevalue using a givenCalendar.decodeTimeCalendar(byte[] int_byte, Calendar c) decodeTimeRaw(byte[] int_byte) Decode abytearray into a raw date time struct.decodeTimestamp(byte[] byte_long) Decode a 8-bytebytearray into aTimestamp.decodeTimestamp(Timestamp value, Calendar cal) Decode aTimestampvalue using a givenCalendar.decodeTimestamp(Timestamp value, Calendar cal, boolean invertTimeZone) Decode aTimestampvalue using a givenCalendar.decodeTimestampCalendar(byte[] byte_long, Calendar c) decodeTimestampRaw(byte[] byte_long) Decode a 8-bytebytearray into a raw date time struct.byte[]encodeBoolean(boolean value) Encodes boolean to 1 byte data.byte[]encodeDate(Date d) Encode aDatevalue into abytearray.encodeDate(Date d, Calendar cal) Encode a givenDatevalue using a givenCalendar.byte[]encodeDateCalendar(Date d, Calendar c) byte[]Encode the date portion of a raw date time struct into abytearray.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 adoublevalue as abytearray.byte[]encodeFloat(float value) Encode afloatvalue as abytearray.byte[]encodeInt(int value) Encode anintvalue as abytearray.voidencodeInt(int value, byte[] target, int fromIndex) Encode anintvalue into thetargetbyte array starting at indexfromIndex.byte[]encodeInt128(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 alongvalue as abytearray.byte[]encodeShort(int value) Encode ashortvalue as abytearray.voidencodeShort(int value, byte[] target, int fromIndex) Encode ashortvalue into thetargetbyte array starting at indexfromIndex.byte[]encodeShort(short value) Encode ashortvalue as abytearray.byte[]encodeString(String value) Encode aStringvalue into abytearray using the encoding of this datatype coder.byte[]encodeTime(Time d) Encode aTimevalue into abytearray.encodeTime(Time d, Calendar cal, boolean invertTimeZone) Encode a givenTimevalue using a givenCalendar.byte[]encodeTimeCalendar(Time d, Calendar c) byte[]Encode the time portion of a raw date time struct into abytearray.byte[]encodeTimestamp(Timestamp value) Encode aTimestampas abytearray.encodeTimestamp(Timestamp value, Calendar cal) Encode aTimestampusing a givenCalendar.encodeTimestamp(Timestamp value, Calendar cal, boolean invertTimeZone) Encode aTimestampusing a givenCalendar.byte[]encodeTimestampCalendar(Timestamp value, Calendar c) byte[]Encode the date and time portions of a raw date time struct into abytearray.booleanforEncodingDefinition(EncodingDefinition encodingDefinition) Return a derived datatype coder that applies the supplied encoding definition for string conversions.inthashCode()intThe size of an encoded short in this data type coder.unwrap()Unwrap this datatype coder to its parent (or itself).
-
Method Details
-
encodeString
Description copied from interface:DatatypeCoderEncode aStringvalue into abytearray using the encoding of this datatype coder.- Specified by:
encodeStringin interfaceDatatypeCoder- Parameters:
value- TheStringto be encoded- Returns:
- The value of
valueas abytearray
-
createWriter
Description copied from interface:DatatypeCoderCreates a writer wrapping an input stream.- Specified by:
createWriterin interfaceDatatypeCoder- Parameters:
outputStream- Input stream- Returns:
- Writer applying the encoding of this datatype when writing
-
decodeString
Description copied from interface:DatatypeCoderDecode an encodedbytearray into aStringusing the encoding of this datatype coder.- Specified by:
decodeStringin interfaceDatatypeCoder- Parameters:
value- The value to be decoded- Returns:
- The decoded
String
-
createReader
Description copied from interface:DatatypeCoderCreates a reader wrapping an input stream.- Specified by:
createReaderin interfaceDatatypeCoder- Parameters:
inputStream- Input stream- Returns:
- Reader applying the encoding of this datatype coder when reading
-
forEncodingDefinition
Description copied from interface:DatatypeCoderReturn a derived datatype coder that applies the supplied encoding definition for string conversions.- Specified by:
forEncodingDefinitionin interfaceDatatypeCoder- Parameters:
encodingDefinition- Encoding definition- Returns:
- Derived datatype coder (may be this instance if encoding definition is the same)
-
getEncodingDefinition
- Specified by:
getEncodingDefinitionin interfaceDatatypeCoder- Returns:
- The encoding definition used by this datatype coder for string conversions.
-
getEncoding
- Specified by:
getEncodingin interfaceDatatypeCoder- Returns:
- The encoding used by this datatype coder for string conversions.
-
unwrap
Description copied from interface:DatatypeCoderUnwrap this datatype coder to its parent (or itself).- Specified by:
unwrapin interfaceDatatypeCoder- Returns:
- Return the parent of this datatype code, or itself if it has no parent.
-
equals
Description copied from interface:DatatypeCoderEquality: 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.
- Specified by:
equalsin interfaceDatatypeCoder- Overrides:
equalsin classObject- Parameters:
o- Object to compare to- Returns:
trueif other is an equivalent datatype coder.
-
hashCode
public int hashCode()- Specified by:
hashCodein interfaceDatatypeCoder- Overrides:
hashCodein classObject
-
sizeOfShort
public int sizeOfShort()Description copied from interface:DatatypeCoderThe size of an encoded short in this data type coder.- Specified by:
sizeOfShortin interfaceDatatypeCoder- Returns:
- The size of an encoded short (either
2or4bytes)
-
encodeShort
public byte[] encodeShort(short value) Description copied from interface:DatatypeCoderEncode ashortvalue as abytearray.- Specified by:
encodeShortin interfaceDatatypeCoder- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray - See Also:
-
encodeShort
public byte[] encodeShort(int value) Description copied from interface:DatatypeCoderEncode ashortvalue as abytearray.- Specified by:
encodeShortin interfaceDatatypeCoder- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
encodeShort
public void encodeShort(int value, byte[] target, int fromIndex) Description copied from interface:DatatypeCoderEncode ashortvalue into thetargetbyte array starting at indexfromIndex.- Specified by:
encodeShortin interfaceDatatypeCoder- Parameters:
value- The value to be encodedtarget- Target byte array of sufficient size (warning: this may be datatype coder specific)fromIndex- Index to start writing
-
decodeShort
public short decodeShort(byte[] byte_int) Description copied from interface:DatatypeCoderDecode abytearray into ashortvalue.- Specified by:
decodeShortin interfaceDatatypeCoder- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
shortvalue of the decodedbytearray
-
decodeShort
public short decodeShort(byte[] bytes, int fromIndex) Description copied from interface:DatatypeCoderDecode from abytearray to ashortvalue.- Specified by:
decodeShortin interfaceDatatypeCoder- Parameters:
bytes- Thebytearray to be decodedfromIndex- The index to start reading- Returns:
- The
shortvalue of the decodedbytearray
-
encodeInt
public byte[] encodeInt(int value) Description copied from interface:DatatypeCoderEncode anintvalue as abytearray.- Specified by:
encodeIntin interfaceDatatypeCoder- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
encodeInt
public void encodeInt(int value, byte[] target, int fromIndex) Description copied from interface:DatatypeCoderEncode anintvalue into thetargetbyte array starting at indexfromIndex.- Specified by:
encodeIntin interfaceDatatypeCoder- Parameters:
value- The value to be encodedtarget- Target byte array of sufficient sizefromIndex- Index to start writing
-
decodeInt
public int decodeInt(byte[] byte_int) Description copied from interface:DatatypeCoderDecode abytearray into anintvalue.- Specified by:
decodeIntin interfaceDatatypeCoder- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
intvalue of the decodedbytearray
-
decodeInt
public int decodeInt(byte[] bytes, int fromIndex) Description copied from interface:DatatypeCoderDecode abytearray to anintvalue.- Specified by:
decodeIntin interfaceDatatypeCoder- Parameters:
bytes- Thebytearray to be decodedfromIndex- The index to start reading- Returns:
- The
intvalue of the decodedbytearray
-
encodeLong
public byte[] encodeLong(long value) Description copied from interface:DatatypeCoderEncode alongvalue as abytearray.- Specified by:
encodeLongin interfaceDatatypeCoder- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
decodeLong
public long decodeLong(byte[] byte_int) Description copied from interface:DatatypeCoderDecode abytearray into alongvalue.- Specified by:
decodeLongin interfaceDatatypeCoder- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
longvalue of the decodedbytearray
-
encodeFloat
public byte[] encodeFloat(float value) Description copied from interface:DatatypeCoderEncode afloatvalue as abytearray.- Specified by:
encodeFloatin interfaceDatatypeCoder- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
decodeFloat
public float decodeFloat(byte[] byte_int) Description copied from interface:DatatypeCoderDecode abytearray into afloatvalue.- Specified by:
decodeFloatin interfaceDatatypeCoder- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
floatvalue of the decodedbytearray
-
encodeDouble
public byte[] encodeDouble(double value) Description copied from interface:DatatypeCoderEncode adoublevalue as abytearray.- Specified by:
encodeDoublein interfaceDatatypeCoder- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
decodeDouble
public double decodeDouble(byte[] byte_int) Description copied from interface:DatatypeCoderDecode abytearray into adoublevalue.- Specified by:
decodeDoublein interfaceDatatypeCoder- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
doublevalue of the decodedbytearray
-
encodeTimestamp
Description copied from interface:DatatypeCoderEncode aTimestampusing a givenCalendar.- Specified by:
encodeTimestampin interfaceDatatypeCoder- Parameters:
value- TheTimestampto be encodedcal- TheCalendarto be used for encoding, may benull
-
encodeTimestamp
Description copied from interface:DatatypeCoderEncode aTimestampusing a givenCalendar.- Specified by:
encodeTimestampin interfaceDatatypeCoder- Parameters:
value- TheTimestampto be encodedcal- TheCalendarto be used for encoding, may benullinvertTimeZone- Iftrue, the timezone offset value will be subtracted from the encoded value, otherwise it will be added- Returns:
- The encoded
Timestamp
-
encodeTimestamp
Description copied from interface:DatatypeCoderEncode aTimestampas abytearray.- Specified by:
encodeTimestampin interfaceDatatypeCoder- Parameters:
value- TheTimestampto be encoded- Returns:
- The array of
bytes that represents the givenTimestampvalue
-
encodeTimestampRaw
Description copied from interface:DatatypeCoderEncode the date and time portions of a raw date time struct into abytearray.- Specified by:
encodeTimestampRawin interfaceDatatypeCoder- Parameters:
raw- TheRawDateTimeStructto be encoded- Returns:
- The array of
bytes representing the date and time of the givenRawDateTimeStruct
-
encodeTimestampCalendar
- Specified by:
encodeTimestampCalendarin interfaceDatatypeCoder
-
decodeTimestamp
Description copied from interface:DatatypeCoderDecode aTimestampvalue using a givenCalendar.- Specified by:
decodeTimestampin interfaceDatatypeCoder- Parameters:
value- TheTimestampto be decodedcal- TheCalendarto be used in decoding, may benull- Returns:
- The decoded
Timestamp
-
decodeTimestamp
Description copied from interface:DatatypeCoderDecode aTimestampvalue using a givenCalendar.- Specified by:
decodeTimestampin interfaceDatatypeCoder- Parameters:
value- TheTimestampto be decodedcal- TheCalendarto be used in decoding, may benullinvertTimeZone- Iftrue, the timezone offset value will be subtracted from the decoded value, otherwise it will be added- Returns:
- The encoded
Timestamp
-
decodeTimestamp
Description copied from interface:DatatypeCoderDecode a 8-bytebytearray into aTimestamp.- Specified by:
decodeTimestampin interfaceDatatypeCoder- Parameters:
byte_long- Thebytearray to be decoded- Returns:
- A
Timestampvalue from the decoded bytes
-
decodeTimestampRaw
Description copied from interface:DatatypeCoderDecode a 8-bytebytearray into a raw date time struct.- Specified by:
decodeTimestampRawin interfaceDatatypeCoder- Parameters:
byte_long- Thebytearray to be decoded- Returns:
- A
DatatypeCoder.RawDateTimeStruct.
-
decodeTimestampCalendar
- Specified by:
decodeTimestampCalendarin interfaceDatatypeCoder
-
encodeTime
Description copied from interface:DatatypeCoderEncode a givenTimevalue using a givenCalendar.- Specified by:
encodeTimein interfaceDatatypeCoder- Parameters:
d- TheTimeto be encodedcal- TheCalendarto be used in the encoding, may benull- Returns:
- The encoded
Time
-
encodeTime
Description copied from interface:DatatypeCoderEncode aTimevalue into abytearray.- Specified by:
encodeTimein interfaceDatatypeCoder- Parameters:
d- TheTimeto be encoded- Returns:
- The array of
bytes representing the givenTime
-
encodeTimeRaw
Description copied from interface:DatatypeCoderEncode the time portion of a raw date time struct into abytearray.- Specified by:
encodeTimeRawin interfaceDatatypeCoder- Parameters:
raw- TheRawDateTimeStructto be encoded- Returns:
- The array of
bytes representing the time of the givenRawDateTimeStruct
-
encodeTimeCalendar
- Specified by:
encodeTimeCalendarin interfaceDatatypeCoder
-
decodeTime
Description copied from interface:DatatypeCoderDecode aTimevalue using a givenCalendar.- Specified by:
decodeTimein interfaceDatatypeCoder- Parameters:
d- TheTimeto be decodedcal- TheCalendarto be used in the decoding, may benull- Returns:
- The decooded
Time
-
decodeTime
Description copied from interface:DatatypeCoderDecode abytearray into aTimevalue.- Specified by:
decodeTimein interfaceDatatypeCoder- Parameters:
int_byte- Thebytearray to be decoded- Returns:
- The decoded
Time
-
decodeTimeRaw
Description copied from interface:DatatypeCoderDecode abytearray into a raw date time struct.- Specified by:
decodeTimeRawin interfaceDatatypeCoder- Parameters:
int_byte- Thebytearray to be decoded- Returns:
- The
DatatypeCoder.RawDateTimeStruct
-
decodeTimeCalendar
- Specified by:
decodeTimeCalendarin interfaceDatatypeCoder
-
encodeDate
Description copied from interface:DatatypeCoderEncode a givenDatevalue using a givenCalendar.- Specified by:
encodeDatein interfaceDatatypeCoder- Parameters:
d- TheDateto be encodedcal- TheCalendarto be used in the encoding, may benull- Returns:
- The encoded
Date
-
encodeDate
Description copied from interface:DatatypeCoderEncode aDatevalue into abytearray.- Specified by:
encodeDatein interfaceDatatypeCoder- Parameters:
d- TheDateto be encoded- Returns:
- The array of
bytes representing the givenDate
-
encodeDateRaw
Description copied from interface:DatatypeCoderEncode the date portion of a raw date time struct into abytearray.- Specified by:
encodeDateRawin interfaceDatatypeCoder- Parameters:
raw- TheRawDateTimeStructto be encoded- Returns:
- The array of
bytes representing the date of the givenRawDateTimeStruct
-
encodeDateCalendar
- Specified by:
encodeDateCalendarin interfaceDatatypeCoder
-
decodeDate
Description copied from interface:DatatypeCoderDecode aDatevalue using a givenCalendar.- Specified by:
decodeDatein interfaceDatatypeCoder- Parameters:
d- TheDateto be decodedcal- TheCalendarto be used in the decoding, may benull- Returns:
- The decoded
Date
-
decodeDate
Description copied from interface:DatatypeCoderDecode abytearray into aDatevalue.- Specified by:
decodeDatein interfaceDatatypeCoder- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The decoded
Date
-
decodeDateRaw
Description copied from interface:DatatypeCoderDecode abytearray into a raw date time struct.- Specified by:
decodeDateRawin interfaceDatatypeCoder- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
DatatypeCoder.RawDateTimeStruct
-
decodeDateCalendar
- Specified by:
decodeDateCalendarin interfaceDatatypeCoder
-
decodeBoolean
public boolean decodeBoolean(byte[] data) Description copied from interface:DatatypeCoderDecode boolean from supplied data.- Specified by:
decodeBooleanin interfaceDatatypeCoder- Parameters:
data- (expected) 1 bytes- Returns:
falsewhen 0,truefor all other values
-
encodeBoolean
public byte[] encodeBoolean(boolean value) Description copied from interface:DatatypeCoderEncodes boolean to 1 byte data.- Specified by:
encodeBooleanin interfaceDatatypeCoder- Parameters:
value- Boolean value to encode- Returns:
trueas 1,falseas 0.
-
encodeLocalTime
public byte[] encodeLocalTime(int hour, int minute, int second, int nanos) Description copied from interface:DatatypeCoderEncodes a java.time.LocalTime equivalent to time bytes.- Specified by:
encodeLocalTimein interfaceDatatypeCoder- 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
public byte[] encodeLocalDate(int year, int month, int day) Description copied from interface:DatatypeCoderEncodes a java.time.LocalDate equivalent to date bytes.- Specified by:
encodeLocalDatein interfaceDatatypeCoder- Parameters:
year- Yearmonth- Month (is assumed to be 1..12)day- Day (is assumed to be valid for year and month)- Returns:
- Byte array for date
-
encodeLocalDateTime
public byte[] encodeLocalDateTime(int year, int month, int day, int hour, int minute, int second, int nanos) Description copied from interface:DatatypeCoderEncodes a java.time.LocalDateTime equivalent to timestamp bytes.- Specified by:
encodeLocalDateTimein interfaceDatatypeCoder- Parameters:
year- 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)- Returns:
- Byte array for timestamp
-
decodeDecimal64
Description copied from interface:DatatypeCoderDecodes a decimal64 from byte array.- Specified by:
decodeDecimal64in interfaceDatatypeCoder- Parameters:
data- Data to decode (expected 8 bytes)- Returns:
- Decimal64 value
-
encodeDecimal64
Description copied from interface:DatatypeCoderEncodes a decimal64 to a byte array.- Specified by:
encodeDecimal64in interfaceDatatypeCoder- Parameters:
decimal64- The decimal64 value to be encoded- Returns:
- Byte array for decimal64 value
-
decodeDecimal128
Description copied from interface:DatatypeCoderDecodes a decimal128 from byte array.- Specified by:
decodeDecimal128in interfaceDatatypeCoder- Parameters:
data- Data to decode (expected 16 bytes)- Returns:
- Decimal128 value
-
encodeDecimal128
Description copied from interface:DatatypeCoderEncodes a decimal128 to a byte array.- Specified by:
encodeDecimal128in interfaceDatatypeCoder- Parameters:
decimal128- The decimal128 value to be encoded- Returns:
- Byte array for decimal128 value
-
decodeInt128
Description copied from interface:DatatypeCoderDecodes a BigInteger from byte array.- Specified by:
decodeInt128in interfaceDatatypeCoder- Parameters:
data- Data to decode (expected 16 bytes)- Returns:
- BigInteger value
-
encodeInt128
Description copied from interface:DatatypeCoderEncodes 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
IllegalArgumentExceptionis thrown.- Specified by:
encodeInt128in interfaceDatatypeCoder- Parameters:
bigInteger- The BigInteger value to be encoded- Returns:
- Byte array for bigInteger value
-
getEncodingFactory
- Specified by:
getEncodingFactoryin interfaceDatatypeCoder- Returns:
- The encoding factory.
-