Package org.firebirdsql.gds.ng
Interface DatatypeCoder
-
- All Known Implementing Classes:
BigEndianDatatypeCoder
,DefaultDatatypeCoder
,EncodingSpecificDatatypeCoder
,LittleEndianDatatypeCoder
public interface DatatypeCoder
Interface defining the encoding and decoding for Firebird (numerical) data types.- Since:
- 3.0
- Author:
- Mark Rotteveel
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
DatatypeCoder.RawDateTimeStruct
Raw date/time value.
-
Field Summary
Fields Modifier and Type Field Description static int
FRACTIONS_PER_HOUR
static int
FRACTIONS_PER_MILLISECOND
static int
FRACTIONS_PER_MINUTE
static int
FRACTIONS_PER_SECOND
static int
NANOSECONDS_PER_FRACTION
-
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 abyte
array into aDate
value.java.sql.Date
decodeDate(java.sql.Date d, java.util.Calendar cal)
Decode aDate
value using a givenCalendar
.java.sql.Date
decodeDateCalendar(byte[] byte_int, java.util.Calendar c)
DatatypeCoder.RawDateTimeStruct
decodeDateRaw(byte[] byte_int)
Decode abyte
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 abyte
array into adouble
value.float
decodeFloat(byte[] byte_int)
Decode abyte
array into afloat
value.int
decodeInt(byte[] byte_int)
Decode abyte
array into anint
value.int
decodeInt(byte[] bytes, int fromIndex)
Decode abyte
array to anint
value.java.math.BigInteger
decodeInt128(byte[] data)
Decodes a BigInteger from byte array.long
decodeLong(byte[] byte_int)
Decode abyte
array into along
value.short
decodeShort(byte[] byte_int)
Decode abyte
array into ashort
value.short
decodeShort(byte[] bytes, int fromIndex)
Decode from abyte
array to ashort
value.java.lang.String
decodeString(byte[] value)
Decode an encodedbyte
array into aString
using the encoding of this datatype coder.java.sql.Time
decodeTime(byte[] int_byte)
Decode abyte
array into aTime
value.java.sql.Time
decodeTime(java.sql.Time d, java.util.Calendar cal, boolean invertTimeZone)
Decode aTime
value using a givenCalendar
.java.sql.Time
decodeTimeCalendar(byte[] int_byte, java.util.Calendar c)
DatatypeCoder.RawDateTimeStruct
decodeTimeRaw(byte[] int_byte)
Decode abyte
array into a raw date time struct.java.sql.Timestamp
decodeTimestamp(byte[] byte_long)
Decode a 8-bytebyte
array into aTimestamp
.java.sql.Timestamp
decodeTimestamp(java.sql.Timestamp value, java.util.Calendar cal)
Decode aTimestamp
value using a givenCalendar
.java.sql.Timestamp
decodeTimestamp(java.sql.Timestamp value, java.util.Calendar cal, boolean invertTimeZone)
Decode aTimestamp
value using a givenCalendar
.java.sql.Timestamp
decodeTimestampCalendar(byte[] byte_long, java.util.Calendar c)
DatatypeCoder.RawDateTimeStruct
decodeTimestampRaw(byte[] byte_long)
Decode a 8-bytebyte
array into a raw date time struct.byte[]
encodeBoolean(boolean value)
Encodes boolean to 1 byte data.byte[]
encodeDate(java.sql.Date d)
Encode aDate
value into abyte
array.java.sql.Date
encodeDate(java.sql.Date d, java.util.Calendar cal)
Encode a givenDate
value using a givenCalendar
.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 abyte
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 adouble
value as abyte
array.byte[]
encodeFloat(float value)
Encode afloat
value as abyte
array.byte[]
encodeInt(int value)
Encode anint
value as abyte
array.void
encodeInt(int value, byte[] target, int fromIndex)
Encode anint
value into thetarget
byte array starting at indexfromIndex
.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 along
value as abyte
array.byte[]
encodeShort(int value)
Encode ashort
value as abyte
array.void
encodeShort(int value, byte[] target, int fromIndex)
Encode ashort
value into thetarget
byte array starting at indexfromIndex
.byte[]
encodeShort(short value)
Encode ashort
value as abyte
array.byte[]
encodeString(java.lang.String value)
Encode aString
value into abyte
array using the encoding of this datatype coder.byte[]
encodeTime(java.sql.Time d)
Encode aTime
value into abyte
array.java.sql.Time
encodeTime(java.sql.Time d, java.util.Calendar cal, boolean invertTimeZone)
Encode a givenTime
value using a givenCalendar
.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 abyte
array.byte[]
encodeTimestamp(java.sql.Timestamp value)
Encode aTimestamp
as abyte
array.java.sql.Timestamp
encodeTimestamp(java.sql.Timestamp value, java.util.Calendar cal)
Encode aTimestamp
using a givenCalendar
.java.sql.Timestamp
encodeTimestamp(java.sql.Timestamp value, java.util.Calendar cal, boolean invertTimeZone)
Encode aTimestamp
using a givenCalendar
.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 abyte
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).
-
-
-
Field Detail
-
NANOSECONDS_PER_FRACTION
static final int NANOSECONDS_PER_FRACTION
- See Also:
- Constant Field Values
-
FRACTIONS_PER_MILLISECOND
static final int FRACTIONS_PER_MILLISECOND
- See Also:
- Constant Field Values
-
FRACTIONS_PER_SECOND
static final int FRACTIONS_PER_SECOND
- See Also:
- Constant Field Values
-
FRACTIONS_PER_MINUTE
static final int FRACTIONS_PER_MINUTE
- See Also:
- Constant Field Values
-
FRACTIONS_PER_HOUR
static final int FRACTIONS_PER_HOUR
- See Also:
- Constant Field Values
-
-
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
or4
bytes) - Since:
- 4.0
-
encodeShort
byte[] encodeShort(short value)
Encode ashort
value as abyte
array.- Parameters:
value
- The value to be encoded- Returns:
- The value of
value
encoded as abyte
array - See Also:
encodeShort(int)
-
encodeShort
byte[] encodeShort(int value)
Encode ashort
value as abyte
array.- Parameters:
value
- The value to be encoded- Returns:
- The value of
value
encoded as abyte
array
-
encodeShort
void encodeShort(int value, byte[] target, int fromIndex)
Encode ashort
value into thetarget
byte array starting at indexfromIndex
.- 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- Since:
- 4.0
-
decodeShort
short decodeShort(byte[] byte_int)
Decode abyte
array into ashort
value.- Parameters:
byte_int
- Thebyte
array to be decoded- Returns:
- The
short
value of the decodedbyte
array
-
decodeShort
short decodeShort(byte[] bytes, int fromIndex)
Decode from abyte
array to ashort
value.- Parameters:
bytes
- Thebyte
array to be decodedfromIndex
- The index to start reading- Returns:
- The
short
value of the decodedbyte
array - Since:
- 4.0
-
encodeInt
byte[] encodeInt(int value)
Encode anint
value as abyte
array.- Parameters:
value
- The value to be encoded- Returns:
- The value of
value
encoded as abyte
array
-
encodeInt
void encodeInt(int value, byte[] target, int fromIndex)
Encode anint
value into thetarget
byte array starting at indexfromIndex
.- Parameters:
value
- The value to be encodedtarget
- Target byte array of sufficient sizefromIndex
- Index to start writing- Since:
- 4.0
-
decodeInt
int decodeInt(byte[] byte_int)
Decode abyte
array into anint
value.- Parameters:
byte_int
- Thebyte
array to be decoded- Returns:
- The
int
value of the decodedbyte
array
-
decodeInt
int decodeInt(byte[] bytes, int fromIndex)
Decode abyte
array to anint
value.- Parameters:
bytes
- Thebyte
array to be decodedfromIndex
- The index to start reading- Returns:
- The
int
value of the decodedbyte
array - Since:
- 4.0
-
encodeLong
byte[] encodeLong(long value)
Encode along
value as abyte
array.- Parameters:
value
- The value to be encoded- Returns:
- The value of
value
encoded as abyte
array
-
decodeLong
long decodeLong(byte[] byte_int)
Decode abyte
array into along
value.- Parameters:
byte_int
- Thebyte
array to be decoded- Returns:
- The
long
value of the decodedbyte
array
-
encodeFloat
byte[] encodeFloat(float value)
Encode afloat
value as abyte
array.- Parameters:
value
- The value to be encoded- Returns:
- The value of
value
encoded as abyte
array
-
decodeFloat
float decodeFloat(byte[] byte_int)
Decode abyte
array into afloat
value.- Parameters:
byte_int
- Thebyte
array to be decoded- Returns:
- The
float
value of the decodedbyte
array
-
encodeDouble
byte[] encodeDouble(double value)
Encode adouble
value as abyte
array.- Parameters:
value
- The value to be encoded- Returns:
- The value of
value
encoded as abyte
array
-
decodeDouble
double decodeDouble(byte[] byte_int)
Decode abyte
array into adouble
value.- Parameters:
byte_int
- Thebyte
array to be decoded- Returns:
- The
double
value of the decodedbyte
array
-
encodeString
byte[] encodeString(java.lang.String value)
Encode aString
value into abyte
array using the encoding of this datatype coder.- Parameters:
value
- TheString
to be encoded- Returns:
- The value of
value
as abyte
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 encodedbyte
array into aString
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 aTimestamp
using a givenCalendar
.- Parameters:
value
- TheTimestamp
to be encodedcal
- TheCalendar
to be used for encoding, may benull
-
encodeTimestamp
java.sql.Timestamp encodeTimestamp(java.sql.Timestamp value, java.util.Calendar cal, boolean invertTimeZone)
Encode aTimestamp
using a givenCalendar
.- Parameters:
value
- TheTimestamp
to be encodedcal
- TheCalendar
to be used for encoding, may benull
invertTimeZone
- Iftrue
, 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 aTimestamp
as abyte
array.- Parameters:
value
- TheTimestamp
to be encoded- Returns:
- The array of
byte
s that represents the givenTimestamp
value
-
encodeTimestampRaw
byte[] encodeTimestampRaw(DatatypeCoder.RawDateTimeStruct raw)
Encode the date and time portions of a raw date time struct into abyte
array.- Parameters:
raw
- TheRawDateTimeStruct
to be encoded- Returns:
- The array of
byte
s representing the date and time of the givenRawDateTimeStruct
-
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 aTimestamp
value using a givenCalendar
.- Parameters:
value
- TheTimestamp
to be decodedcal
- TheCalendar
to be used in decoding, may benull
- Returns:
- The decoded
Timestamp
-
decodeTimestamp
java.sql.Timestamp decodeTimestamp(java.sql.Timestamp value, java.util.Calendar cal, boolean invertTimeZone)
Decode aTimestamp
value using a givenCalendar
.- Parameters:
value
- TheTimestamp
to be decodedcal
- TheCalendar
to be used in decoding, may benull
invertTimeZone
- Iftrue
, 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-bytebyte
array into aTimestamp
.- Parameters:
byte_long
- Thebyte
array to be decoded- Returns:
- A
Timestamp
value from the decoded bytes
-
decodeTimestampRaw
DatatypeCoder.RawDateTimeStruct decodeTimestampRaw(byte[] byte_long)
Decode a 8-bytebyte
array into a raw date time struct.- Parameters:
byte_long
- Thebyte
array to be decoded- Returns:
- A
DatatypeCoder.RawDateTimeStruct
.
-
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 givenTime
value using a givenCalendar
.- Parameters:
d
- TheTime
to be encodedcal
- TheCalendar
to be used in the encoding, may benull
- Returns:
- The encoded
Time
-
encodeTime
byte[] encodeTime(java.sql.Time d)
Encode aTime
value into abyte
array.- Parameters:
d
- TheTime
to be encoded- Returns:
- The array of
byte
s representing the givenTime
-
encodeTimeRaw
byte[] encodeTimeRaw(DatatypeCoder.RawDateTimeStruct raw)
Encode the time portion of a raw date time struct into abyte
array.- Parameters:
raw
- TheRawDateTimeStruct
to be encoded- Returns:
- The array of
byte
s representing the time of the givenRawDateTimeStruct
-
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 aTime
value using a givenCalendar
.- Parameters:
d
- TheTime
to be decodedcal
- TheCalendar
to be used in the decoding, may benull
- Returns:
- The decooded
Time
-
decodeTime
java.sql.Time decodeTime(byte[] int_byte)
Decode abyte
array into aTime
value.- Parameters:
int_byte
- Thebyte
array to be decoded- Returns:
- The decoded
Time
-
decodeTimeRaw
DatatypeCoder.RawDateTimeStruct decodeTimeRaw(byte[] int_byte)
Decode abyte
array into a raw date time struct.- Parameters:
int_byte
- Thebyte
array to be decoded- Returns:
- The
DatatypeCoder.RawDateTimeStruct
-
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 givenDate
value using a givenCalendar
.- Parameters:
d
- TheDate
to be encodedcal
- TheCalendar
to be used in the encoding, may benull
- Returns:
- The encoded
Date
-
encodeDate
byte[] encodeDate(java.sql.Date d)
Encode aDate
value into abyte
array.- Parameters:
d
- TheDate
to be encoded- Returns:
- The array of
byte
s representing the givenDate
-
encodeDateRaw
byte[] encodeDateRaw(DatatypeCoder.RawDateTimeStruct raw)
Encode the date portion of a raw date time struct into abyte
array.- Parameters:
raw
- TheRawDateTimeStruct
to be encoded- Returns:
- The array of
byte
s representing the date of the givenRawDateTimeStruct
-
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 aDate
value using a givenCalendar
.- Parameters:
d
- TheDate
to be decodedcal
- TheCalendar
to be used in the decoding, may benull
- Returns:
- The decoded
Date
-
decodeDate
java.sql.Date decodeDate(byte[] byte_int)
Decode abyte
array into aDate
value.- Parameters:
byte_int
- Thebyte
array to be decoded- Returns:
- The decoded
Date
-
decodeDateRaw
DatatypeCoder.RawDateTimeStruct decodeDateRaw(byte[] byte_int)
Decode abyte
array into a raw date time struct.- Parameters:
byte_int
- Thebyte
array to be decoded- Returns:
- The
DatatypeCoder.RawDateTimeStruct
-
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
- 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
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
- 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
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 classjava.lang.Object
- Parameters:
other
- Object to compare to- Returns:
true
if other is an equivalent datatype coder.
-
hashCode
int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
-