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
Nested ClassesModifier and TypeClassDescriptionstatic interfaceSupplies default foreign key information.static interfaceSupplies default table information. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidassertNoForeignKey(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.voidassertNoIndex(MetaDataContext context, boolean die) Assert that the user did not try to place an index on this mapping.voidassertNoJoin(MetaDataContext context, boolean die) Assert that the user did not try to join.voidassertNoSchemaComponents(MetaDataContext context, boolean die) Assert that the user did not supply any columns, index, unique constraint, or foreign key for this mapping.voidassertNoUnique(MetaDataContext context, boolean die) Assert that the user did not try to place a unique constraint on this mapping.voidassertStrategy(MetaDataContext context, Object contextStrat, Object expected, boolean die) Assert that this info has the given strategy or no strategy.booleanThe user can mark columns as explicitly not having a foreign key.booleancanIndex()The user can mark columns as explicitly non-indexable.booleanThe user can mark columns as explicitly not having a unique constraint.voidclear()Clear all mapping information.protected voidclear(boolean canFlags) Clear mapping information.voidcopy(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 ForeignKeycreateForeignKey(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 IndexcreateIndex(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 UniquecreateUnique(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.intDirection of the join that the columns of this mapping info form.Mapping strategy name.Raw unique constraint information.booleanReturn true if this info has columns, foreign key information, index information, etc.booleanAffirms if this instance represents an implicit relation.protected static ColumnmergeColumn(MetaDataContext context, String prefix, Column tmplate, boolean compat, Column given, Table table, boolean adapt, boolean fill) Merge the given columns if possible.voidsetCanForeignKey(boolean fkable) The user can mark columns as explicitly not having a foreign key.voidsetCanIndex(boolean indexable) The user can mark columns as explicitly non-indexable.voidsetCanUnique(boolean uniquable) The user can mark columns as explicitly not having a unique constraint.voidsetColumnIO(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).voidsetColumns(List<Column> cols) Raw column data.voidRaw foreign key information.voidsetImplicitRelation(boolean flag) Sets a marker to imply a logical relation that can not have any physical manifest in the database.voidRaw index.voidsetJoinDirection(int join) Direction of the join that the columns of this mapping info form.voidsetStrategy(String strategy) Mapping strategy name.voidRaw unique constraint information.protected static ColumnsyncColumn(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 voidsyncColumns(MetaDataContext context, Column[] cols, boolean forceJDBCType) Sets internal column information to match the given mapped columns.protected voidsyncForeignKey(MetaDataContext context, ForeignKey fk, Table local, Table target) Sets internal constraint and column information to match given mapped constraint.protected voidsyncIndex(MetaDataContext context, Index idx) Sets internal index information to match given mapped index.protected voidsyncUnique(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, useNULLinverse- whether join column is for inverse join
-