Package org.firebirdsql.gds.ng
Interface DatatypeCoder
-
- All Known Implementing Classes:
BigEndianDatatypeCoder,DefaultDatatypeCoder,EncodingSpecificDatatypeCoder,LittleEndianDatatypeCoder
public interface DatatypeCoderInterface 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 classDatatypeCoder.RawDateTimeStructRaw date/time value.
-
Field Summary
Fields Modifier and Type Field Description static intFRACTIONS_PER_HOURstatic intFRACTIONS_PER_MILLISECONDstatic intFRACTIONS_PER_MINUTEstatic intFRACTIONS_PER_SECONDstatic intNANOSECONDS_PER_FRACTION
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.io.ReadercreateReader(java.io.InputStream inputStream)Creates a reader wrapping an input stream.java.io.WritercreateWriter(java.io.OutputStream outputStream)Creates a writer wrapping an input stream.booleandecodeBoolean(byte[] data)Decode boolean from supplied data.java.sql.DatedecodeDate(java.sql.Date d, java.util.Calendar cal)Decode aDatevalue using a givenCalendar.java.sql.DatedecodeDateCalendar(byte[] byte_int, java.util.Calendar c)Decode abytearray into aDatevalue.DatatypeCoder.RawDateTimeStructdecodeDateRaw(byte[] byte_int)Decode abytearray into a raw date time struct.Decimal128decodeDecimal128(byte[] data)Decodes a decimal128 from byte array.Decimal64decodeDecimal64(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.java.math.BigIntegerdecodeInt128(byte[] data)Decodes a BigInteger from byte array.java.time.LocalDatedecodeLocalDate(byte[] data)Decode LocalDate from supplied data.java.time.LocalDateTimedecodeLocalDateTime(byte[] data)Decode LocalDateTime from supplied data.java.time.LocalTimedecodeLocalTime(byte[] data)Decode LocalTime from supplied data.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.java.lang.StringdecodeString(byte[] value)Decode an encodedbytearray into aStringusing the encoding of this datatype coder.java.sql.TimedecodeTime(java.sql.Time d, java.util.Calendar cal, boolean invertTimeZone)Decode aTimevalue using a givenCalendar.java.sql.TimedecodeTimeCalendar(byte[] int_byte, java.util.Calendar c)Decode abytearray into aTimevalue.DatatypeCoder.RawDateTimeStructdecodeTimeRaw(byte[] int_byte)Decode abytearray into a raw date time struct.java.sql.TimestampdecodeTimestamp(java.sql.Timestamp value, java.util.Calendar cal, boolean invertTimeZone)Decode aTimestampvalue using a givenCalendar.java.sql.TimestampdecodeTimestampCalendar(byte[] byte_long, java.util.Calendar c)Decode an 8-bytebytearray into aTimestamp.DatatypeCoder.RawDateTimeStructdecodeTimestampRaw(byte[] byte_long)Decode an 8-bytebytearray into a raw date time struct.byte[]encodeBoolean(boolean value)Encodes boolean to 1 byte data.java.sql.DateencodeDate(java.sql.Date d, java.util.Calendar cal)Encode a givenDatevalue using a givenCalendar.byte[]encodeDateCalendar(java.sql.Date d, java.util.Calendar c)Encode aDatevalue into abytearray.byte[]encodeDateRaw(DatatypeCoder.RawDateTimeStruct raw)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(java.math.BigInteger bigInteger)Encodes a BigInteger to a 16-byte byte array.byte[]encodeLocalDate(java.time.LocalDate value)Encodes a java.time.LocalDate to date bytes.byte[]encodeLocalDateTime(java.time.LocalDateTime value)Encodes a java.time.LocalDateTime to timestamp bytes.byte[]encodeLocalTime(java.time.LocalTime value)Encodes a java.time.LocalTime 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(java.lang.String value)Encode aStringvalue into abytearray using the encoding of this datatype coder.java.sql.TimeencodeTime(java.sql.Time d, java.util.Calendar cal, boolean invertTimeZone)Encode a givenTimevalue using a givenCalendar.byte[]encodeTimeCalendar(java.sql.Time d, java.util.Calendar c)Encode aTimevalue into abytearray.byte[]encodeTimeRaw(DatatypeCoder.RawDateTimeStruct raw)Encode the time portion of a raw date time struct into abytearray.java.sql.TimestampencodeTimestamp(java.sql.Timestamp value, java.util.Calendar cal, boolean invertTimeZone)Encode aTimestampusing a givenCalendar.byte[]encodeTimestampCalendar(java.sql.Timestamp value, java.util.Calendar c)Encode aTimestampas abytearray.byte[]encodeTimestampRaw(DatatypeCoder.RawDateTimeStruct raw)Encode the date and time portions of a raw date time struct into abytearray.booleanequals(java.lang.Object other)DatatypeCoderforEncodingDefinition(EncodingDefinition encodingDefinition)Return a derived datatype coder that applies the supplied encoding definition for string conversions.EncodinggetEncoding()EncodingDefinitiongetEncodingDefinition()IEncodingFactorygetEncodingFactory()inthashCode()intsizeOfShort()The size of an encoded short in this data type coder.DatatypeCoderunwrap()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
2or4bytes) - Since:
- 4.0
-
encodeShort
byte[] encodeShort(short value)
Encode ashortvalue as abytearray.- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray - See Also:
encodeShort(int)
-
encodeShort
byte[] encodeShort(int value)
Encode ashortvalue as abytearray.- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
encodeShort
void encodeShort(int value, byte[] target, int fromIndex)Encode ashortvalue into thetargetbyte 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 abytearray into ashortvalue.- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
shortvalue of the decodedbytearray
-
decodeShort
short decodeShort(byte[] bytes, int fromIndex)Decode from abytearray to ashortvalue.- Parameters:
bytes- Thebytearray to be decodedfromIndex- The index to start reading- Returns:
- The
shortvalue of the decodedbytearray - Since:
- 4.0
-
encodeInt
byte[] encodeInt(int value)
Encode anintvalue as abytearray.- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
encodeInt
void encodeInt(int value, byte[] target, int fromIndex)Encode anintvalue into thetargetbyte 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 abytearray into anintvalue.- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
intvalue of the decodedbytearray
-
decodeInt
int decodeInt(byte[] bytes, int fromIndex)Decode abytearray to anintvalue.- Parameters:
bytes- Thebytearray to be decodedfromIndex- The index to start reading- Returns:
- The
intvalue of the decodedbytearray - Since:
- 4.0
-
encodeLong
byte[] encodeLong(long value)
Encode alongvalue as abytearray.- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
decodeLong
long decodeLong(byte[] byte_int)
Decode abytearray into alongvalue.- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
longvalue of the decodedbytearray
-
encodeFloat
byte[] encodeFloat(float value)
Encode afloatvalue as abytearray.- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
decodeFloat
float decodeFloat(byte[] byte_int)
Decode abytearray into afloatvalue.- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
floatvalue of the decodedbytearray
-
encodeDouble
byte[] encodeDouble(double value)
Encode adoublevalue as abytearray.- Parameters:
value- The value to be encoded- Returns:
- The value of
valueencoded as abytearray
-
decodeDouble
double decodeDouble(byte[] byte_int)
Decode abytearray into adoublevalue.- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
doublevalue of the decodedbytearray
-
encodeString
byte[] encodeString(java.lang.String value)
Encode aStringvalue into abytearray using the encoding of this datatype coder.- Parameters:
value- TheStringto be encoded- Returns:
- The value of
valueas abytearray - 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 encodedbytearray into aStringusing 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, boolean invertTimeZone)Encode aTimestampusing a givenCalendar.- 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
-
encodeTimestampRaw
byte[] encodeTimestampRaw(DatatypeCoder.RawDateTimeStruct raw)
Encode the date and time portions of a raw date time struct into abytearray.- Parameters:
raw- TheRawDateTimeStructto be encoded- Returns:
- The array of
bytes representing the date and time of the givenRawDateTimeStruct
-
encodeTimestampCalendar
byte[] encodeTimestampCalendar(java.sql.Timestamp value, java.util.Calendar c)Encode aTimestampas abytearray.- Parameters:
value- TheTimestampto be encodedc- Calendar to use for time zone calculation- Returns:
- The array of
bytes that represents the givenTimestampvalue
-
decodeTimestamp
java.sql.Timestamp decodeTimestamp(java.sql.Timestamp value, java.util.Calendar cal, boolean invertTimeZone)Decode aTimestampvalue using a givenCalendar.- 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
-
decodeTimestampRaw
DatatypeCoder.RawDateTimeStruct decodeTimestampRaw(byte[] byte_long)
Decode an 8-bytebytearray into a raw date time struct.- Parameters:
byte_long- Thebytearray to be decoded- Returns:
- A
DatatypeCoder.RawDateTimeStruct.
-
decodeTimestampCalendar
java.sql.Timestamp decodeTimestampCalendar(byte[] byte_long, java.util.Calendar c)Decode an 8-bytebytearray into aTimestamp.- Parameters:
byte_long- Thebytearray to be decodedc- Calendar to use for time zone calculation- Returns:
- A
Timestampvalue from the decoded bytes
-
encodeTime
java.sql.Time encodeTime(java.sql.Time d, java.util.Calendar cal, boolean invertTimeZone)Encode a givenTimevalue using a givenCalendar.- Parameters:
d- TheTimeto be encodedcal- TheCalendarto be used in the encoding, may benull- Returns:
- The encoded
Time
-
encodeTimeRaw
byte[] encodeTimeRaw(DatatypeCoder.RawDateTimeStruct raw)
Encode the time portion of a raw date time struct into abytearray.- Parameters:
raw- TheRawDateTimeStructto be encoded- Returns:
- The array of
bytes representing the time of the givenRawDateTimeStruct
-
encodeTimeCalendar
byte[] encodeTimeCalendar(java.sql.Time d, java.util.Calendar c)Encode aTimevalue into abytearray.- Parameters:
d- TheTimeto be encodedc- Calendar to use for time zone calculation- Returns:
- The array of
bytes representing the givenTime
-
decodeTime
java.sql.Time decodeTime(java.sql.Time d, java.util.Calendar cal, boolean invertTimeZone)Decode aTimevalue using a givenCalendar.- Parameters:
d- TheTimeto be decodedcal- TheCalendarto be used in the decoding, may benull- Returns:
- The decoded
Time
-
decodeTimeRaw
DatatypeCoder.RawDateTimeStruct decodeTimeRaw(byte[] int_byte)
Decode abytearray into a raw date time struct.- Parameters:
int_byte- Thebytearray to be decoded- Returns:
- The
DatatypeCoder.RawDateTimeStruct
-
decodeTimeCalendar
java.sql.Time decodeTimeCalendar(byte[] int_byte, java.util.Calendar c)Decode abytearray into aTimevalue.- Parameters:
int_byte- Thebytearray to be decodedc- Calendar to use for time zone calculation- Returns:
- The decoded
Time
-
encodeDate
java.sql.Date encodeDate(java.sql.Date d, java.util.Calendar cal)Encode a givenDatevalue using a givenCalendar.- Parameters:
d- TheDateto be encodedcal- TheCalendarto be used in the encoding, may benull- Returns:
- The encoded
Date
-
encodeDateRaw
byte[] encodeDateRaw(DatatypeCoder.RawDateTimeStruct raw)
Encode the date portion of a raw date time struct into abytearray.- Parameters:
raw- TheRawDateTimeStructto be encoded- Returns:
- The array of
bytes representing the date of the givenRawDateTimeStruct
-
encodeDateCalendar
byte[] encodeDateCalendar(java.sql.Date d, java.util.Calendar c)Encode aDatevalue into abytearray.- Parameters:
d- TheDateto be encodedc- Calendar to use for time zone calculation- Returns:
- The array of
bytes representing the givenDate
-
decodeDate
java.sql.Date decodeDate(java.sql.Date d, java.util.Calendar cal)Decode aDatevalue using a givenCalendar.- Parameters:
d- TheDateto be decodedcal- TheCalendarto be used in the decoding, may benull- Returns:
- The decoded
Date
-
decodeDateRaw
DatatypeCoder.RawDateTimeStruct decodeDateRaw(byte[] byte_int)
Decode abytearray into a raw date time struct.- Parameters:
byte_int- Thebytearray to be decoded- Returns:
- The
DatatypeCoder.RawDateTimeStruct
-
decodeDateCalendar
java.sql.Date decodeDateCalendar(byte[] byte_int, java.util.Calendar c)Decode abytearray into aDatevalue.- Parameters:
byte_int- Thebytearray to be decodedc- Calendar to use for time zone calculation- Returns:
- The decoded
Date
-
decodeBoolean
boolean decodeBoolean(byte[] data)
Decode boolean from supplied data.- Parameters:
data- (expected) 1 bytes- Returns:
falsewhen 0,truefor all other values
-
encodeBoolean
byte[] encodeBoolean(boolean value)
Encodes boolean to 1 byte data.- Parameters:
value- Boolean value to encode- Returns:
trueas 1,falseas 0.
-
decodeLocalTime
java.time.LocalTime decodeLocalTime(byte[] data)
Decode LocalTime from supplied data.- Parameters:
data- (expected) 4 bytes- Returns:
- LocalTime value
- Since:
- 5
-
encodeLocalTime
byte[] encodeLocalTime(java.time.LocalTime value)
Encodes a java.time.LocalTime to time bytes.- Parameters:
value- LocalTime value to encode- Returns:
- Byte array for time
- Since:
- 5
-
decodeLocalDate
java.time.LocalDate decodeLocalDate(byte[] data)
Decode LocalDate from supplied data.- Parameters:
data- (expected) 4 bytes- Returns:
- LocalDate value
- Since:
- 5
-
encodeLocalDate
byte[] encodeLocalDate(java.time.LocalDate value)
Encodes a java.time.LocalDate to date bytes.- Parameters:
value- LocalDate to encode- Returns:
- Byte array for date
- Since:
- 5
-
decodeLocalDateTime
java.time.LocalDateTime decodeLocalDateTime(byte[] data)
Decode LocalDateTime from supplied data.- Parameters:
data- (expected) 8 bytes- Returns:
- LocalDateTime value
- Since:
- 5
-
encodeLocalDateTime
byte[] encodeLocalDateTime(java.time.LocalDateTime value)
Encodes a java.time.LocalDateTime to timestamp bytes.- Parameters:
value- LocalDateTime to encode- Returns:
- Byte array for date
- Since:
- 5
-
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
IllegalArgumentExceptionis 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 (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:
equalsin classjava.lang.Object- Parameters:
other- Object to compare to- Returns:
trueif other is an equivalent datatype coder.
-
hashCode
int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
-