Package org.apache.openjpa.jdbc.meta
Class MappingInfo
- java.lang.Object
-
- org.apache.openjpa.jdbc.meta.MappingInfo
-
- All Implemented Interfaces:
java.io.Serializable
- Direct Known Subclasses:
ClassMappingInfo
,DiscriminatorMappingInfo
,FieldMappingInfo
,ValueMappingInfo
,VersionMappingInfo
public abstract class MappingInfo extends java.lang.Object implements java.io.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
Nested Classes Modifier and Type Class Description static interface
MappingInfo.ForeignKeyDefaults
Supplies default foreign key information.static interface
MappingInfo.TableDefaults
Supplies default table information.
-
Field Summary
Fields Modifier and Type Field Description static int
JOIN_FORWARD
static int
JOIN_INVERSE
static int
JOIN_NONE
-
Constructor Summary
Constructors Constructor Description MappingInfo()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description 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, java.lang.Object contextStrat, java.lang.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.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, java.lang.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, java.lang.String prefix, java.util.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, java.lang.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, java.lang.String schemaName, java.lang.String given, boolean adapt)
Deprecated.Table
createTable(MetaDataContext context, MappingInfo.TableDefaults def, DBIdentifier schemaName, DBIdentifier given, boolean adapt)
protected Unique
createUnique(MetaDataContext context, java.lang.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 tocreateColumns(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 tocreateForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List<org.apache.openjpa.jdbc.schema.Column>, 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)
.java.util.List<Column>
getColumns()
Raw column data.java.util.List<Column>
getColumns(java.lang.String tableName)
Deprecated.java.util.List<Column>
getColumns(DBIdentifier tableName)
Gets the columns whose table name matches the given table name.ForeignKey
getForeignKey()
Raw foreign key information.Index
getIndex()
Raw index.int
getJoinDirection()
Direction of the join that the columns of this mapping info form.java.lang.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, java.lang.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 tocreateColumns(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 tocreateForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List<org.apache.openjpa.jdbc.schema.Column>, 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(java.util.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(java.lang.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, java.lang.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.
-
-
-
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
-
-
Method Detail
-
getStrategy
public java.lang.String getStrategy()
Mapping strategy name.
-
setStrategy
public void setStrategy(java.lang.String strategy)
Mapping strategy name.
-
getColumns
public java.util.List<Column> getColumns()
Raw column data.
-
getColumns
@Deprecated public java.util.List<Column> getColumns(java.lang.String tableName)
Deprecated.Gets the columns whose table name matches the given table name.
-
getColumns
public java.util.List<Column> getColumns(DBIdentifier tableName)
Gets the columns whose table name matches the given table name.
-
setColumns
public void setColumns(java.util.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 tocreateColumns(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 tocreateForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List<org.apache.openjpa.jdbc.schema.Column>, 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 tosyncColumns(org.apache.openjpa.meta.MetaDataContext, org.apache.openjpa.jdbc.schema.Column[], boolean)
andsyncForeignKey(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 tocreateColumns(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 tocreateForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List<org.apache.openjpa.jdbc.schema.Column>, 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 tosyncColumns(org.apache.openjpa.meta.MetaDataContext, org.apache.openjpa.jdbc.schema.Column[], boolean)
andsyncForeignKey(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 bycreateForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List<org.apache.openjpa.jdbc.schema.Column>, 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 tosyncForeignKey(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 bycreateForeignKey(org.apache.openjpa.meta.MetaDataContext, java.lang.String, java.util.List<org.apache.openjpa.jdbc.schema.Column>, 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 tosyncForeignKey(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, java.lang.Object contextStrat, java.lang.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
@Deprecated public Table createTable(MetaDataContext context, MappingInfo.TableDefaults def, java.lang.String schemaName, java.lang.String given, boolean adapt)
Deprecated.Find or generate a table for a mapping.- Parameters:
context
- the mapping that uses the tabledef
- default table name providerschemaName
- default schema if known, or nullgiven
- given table nameadapt
- 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, java.lang.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 forprefix
- localized error message key prefixtmplates
- template columnstable
- the table for the columnsadapt
- whether we can modify the existing mapping or schema
-
mergeColumn
protected static Column mergeColumn(MetaDataContext context, java.lang.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 forprefix
- localized error message key prefixtmplate
- template for expected column informationcompat
- whether the existing column type must be compatible with the type of the template columngiven
- the given column information from mapping infotable
- the table for the columnsadapt
- whether we can modify the existing mapping or schemafill
- whether to default missing column information
-
createIndex
protected Index createIndex(MetaDataContext context, java.lang.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 forprefix
- localized error message key prefixtmplate
- template for expected index informationcols
- the indexed columnsadapt
- whether we can modify the existing mapping or schema
-
createUnique
protected Unique createUnique(MetaDataContext context, java.lang.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 forprefix
- localized error message key prefixtmplate
- template for expected unique informationcols
- the constraint columnsadapt
- whether we can modify the existing mapping or schema
-
createForeignKey
protected ForeignKey createForeignKey(MetaDataContext context, java.lang.String prefix, java.util.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 forprefix
- localized error message key prefixgiven
- the columns given by the userdef
- defaults providertable
- the table for the keycls
- type we're joining fromrel
- target type we're joining toinversable
- whether the foreign key can be inversedadapt
- 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 tabletarget
- default target table
-
syncColumn
protected static Column syncColumn(MetaDataContext context, Column col, int num, boolean forceJDBCType, Table colTable, Table targetTable, java.lang.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 mappingforceJDBCType
- whether the jdbc-type of the created column should be set, even if it matches the default for the given column's java typecolTable
- expected table for the columntargetTable
- expected target table for join columntarget
- target column or object for join column; for a constant null target, useNULL
inverse
- whether join column is for inverse join
-
-