org.apache.openjpa.jdbc.meta
Class MappingInfo

java.lang.Object
  extended by org.apache.openjpa.jdbc.meta.MappingInfo
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
ClassMappingInfo, DiscriminatorMappingInfo, FieldMappingInfo, ValueMappingInfo, VersionMappingInfo

public abstract class MappingInfo
extends Object
implements Serializable

Base class storing raw mapping information; defines utility methods for converting raw mapping information to full mapping to the schema.

Author:
Abe White
See Also:
Serialized Form

Nested Class Summary
static interface MappingInfo.ForeignKeyDefaults
          Supplies default foreign key information.
static interface MappingInfo.TableDefaults
          Supplies default table information.
 
Field Summary
static int JOIN_FORWARD
           
static int JOIN_INVERSE
           
static int JOIN_NONE
           
 
Constructor Summary
MappingInfo()
           
 
Method Summary
 void assertNoForeignKey(MetaDataContext context, boolean die)
          Assert that the user did not try to place a foreign key on this mapping or placed an implicit foreign key.
 void assertNoIndex(MetaDataContext context, boolean die)
          Assert that the user did not try to place an index on this mapping.
 void assertNoJoin(MetaDataContext context, boolean die)
          Assert that the user did not try to join.
 void assertNoSchemaComponents(MetaDataContext context, boolean die)
          Assert that the user did not supply any columns, index, unique constraint, or foreign key for this mapping.
 void assertNoUnique(MetaDataContext context, boolean die)
          Assert that the user did not try to place a unique constraint on this mapping.
 void assertStrategy(MetaDataContext context, Object contextStrat, Object expected, boolean die)
          Assert that this info has the given strategy or no strategy.
 boolean canForeignKey()
          The user can mark columns as explicitly not having a foreign key.
 boolean canIndex()
          The user can mark columns as explicitly non-indexable.
(package private)  boolean canMerge(List<Column> given, Column[] templates, boolean adapt, boolean fill)
           
 boolean canUnique()
          The user can mark columns as explicitly not having a unique constraint.
 void clear()
          Clear all mapping information.
protected  void clear(boolean canFlags)
          Clear mapping information.
 void copy(MappingInfo info)
          Copy missing info from the instance to this one.
protected  Column[] createColumns(MetaDataContext context, String prefix, Column[] tmplates, Table table, boolean adapt)
          Retrieve/create columns on the given table by merging the given template information with any user-provided information.
protected  ForeignKey createForeignKey(MetaDataContext context, String prefix, List<Column> given, MappingInfo.ForeignKeyDefaults def, Table table, ClassMapping cls, ClassMapping rel, boolean inversable, boolean adapt)
          Retrieve/create a foreign key (possibly logical) on the given columns by merging the given template information with any user-provided information.
protected  Index createIndex(MetaDataContext context, String prefix, Index tmplate, Column[] cols, boolean adapt)
          Retrieve/create an index on the given columns by merging the given template information with any user-provided information.
 Table createTable(MetaDataContext context, MappingInfo.TableDefaults def, DBIdentifier schemaName, DBIdentifier given, boolean adapt)
           
 Table createTable(MetaDataContext context, MappingInfo.TableDefaults def, String schemaName, String given, boolean adapt)
          Deprecated.  
protected  Unique createUnique(MetaDataContext context, String prefix, Unique tmplate, Column[] cols, boolean adapt)
          Retrieve/create a unique constraint on the given columns by merging the given template information with any user-provided information.
 ColumnIO getColumnIO()
          I/O for the columns created by the last call to createColumns(org.apache.openjpa.meta.MetaDataContext, java.lang.String, org.apache.openjpa.jdbc.schema.Column[], org.apache.openjpa.jdbc.schema.Table, boolean), or for the foreign key created by the last call to createForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List, org.apache.openjpa.jdbc.meta.MappingInfo.ForeignKeyDefaults, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.meta.ClassMapping, boolean, boolean).
 List<Column> getColumns()
          Raw column data.
 List<Column> getColumns(DBIdentifier tableName)
          Gets the columns whose table name matches the given table name.
 List<Column> getColumns(String tableName)
          Deprecated.  
 ForeignKey getForeignKey()
          Raw foreign key information.
 Index getIndex()
          Raw index.
 int getJoinDirection()
          Direction of the join that the columns of this mapping info form.
 String getStrategy()
          Mapping strategy name.
 Unique getUnique()
          Raw unique constraint information.
 boolean hasSchemaComponents()
          Return true if this info has columns, foreign key information, index information, etc.
 boolean isImplicitRelation()
          Affirms if this instance represents an implicit relation.
