org.apache.derby.iapi.types
Class DataValueFactoryImpl

java.lang.Object
  extended by org.apache.derby.iapi.types.DataValueFactoryImpl
All Implemented Interfaces:
ModuleControl, DataValueFactory
Direct Known Subclasses:
CDCDataValueFactory, J2SEDataValueFactory

abstract class DataValueFactoryImpl
extends java.lang.Object
implements DataValueFactory, ModuleControl

Core implementation of DataValueFactory. Does not implement methods required to generate DataValueDescriptor implementations for the DECIMAL datatype. J2ME and J2SE require different implementations.

See Also:
DataValueFactory

Field Summary
private  java.text.RuleBasedCollator collatorForCharacterTypes
           
private  java.util.Locale databaseLocale
           
(package private)  LocaleFinder localeFinder
           
 
Constructor Summary
DataValueFactoryImpl()
           
 
Method Summary
 void boot(boolean create, java.util.Properties properties)
          Boot this module with the given properties.
 BitDataValue getBitDataValue(byte[] value)
          Get a SQL bit with the given value.
 BitDataValue getBitDataValue(byte[] value, BitDataValue previous)
           
 BitDataValue getBlobDataValue(byte[] value, BitDataValue previous)
          Get a SQL Blob with the given value.
 java.text.RuleBasedCollator getCharacterCollator(int collationType)
          Return the RuleBasedCollator depending on the collation type.
 StringDataValue getCharDataValue(java.lang.String value)
          Get a new SQLChar object to represent a SQL CHAR (UCS_BASIC) with the given value.
 StringDataValue getCharDataValue(java.lang.String value, StringDataValue previous)
          Get a SQLChar object to represent a SQL CHAR (UCS_BASIC with the given value.
 StringDataValue getCharDataValue(java.lang.String value, StringDataValue previous, int collationType)
          Return a StringDataValue to represent a SQL CHAR with the given collation re-using previous if not null.
 StringDataValue getClobDataValue(java.lang.String value, StringDataValue previous)
          Get a SQLClob object to represent a SQL CLOB (UCS_BASIC) with the given value.
 StringDataValue getClobDataValue(java.lang.String value, StringDataValue previous, int collationType)
          Return a StringDataValue to represent a SQL CLOB with the given collation re-using previous if not null.
 BooleanDataValue getDataValue(boolean value)
          Get a SQL boolean with the given value.
 BooleanDataValue getDataValue(java.lang.Boolean value)
          Get a SQL boolean with the given value.
 BooleanDataValue getDataValue(boolean value, BooleanDataValue previous)
           
 BooleanDataValue getDataValue(java.lang.Boolean value, BooleanDataValue previous)
           
 BooleanDataValue getDataValue(BooleanDataValue value)
          Get a SQL boolean with the given value.
 NumberDataValue getDataValue(java.lang.Byte value)
          Get a SQL TINYINT with the given value.
 NumberDataValue getDataValue(byte value, NumberDataValue previous)
          Get a SQL TINYINT with the given value.
 NumberDataValue getDataValue(java.lang.Byte value, NumberDataValue previous)
           
 NumberDataValue getDataValue(char value, NumberDataValue previous)
          Get a SQL int with a char value.
 DateTimeDataValue getDataValue(java.sql.Date value)
          Get a SQL date with the given value.
 DateTimeDataValue getDataValue(java.sql.Date value, DateTimeDataValue previous)
           
 NumberDataValue getDataValue(java.lang.Double value)
          Get a SQL double precision with the given value.
 NumberDataValue getDataValue(double value, NumberDataValue previous)
          Get a SQL double precision with the given value.
 NumberDataValue getDataValue(java.lang.Double value, NumberDataValue previous)
           
 NumberDataValue getDataValue(java.lang.Float value)
          Get a SQL real with the given value.
 NumberDataValue getDataValue(float value, NumberDataValue previous)
          Get a SQL real with the given value.
 NumberDataValue getDataValue(java.lang.Float value, NumberDataValue previous)
           
 NumberDataValue getDataValue(int value)
          Get a SQL int with the given value.
 NumberDataValue getDataValue(java.lang.Integer value)
           
 NumberDataValue getDataValue(java.lang.Integer value, NumberDataValue previous)
          Get a SQL int with the given value.
 NumberDataValue getDataValue(int value, NumberDataValue previous)
           
 NumberDataValue getDataValue(long value)
          Get a SQL bigint with the given value.
 NumberDataValue getDataValue(java.lang.Long value)
          Get a SQL bigint with the given value.
 NumberDataValue getDataValue(long value, NumberDataValue previous)
           
 NumberDataValue getDataValue(java.lang.Long value, NumberDataValue previous)
           
 UserDataValue getDataValue(java.lang.Object value)
          Get a User-defined data value with the given value and type name.
 UserDataValue getDataValue(java.lang.Object value, UserDataValue previous)
           
 RefDataValue getDataValue(RowLocation value, RefDataValue previous)
          Get a RefDataValue with the given value.
 NumberDataValue getDataValue(java.lang.Short value)
          Get a SQL smallint with the given value.
 NumberDataValue getDataValue(short value, NumberDataValue previous)
          Get a SQL SMALLINT with the given value.
 NumberDataValue getDataValue(java.lang.Short value, NumberDataValue previous)
           
 DateTimeDataValue getDataValue(java.sql.Time value)
          Get a SQL time with the given value.
 DateTimeDataValue getDataValue(java.sql.Time value, DateTimeDataValue previous)
           
 DateTimeDataValue getDataValue(java.sql.Timestamp value)
          Get a SQL timestamp with the given value.
 DateTimeDataValue getDataValue(java.sql.Timestamp value, DateTimeDataValue previous)
           
 DateTimeDataValue getDate(DataValueDescriptor operand)
          Implement the date SQL function: construct a SQL date from a string, number, or timestamp.
 DateTimeDataValue getDateValue(java.lang.String dateStr, boolean isJdbcEscape)
           
 NumberDataValue getDecimalDataValue(java.lang.Number value)
          Get a SQL DECIMAL with the given value.
 NumberDataValue getDecimalDataValue(java.lang.Number value, NumberDataValue previous)
           
 NumberDataValue getDecimalDataValue(java.lang.String value, NumberDataValue previous)
           
private  LocaleFinder getLocaleFinder()
           
 BitDataValue getLongVarbitDataValue(byte[] value, BitDataValue previous)
          Get a SQL Long Bit Varying with the given value.
 StringDataValue getLongvarcharDataValue(java.lang.String value)
          Get a SQL long varchar with the given value.
 StringDataValue getLongvarcharDataValue(java.lang.String value, StringDataValue previous)
          Get a SQLLongvarchar object to represent a SQL LONG VARCHAR (UCS_BASIC) with the given value.
 StringDataValue getLongvarcharDataValue(java.lang.String value, StringDataValue previous, int collationType)
          Return a StringDataValue to represent a SQL LONG VARCHAR with the given collation re-using previous if not null.
 DataValueDescriptor getNull(int formatId, int collationType)
          Return an object based on the format id and collation type.
 BitDataValue getNullBit(BitDataValue dataValue)
          Get a SQL Bit with a SQL null value.
 BitDataValue getNullBlob(BitDataValue dataValue)
          Get a SQL Blob with a SQL null value.
 BooleanDataValue getNullBoolean(BooleanDataValue dataValue)
          Get a SQL boolean with a SQL null value.
 NumberDataValue getNullByte(NumberDataValue dataValue)
          Get a SQL tinyint with a SQL null value.
 StringDataValue getNullChar(StringDataValue dataValue)
          Get a SQL CHAR (UCS_BASIC) with a SQL null value.
 StringDataValue getNullChar(StringDataValue previous, int collationType)
          Get a SQL CHAR set to NULL with collation set to collationType.
 StringDataValue getNullClob(StringDataValue dataValue)
          Get a SQL CLOB (UCS_BASIC) with a SQL null value.
 StringDataValue getNullClob(StringDataValue previous, int collationType)
          Get a SQL CLOB set to NULL with collation set to collationType.
 DateTimeDataValue getNullDate(DateTimeDataValue dataValue)
          Get a SQL date with a SQL null value.
 NumberDataValue getNullDouble(NumberDataValue dataValue)
          Get a SQL double with a SQL null value.
static DataValueDescriptor getNullDVDWithUCS_BASICcollation(int formatId)
          This method will return a DVD based on the formatId.
 NumberDataValue getNullFloat(NumberDataValue dataValue)
          Get a SQL float with a SQL null value.
 NumberDataValue getNullInteger(NumberDataValue dataValue)
          Get a SQL int with a SQL null value.
 NumberDataValue getNullLong(NumberDataValue dataValue)
          Get a SQL bigint with a SQL null value.
 BitDataValue getNullLongVarbit(BitDataValue dataValue)
          Get a SQL Long Bit Varying with a SQL null value.
 StringDataValue getNullLongvarchar(StringDataValue dataValue)
          Get a SQL LONG VARCHAR (UCS_BASIC) with a SQL null value.
 StringDataValue getNullLongvarchar(StringDataValue previous, int collationType)
          Get a SQL LONG VARCHAR set to NULL with collation set to collationType.
 UserDataValue getNullObject(UserDataValue dataValue)
          Get a User-defined data value with a SQL null value.
 RefDataValue getNullRef(RefDataValue dataValue)
          Get a RefDataValue with a SQL null value.
 NumberDataValue getNullShort(NumberDataValue dataValue)
          Get a SQL smallint with a SQL null value.
 DateTimeDataValue getNullTime(DateTimeDataValue dataValue)
          Get a SQL time with a SQL null value.
 DateTimeDataValue getNullTimestamp(DateTimeDataValue dataValue)
          Get a SQL timestamp with a SQL null value.
 BitDataValue getNullVarbit(BitDataValue dataValue)
          Get a SQL Bit Varying with a SQL null value.
 StringDataValue getNullVarchar(StringDataValue dataValue)
          Get a SQL VARCHAR (UCS_BASIC) with a SQL null value.
 StringDataValue getNullVarchar(StringDataValue previous, int collationType)
          Get a SQL VARCHAR set to NULL with collation set to collationType.
 XMLDataValue getNullXML(XMLDataValue dataValue)
          getNullXML: Get an XML with a SQL null value.
 DateTimeDataValue getTimestamp(DataValueDescriptor operand)
          Implement the timestamp SQL function: construct a SQL timestamp from a string, or timestamp.
 DateTimeDataValue getTimestamp(DataValueDescriptor date, DataValueDescriptor time)
          Construct a SQL timestamp from a date and time.
 DateTimeDataValue getTimestampValue(java.lang.String timestampStr, boolean isJdbcEscape)
           
 DateTimeDataValue getTimeValue(java.lang.String timeStr, boolean isJdbcEscape)
           
 BitDataValue getVarbitDataValue(byte[] value, BitDataValue previous)
          Get a SQL bit with the given value.
 StringDataValue getVarcharDataValue(java.lang.String value)
          Get a SQL varchar with the given value.
 StringDataValue getVarcharDataValue(java.lang.String value, StringDataValue previous)
          Get a SQLVarhar object to represent a SQL VARCHAR (UCS_BASIC) with the given value.
 StringDataValue getVarcharDataValue(java.lang.String value, StringDataValue previous, int collationType)
          Return a StringDataValue to represent a SQL VARCHAR with the given collation re-using previous if not null.
 XMLDataValue getXMLDataValue(XMLDataValue previous)
          getXMLDataValue: Get a null XML value.
 void stop()
          Stop the module.
private  java.text.RuleBasedCollator verifyCollatorSupport()
          Verify that JVM has support for the Collator for the datbase's locale.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.derby.iapi.types.DataValueFactory
getDecimalDataValue, getDecimalDataValue, getNullDecimal
 

Field Detail

localeFinder

LocaleFinder localeFinder

databaseLocale

private java.util.Locale databaseLocale

collatorForCharacterTypes

private java.text.RuleBasedCollator collatorForCharacterTypes
Constructor Detail

DataValueFactoryImpl

DataValueFactoryImpl()
Method Detail

boot

public void boot(boolean create,
                 java.util.Properties properties)
          throws StandardException
Description copied from interface: ModuleControl
Boot this module with the given properties. Creates a module instance that can be found using the findModule() methods of Monitor. The module can only be found using one of these findModule() methods once this method has returned.

An implementation's boot method can throw StandardException. If it is thrown the module is not registered by the monitor and therefore cannot be found through a findModule(). In this case the module's stop() method is not called, thus throwing this exception must free up any resources.

When create is true the contents of the properties object will be written to the service.properties of the persistent service. Thus any code that requires an entry in service.properties must explicitly place the value in this properties set using the put method.
Typically the properties object contains one or more default properties sets, which are not written out to service.properties. These default sets are how callers modify the create process. In a JDBC connection database create the first set of defaults is a properties object that contains the attributes that were set on the jdbc:derby: URL. This attributes properties set has the second default properties set as its default. This set (which could be null) contains the properties that the user set on their DriverManager.getConnection() call, and are thus not owned by Derby code, and thus must not be modified by Derby code.

When create is false the properties object contains all the properties set in the service.properties file plus a limited number of attributes from the JDBC URL attributes or connection properties set. This avoids properties set by the user compromising the boot process. An example of a property passed in from the JDBC world is the bootPassword for encrypted databases.

Code should not hold onto the passed in properties reference after boot time as its contents may change underneath it. At least after the complete boot is completed, the links to all the default sets will be removed.

Specified by:
boot in interface ModuleControl
Throws:
StandardException - Module cannot be started.
See Also:
Monitor, ModuleFactory

stop

public void stop()
Description copied from interface: ModuleControl
Stop the module. The module may be found via a findModule() method until some time after this method returns. Therefore the factory must be prepared to reject requests to it once it has been stopped. In addition other modules may cache a reference to the module and make requests of it after it has been stopped, these requests should be rejected as well.

Specified by:
stop in interface ModuleControl
See Also:
Monitor, ModuleFactory

getDataValue

public NumberDataValue getDataValue(int value)
Description copied from interface: DataValueFactory
Get a SQL int with the given value. The second form re-uses the previous value, if non-null, as the data holder to return.

Specified by:
getDataValue in interface DataValueFactory
See Also:
DataValueFactory.getDataValue(java.lang.Integer, org.apache.derby.iapi.types.NumberDataValue)

getDataValue

public NumberDataValue getDataValue(int value,
                                    NumberDataValue previous)
                             throws StandardException
Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(java.lang.Integer value)

getDataValue

public NumberDataValue getDataValue(java.lang.Integer value,
                                    NumberDataValue previous)
                             throws StandardException
Description copied from interface: DataValueFactory
Get a SQL int with the given value. A null argument means get a SQL null value. Uses the previous value (if non-null) to hold the return value.

Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(char value,
                                    NumberDataValue previous)
                             throws StandardException
Description copied from interface: DataValueFactory
Get a SQL int with a char value. A null argument means get a SQL null value. Uses the previous value (if non-null) to hold the return value.

Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(short value,
                                    NumberDataValue previous)
                             throws StandardException
Description copied from interface: DataValueFactory
Get a SQL SMALLINT with the given value. Uses the previous value, if non-null, as the data holder to return.

Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(java.lang.Short value)
Description copied from interface: DataValueFactory
Get a SQL smallint with the given value. A null argument means get a SQL null value. The second form uses the previous value (if non-null) to hold the return value.

Specified by:
getDataValue in interface DataValueFactory

getDataValue

public NumberDataValue getDataValue(java.lang.Short value,
                                    NumberDataValue previous)
                             throws StandardException
Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(byte value,
                                    NumberDataValue previous)
                             throws StandardException
Description copied from interface: DataValueFactory
Get a SQL TINYINT with the given value. Uses the previous value, if non-null, as the data holder to return.

Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(java.lang.Byte value)
Description copied from interface: DataValueFactory
Get a SQL TINYINT with the given value. A null argument means get a SQL null value. The second form uses the previous value (if non-null) to hold the return value.

Specified by:
getDataValue in interface DataValueFactory

getDataValue

public NumberDataValue getDataValue(java.lang.Byte value,
                                    NumberDataValue previous)
                             throws StandardException
Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(long value)
Description copied from interface: DataValueFactory
Get a SQL bigint with the given value. The second form re-uses the previous value, if non-null, as the data holder to return.

Specified by:
getDataValue in interface DataValueFactory

getDataValue

public NumberDataValue getDataValue(long value,
                                    NumberDataValue previous)
                             throws StandardException
Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(java.lang.Long value)
Description copied from interface: DataValueFactory
Get a SQL bigint with the given value. A null argument means get a SQL null value. The second form uses the previous value (if non-null) to hold the return value.

Specified by:
getDataValue in interface DataValueFactory

getDataValue

public NumberDataValue getDataValue(java.lang.Long value,
                                    NumberDataValue previous)
                             throws StandardException
Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(float value,
                                    NumberDataValue previous)
                             throws StandardException
Description copied from interface: DataValueFactory
Get a SQL real with the given value. Uses the previous value, if non-null, as the data holder to return.

Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException - Thrown on error

getDataValue

public NumberDataValue getDataValue(java.lang.Float value)
                             throws StandardException
Description copied from interface: DataValueFactory
Get a SQL real with the given value. A null argument means get a SQL null value. The second form uses the previous value (if non-null) to hold the return value.

Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(java.lang.Float value,
                                    NumberDataValue previous)
                             throws StandardException
Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public NumberDataValue getDataValue(double value,
                                    NumberDataValue previous)
                             throws StandardException
Description copied from interface: DataValueFactory
Get a SQL double precision with the given value. Uses the previous value, if non-null, as the data holder to return.

Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException - Thrown on error

getDataValue

public NumberDataValue getDataValue(java.lang.Double value)
                             throws StandardException
Description copied from interface: DataValueFactory
Get a SQL double precision with the given value. A null argument means a SQL null value. The second form uses the previous value (if non-null) to hold the return value.

Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException - Thrown on error

getDataValue

public NumberDataValue getDataValue(java.lang.Double value,
                                    NumberDataValue previous)
                             throws StandardException
Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDecimalDataValue

public final NumberDataValue getDecimalDataValue(java.lang.Number value)
                                          throws StandardException
Description copied from interface: DataValueFactory
Get a SQL DECIMAL with the given value. The second form re-uses the previous value, if non-null, as the data holder to return.

Specified by:
getDecimalDataValue in interface DataValueFactory
Throws:
StandardException - Thrown on error

getDecimalDataValue

public final NumberDataValue getDecimalDataValue(java.lang.Number value,
                                                 NumberDataValue previous)
                                          throws StandardException
Specified by:
getDecimalDataValue in interface DataValueFactory
Throws:
StandardException

getDecimalDataValue

public final NumberDataValue getDecimalDataValue(java.lang.String value,
                                                 NumberDataValue previous)
                                          throws StandardException
Specified by:
getDecimalDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public BooleanDataValue getDataValue(boolean value)
Description copied from interface: DataValueFactory
Get a SQL boolean with the given value. The second form re-uses the previous value, if non-null, as the data holder to return.

Specified by:
getDataValue in interface DataValueFactory

getDataValue

public BooleanDataValue getDataValue(boolean value,
                                     BooleanDataValue previous)
                              throws StandardException
Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public BooleanDataValue getDataValue(java.lang.Boolean value)
Description copied from interface: DataValueFactory
Get a SQL boolean with the given value. A null argument means get a SQL null value. The second form uses the previous value (if non-null) to hold the return value.

Specified by:
getDataValue in interface DataValueFactory

getDataValue

public BooleanDataValue getDataValue(java.lang.Boolean value,
                                     BooleanDataValue previous)
                              throws StandardException
Specified by:
getDataValue in interface DataValueFactory
Throws:
StandardException

getDataValue

public BooleanDataValue getDataValue(BooleanDataValue value)
Description copied from interface: DataValueFactory
Get a SQL boolean with the given value. A null argument means get a SQL null value. The second form uses the previous value (if non-null) to hold the return value.

Specified by:
getDataValue in interface DataValueFactory

getBitDataValue

public BitDataValue getBitDataValue(byte[] value)
                             throws StandardException
Description copied from interface: DataValueFactory
Get a SQL bit with the given value. The second form re-uses the previous value, if non-null, as the data holder to return.

Specified by:
getBitDataValue in interface DataValueFactory
Throws:
StandardException - Thrown on error

getBitDataValue

public BitDataValue getBitDataValue(byte[] value,
                                    BitDataValue previous)
                             throws StandardException
Specified by:
getBitDataValue in interface DataValueFactory
Throws:
StandardException

getVarbitDataValue

public BitDataValue getVarbitDataValue(byte[] value,
                                       BitDataValue previous)
                                throws StandardException
Description copied from interface: DataValueFactory
Get a SQL bit with the given value. Uses the previous value, if non-null, as the data holder to return.

Specified by:
getVarbitDataValue in interface DataValueFactory
Throws:
StandardException - Thrown on error

getLongVarbitDataValue

public BitDataValue getLongVarbitDataValue(byte[] value,
                                           BitDataValue previous)
                                    throws StandardException
Description copied from interface: DataValueFactory
Get a SQL Long Bit Varying with the given value. A null argument means get a SQL null value. Uses the previous value (if non-null) to hold the return value.

Specified by:
getLongVarbitDataValue in interface DataValueFactory
Throws:
StandardException - Thrown on error

getBlobDataValue

public BitDataValue getBlobDataValue(byte[] value,
                                     BitDataValue previous)
                              throws StandardException
Description copied from interface: DataValueFactory
Get a SQL Blob with the given value. A null argument means get a SQL null value. Uses the previous value (if non-null) to hold the return value.

Specified by:
getBlobDataValue in interface DataValueFactory
Throws:
StandardException - Thrown on error

getCharDataValue

public StringDataValue getCharDataValue(java.lang.String value)
Description copied from interface: DataValueFactory
Get a new SQLChar object to represent a SQL CHAR (UCS_BASIC) with the given value. A null argument means get a SQL NULL value.

Specified by:
getCharDataValue in interface DataValueFactory