Package org.apache.openjpa.jdbc.meta
Class MappingInfo
java.lang.Object
org.apache.openjpa.jdbc.meta.MappingInfo
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
ClassMappingInfo
,DiscriminatorMappingInfo
,FieldMappingInfo
,ValueMappingInfo
,VersionMappingInfo
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:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Supplies default foreign key information.static interface
Supplies default table information. -
Field Summary
Modifier and TypeFieldDescriptionstatic final int
static final int
static final int
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
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
The user can mark columns as explicitly not having a foreign key.boolean
canIndex()
The user can mark columns as explicitly non-indexable.boolean
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.createTable
(MetaDataContext context, MappingInfo.TableDefaults def, String schemaName, String given, boolean adapt) Deprecated.createTable
(MetaDataContext context, MappingInfo.TableDefaults def, DBIdentifier schemaName, DBIdentifier given, boolean adapt) 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.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)
.Raw column data.getColumns
(String tableName) Deprecated.getColumns
(DBIdentifier tableName) Gets the columns whose table name matches the given table name.Raw foreign key information.getIndex()
Raw index.int
Direction of the join that the columns of this mapping info form.Mapping strategy name.Raw unique constraint information.boolean
Return true if this info has columns, foreign key information, index information, etc.boolean
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 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
(List<Column> cols) Raw column data.void
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
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
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.
-
Field Details
-
JOIN_NONE
public static final int JOIN_NONE- See Also:
-
JOIN_FORWARD
public static final int JOIN_FORWARD- See Also:
-
JOIN_INVERSE
public static final int JOIN_INVERSE- See Also:
-
-
Constructor Details
-
MappingInfo
public MappingInfo()
-
-
Method Details
-
getStrategy
Mapping strategy name. -
setStrategy
Mapping strategy name. -
getColumns
Raw column data. -
getColumns
Deprecated.Gets the columns whose table name matches the given table name. -
getColumns
Gets the columns whose table name matches the given table name. -
setColumns
Raw column data. -
getIndex
Raw index. -
setIndex
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
Raw foreign key information. -
setForeignKey
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
Raw unique constraint information. -
setUnique
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
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
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
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
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
Assert that the user did not try to place an index on this mapping. -
assertNoUnique
Assert that the user did not try to place a unique constraint on this mapping. -
assertNoForeignKey
Assert that the user did not try to place a foreign key on this mapping or placed an implicit foreign key. -
assertNoJoin
Assert that the user did not try to join. -
createTable
@Deprecated 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 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, 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, 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, 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, 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, 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 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
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
Sets internal index information to match given mapped index. -
syncUnique
Sets internal constraint information to match given mapped constraint. -
syncForeignKey
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, 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
-