org.apache.derby.impl.sql.compile
Class DateTypeCompiler

java.lang.Object
  extended byorg.apache.derby.impl.sql.compile.BaseTypeCompiler
      extended byorg.apache.derby.impl.sql.compile.DateTypeCompiler
All Implemented Interfaces:
TypeCompiler

public class DateTypeCompiler
extends BaseTypeCompiler


Field Summary
 
Fields inherited from interface org.apache.derby.iapi.sql.compile.TypeCompiler
AVG_OP, BOOLEAN_MAXWIDTH_AS_CHAR, DEFAULT_DECIMAL_PRECISION, DEFAULT_DECIMAL_SCALE, DIVIDE_OP, DOUBLE_MAXWIDTH_AS_CHAR, INT_MAXWIDTH_AS_CHAR, LONGINT_MAXWIDTH_AS_CHAR, MAX_DECIMAL_PRECISION_SCALE, MINUS_OP, MOD_OP, PLUS_OP, REAL_MAXWIDTH_AS_CHAR, SMALLINT_MAXWIDTH_AS_CHAR, SUM_OP, TIMES_OP, TINYINT_MAXWIDTH_AS_CHAR
 
Constructor Summary
DateTypeCompiler()
           
 
Method Summary
 boolean comparable(TypeId otherType, boolean forEquals, ClassFactory cf)
          Dates are comparable to timestamps and to comparable user types.
 boolean compatible(TypeId otherType)
          Tell whether this type (date) is compatible with the given type.
 boolean convertible(TypeId otherType, boolean forDataTypeFunction)
          User types are convertible to other user types only if (for now) they are the same type and are being used to implement some JDBC type.
protected  java.lang.String dataValueMethodName()
          Return the method name to get a Derby DataValueDescriptor object of the correct type.
 void generateDataValue(MethodBuilder mb, LocalField field)
          Generate the code necessary to produce a SQL value based on a value.
 void generateNull(MethodBuilder mb)
          Generate the code necessary to produce a SQL null of the appropriate type.
 int getCastToCharWidth(DataTypeDescriptor dts)
          Return the maximum width for this data type when cast to a char type.
 java.lang.String getCorrespondingPrimitiveTypeName()
          Get the name of the corresponding Java type.
 java.lang.String getMatchingNationalCharTypeName()
          Get the name of the matching national char type.
 java.lang.String getPrimitiveMethodName()
          Get the method name for getting out the corresponding primitive Java type.
protected  int getStoredFormatIdFromTypeId()
          Get the StoredFormatId from the corresponding TypeId.
protected  TypeCompiler getTypeCompiler(TypeId typeId)
          Get the TypeCompiler that corresponds to the given TypeId.
protected  TypeId getTypeId()
          Get the TypeId that corresponds to this TypeCompiler.
 java.lang.String interfaceName()
          Get the name of the interface for this type.
protected  java.lang.String nullMethodName()
           
 boolean numberComparable(TypeId otherType, boolean forEquals, ClassFactory cf)
          Tell whether this numeric type can be compared to the given type.
 boolean numberConvertible(TypeId otherType, boolean forDataTypeFunction)
          Tell whether this numeric type can be converted to the given type.
 boolean numberStorable(TypeId thisType, TypeId otherType, ClassFactory cf)
          Tell whether this numeric type can be stored into from the given type.
 DataTypeDescriptor resolveArithmeticOperation(DataTypeDescriptor leftType, DataTypeDescriptor rightType, java.lang.String operator)
          Type resolution methods on binary operators
(package private)  void setTypeId(TypeId typeId)
          Set the TypeCompiler that corresponds to the given TypeId.
 boolean storable(TypeId otherType, ClassFactory cf)
          User types are storable into other user types that they are assignable to.
protected  boolean userTypeStorable(TypeId thisType, TypeId otherType, ClassFactory cf)
          Determine whether thisType is storable in otherType due to otherType being a user type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DateTypeCompiler

