|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.apache.derby.iapi.types.DataType
org.apache.derby.iapi.types.NumberDataType
org.apache.derby.iapi.types.SQLDouble
public final class SQLDouble
SQLDouble satisfies the DataValueDescriptor interfaces (i.e., OrderableDataType). It implements a double column, e.g. for * storing a column value; it can be specified when constructed to not allow nulls. Nullability cannot be changed after construction, as it affects the storage size and mechanism.
Because OrderableDataType is a subtype of DataType, SQLDouble can play a role in either a DataType/Row or a OrderableDataType/Row, interchangeably.
We assume the store has a flag for nullness of the value, and simply return a 0-length array for the stored form when the value is null.
PERFORMANCE: There are likely alot of performance improvements possible for this implementation -- it new's Double more than it probably wants to.
This is modeled after SQLInteger.
We don't let doubles get constructed with NaN or Infinity values, and check for those values where they can occur on operations, so the set* operations do not check for them coming in.
| Field Summary | |
|---|---|
private static int |
BASE_MEMORY_USAGE
|
(package private) static int |
DOUBLE_LENGTH
|
private boolean |
isnull
|
private double |
value
|
| Fields inherited from class org.apache.derby.iapi.types.NumberDataType |
|---|
MAXLONG_PLUS_ONE, MINLONG_MINUS_ONE, ONE, ZERO, ZERO_DECIMAL |
| Fields inherited from interface org.apache.derby.iapi.types.NumberDataValue |
|---|
MAX_DECIMAL_PRECISION_SCALE, MIN_DECIMAL_DIVIDE_SCALE |
| Fields inherited from interface org.apache.derby.iapi.types.DataValueDescriptor |
|---|
UNKNOWN_LOGICAL_LENGTH |
| Fields inherited from interface org.apache.derby.iapi.types.Orderable |
|---|
ORDER_OP_EQUALS, ORDER_OP_GREATEROREQUALS, ORDER_OP_GREATERTHAN, ORDER_OP_LESSOREQUALS, ORDER_OP_LESSTHAN |
| Constructor Summary | |
|---|---|
|
SQLDouble()
no-arg constructor, required by Formattable |
|
SQLDouble(double val)
|
|
SQLDouble(java.lang.Double obj)
|
private |
SQLDouble(double val,
boolean startsnull)
|
| Method Summary | |
|---|---|
DataValueDescriptor |
cloneValue(boolean forceMaterialization)
Clone this DataValueDescriptor. |
NumberDataValue |
divide(NumberDataValue dividend,
NumberDataValue divisor,
NumberDataValue result)
This method implements the / operator for "double / double". |
BooleanDataValue |
equals(DataValueDescriptor left,
DataValueDescriptor right)
The = operator as called from the language module, as opposed to the storage module. |
int |
estimateMemoryUsage()
Estimate the memory usage in bytes of the data value and the overhead of the class. |
boolean |
getBoolean()
Gets the value in the data value descriptor as a boolean. |
byte |
getByte()
Gets the value in the data value descriptor as a byte. |
double |
getDouble()
Gets the value in the data value descriptor as a double. |
float |
getFloat()
Gets the value in the data value descriptor as a float. |
int |
getInt()
Gets the value in the data value descriptor as a int. |
int |
getLength()
Gets the length of the data value. |
long |
getLong()
Gets the value in the data value descriptor as a long. |
DataValueDescriptor |
getNewNull()
Get a new null value of the same type as this data value. |
java.lang.Object |
getObject()
Gets the value in the data value descriptor as a int. |
short |
getShort()
Gets the value in the data value descriptor as a short. |
java.lang.String |
getString()
Gets the value in the data value descriptor as a String. |
int |
getTypeFormatId()
Return my format identifier. |
java.lang.String |
getTypeName()
Get the SQL name of the datatype |
BooleanDataValue |
greaterOrEquals(DataValueDescriptor left,
DataValueDescriptor right)
The >= operator as called from the language module, as opposed to the storage module. |
BooleanDataValue |
greaterThan(DataValueDescriptor left,
DataValueDescriptor right)
The > operator as called from the language module, as opposed to the storage module. |
int |
hashCode()
|
protected boolean |
isNegative()
This method implements the isNegative method. |
boolean |
isNull()
Return whether the value is null or not. |
BooleanDataValue |
lessOrEquals(DataValueDescriptor left,
DataValueDescriptor right)
The <= operator as called from the language module, as opposed to the storage module. |
BooleanDataValue |
lessThan(DataValueDescriptor left,
DataValueDescriptor right)
The < operator as called from the language module, as opposed to the storage module. |
NumberDataValue |
minus(NumberDataValue result)
This method implements the unary minus operator for double. |
NumberDataValue |
minus(NumberDataValue left,
NumberDataValue right,
NumberDataValue result)
This method implements the - operator for "double - double". |
BooleanDataValue |
notEquals(DataValueDescriptor left,
DataValueDescriptor right)
The <> operator as called from the language module, as opposed to the storage module. |
NumberDataValue |
plus(NumberDataValue addend1,
NumberDataValue addend2,
NumberDataValue result)
This method implements the + operator for "double + double". |
void |
readExternal(java.io.ObjectInput in)
|
void |
restoreToNull()
Restore this object to its (SQL)null value. |
void |
setBigDecimal(java.lang.Number bigDecimal)
Called for an application setting this value using a BigDecimal |
protected void |
setFrom(DataValueDescriptor theValue)
Set the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor. |
void |
setInto(java.sql.PreparedStatement ps,
int position)
Set the value into a PreparedStatement. |
void |
setInto(java.sql.ResultSet rs,
int position)
Set this value into a ResultSet for a subsequent ResultSet.insertRow or ResultSet.updateRow. |
(package private) void |
setObject(java.lang.Object theValue)
Set the value from a correctly typed Double object. |
void |
setValue(boolean theValue)
Set the value. |
void |
setValue(double theValue)
Set the value of this DataValueDescriptor to the given double value At DataType level just throws an error lower classes will override |
void |
setValue(float theValue)
Set the value of this DataValueDescriptor to the given float value At DataType level just throws an error lower classes will override |
void |
setValue(int theValue)
Set the value of this DataValueDescriptor to the given int value At DataType level just throws an error lower classes will override |
void |
setValue(long theValue)
Set the value of this DataValueDescriptor to the given long value At DataType level just throws an error lower classes will override |
void |
setValue(java.lang.Number theValue)
Common code to handle java.lang.Integer as a Number, used for TINYINT, SMALLINT, INTEGER |
void |
setValue(java.lang.String theValue)
Set the value of this DataValueDescriptor. |
void |
setValueFromResultSet(java.sql.ResultSet resultSet,
int colNumber,
boolean isNullable)
Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet. |
NumberDataValue |
times(NumberDataValue left,
NumberDataValue right,
NumberDataValue result)
This method implements the * operator for "double * double". |
java.lang.String |
toString()
|
protected int |
typeCompare(DataValueDescriptor arg)
Compare this (not null) to a non-null value. |
int |
typePrecedence()
Each built-in type in JSQL has a precedence. |
int |
typeToBigDecimal()
DOUBLE implementation. |
void |
writeExternal(java.io.ObjectOutput out)
|
| Methods inherited from class org.apache.derby.iapi.types.NumberDataType |
|---|
absolute, compare, compare, divide, getDecimalValuePrecision, getDecimalValueScale, mod, normalizeDOUBLE, normalizeREAL, normalizeREAL, objectNull, setValue, setValue, sqrt |
| Methods inherited from class org.apache.derby.iapi.types.DataType |
|---|
checkHostVariable, cloneHolder, coalesce, compare, compare, compareTo, dataTypeConversion, equals, flip, genericSetObject, getBytes, getDate, getStream, getTime, getTimestamp, getTraceString, getTypeName, hasStream, in, invalidFormat, isNotNull, isNullOp, normalize, outOfRange, readExternalFromArray, recycle, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, throwLangSetMismatch, throwLangSetMismatch |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.apache.derby.iapi.types.DataValueDescriptor |
|---|
checkHostVariable, cloneHolder, coalesce, compare, compare, getBytes, getDate, getStream, getTime, getTimestamp, getTraceString, hasStream, in, isNotNull, isNullOp, normalize, readExternalFromArray, recycle, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue |
| Field Detail |
|---|
static final int DOUBLE_LENGTH
private static final int BASE_MEMORY_USAGE
private double value
private boolean isnull
| Constructor Detail |
|---|
public SQLDouble()
public SQLDouble(double val)
throws StandardException
StandardException
public SQLDouble(java.lang.Double obj)
throws StandardException
StandardException
private SQLDouble(double val,
boolean startsnull)
throws StandardException
StandardException| Method Detail |
|---|
public int getInt()
throws StandardException
DataType
getInt in interface DataValueDescriptorgetInt in class DataTypeStandardException - thrown on failure to convert
public byte getByte()
throws StandardException
DataType
getByte in interface DataValueDescriptorgetByte in class DataTypeStandardException - thrown on failure to convert
public short getShort()
throws StandardException
DataType
getShort in interface DataValueDescriptorgetShort in class DataTypeStandardException - thrown on failure to convert
public long getLong()
throws StandardException
DataType
getLong in interface DataValueDescriptorgetLong in class DataTypeStandardException - thrown on failure to convert
public float getFloat()
throws StandardException
DataType
getFloat in interface DataValueDescriptorgetFloat in class DataTypeStandardException - thrown on failure to convertpublic double getDouble()
DataType
getDouble in interface DataValueDescriptorgetDouble in class DataTypepublic int typeToBigDecimal()
typeToBigDecimal in interface DataValueDescriptortypeToBigDecimal in class NumberDataTypepublic boolean getBoolean()
DataType
getBoolean in interface DataValueDescriptorgetBoolean in class DataTypepublic java.lang.String getString()
DataValueDescriptor
public java.lang.Object getObject()
DataType
getObject in interface DataValueDescriptorgetObject in class DataType
void setObject(java.lang.Object theValue)
throws StandardException
setObject in class NumberDataTypeStandardException
protected void setFrom(DataValueDescriptor theValue)
throws StandardException
DataType
setFrom in class DataTypetheValue - The DataValueDescriptor that holds the value to
which we want to set this DataValueDescriptor's value.
StandardExceptionpublic int getLength()
DataValueDescriptor
public java.lang.String getTypeName()
DataValueDescriptor
public int getTypeFormatId()
TypedFormat.getTypeFormatId()public boolean isNull()
Storable
Storable.isNull()
public void writeExternal(java.io.ObjectOutput out)
throws java.io.IOException
java.io.IOException
public void readExternal(java.io.ObjectInput in)
throws java.io.IOException
java.io.IOExceptionExternalizable.readExternal(java.io.ObjectInput)public void restoreToNull()
Storable
Storable.restoreToNull()
protected int typeCompare(DataValueDescriptor arg)
throws StandardException
NumberDataType
typeCompare in class NumberDataTypeStandardException - Thrown on errorpublic DataValueDescriptor cloneValue(boolean forceMaterialization)
DataValueDescriptor
Even though the objects can be modified independently regardless of the
value of forceMaterialization, both the clone and the
original may be dependent on the store state if
forceMaterialization is set to false. An example is if
you need to access the value you just read using cloneValue
after the current transaction has ended, or after the source result set
has been closed.
forceMaterialization - any streams representing the data value will
be materialized if true, the data value will be kept as a
stream if possible if false
DataValueDescriptor with the same initial
value as this.DataValueDescriptor.cloneValue(boolean)public DataValueDescriptor getNewNull()
DataValueDescriptor
DataValueDescriptor.getNewNull()
public void setValueFromResultSet(java.sql.ResultSet resultSet,
int colNumber,
boolean isNullable)
throws StandardException,
java.sql.SQLException
DataValueDescriptor
resultSet - The specified ResultSet.colNumber - The 1-based column # into the resultSet.isNullable - Whether or not the column is nullable
(No need to call wasNull() if not)
StandardException - Thrown on error
java.sql.SQLException - Thrown on errorDataValueDescriptor.setValueFromResultSet(java.sql.ResultSet, int, boolean)
public final void setInto(java.sql.PreparedStatement ps,
int position)
throws java.sql.SQLException
setInto in interface DataValueDescriptorsetInto in class DataTypejava.sql.SQLException - Error setting value in PreparedStatement
public final void setInto(java.sql.ResultSet rs,
int position)
throws java.sql.SQLException,
StandardException
setInto in interface DataValueDescriptorsetInto in class DataTypejava.sql.SQLException - thrown by the ResultSet object
StandardException - thrown by me accessing my value.
public void setValue(java.lang.String theValue)
throws StandardException
DataType
setValue in interface DataValueDescriptorsetValue in class DataTypetheValue - The BigDecimal value to set this DataValueDescriptor to
StandardException - throws NumberFormatException
when the String format is not recognized.
public void setValue(double theValue)
throws StandardException
DataType
setValue in interface DataValueDescriptorsetValue in class DataTypetheValue - The value to set this DataValueDescriptor to
StandardException - on NaN or Infinite double
public void setValue(float theValue)
throws StandardException
DataType
setValue in interface DataValueDescriptorsetValue in class DataTypetheValue - The value to set this DataValueDescriptor to
StandardException - on NaN or Infinite floatpublic void setValue(long theValue)
DataType
setValue in interface DataValueDescriptorsetValue in class DataTypetheValue - The value to set this DataValueDescriptor topublic void setValue(int theValue)
DataType
setValue in interface DataValueDescriptorsetValue in class DataTypetheValue - The value to set this DataValueDescriptor to
public void setValue(java.lang.Number theValue)
throws StandardException
NumberDataType
setValue in interface NumberDataValuesetValue in class NumberDataTypetheValue - An Number containing the value to set this
NumberDataValue to. Null means set the value
to SQL null.
StandardException - Thrown on errorNumberDataValue.setValue(java.lang.Number)
public void setBigDecimal(java.lang.Number bigDecimal)
throws StandardException
setBigDecimal in interface DataValueDescriptorsetBigDecimal in class NumberDataTypebigDecimal - required to be a BigDecimal or null.
StandardExceptionpublic void setValue(boolean theValue)
DataType
setValue in interface DataValueDescriptorsetValue in class DataTypetheValue - Contains the boolean value to set this toNumberDataValue.setValue(java.lang.Number)public int typePrecedence()
DataType
typePrecedence in interface DataValueDescriptortypePrecedence in class DataTypeDataValueDescriptor.typePrecedence()
public BooleanDataValue equals(DataValueDescriptor left,
DataValueDescriptor right)
throws StandardException
equals in interface DataValueDescriptorequals in class DataTypeleft - The value on the left side of the =right - The value on the right side of the =
is not.
StandardException - Thrown on error
public BooleanDataValue notEquals(DataValueDescriptor left,
DataValueDescriptor right)
throws StandardException
notEquals in interface DataValueDescriptornotEquals in class DataTypeleft - The value on the left side of the <>right - The value on the right side of the <>
is not.
StandardException - Thrown on error
public BooleanDataValue lessThan(DataValueDescriptor left,
DataValueDescriptor right)
throws StandardException
lessThan in interface DataValueDescriptorlessThan in class DataTypeleft - The value on the left side of the <right - The value on the right side of the <
StandardException - Thrown on error
public BooleanDataValue greaterThan(DataValueDescriptor left,
DataValueDescriptor right)
throws StandardException
greaterThan in interface DataValueDescriptorgreaterThan in class DataTypeleft - The value on the left side of the >right - The value on the right side of the >
StandardException - Thrown on error
public BooleanDataValue lessOrEquals(DataValueDescriptor left,
DataValueDescriptor right)
throws StandardException
lessOrEquals in interface DataValueDescriptorlessOrEquals in class DataTypeleft - The value on the left side of the <=right - The value on the right side of the <=
StandardException - Thrown on error
public BooleanDataValue greaterOrEquals(DataValueDescriptor left,
DataValueDescriptor right)
throws StandardException
greaterOrEquals in interface DataValueDescriptorgreaterOrEquals in class DataTypeleft - The value on the left side of the >=right - The value on the right side of the >=
StandardException - Thrown on error
public NumberDataValue plus(NumberDataValue addend1,
NumberDataValue addend2,
NumberDataValue result)
throws StandardException
plus in interface NumberDataValueplus in class NumberDataTypeaddend1 - One of the addendsaddend2 - The other addendresult - The result of a previous call to this method, null
if not called yet
StandardException - Thrown on error
public NumberDataValue minus(NumberDataValue left,
NumberDataValue right,
NumberDataValue result)
throws StandardException
minus in interface NumberDataValueminus in class NumberDataTypeleft - The value to be subtracted fromright - The value to be subtractedresult - The result of a previous call to this method, null
if not called yet
StandardException - Thrown on error
public NumberDataValue times(NumberDataValue left,
NumberDataValue right,
NumberDataValue result)
throws StandardException
left - The first value to be multipliedright - The second value to be multipliedresult - The result of a previous call to this method, null
if not called yet
StandardException - Thrown on error
public NumberDataValue divide(NumberDataValue dividend,
NumberDataValue divisor,
NumberDataValue result)
throws StandardException
divide in interface NumberDataValuedivide in class NumberDataTypedividend - The numeratordivisor - The denominatorresult - The result of a previous call to this method, null
if not called yet
StandardException - Thrown on error
public NumberDataValue minus(NumberDataValue result)
throws StandardException
result - The result of a previous call to this method, null
if not called yet
StandardException - Thrown on errorprotected boolean isNegative()
isNegative in class NumberDataTypepublic java.lang.String toString()
toString in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic int estimateMemoryUsage()
DataValueDescriptor
|
Built on Wed 2013-06-12 15:21:56+0000, from revision ??? | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||