public abstract class Datum extends Object implements Serializable
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.
| Modifier and Type | Field and Description |
|---|---|
protected oracle.jdbc.internal.OracleDatumWithConnection |
ojiOracleDatumWithConnection |
protected Datum |
targetDatum |
| Constructor and Description |
|---|
Datum()
Creates an empty datum
|
Datum(byte[] newData)
Create a new datum with the given byte array as representation.
|
| Modifier and Type | Method and Description |
|---|---|
InputStream |
asciiStreamValue()
Convert to an ascii stream representation of the datum object
|
BigDecimal |
bigDecimalValue()
Convert to a BigDecimal representation of the datum object
|
InputStream |
binaryStreamValue()
Convert to a binary stream representation of the datum object
|
boolean |
booleanValue()
Convert to a boolean representation of the datum object
|
protected boolean |
bytesEqual(Datum other) |
int |
bytesHashCode() |
byte |
byteValue()
Convert to a byte representation of the datum object
|
Reader |
characterStreamValue()
Convert to a character stream representation of the datum object
|
static int |
compareBytes(byte[] m, byte[] n)
Do an unsigned compare on byte arrays m and n
|
Date |
dateValue()
Convert to a Date representation of the datum object
|
double |
doubleValue()
Convert to a double representation of the datum object
|
boolean |
equals(Object obj)
Test any object for equality with an Datum.
|
float |
floatValue()
Convert to a float representation of the datum object
|
byte[] |
getBytes()
Create a new Java byte array containing a copy of the RDBMS data.
|
protected oracle.jdbc.internal.OracleConnection |
getConnectionDuringExceptionHandling() |
long |
getLength()
Retreive the length of a datum.
|
InputStream |
getStream()
Create an input stream so the raw data may be read.
|
int |
intValue()
Convert to a integer representation of the datum object
|
abstract boolean |
isConvertibleTo(Class cls)
Determines if datum object can be converted to a particular class
|
boolean |
isNull()
Test if this Datum is empty
|
long |
longValue()
Convert to a long representation of the datum object
|
abstract Object |
makeJdbcArray(int arraySize)
Returns a JDBC array representation of the datum
|
void |
setBytes(byte[] array)
Sets datum value using a byte array.
|
void |
setShareBytes(byte[] array)
Sets datum value using a byte array.
|
byte[] |
shareBytes()
Retrieve the data bytes.
|
String |
stringValue()
Convert to a String representation of the datum object
|
String |
stringValue(Connection conn)
Some Datum subclass such as TIMESTAMPTZ will override this default implementation which simply ignores the the connection.
|
Timestamp |
timestampValue()
Convert to a Timestamp representation of the datum object
|
Timestamp |
timestampValue(Calendar cal) |
Time |
timeValue()
Convert to a Time representation of the datum object
|
Time |
timeValue(Calendar cal) |
<T> T |
toClass(Class<T> type)
Convert this datum to an instance of the specified type if possible.
|
abstract Object |
toJdbc()
Returns the JDBC representation of the datum object
|
protected Datum targetDatum
protected oracle.jdbc.internal.OracleDatumWithConnection ojiOracleDatumWithConnection
public Datum()
public Datum(byte[] newData)
data array.newData - byte array to be stored in the datumpublic boolean equals(Object obj)
public int bytesHashCode()
public byte[] shareBytes()
Used by java code in subclasses to access the data bytes. If the bytes are not yet a Java array, this may cause them to be copied into one.
public long getLength()
public void setBytes(byte[] array)
array - byte array used to set the datum valuepublic void setShareBytes(byte[] array)
array - byte array used to set the datum valuepublic byte[] getBytes()
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.
public boolean isNull()
public InputStream getStream()
This is the normal way to access long datatypes.
public String stringValue() throws SQLException
SQLException, - if no String representation existsSQLExceptionpublic String stringValue(Connection conn) throws SQLException
SQLExceptionpublic boolean booleanValue()
throws SQLException
SQLException, - if no boolean representation existsSQLExceptionpublic int intValue()
throws SQLException
SQLException, - if no integer representation existsSQLExceptionpublic long longValue()
throws SQLException
SQLException, - if no long representation existsSQLExceptionpublic float floatValue()
throws SQLException
SQLException, - if no float representation existsSQLExceptionpublic double doubleValue()
throws SQLException
SQLException, - if no double representation existsSQLExceptionpublic byte byteValue()
throws SQLException
SQLException, - if no byte representation existsSQLExceptionpublic BigDecimal bigDecimalValue() throws SQLException
SQLException, - if no BigDecimal representation existsSQLExceptionpublic Date dateValue() throws SQLException
SQLException, - if no Date representation existsSQLExceptionpublic Time timeValue() throws SQLException
SQLException, - if no Time representation existsSQLExceptionpublic Time timeValue(Calendar cal) throws SQLException
SQLExceptionpublic Timestamp timestampValue() throws SQLException
SQLException, - if no Timestamp representation existsSQLExceptionpublic Timestamp timestampValue(Calendar cal) throws SQLException
SQLExceptionpublic Reader characterStreamValue() throws SQLException
SQLException, - if no character stream representation existsSQLExceptionpublic InputStream asciiStreamValue() throws SQLException
SQLException, - if no ascii stream representation existsSQLExceptionpublic InputStream binaryStreamValue() throws SQLException
SQLException, - if no binary stream representation existsSQLExceptionpublic abstract boolean isConvertibleTo(Class cls)
cls - Class to convert topublic <T> T toClass(Class<T> type) throws SQLException
type - targetDatum classSQLException - if the conversion is not possible.public abstract Object toJdbc() throws SQLException
SQLException - if conversion to JDBC representation results in an errorpublic abstract Object makeJdbcArray(int arraySize)
arraySize - size of the arraypublic static int compareBytes(byte[] m,
byte[] n)
m - input byte arrayn - input byte arrayprotected boolean bytesEqual(Datum other)
protected oracle.jdbc.internal.OracleConnection getConnectionDuringExceptionHandling()