protected static Column mergeColumn(MetaDataContext context, String prefix, Column tmplate, boolean compat, Column given, Table table, boolean adapt, boolean fill)
          Merge the given columns if possible.
 void setCanForeignKey(boolean fkable)
          The user can mark columns as explicitly not having a foreign key.
 void setCanIndex(boolean indexable)
          The user can mark columns as explicitly non-indexable.
 void setCanUnique(boolean uniquable)
          The user can mark columns as explicitly not having a unique constraint.
 void setColumnIO(ColumnIO io)
          I/O for the columns created by the last call to createColumns(org.apache.openjpa.meta.MetaDataContext, java.lang.String, org.apache.openjpa.jdbc.schema.Column[], org.apache.openjpa.jdbc.schema.Table, boolean), or for the foreign key created by the last call to createForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List, org.apache.openjpa.jdbc.meta.MappingInfo.ForeignKeyDefaults, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.meta.ClassMapping, boolean, boolean).
 void setColumns(List<Column> cols)
          Raw column data.
 void setForeignKey(ForeignKey fk)
          Raw foreign key information.
 void setImplicitRelation(boolean flag)
          Sets a marker to imply a logical relation that can not have any physical manifest in the database.
 void setIndex(Index idx)
          Raw index.
 void setJoinDirection(int join)
          Direction of the join that the columns of this mapping info form.
 void setStrategy(String strategy)
          Mapping strategy name.
 void setUnique(Unique unq)
          Raw unique constraint information.
protected static Column syncColumn(MetaDataContext context, Column col, int num, boolean forceJDBCType, Table colTable, Table targetTable, Object target, boolean inverse)
          Create a copy of the given column with the raw mapping information set correctly, and without settings that match defaults.
protected  void syncColumns(MetaDataContext context, Column[] cols, boolean forceJDBCType)
          Sets internal column information to match the given mapped columns.
protected  void syncForeignKey(MetaDataContext context, ForeignKey fk, Table local, Table target)
          Sets internal constraint and column information to match given mapped constraint.
protected  void syncIndex(MetaDataContext context, Index idx)
          Sets internal index information to match given mapped index.
protected  void syncUnique(MetaDataContext context, Unique unq)
          Sets internal constraint information to match given mapped constraint.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

JOIN_NONE

public static final int JOIN_NONE
See Also:
Constant Field Values

JOIN_FORWARD

public static final int JOIN_FORWARD
See Also:
Constant Field Values

JOIN_INVERSE

public static final int JOIN_INVERSE
See Also:
Constant Field Values
Constructor Detail

MappingInfo

public MappingInfo()
Method Detail

getStrategy

public String getStrategy()
Mapping strategy name.


setStrategy

public void setStrategy(String strategy)
Mapping strategy name.


getColumns

public List<Column> getColumns()
Raw column data.


getColumns

public List<Column> getColumns(String tableName)
Deprecated. 

Gets the columns whose table name matches the given table name.


getColumns

public List<Column> getColumns(DBIdentifier tableName)
Gets the columns whose table name matches the given table name.


setColumns

public void setColumns(List<Column> cols)
Raw column data.


getIndex

public Index getIndex()
Raw index.


setIndex

public void setIndex(Index idx)
Raw index.


canIndex

public boolean canIndex()
The user can mark columns as explicitly non-indexable.


setCanIndex

public void setCanIndex(boolean indexable)
The user can mark columns as explicitly non-indexable.


isImplicitRelation

public boolean isImplicitRelation()
Affirms if this instance represents an implicit relation. For example, a relation expressed as the value of primary key of the related class and not as object reference.

Since:
1.3.0

setImplicitRelation

public void setImplicitRelation(boolean flag)
Sets a marker to imply a logical relation that can not have any physical manifest in the database. For example, a relation expressed as the value of primary key of the related class and not as object reference. Populated from @ForeignKey(implicit=true) annotation. The mutator can only transit from false to true but not vice versa.

Since:
1.3.0

getForeignKey

public ForeignKey getForeignKey()
Raw foreign key information.


setForeignKey

public void setForeignKey(ForeignKey fk)
Raw foreign key information.


canForeignKey

public boolean canForeignKey()
The user can mark columns as explicitly not having a foreign key.


setCanForeignKey

public void setCanForeignKey(boolean fkable)
The user can mark columns as explicitly not having a foreign key.


getUnique

public Unique getUnique()
Raw unique constraint information.


setUnique

