SolarMetric Kodo JDO 2.5.0 Reverse Schema Tool

com.solarmetric.rd.kodo.impl.jdbc.meta.map
Class ManyToManyMapping

java.lang.Object
  |
  +--com.solarmetric.rd.kodo.impl.jdbc.meta.Mapping
        |
        +--com.solarmetric.rd.kodo.impl.jdbc.meta.ExtensionsMapping
              |
              +--com.solarmetric.rd.kodo.impl.jdbc.meta.FieldMapping
                    |
                    +--com.solarmetric.rd.kodo.impl.jdbc.meta.map.ReferenceMapping
                          |
                          +--com.solarmetric.rd.kodo.impl.jdbc.meta.map.ContainerMapping
                                |
                                +--com.solarmetric.rd.kodo.impl.jdbc.meta.map.AbstractCollectionMapping
                                      |
                                      +--com.solarmetric.rd.kodo.impl.jdbc.meta.map.ManyToManyMapping
All Implemented Interfaces:
java.lang.Comparable, Extensions, FieldMetaData

public class ManyToManyMapping
extends AbstractCollectionMapping

Maps a relation to a collection of other objects using an xref table.


Field Summary
static java.lang.String TYPE
           
 
Fields inherited from class com.solarmetric.rd.kodo.impl.jdbc.meta.FieldMapping
CONTAINER_META, DELETE_ACTION, ELEMENT_DELETE_ACTION, ELEMENT_INDEXED, ELEMENT_SIZE, EMPTY_COLUMNS, INDEXED, KEY_DELETE_ACTION, KEY_INDEXED, KEY_SIZE, ORDERED, REF_DELETE_ACTION, REF_INDEXED, SIZE, TYPE_ASCII_STREAM, TYPE_BINARY_STREAM, TYPE_BLOB, TYPE_BYTES, TYPE_CHAR_STREAM, TYPE_CLOB, TYPE_JDBC_DEFAULT, TYPE_REF, TYPE_SQL_ARRAY, TYPE_SQL_DATE, TYPE_SQL_OBJECT, TYPE_TIME, TYPE_TIMESTAMP, USE_FIELD_MAP, USE_NULL_IND, VALUE_DELETE_ACTION, VALUE_INDEXED, VALUE_SIZE
 
Fields inherited from class com.solarmetric.rd.kodo.impl.jdbc.meta.Mapping
DEFAULT, FALSE, LOB, TRUE, UNIQUE
 
Fields inherited from interface com.solarmetric.rd.kodo.meta.FieldMetaData
DEPENDENT, ELEMENT_DEPENDENT, ELEMENT_PC_CLASS, INVERSE_OWNER, KEY_DEPENDENT, KEY_PC_CLASS, MANAGE_NONE, MANAGE_PERSISTENT, MANAGE_TRANSACTIONAL, NULL_DEFAULT, NULL_EXCEPTION, NULL_NONE, PC_CLASS, TYPE_ARRAY, TYPE_BIGDECIMAL, TYPE_BIGINTEGER, TYPE_BOOLEAN, TYPE_BOOLEAN_OBJ, TYPE_BYTE, TYPE_BYTE_OBJ, TYPE_CHAR, TYPE_CHAR_OBJ, TYPE_COLLECTION, TYPE_DATE, TYPE_DOUBLE, TYPE_DOUBLE_OBJ, TYPE_FCO, TYPE_FLOAT, TYPE_FLOAT_OBJ, TYPE_INT, TYPE_INT_OBJ, TYPE_LOCALE, TYPE_LONG, TYPE_LONG_OBJ, TYPE_MAP, TYPE_NUMBER, TYPE_OBJECT, TYPE_PC_OBJECT, TYPE_SHORT, TYPE_SHORT_OBJ, TYPE_STRING, VALUE_DEPENDENT, VALUE_PC_CLASS
 
Constructor Summary
ManyToManyMapping(com.solarmetric.rd.kodo.meta.FieldMetaData meta)
          Constructor.
 
