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.SerializableBase 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 interfaceMappingInfo.ForeignKeyDefaultsSupplies default foreign key information.static interfaceMappingInfo.TableDefaultsSupplies default table information.
-
Field Summary
Fields Modifier and Type Field Description static intJOIN_FORWARDstatic intJOIN_INVERSEstatic intJOIN_NONE
-
Constructor Summary
Constructors Constructor Description MappingInfo()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidassertNoForeignKey(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, java.lang.Object contextStrat, java.lang.Object expected, boolean die)Assert that this info has the given strategy or no strategy.booleancanForeignKey()The user can mark columns as explicitly not having a foreign key.booleancanIndex()The user can mark columns as explicitly non-indexable.booleancanUnique()The 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, 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 ForeignKeycreateForeignKey(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 IndexcreateIndex(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.TablecreateTable(MetaDataContext context, MappingInfo.TableDefaults def, java.lang.String schemaName, java.lang.String given, boolean adapt)Deprecated.TablecreateTable(MetaDataContext context, MappingInfo.TableDefaults def, DBIdentifier schemaName, DBIdentifier given, boolean adapt)protected UniquecreateUnique(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.ColumnIOgetColumnIO()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.ForeignKeygetForeignKey()Raw foreign key information.IndexgetIndex()Raw index.intgetJoinDirection()Direction of the join that the columns of this mapping info form.java.lang.StringgetStrategy()Mapping strategy name.UniquegetUnique()Raw unique constraint information.booleanhasSchemaComponents()Return true if this info has columns, foreign key information, index information, etc.booleanisImplicitRelation()Affirms if this instance represents an implicit relation.protected static ColumnmergeColumn(MetaDataContext context, java.lang.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(java.util.List<Column> cols)Raw column data.voidsetForeignKey(ForeignKey fk)Raw foreign key information.voidsetImplicitRelation(boolean flag)Sets a marker to imply a logical relation that can not have any physical manifest in the database.voidsetIndex(Index idx)Raw index.voidsetJoinDirection(int join)Direction of the join that the columns of this mapping info form.voidsetStrategy(java.lang.String strategy)Mapping strategy name.voidsetUnique(Unique unq)Raw unique constraint information.protected static ColumnsyncColumn(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 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 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, useNULLinverse- whether join column is for inverse join
-
-