public DateTypeCompiler()
Method Detail

comparable

public boolean comparable(TypeId otherType,
                          boolean forEquals,
                          ClassFactory cf)
Dates are comparable to timestamps and to comparable user types.

Parameters:
otherType - the type of the instance to compare with this type.
forEquals - True if this is an = or <> comparison, false otherwise.
cf - A ClassFactory
Returns:
true if otherType is comparable to this type, else false.

convertible

public boolean convertible(TypeId otherType,
                           boolean forDataTypeFunction)
User types are convertible to other user types only if (for now) they are the same type and are being used to implement some JDBC type. This is sufficient for date/time types; it may be generalized later for e.g. comparison of any user type with one of its subtypes.

Parameters:
otherType - The CompilationType of the other type to compare this type to
forDataTypeFunction - true if this is a type function that requires more liberal behavior (e.g DOUBLE can convert a char but you cannot cast a CHAR to double.
Returns:
true if the types can be converted, false if conversion is not allowed
See Also:
TypeCompiler.convertible(org.apache.derby.iapi.types.TypeId, boolean)

compatible

public boolean compatible(TypeId otherType)
Tell whether this type (date) is compatible with the given type.

Parameters:
otherType - The TypeId of the other type.
Returns:
true if the types are compatible, false if not compatible

storable

public boolean storable(TypeId otherType,
                        ClassFactory cf)
User types are storable into other user types that they are assignable to. The other type must be a subclass of this type, or implement this type as one of its interfaces. Built-in types are also storable into user types when the built-in type's corresponding Java type is assignable to the user type.

Parameters:
otherType - the type of the instance to store into this type.
cf - A ClassFactory
Returns:
true if otherType is storable into this type, else false.

interfaceName

public java.lang.String interfaceName()
Description copied from interface: TypeCompiler
Get the name of the interface for this type. For example, the interface for a SQLInteger is NumberDataValue. The full path name of the type is returned.

Returns:
The name of the interface for this type.
See Also:
TypeCompiler.interfaceName()

getCorrespondingPrimitiveTypeName

public java.lang.String getCorrespondingPrimitiveTypeName()
Description copied from interface: TypeCompiler
Get the name of the corresponding Java type. For numerics and booleans we will get the corresponding Java primitive type. e Each SQL type has a corresponding Java type. When a SQL value is passed to a Java method, it is translated to its corresponding Java type. For example, a SQL Integer will be mapped to a Java int, but a SQL date will be mapped to a java.sql.Date.

Returns:
The name of the corresponding Java primitive type.
See Also:
TypeCompiler.getCorrespondingPrimitiveTypeName()

getCastToCharWidth

public int getCastToCharWidth(DataTypeDescriptor dts)
Description copied from interface: TypeCompiler
Return the maximum width for this data type when cast to a char type.

Parameters:
dts - The associated DataTypeDescriptor for this TypeId.
Returns:
int The maximum width for this data type when cast to a char type.
See Also:
TypeCompiler.getCastToCharWidth(org.apache.derby.iapi.types.DataTypeDescriptor)

nullMethodName

protected java.lang.String nullMethodName()
Specified by:
nullMethodName in class BaseTypeCompiler

getPrimitiveMethodName

public java.lang.String getPrimitiveMethodName()
Get the method name for getting out the corresponding primitive Java type.

Specified by:
getPrimitiveMethodName in interface TypeCompiler
Returns:
String The method call name for getting the corresponding primitive Java type.

getMatchingNationalCharTypeName

public java.lang.String getMatchingNationalCharTypeName()
Description copied from interface: TypeCompiler
Get the name of the matching national char type.

Specified by:
getMatchingNationalCharTypeName in interface TypeCompiler
Returns:
The name of the matching national char type.
See Also:
TypeCompiler.getMatchingNationalCharTypeName()

resolveArithmeticOperation

public DataTypeDescriptor resolveArithmeticOperation(DataTypeDescriptor leftType,
                                                     DataTypeDescriptor rightType,
                                                     java.lang.String operator)
                                              throws StandardException
Description copied from interface: TypeCompiler
Type resolution methods on binary operators

Specified by:
resolveArithmeticOperation in interface TypeCompiler
Parameters:
leftType - The type of the left parameter
rightType - The type of the right parameter
operator - The name of the operator (e.g. "+").
Returns:
The type of the result
Throws:
StandardException - Thrown on error
See Also:
TypeCompiler.resolveArithmeticOperation(org.apache.derby.iapi.types.DataTypeDescriptor, org.apache.derby.iapi.types.DataTypeDescriptor, java.lang.String)

generateNull

public void generateNull(MethodBuilder mb)
Description copied from interface: TypeCompiler
Generate the code necessary to produce a SQL null of the appropriate type. The stack must contain a DataValueFactory and a null or a value of the correct type (interfaceName()).

Specified by:
generateNull in interface TypeCompiler
Parameters:
mb - The method to put the expression in
See Also:
TypeCompiler.generateNull(org.apache.derby.iapi.services.compiler.MethodBuilder)

generateDataValue

public void generateDataValue(MethodBuilder mb,
                              LocalField field)
Description copied from interface: TypeCompiler
Generate the code necessary to produce a SQL value based on a value. The value's type is assumed to match the type of this TypeId. For example, a TypeId for the SQL int type should be given an value that evaluates to a Java int or Integer. If the type of the value is incorrect, the generated code will not work. The stack must contain data value factory value

Specified by:
generateDataValue in interface TypeCompiler
See Also:
TypeCompiler.generateDataValue(org.apache.derby.iapi.services.compiler.MethodBuilder, org.apache.derby.iapi.services.compiler.LocalField)

dataValueMethodName

protected java.lang.String dataValueMethodName()
Return the method name to get a Derby DataValueDescriptor object of the correct type. This implementation returns "getDataValue".


userTypeStorable

protected boolean userTypeStorable(TypeId thisType,
                                   TypeId otherType,
                                   ClassFactory cf)
Determine whether thisType is storable in otherType due to otherType being a user type.

Parameters:
thisType - The TypeId of the value to be stored
otherType - The TypeId of the value to be stored in
Returns:
true if thisType is storable in otherType

numberComparable

public boolean numberComparable(TypeId otherType,
                                boolean forEquals,
                                ClassFactory cf)
Tell whether this numeric type can be compared to the given type.

Parameters:
otherType - The TypeId of the other type.

numberConvertible

public boolean numberConvertible(TypeId otherType,
                                 boolean forDataTypeFunction)
Tell whether this numeric type can be converted to the given type.

Parameters:
otherType - The TypeId of the other type.
forDataTypeFunction - was this called from a scalarFunction like CHAR() or DOUBLE()

numberStorable

public boolean numberStorable(TypeId thisType,
                              TypeId otherType,
                              ClassFactory cf)
Tell whether this numeric type can be stored into from the given type.

Parameters:
thisType - The TypeId of this type
otherType - The TypeId of the other type.
cf - A ClassFactory

getTypeId

protected TypeId getTypeId()
Get the TypeId that corresponds to this TypeCompiler.


getTypeCompiler

protected TypeCompiler getTypeCompiler(TypeId typeId)
Get the TypeCompiler that corresponds to the given TypeId.


setTypeId

void setTypeId(TypeId typeId)
Set the TypeCompiler that corresponds to the given TypeId.


getStoredFormatIdFromTypeId

protected int getStoredFormatIdFromTypeId()
Get the StoredFormatId from the corresponding TypeId.

Returns:
The StoredFormatId from the corresponding TypeId.

Built on Mon 2007-06-04 09:58:47+0400, from revision ???

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.