org.eclipse.persistence.mappings.structures
Class ObjectArrayMapping

java.lang.Object
  extended by org.eclipse.persistence.mappings.DatabaseMapping
      extended by org.eclipse.persistence.mappings.AggregateMapping
          extended by org.eclipse.persistence.mappings.foundation.AbstractCompositeCollectionMapping
              extended by org.eclipse.persistence.mappings.structures.ObjectArrayMapping
All Implemented Interfaces:
Serializable, Cloneable, ContainerMapping, ArrayCollectionMapping

public class ObjectArrayMapping
extends AbstractCompositeCollectionMapping
implements ArrayCollectionMapping

Purpose: In an object-relational data model, structures can contain "Arrays" or collections of other data-types. In Oracle 8i, a Varray is typically used to represent a collection of primitive data or aggregate structures. These arrays are stored with their parent structure in the same table.

ArrayMapping is used to map a collection of primitive data

ObjectArrayMapping is used to map a collection of Oracle data-type

NOTE: Only Oracle8i supports Varray type.

Since:
TOPLink/Java 3.0
Author:
King (Yaoping) Wang
See Also:
ArrayMapping, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.eclipse.persistence.mappings.DatabaseMapping
DatabaseMapping.WriteType
 
Constructor Summary
ObjectArrayMapping()
           
 
Method Summary
 org.eclipse.persistence.internal.sessions.ChangeRecord compareForChange(Object clone, Object backup, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Build and return the change record that results from comparing the two aggregate collection attributes.
 boolean compareObjects(Object object1, Object object2, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Compare the attributes belonging to this mapping for the objects.
 String getStructureName()
          PUBLIC: Return the name of the structure.
 void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Initialize the mapping.
 void mergeChangesIntoObject(Object target, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager)
          INTERNAL: Merge changes from the source to the target object.
 void mergeIntoObject(Object target, boolean isTargetUnInitialized, Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager)
          INTERNAL: Merge changes from the source to the target object.
 void setFieldName(String fieldName)
           
 void setStructureName(String structureName)
          PUBLIC: Set the name of the structure.
 void simpleAddToCollectionChangeRecord(Object referenceKey, Object changeSetToAdd, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)
          ADVANCED: This method is used to have an object add to a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.
 void simpleRemoveFromCollectionChangeRecord(Object referenceKey, Object changeSetToRemove, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)
          ADVANCED: This method is used to have an object removed from a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.
 
Methods inherited from class org.eclipse.persistence.mappings.foundation.AbstractCompositeCollectionMapping
buildAddedElementFromChangeSet, buildChangeSet, buildElementFromElement, buildRemovedElementFromChangeSet, cascadeDiscoverAndPersistUnregisteredNewObjects, cascadePerformRemoveIfRequired, cascadeRegisterNewIfRequired, compareElements, compareElementsForChange, convertClassNamesToClasses, getContainerPolicy, getConverter, getField, getRealCollectionAttributeValueFromObject, hasConverter, isAbstractCompositeCollectionMapping, isCollectionMapping, mapKeyHasChanged, postDeleteAttributeValue, postInsertAttributeValue, postUpdateAttributeValue, preDeleteAttributeValue, preInsertAttributeValue, preUpdateAttributeValue, setContainerPolicy, setConverter, setField, useCollectionClass, useCollectionClassName, useListClassName, useMapClass, useMapClassName, valueFromRow, writeFromObjectIntoRow, writeFromObjectIntoRowForUpdate, writeFromObjectIntoRowWithChangeRecord, writeInsertFieldsIntoRow
 
Methods inherited from class org.eclipse.persistence.mappings.AggregateMapping
buildBackupClone, buildClone, buildCloneFromRow, buildCopy, buildExpression, fixObjectReferences, getReferenceClass, getReferenceClassName, getReferenceDescriptor, isAggregateMapping, iterate, postDelete, postInsert, postUpdate, preDelete, preInsert, preUpdate, remoteInitialization, setReferenceClass, setReferenceClassName, updateChangeRecord, verifyDelete
 
Methods inherited from class org.eclipse.persistence.mappings.DatabaseMapping
buildBackupCloneForPartObject, buildChangeRecord, buildCloneForPartObject, buildObjectJoinExpression, buildObjectJoinExpression, buildShallowOriginalFromRow, calculateDeferredChanges, cascadeMerge, cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired, clone, createUnitOfWorkValueHolder, derivesId, earlyPreDelete, fixRealObjectReferences, getAttributeAccessor, getAttributeClassification, getAttributeName, getAttributeValueFromObject, getDerivedIdMapping, getDescriptor, getFieldClassification, getFields, getGetMethodName, getMapsIdValue, getObjectCorrespondingTo, getProperties, getProperty, getRealAttributeValueFromAttribute, getRealAttributeValueFromObject, getRelationshipPartner, getSelectFields, getSelectTables, getSetMethodName, getValueFromRemoteValueHolder, getWeight, hasConstraintDependency, hasDependency, hasInverseConstraintDependency, hasMapsIdValue, instantiateAttribute, isAbstractCompositeDirectCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isAggregateCollectionMapping, isAggregateObjectMapping, isCandidateForPrivateOwnedRemoval, isCascadedLockingSupported, isChangeTrackingSupported, isCloningRequired, isDatabaseMapping, isDirectCollectionMapping, isDirectMapMapping, isDirectToFieldMapping, isDirectToXMLTypeMapping, isEISMapping, isForeignReferenceMapping, isJoiningSupported, isJPAId, isLazy, isLockableMapping, isManyToManyMapping, isManyToOneMapping, isMapKeyMapping, isNestedTableMapping, isObjectReferenceMapping, isOneToManyMapping, isOneToOneMapping, isOptional, isOwned, isPrimaryKeyMapping, isPrivateOwned, isReadOnly, isReferenceMapping, isRelationalMapping, isStructureMapping, isTransformationMapping, isUnidirectionalOneToManyMapping, isUsingMethodAccess, isVariableOneToOneMapping, isWriteOnly, isXMLMapping, iterateOnRealAttributeValue, performDataModificationEvent, postCalculateChanges, postCalculateChangesOnDeleted, postInitialize, preInitialize, prepareCascadeLockingPolicy, readFromResultSetIntoObject, readFromRowIntoObject, readOnly, readWrite, recordPrivateOwnedRemovals, rehashFieldDependancies, replaceValueHoldersIn, setAttributeAccessor, setAttributeName, setAttributeValueInObject, setChangeListener, setDerivedIdMapping, setDerivesId, setDescriptor, setGetMethodName, setIsJPAId, setIsLazy, setIsMapKeyMapping, setIsOptional, setIsPrimaryKeyMapping, setIsReadOnly, setMapsIdValue, setProperties, setProperty, setRealAttributeValueInObject, setSetMethodName, setWeight, toString, updateCollectionChangeRecord, validateAfterInitialization, validateBeforeInitialization, valueFromObject, valueFromResultSet, valueFromRow, writeFromAttributeIntoRow, writeFromObjectIntoRowForShallowInsert, writeFromObjectIntoRowForShallowInsertWithChangeRecord, writeFromObjectIntoRowForWhereClause, writeUpdateFieldsIntoRow
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.persistence.mappings.structures.ArrayCollectionMapping
buildAddedElementFromChangeSet, buildChangeSet, buildElementFromElement, buildRemovedElementFromChangeSet, compareElements, compareElementsForChange, getAttributeName, getRealCollectionAttributeValueFromObject, mapKeyHasChanged, setRealAttributeValueInObject
 
Methods inherited from interface org.eclipse.persistence.mappings.ContainerMapping
getContainerPolicy, setContainerPolicy, useCollectionClass, useMapClass
 

Constructor Detail

ObjectArrayMapping

public ObjectArrayMapping()
Method Detail

getStructureName

public String getStructureName()
PUBLIC: Return the name of the structure. This is the name of the user defined data type as defined on the database.


initialize

public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
                throws DescriptorException
INTERNAL: Initialize the mapping.

Overrides:
initialize in class AbstractCompositeCollectionMapping
Throws:
DescriptorException

setFieldName

public void setFieldName(String fieldName)

setStructureName

public void setStructureName(String structureName)
PUBLIC: Set the name of the structure. This is the name of the user defined data type as defined on the database.


compareForChange

public org.eclipse.persistence.internal.sessions.ChangeRecord compareForChange(Object clone,
                                                                               Object backup,
                                                                               org.eclipse.persistence.internal.sessions.ObjectChangeSet owner,
                                                                               org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Build and return the change record that results from comparing the two aggregate collection attributes.

Overrides:
compareForChange in class AbstractCompositeCollectionMapping
Returns:
prototype.changeset.ChangeRecord

compareObjects

public boolean compareObjects(Object object1,
                              Object object2,
                              org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Compare the attributes belonging to this mapping for the objects.

Overrides:
compareObjects in class AbstractCompositeCollectionMapping

mergeChangesIntoObject

public void mergeChangesIntoObject(Object target,
                                   org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord,
                                   Object source,
                                   org.eclipse.persistence.internal.sessions.MergeManager mergeManager)
INTERNAL: Merge changes from the source to the target object.

Overrides:
mergeChangesIntoObject in class AbstractCompositeCollectionMapping

mergeIntoObject

public void mergeIntoObject(Object target,
                            boolean isTargetUnInitialized,
                            Object source,
                            org.eclipse.persistence.internal.sessions.MergeManager mergeManager)
INTERNAL: Merge changes from the source to the target object. Simply replace the entire target collection.

Overrides:
mergeIntoObject in class AbstractCompositeCollectionMapping

simpleAddToCollectionChangeRecord

public void simpleAddToCollectionChangeRecord(Object referenceKey,
                                              Object changeSetToAdd,
                                              org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet,
                                              org.eclipse.persistence.internal.sessions.AbstractSession session)
ADVANCED: This method is used to have an object add to a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.

Overrides:
simpleAddToCollectionChangeRecord in class AbstractCompositeCollectionMapping

simpleRemoveFromCollectionChangeRecord

public void simpleRemoveFromCollectionChangeRecord(Object referenceKey,
                                                   Object changeSetToRemove,
                                                   org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet,
                                                   org.eclipse.persistence.internal.sessions.AbstractSession session)
ADVANCED: This method is used to have an object removed from a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.

Overrides:
simpleRemoveFromCollectionChangeRecord in class AbstractCompositeCollectionMapping