Method Summary
 void delete(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm, com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
          Set the where values appropriately to delete the proper instance, and set all relations on non-secondary tables as updates.
 void deleteEmbedded(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm, com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
          Delete values for the mapping.
 boolean fromMappingInfo(com.solarmetric.rd.kodo.impl.jdbc.meta.MappingInfo info, boolean adapt)
          Deserialize this mapping from a simple MappingInfo instance parsed from XML or some other format.
 com.solarmetric.rd.kodo.impl.jdbc.schema.Column[] getColumns()
          Return the data columns for this mapping.
 java.lang.Object getDataStoreValue(java.lang.Object val)
          Translate the given field value to its datastore equivalent.
 com.solarmetric.rd.kodo.impl.jdbc.schema.ForeignKey getForeignKey()
          Return the foreign key to the related object.
 java.lang.String getMappingType()
          Return the abbreviated name of this mapping, or the full class name if it is a custom mapping.
 void insert(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm, com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
          Set values for the mapping into the proper rows.
static boolean isJoinTable(com.solarmetric.rd.kodo.impl.jdbc.schema.Table table, com.solarmetric.rd.kodo.impl.jdbc.meta.ReverseMappingTool tool)
          Return true if the given table matches the pattern for a join table.
 void joinRelation(com.solarmetric.rd.kodo.impl.jdbc.runtime.Joins joins)
          Join this value's table to the table for the related first class object type, if any.
 void load(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm, com.solarmetric.rd.kodo.impl.jdbc.runtime.JDBCStoreManager store, java.sql.Connection conn)
          Load secondary data.
 void load(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm, com.solarmetric.rd.kodo.impl.jdbc.runtime.JDBCStoreManager store, com.solarmetric.rd.kodo.impl.jdbc.runtime.Result res)
          Load virtual row data; the given result is not guaranteed to contain data for this field, so the field mapping should make sure the result contains its needed column data before loading.
 boolean map()
          Map a new instance of this mapping type.
 void nullEmbedded(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm, com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
          Null values for the mapping.
 void refSchemaComponents()
          Increment the reference count of all used schema components.
 void reverseMap(com.solarmetric.rd.kodo.impl.jdbc.schema.SchemaGroup schema, com.solarmetric.rd.kodo.impl.jdbc.meta.ReverseMappingTool tool)
          Create mappings from the schema, using the given tool.
 void select(com.solarmetric.rd.kodo.impl.jdbc.runtime.Select sel, boolean multiple)
          Select the virtual row columns of this mapping.
 java.lang.Boolean selectVRowData(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm)
          Return Boolean.TRUE if 'virtual row' data needs to be selected, Boolean.FALSE if it does not need to be, and null if it would be desirable to select it, but is not necessary.
 void setForeignKey(com.solarmetric.rd.kodo.impl.jdbc.schema.ForeignKey fk)
          Set the foreign key to the related object.
 void toMappingInfo(com.solarmetric.rd.kodo.impl.jdbc.meta.MappingInfo info)
          Serialize this mapping to a simple MappingInfo instance for transfer to XML or some other format.
 void update(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm, com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
          Set values for the mapping into the proper rows.
 
Methods inherited from class com.solarmetric.rd.kodo.impl.jdbc.meta.map.AbstractCollectionMapping
getKeyColumns, getOrderColumn, joinKey, joinKeyRelation, map, setOrderColumn, toArray, toCollection
 
Methods inherited from class com.solarmetric.rd.kodo.impl.jdbc.meta.map.ContainerMapping
appendIsEmpty, appendIsNotNull, appendIsNull, getMetaDataColumn, getVRowTable, join, newCollection, newMap, setMetaDataColumn
 
Methods inherited from class com.solarmetric.rd.kodo.impl.jdbc.meta.map.ReferenceMapping
createRefForeignKey, fromMappingInfo, getRefForeignKey, getSelectJoins, getTable, join, setRefForeignKey, wherePrimaryKey
 
Methods inherited from class com.solarmetric.rd.kodo.impl.jdbc.meta.FieldMapping
addExtension, addExtension, checkRepository, compareTo, deleteEmbedded, getBooleanExtension, getBooleanExtension, getContainerMeta, getDeclaredElementType, getDeclaredIndex, getDeclaredKeyType, getDeclaredType, getDefaults, getDeleteAction, getDoubleExtension, getDoubleExtension, getElementDeleteAction, getElementIndexed, getElementPCClass, getElementSize, getElementType, getElementTypeCode, getElementTypeMapping, getElementTypeMetaData, getEmbeddedExtensions, getEmbeddedExtensions, getExtensionKeys, getExtensionKeys, getExtensionVendors, getFieldFlag, getFullName, getIndex, getIndexed, getIntExtension, getIntExtension, getInverseOwner, getInverseOwnerMapping, getInverseOwnerMetaData, getKeyDataStoreValue, getKeyDeleteAction, getKeyIndexed, getKeyPCClass, getKeySize, getKeyType, getKeyTypeCode, getKeyTypeMapping, getKeyTypeMetaData, getManagement, getMappingRepository, getMetaData, getName, getNullValue, getObjectExtension, getObjectExtension, getOrdered, getOwner, getOwnerMapping, getPCClass, getRefDeleteAction, getRefIndexed, getSize, getStringExtension, getStringExtension, getType, getTypeCode, getTypeMapping, getTypeMetaData, getUseFieldMapping, getUseNullIndicator, hasExtension, hasExtension, invalidateResolve, isCustomDeleteEmbedded, isCustomNullEmbedded, isDeleteActionDeferred, isDependent, isEager, isElementDeleteActionDeferred, isElementDependent, isElementEager, isEmbedded, isEmbeddedElement, isEmbeddedKey, isEmpty, isExplicit, isInDefaultFetchGroup, isKeyDeleteActionDeferred, isKeyDependent, isKeyEager, isPrimaryKey, isRefDeleteActionDeferred, isValue, newInstance, newInstance, nullEmbedded, removeEmbeddedExtensions, removeEmbeddedExtensions, removeExtension, removeExtension, resolve, setContainerMeta, setDeclaredIndex, setDeleteAction, setDependent, setElementDeleteAction, setElementDependent, setElementIndexed, setElementPCClass, setElementSize, setElementType, setEmbedded, setEmbeddedElement, setEmbeddedKey, setExplicit, setInDefaultFetchGroup, setIndex, setIndexed, setInverseOwner, setKeyDeleteAction, setKeyDependent, setKeyIndexed, setKeyPCClass, setKeySize, setKeyType, setManagement, setName, setNullValue, setOrdered, setOwner, setPCClass, setPrimaryKey, setRefDeleteAction, setRefIndexed, setSize, setType, setUseFieldMapping, setUseNullIndicator, toString
 
Methods inherited from class com.solarmetric.rd.kodo.impl.jdbc.meta.Mapping
checkIndex, createColumn, delete, getDBDictionary, getForeignKey, getLog, getSchemaGroup, insert, invalidMapping, isCustomDelete, isCustomInsert, isCustomUpdate, setForeignKey, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.solarmetric.rd.kodo.meta.Extensions
addExtension, addExtension, getBooleanExtension, getBooleanExtension, getDoubleExtension, getDoubleExtension, getEmbeddedExtensions, getEmbeddedExtensions, getExtensionKeys, getExtensionKeys, getExtensionVendors, getIntExtension, getIntExtension, getObjectExtension, getObjectExtension, getStringExtension, getStringExtension, hasExtension, hasExtension, isEmpty, removeEmbeddedExtensions, removeEmbeddedExtensions, removeExtension, removeExtension
 

Field Detail

TYPE

public static final java.lang.String TYPE
See Also:
Constant Field Values
Constructor Detail

ManyToManyMapping

public ManyToManyMapping(com.solarmetric.rd.kodo.meta.FieldMetaData meta)
Constructor. Supply underlying metadata.

Method Detail

getForeignKey

public com.solarmetric.rd.kodo.impl.jdbc.schema.ForeignKey getForeignKey()
Return the foreign key to the related object.


setForeignKey

public void setForeignKey(com.solarmetric.rd.kodo.impl.jdbc.schema.ForeignKey fk)
Set the foreign key to the related object.


getMappingType

public java.lang.String getMappingType()
Description copied from class: Mapping
Return the abbreviated name of this mapping, or the full class name if it is a custom mapping. Returns the full class name by default.

Overrides:
getMappingType in class Mapping

toMappingInfo

public void toMappingInfo(com.solarmetric.rd.kodo.impl.jdbc.meta.MappingInfo info)
Description copied from class: Mapping
Serialize this mapping to a simple MappingInfo instance for transfer to XML or some other format.

Overrides:
toMappingInfo in class AbstractCollectionMapping

fromMappingInfo

public boolean fromMappingInfo(com.solarmetric.rd.kodo.impl.jdbc.meta.MappingInfo info,
                               boolean adapt)
Description copied from class: Mapping
Deserialize this mapping from a simple MappingInfo instance parsed from XML or some other format. If the info is incompatible and adapt is true, try to adapt to the new info, else return false. This method must validate the given mapping information using the SchemaGroup.findTable(java.lang.String) method to find any needed tables, the Table.getColumn(java.lang.String) method to retrieve columns from those tables, and the Column.isCompatible(int, int) method to check all column types. This is important, as some schema groups use these methods to build themselves up dynamically rather than reading schema information from the database.

Overrides:
fromMappingInfo in class AbstractCollectionMapping

map

public boolean map()
Description copied from class: Mapping
Map a new instance of this mapping type. If the underlying metadata cannot be mapped using this type, return false.

Overrides:
map in class ContainerMapping

reverseMap

public void reverseMap(com.solarmetric.rd.kodo.impl.jdbc.schema.SchemaGroup schema,
                       com.solarmetric.rd.kodo.impl.jdbc.meta.ReverseMappingTool tool)
Description copied from class: Mapping
Create mappings from the schema, using the given tool. Implement this method if you want the class mapping to be a candidate when reverse-mapping a schema to java classes. Note that this method will be invoked on a template instance, so you cannot rely on the metadata or owning repository being set.

Overrides:
reverseMap in class Mapping

isJoinTable

public static boolean isJoinTable(com.solarmetric.rd.kodo.impl.jdbc.schema.Table table,
                                  com.solarmetric.rd.kodo.impl.jdbc.meta.ReverseMappingTool tool)
Return true if the given table matches the pattern for a join table.


refSchemaComponents

public void refSchemaComponents()
Description copied from class: Mapping
Increment the reference count of all used schema components.

Overrides:
refSchemaComponents in class AbstractCollectionMapping

getColumns

public com.solarmetric.rd.kodo.impl.jdbc.schema.Column[] getColumns()
Description copied from class: FieldMapping
Return the data columns for this mapping. This corresponds to the field-order foreign key columns in relations.

Specified by:
getColumns in class FieldMapping

getDataStoreValue

public java.lang.Object getDataStoreValue(java.lang.Object val)
Description copied from class: FieldMapping
Translate the given field value to its datastore equivalent. If the mapping occupies multiple columns in the datastore, return an object array, else return a single object. Simply returns the given object by default.

Overrides:
getDataStoreValue in class FieldMapping

joinRelation

public void joinRelation(com.solarmetric.rd.kodo.impl.jdbc.runtime.Joins joins)
Description copied from class: FieldMapping
Join this value's table to the table for the related first class object type, if any.

Specified by:
joinRelation in class FieldMapping

selectVRowData

public java.lang.Boolean selectVRowData(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm)
Description copied from class: FieldMapping
Return Boolean.TRUE if 'virtual row' data needs to be selected, Boolean.FALSE if it does not need to be, and null if it would be desirable to select it, but is not necessary.

Overrides:
selectVRowData in class ContainerMapping

select

public void select(com.solarmetric.rd.kodo.impl.jdbc.runtime.Select sel,
                   boolean multiple)
Description copied from class: FieldMapping
Select the virtual row columns of this mapping.

Overrides:
select in class ContainerMapping
Parameters:
sel - the select to add to
multiple - whether this select is expected to match multiple objects

load

public void load(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm,
                 com.solarmetric.rd.kodo.impl.jdbc.runtime.JDBCStoreManager store,
                 com.solarmetric.rd.kodo.impl.jdbc.runtime.Result res)
          throws java.sql.SQLException
Description copied from class: FieldMapping
Load virtual row data; the given result is not guaranteed to contain data for this field, so the field mapping should make sure the result contains its needed column data before loading.

Overrides:
load in class ContainerMapping
java.sql.SQLException

load

public void load(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm,
                 com.solarmetric.rd.kodo.impl.jdbc.runtime.JDBCStoreManager store,
                 java.sql.Connection conn)
          throws java.sql.SQLException
Description copied from class: FieldMapping
Load secondary data.

Specified by:
load in class FieldMapping
java.sql.SQLException

insert

public void insert(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm,
                   com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
            throws java.sql.SQLException
Description copied from class: Mapping
Set values for the mapping into the proper rows. For class mappings, this method will be called only after the corresponding method has been called for all fields of this mapping.

Overrides:
insert in class ContainerMapping
java.sql.SQLException

update

public void update(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm,
                   com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
            throws java.sql.SQLException
Description copied from class: Mapping
Set values for the mapping into the proper rows.

Overrides:
update in class ContainerMapping
java.sql.SQLException
See Also:
Mapping.insert(com.solarmetric.rd.kodo.runtime.StateManagerImpl, com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager)

delete

public void delete(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm,
                   com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
            throws java.sql.SQLException
Description copied from class: Mapping
Set the where values appropriately to delete the proper instance, and set all relations on non-secondary tables as updates. This allows foreign key analysis.

Specified by:
delete in class Mapping
java.sql.SQLException
See Also:
Mapping.insert(com.solarmetric.rd.kodo.runtime.StateManagerImpl, com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager)

nullEmbedded

public void nullEmbedded(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm,
                         com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
                  throws java.sql.SQLException
Description copied from class: FieldMapping
Null values for the mapping. This method is used when embedded values are nulled or replaced. The given state manager will be the owner of the object whose fields are now being nulled.

Overrides:
nullEmbedded in class ContainerMapping
java.sql.SQLException
See Also:
Mapping.insert(com.solarmetric.rd.kodo.runtime.StateManagerImpl, com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager)

deleteEmbedded

public void deleteEmbedded(com.solarmetric.rd.kodo.runtime.StateManagerImpl sm,
                           com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager rm)
                    throws java.sql.SQLException
Description copied from class: FieldMapping
Delete values for the mapping. This method is used when embedded values are deleted. The given state manager will be the owner of the object that is being deleted.

Overrides:
deleteEmbedded in class FieldMapping
java.sql.SQLException
See Also:
Mapping.insert(com.solarmetric.rd.kodo.runtime.StateManagerImpl, com.solarmetric.rd.kodo.impl.jdbc.runtime.RowManager)

SolarMetric Kodo JDO 2.5.0 Reverse Schema Tool

Copyright 2001,2002,2003 SolarMetric, Inc. All Rights Reserved.