Class Datum
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
BINARY_DOUBLE,BINARY_FLOAT,BOOLEAN,CHAR,DATE,DatumWithConnection,INTERVALDS,INTERVALYM,NUMBER,OracleJsonDatum,RAW,ROWID,TIMESTAMP,TIMESTAMPLTZ,TIMESTAMPTZ,VECTOR
Each subclass represents one of the native kernel datatypes.
In order to allow for possible optimization of data copying between SQL and Java, instances of subclasses are immutable.
- Since:
- JDK1(Oracle)
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected oracle.jdbc.internal.OracleDatumWithConnectionprotected Datum -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionConvert to an ascii stream representation of the datum objectConvert to a BigDecimal representation of the datum objectConvert to a binary stream representation of the datum objectbooleanConvert to a boolean representation of the datum objectprotected booleanbytesEqual(Datum other) intbyteConvert to a byte representation of the datum objectConvert to a character stream representation of the datum objectstatic intcompareBytes(byte[] m, byte[] n) Do an unsigned compare on byte arrays m and nConvert to a Date representation of the datum objectdoubleConvert to a double representation of the datum objectbooleanTest any object for equality with an Datum.floatConvert to a float representation of the datum objectbyte[]getBytes()Create a new Java byte array containing a copy of the RDBMS data.protected oracle.jdbc.internal.OracleConnectionlongRetrieve the length of this datum's binary representation.Create an input stream so the raw data may be read.intintValue()Convert to a integer representation of the datum objectabstract booleanisConvertibleTo(Class<?> cls) Determines if datum object can be converted to a particular classbooleanisNull()Test if this Datum is emptylongConvert to a long representation of the datum objectabstract ObjectmakeJdbcArray(int arraySize) Returns a JDBC array representation of the datumvoidsetBytes(byte[] array) Sets datum value using a byte array.voidsetShareBytes(byte[] array) Sets datum value using a byte array.byte[]Retrieve the data bytes.Convert to a String representation of the datum objectstringValue(Connection conn) Some Datum subclass such as TIMESTAMPTZ will override this default implementation which simply ignores the the connection.Convert to a Timestamp representation of the datum objecttimestampValue(Calendar cal) Convert to a Time representation of the datum object<T> TConvert this datum to an instance of the specified type if possible.abstract ObjecttoJdbc()Returns the JDBC representation of the datum object
-
Field Details
-
targetDatum
-
ojiOracleDatumWithConnection
protected oracle.jdbc.internal.OracleDatumWithConnection ojiOracleDatumWithConnection
-
-
Constructor Details
-
Datum
public Datum()Creates an empty datum -
Datum
public Datum(byte[] newData) Create a new datum with the given byte array as representation. Subclasses use this to initialize thedataarray.- Parameters:
newData- byte array to be stored in the datum
-
-
Method Details
-
equals
Test any object for equality with an Datum. Datums are equal if they are of the same class and their bytes are the same. -
bytesHashCode
public int bytesHashCode()- Returns:
- hash code for the bytes data stored in this Datum object
-
getLength
public long getLength()Retrieve the length of this datum's binary representation.- Returns:
- The length of the datum in bytes.
-
setBytes
public void setBytes(byte[] array) Sets datum value using a byte array. The byte array is copied.- Parameters:
array- byte array used to set the datum value
-
getBytes
public byte[] getBytes()Create a new Java byte array containing a copy of the RDBMS data. No conversions of any kind are done.For now, the data array is simply copied. When we are using moss to go directly to the buffer cache, this implementation will be overridden by a native method which will cons an array and copy the bytes into it.
Subclasses which handle very long datatypes which will not ordinarily be represented as Java array, should check for allocation failure and return nil if detected. They should however try to materialize the raw data no matter how long since users may actually need to materialize huge arrays.
- Returns:
- A new copy of the data bytes or nil if the data could not be materialized because it was too long.
-
isNull
public boolean isNull()Test if this Datum is empty- Returns:
- a boolean
-
getStream
Create an input stream so the raw data may be read.This is the normal way to access long datatypes.
- Returns:
- an input stream.
-
stringValue
Convert to a String representation of the datum object- Returns:
- String representation of the datum object
- Throws:
SQLException
-
stringValue
Some Datum subclass such as TIMESTAMPTZ will override this default implementation which simply ignores the the connection.- Throws:
SQLException
-
booleanValue
Convert to a boolean representation of the datum object- Returns:
- boolean representation of the datum object
- Throws:
SQLException
-
intValue
Convert to a integer representation of the datum object- Returns:
- integer representation of the datum object
- Throws:
SQLException
-
longValue
Convert to a long representation of the datum object- Returns:
- long representation of the datum object
- Throws:
SQLException
-
floatValue
Convert to a float representation of the datum object- Returns:
- float representation of the datum object
- Throws:
SQLException
-
doubleValue
Convert to a double representation of the datum object- Returns:
- double representation of the datum object
- Throws:
SQLException
-
byteValue
Convert to a byte representation of the datum object- Returns:
- byte representation of the datum object
- Throws:
SQLException
-
bigDecimalValue
Convert to a BigDecimal representation of the datum object- Returns:
- java.math.BigDecimal representation of the datum object
- Throws:
SQLException
-
dateValue
Convert to a Date representation of the datum object- Returns:
- java.sql.Date representation of the datum object
- Throws:
SQLException
-
timeValue
Convert to a Time representation of the datum object- Returns:
- java.sql.Time representation of the datum object
- Throws:
SQLException
-
timeValue
- Throws:
SQLException
-
timestampValue
Convert to a Timestamp representation of the datum object- Returns:
- java.sql.Timestamp representation of the datum object
- Throws:
SQLException
-
timestampValue
- Throws:
SQLException
-
characterStreamValue
Convert to a character stream representation of the datum object- Returns:
- character stream representation of the datum object
- Throws:
SQLException
-
asciiStreamValue
Convert to an ascii stream representation of the datum object- Returns:
- ascii stream representation of the datum object
- Throws:
SQLException
-
binaryStreamValue
Convert to a binary stream representation of the datum object- Returns:
- binary stream representation of the datum object
- Throws:
SQLException
-
isConvertibleTo
Determines if datum object can be converted to a particular class- Parameters:
cls- Class to convert to- Returns:
- true, if conversion to cls is permitted false, if conversion to cls is not permitted
-
toClass
Convert this datum to an instance of the specified type if possible.- Parameters:
type- targetDatum class- Returns:
- an instance of the targetDatum class corresponding to this datum.
- Throws:
SQLException- if the conversion is not possible.
-
toJdbc
Returns the JDBC representation of the datum object- Returns:
- an object containing the JDBC value
- Throws:
SQLException- if conversion to JDBC representation results in an error
-
makeJdbcArray
Returns a JDBC array representation of the datum- Parameters:
arraySize- size of the array- Returns:
- an object containing the JDBC array value
-
compareBytes
public static int compareBytes(byte[] m, byte[] n) Do an unsigned compare on byte arrays m and n- Parameters:
m- input byte arrayn- input byte array- Returns:
- -1 if m < n, 0 if equal, 1 if m > n
-
bytesEqual
-
getConnectionDuringExceptionHandling
protected oracle.jdbc.internal.OracleConnection getConnectionDuringExceptionHandling()
-