public void setUnique(Unique unq)
Raw unique constraint information.


canUnique

public boolean canUnique()
The user can mark columns as explicitly not having a unique constraint.


setCanUnique

public void setCanUnique(boolean uniquable)
The user can mark columns as explicitly not having a unique constraint.


getColumnIO

public ColumnIO getColumnIO()
I/O for the columns created by the last call to createColumns(org.apache.openjpa.meta.MetaDataContext, java.lang.String, org.apache.openjpa.jdbc.schema.Column[], org.apache.openjpa.jdbc.schema.Table, boolean), or for the foreign key created by the last call to createForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List, org.apache.openjpa.jdbc.meta.MappingInfo.ForeignKeyDefaults, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.meta.ClassMapping, boolean, boolean). This is also expected to be set correctly prior to calls to syncColumns(org.apache.openjpa.meta.MetaDataContext, org.apache.openjpa.jdbc.schema.Column[], boolean) and syncForeignKey(org.apache.openjpa.meta.MetaDataContext, org.apache.openjpa.jdbc.schema.ForeignKey, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table).


setColumnIO

public void setColumnIO(ColumnIO io)
I/O for the columns created by the last call to createColumns(org.apache.openjpa.meta.MetaDataContext, java.lang.String, org.apache.openjpa.jdbc.schema.Column[], org.apache.openjpa.jdbc.schema.Table, boolean), or for the foreign key created by the last call to createForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List, org.apache.openjpa.jdbc.meta.MappingInfo.ForeignKeyDefaults, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.meta.ClassMapping, boolean, boolean). This is also expected to be set correctly prior to calls to syncColumns(org.apache.openjpa.meta.MetaDataContext, org.apache.openjpa.jdbc.schema.Column[], boolean) and syncForeignKey(org.apache.openjpa.meta.MetaDataContext, org.apache.openjpa.jdbc.schema.ForeignKey, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table).


getJoinDirection

public int getJoinDirection()
Direction of the join that the columns of this mapping info form. This is usually automatically set by createForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List, org.apache.openjpa.jdbc.meta.MappingInfo.ForeignKeyDefaults, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.meta.ClassMapping, boolean, boolean). This flag is also expected to be set correctly prior to calls to syncForeignKey(org.apache.openjpa.meta.MetaDataContext, org.apache.openjpa.jdbc.schema.ForeignKey, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table) if the join is inversed.


setJoinDirection

public void setJoinDirection(int join)
Direction of the join that the columns of this mapping info form. This is usually automatically set by createForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List, org.apache.openjpa.jdbc.meta.MappingInfo.ForeignKeyDefaults, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.meta.ClassMapping, boolean, boolean). This flag is also expected to be set correctly prior to calls to syncForeignKey(org.apache.openjpa.meta.MetaDataContext, org.apache.openjpa.jdbc.schema.ForeignKey, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table) if the join is inversed.


clear

public void clear()
Clear all mapping information.


clear

protected void clear(boolean canFlags)
Clear mapping information.

Parameters:
canFlags - whether to clear information about whether we can place indexed, foreign keys, etc on this mapping

copy

public void copy(MappingInfo info)
Copy missing info from the instance to this one.


hasSchemaComponents

public boolean hasSchemaComponents()
Return true if this info has columns, foreign key information, index information, etc.


assertNoSchemaComponents

public void assertNoSchemaComponents(MetaDataContext context,
                                     boolean die)
Assert that the user did not supply any columns, index, unique constraint, or foreign key for this mapping.


assertStrategy

public void assertStrategy(MetaDataContext context,
                           Object contextStrat,
                           Object expected,
                           boolean die)
Assert that this info has the given strategy or no strategy.


assertNoIndex

public void assertNoIndex(MetaDataContext context,
                          boolean die)
Assert that the user did not try to place an index on this mapping.


assertNoUnique

public void assertNoUnique(MetaDataContext context,
                           boolean die)
Assert that the user did not try to place a unique constraint on this mapping.


assertNoForeignKey

public void assertNoForeignKey(MetaDataContext context,
                               boolean die)
Assert that the user did not try to place a foreign key on this mapping or placed an implicit foreign key.


assertNoJoin

public void assertNoJoin(MetaDataContext context,
                         boolean die)
Assert that the user did not try to join.


createTable

public Table createTable(MetaDataContext context,
                         MappingInfo.TableDefaults def,
                         String schemaName,
                         String given,
                         boolean adapt)
Deprecated. 

Find or generate a table for a mapping.

