org.codehaus.modello.generator.database.type

Class Types


public class Types
extends java.lang.Object

Manages the set of types supported by a database provider, and the mappings from standard JDBC types to the provider types.
Version:
1.1 2003/02/05 08:08:37
Author:
Tim Anderson

Constructor Summary

Types()
Construct a new empty Types

Method Summary

void
addAutoIncrementMapping(Mapping mapping)
Add an auto-increment mapping.
void
addMapping(Mapping mapping)
Add a mapping.
void
addType(Type type)
Add a type.
TypeMapping
getAutoIncrementMapping(String name, long size)
Returns the closest auto-increment type mapping matching the requested type name and size
List
getAutoIncrementMappings()
Returns all auto-increment mappings
List
getMappings()
Returns all mappings that the database supports
String
getSQLType(Column column)
Helper to return the SQL type for a column
Type
getType(String sqlName)
Returns a type, based on its name
protected TypeMapping
getTypeMapping(List mappings, long size)
Returns the closest type mapping for a requested size, from a list of Mappings.
TypeMapping
getTypeMapping(String name, long size)
Returns the first type matching the requested type name and size
List
getTypes()
Returns all types
TypeMapping
promote(String fromName, String toName, long size)
Promote a type to another type
TypeMapping
promote(String name, long size)
Promote a type to that supported by the database provider.
protected TypeMapping
promote(String name, long size, String[] types)
Promote a type to that supported by the database provider.
protected TypeMapping
promote(String name, long size, String[] types, String defaultName)
Promote a type to that supported by the database provider.

Constructor Details

Types

public Types()
Construct a new empty Types

Method Details

addAutoIncrementMapping

public void addAutoIncrementMapping(Mapping mapping)
Add an auto-increment mapping. Mappings are identified by their Mapping.getName(). Multiple mappings can be added with the same name.

addMapping

public void addMapping(Mapping mapping)
Add a mapping. Mappings are identified by their Mapping.getName(). Multiple mappings can be added with the same name.

addType

public void addType(Type type)
Add a type. Types are uniquely identified by their Type.getSQLName() - if a type already exists with the same name, it will be replaced

getAutoIncrementMapping

public TypeMapping getAutoIncrementMapping(String name,
                                           long size)
Returns the closest auto-increment type mapping matching the requested type name and size
Parameters:
name - the JDBC type name
size - the requested size. A size <= 0 indicates that the type has no size
Returns:
the closest matching mapping, or null if none exists

getAutoIncrementMappings

public List getAutoIncrementMappings()
Returns all auto-increment mappings

getMappings

public List getMappings()
Returns all mappings that the database supports

getSQLType

public String getSQLType(Column column)
Helper to return the SQL type for a column
Parameters:
column - the column
Returns:
the SQL type of column

getType

public Type getType(String sqlName)
Returns a type, based on its name
Parameters:
sqlName - the name of the type
Returns:
the type corresponding to sqlName, or null if no such type exists

getTypeMapping

protected TypeMapping getTypeMapping(List mappings,
                                     long size)
Returns the closest type mapping for a requested size, from a list of Mappings. Note that the returned mapping may specify a size less than that requested.
Parameters:
mappings - a list of Mappings
size - the requested size
Returns:
the closest type mapping

getTypeMapping

public TypeMapping getTypeMapping(String name,
                                  long size)
Returns the first type matching the requested type name and size
Parameters:
name - the JDBC type name
size - the requested size. A size of 0 indicates that the type has no size
Returns:
the closest matching type, or null if none exists

getTypes

public List getTypes()
Returns all types

promote

public TypeMapping promote(String fromName,
                           String toName,
                           long size)
Promote a type to another type
Parameters:
fromName - the JDBC type name to promote
toName - the JDBC type name to promote to
size - the requested size
Returns:
the promoted type mapping, or null if the promotion is invalid, or isn't supported by the database provider

promote

public TypeMapping promote(String name,
                           long size)
Promote a type to that supported by the database provider. Note that this only promotes types when the type semantics remain unchanged - it will not promote a CHAR to a VARCHAR for example as some providers do not support indexes on VARCHAR columns. If this is the desired behaviour, add a mapping.
Parameters:
name - the JDBC type name
size - the requested size
Returns:
the promoted type mapping, or null if the type can't be promoted

promote

protected TypeMapping promote(String name,
                              long size,
                              String[] types)
Promote a type to that supported by the database provider.
Parameters:
name - the JDBC type name
size - the requested size
types - the set of JDBC types that name may be promoted to
Returns:
the promoted type mapping, or null if the type can't be promoted

promote

protected TypeMapping promote(String name,
                              long size,
                              String[] types,
                              String defaultName)
Promote a type to that supported by the database provider.
Parameters:
name - the JDBC type name
size - the requested size
types - the set of JDBC types that name may be promoted to
defaultName - the default type name to promote to. If non-null, this is used in preference to those listed by types
Returns:
the promoted type mapping, or null if the type can't be promoted