Parameters:
context - the mapping that uses the table
def - default table name provider
schemaName - default schema if known, or null
given - given table name
adapt - whether we can alter the schema or mappings

createTable

public Table createTable(MetaDataContext context,
                         MappingInfo.TableDefaults def,
                         DBIdentifier schemaName,
                         DBIdentifier given,
                         boolean adapt)

createColumns

protected Column[] createColumns(MetaDataContext context,
                                 String prefix,
                                 Column[] tmplates,
                                 Table table,
                                 boolean adapt)
Retrieve/create columns on the given table by merging the given template information with any user-provided information.

Parameters:
context - the mapping we're retrieving columns for
prefix - localized error message key prefix
tmplates - template columns
table - the table for the columns
adapt - whether we can modify the existing mapping or schema

canMerge

boolean canMerge(List<Column> given,
                 Column[] templates,
                 boolean adapt,
                 boolean fill)

mergeColumn

protected static Column mergeColumn(MetaDataContext context,
                                    String prefix,
                                    Column tmplate,
                                    boolean compat,
                                    Column given,
                                    Table table,
                                    boolean adapt,
                                    boolean fill)
Merge the given columns if possible.

Parameters:
context - the mapping we're retrieving columns for
prefix - localized error message key prefix
tmplate - template for expected column information
compat - whether the existing column type must be compatible with the type of the template column
given - the given column information from mapping info
table - the table for the columns
adapt - whether we can modify the existing mapping or schema
fill - whether to default missing column information

createIndex

protected Index createIndex(MetaDataContext context,
                            String prefix,
                            Index tmplate,
                            Column[] cols,
                            boolean adapt)
Retrieve/create an index on the given columns by merging the given template information with any user-provided information.

Parameters:
context - the mapping we're retrieving an index for
prefix - localized error message key prefix
tmplate - template for expected index information
cols - the indexed columns
adapt - whether we can modify the existing mapping or schema

createUnique

protected Unique createUnique(MetaDataContext context,
                              String prefix,
                              Unique tmplate,
                              Column[] cols,
                              boolean adapt)
Retrieve/create a unique constraint on the given columns by merging the given template information with any user-provided information.

Parameters:
context - the mapping we're retrieving a constraint for
prefix - localized error message key prefix
tmplate - template for expected unique information
cols - the constraint columns
adapt - whether we can modify the existing mapping or schema

createForeignKey

protected ForeignKey createForeignKey(MetaDataContext context,
                                      String prefix,
                                      List<Column> given,
                                      MappingInfo.ForeignKeyDefaults def,
                                      Table table,
                                      ClassMapping cls,
                                      ClassMapping rel,
                                      boolean inversable,
                                      boolean adapt)
Retrieve/create a foreign key (possibly logical) on the given columns by merging the given template information with any user-provided information.

Parameters:
context - the mapping we're retrieving a key for
prefix - localized error message key prefix
given - the columns given by the user
def - defaults provider
table - the table for the key
cls - type we're joining from
rel - target type we're joining to
inversable - whether the foreign key can be inversed
adapt - whether we can modify the existing mapping or schema

syncColumns

protected void syncColumns(MetaDataContext context,
                           Column[] cols,
                           boolean forceJDBCType)
Sets internal column information to match the given mapped columns.

Parameters:
forceJDBCType - whether to force the jdbc-type of the columns to be set, even when it matches the default for the columns' java type

syncIndex

protected void syncIndex(MetaDataContext context,
                         Index idx)
Sets internal index information to match given mapped index.


syncUnique

protected void syncUnique(MetaDataContext context,
                          Unique unq)
Sets internal constraint information to match given mapped constraint.


syncForeignKey

protected void syncForeignKey(MetaDataContext context,
                              ForeignKey fk,
                              Table local,
                              Table target)
Sets internal constraint and column information to match given mapped constraint.

Parameters:
local - default local table
target - default target table

syncColumn

protected static Column syncColumn(MetaDataContext context,
                                   Column col,
                                   int num,
                                   boolean forceJDBCType,
                                   Table colTable,
                                   Table targetTable,
                                   Object target,
                                   boolean inverse)
Create a copy of the given column with the raw mapping information set correctly, and without settings that match defaults.

Parameters:
num - the number of columns for this mapping
forceJDBCType - whether the jdbc-type of the created column should be set, even if it matches the default for the given column's java type
colTable - expected table for the column
targetTable - expected target table for join column
target - target column or object for join column; for a constant null target, use NULL
inverse - whether join column is for inverse join


Copyright © 2006-2010 Apache Software Foundation. All Rights Reserved.