## org.eclipse.emf.transaction.util
Class CompositeChangeDescription

    java.lang.Object
      org.eclipse.emf.common.notify.impl.BasicNotifierImpl
          org.eclipse.emf.ecore.impl.BasicEObjectImpl
              org.eclipse.emf.ecore.impl.EObjectImpl
                  org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl
                      org.eclipse.emf.transaction.util.CompositeChangeDescription

All Implemented Interfaces:
  org.eclipse.emf.common.notify.Notifier, org.eclipse.emf.ecore.change.ChangeDescription, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.InternalEObject, TransactionChangeDescription

    public class CompositeChangeDescription

extends org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl
implements TransactionChangeDescription

A composition of zero or more change descriptions representing the changes performed by transactions in a possibly nested structure. In the execution of a transaction, the changes that it makes in between nested transactions and the changes made by those nested transactions are stored as discrete `ChangeDescription`s in a composite. The composite structure is recursive.

Nested Class Summary

Nested classes/interfaces inherited from class org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl
`org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl.OldContainmentInformation`

Nested classes/interfaces inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl
`org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolder, org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolderBaseImpl, org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolderImpl`

Nested classes/interfaces inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl
`org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EAdapterList<E extends Object & org.eclipse.emf.common.notify.Adapter>, org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EObservableAdapterList`

Nested classes/interfaces inherited from interface org.eclipse.emf.ecore.InternalEObject
`org.eclipse.emf.ecore.InternalEObject.EStore`

Field Summary

Fields inherited from class org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl
`objectChanges, objectsToAttach, objectsToDetach, oldContainmentInformation, resourceChanges`

Fields inherited from class org.eclipse.emf.ecore.impl.EObjectImpl
`eAdapters, eContainer, eContainerFeatureID, EDELIVER, EDYNAMIC_CLASS, eFlags, ELAST_EOBJECT_FLAG, ELAST_NOTIFIER_FLAG, eProperties, EPROXY`

Fields inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl
`EVIRTUAL_GET, EVIRTUAL_IS_SET, EVIRTUAL_NO_VALUE, EVIRTUAL_SET, EVIRTUAL_UNSET`

Fields inherited from interface org.eclipse.emf.ecore.InternalEObject
`EOPPOSITE_FEATURE_BASE`

Constructor Summary
`CompositeChangeDescription()`

Method Summary
`void` `add(org.eclipse.emf.ecore.change.ChangeDescription change)` Adds a change description to me.
`void` `apply()`
`void` `applyAndReverse()`
`boolean` `canApply()` I can apply myself if all of my composed changes can apply themselves.
`void` `clear()` Removes any change descriptions that I may have.
`org.eclipse.emf.common.util.EMap<org.eclipse.emf.ecore.EObject,org.eclipse.emf.common.util.EList<org.eclipse.emf.ecore.change.FeatureChange>>` `getObjectChanges()` My object changes are the concatenation of the changes in my composed descriptions.
`org.eclipse.emf.common.util.EList<org.eclipse.emf.ecore.EObject>` `getObjectsToAttach()` My objects to detach are the concatenation of the changes in my composed descriptions.
`org.eclipse.emf.common.util.EList<org.eclipse.emf.ecore.EObject>` `getObjectsToDetach()` My objects to attach are the concatenation of the changes in my composed descriptions.
`org.eclipse.emf.common.util.EList<org.eclipse.emf.ecore.change.ResourceChange>` `getResourceChanges()` My resource changes are the concatenation of the changes in my composed descriptions.
`boolean` `isEmpty()` Queries whether I have no composed change descriptions.
`String` `toString()`

Methods inherited from class org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl
`copyAndReverse, eGet, eInverseRemove, eIsSet, eSet, eStaticClass, eUnset, getContainedEObjects, getObjectsToDetachGen, getOldContainer, getOldContainmentFeature, getOldContainmentInformation, preApply`

Methods inherited from class org.eclipse.emf.ecore.impl.EObjectImpl
`eAdapters, eBasicAdapters, eBasicProperties, eBasicSetContainer, eClass, eContainerFeatureID, eDeliver, eInternalContainer, eInvoke, eIsProxy, eProperties, eSetClass, eSetDeliver, eSetProxyURI`

Methods inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl

`eAddVirtualValue, eAllContents, eBaseStructuralFeatureID, eBasicRemoveFromContainer, eBasicRemoveFromContainerFeature, eBasicSetContainer, eComputeVirtualValuesCapacity, eContainer, eContainerAdapterArray, eContainingFeature, eContainmentFeature, eContainmentFeature, eContains, eContents, eCrossReferences, eDerivedOperationID, eDerivedOperationID, eDerivedStructuralFeatureID, eDerivedStructuralFeatureID, eDirectResource, eDynamicBasicRemoveFromContainer, eDynamicClass, eDynamicFeature, eDynamicFeatureID, eDynamicGet, eDynamicGet, eDynamicGet, eDynamicInverseAdd, eDynamicInverseAdd, eDynamicInverseRemove, eDynamicInverseRemove, eDynamicInvoke, eDynamicInvoke, eDynamicIsSet, eDynamicIsSet, eDynamicIsSet, eDynamicSet, eDynamicSet, eDynamicSet, eDynamicUnset, eDynamicUnset, eDynamicUnset, eGet, eGet, eGet, eHasSettings, eInternalResource, eInverseAdd, eInverseAdd, eInverseRemove, eInvocationDelegate, eInvoke, eIsSet, eObjectForURIFragmentSegment, eOpenGet, eOpenIsSet, eOpenSet, eOpenUnset, eProxyURI, eRemoveVirtualValue, eResolveProxy, eResource, eSet, eSetDirectResource, eSetResource, eSetStore, eSetting, eSettingDelegate, eSettings, eSetVirtualIndexBits, eSetVirtualValue, eSetVirtualValues, eStaticFeatureCount, eStaticOperationCount, eStore, eUnset, eURIFragmentSegment, eVirtualBitCount, eVirtualGet, eVirtualGet, eVirtualIndex, eVirtualIndexBits, eVirtualIsSet, eVirtualSet, eVirtualUnset, eVirtualValue, eVirtualValues`

Methods inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl
`eBasicAdapterArray, eBasicHasAdapters, eNotificationRequired, eNotify`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.eclipse.emf.ecore.change.ChangeDescription
`copyAndReverse`

Methods inherited from interface org.eclipse.emf.ecore.EObject
`eAllContents, eClass, eContainer, eContainingFeature, eContainmentFeature, eContents, eCrossReferences, eGet, eGet, eInvoke, eIsProxy, eIsSet, eResource, eSet, eUnset`

Methods inherited from interface org.eclipse.emf.common.notify.Notifier
`eAdapters, eDeliver, eNotify, eSetDeliver`

Methods inherited from interface org.eclipse.emf.ecore.InternalEObject
`eNotificationRequired`

Constructor Detail

### CompositeChangeDescription

    public CompositeChangeDescription()

Method Detail

### isEmpty

    public final boolean isEmpty()

  Queries whether I have no composed change descriptions.

  Specified by:
    `isEmpty` in interface `TransactionChangeDescription`
  Returns:
    `false` if I have any change descriptions; `true`, otherwise

### clear

    public final void clear()

  Removes any change descriptions that I may have.

### canApply

    public boolean canApply()

  I can apply myself if all of my composed changes can apply themselves.

  Specified by:
    `canApply` in interface `TransactionChangeDescription`
  Returns:
    `true` if my changes can be applied; `false` otherwise (i.e., they are not invertible)

### apply

    public void apply()

  Specified by:
    `apply` in interface `org.eclipse.emf.ecore.change.ChangeDescription`
  Overrides:
    `apply` in class `org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl`

### applyAndReverse

    public void applyAndReverse()

  Specified by:
    `applyAndReverse` in interface `org.eclipse.emf.ecore.change.ChangeDescription`
  Overrides:
    `applyAndReverse` in class `org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl`

### add

    public void add(org.eclipse.emf.ecore.change.ChangeDescription change)

  Adds a change description to me.

  Parameters:
    `change` - a new change description to add

### getObjectChanges

    public org.eclipse.emf.common.util.EMap<org.eclipse.emf.ecore.EObject,org.eclipse.emf.common.util.EList<org.eclipse.emf.ecore.change.FeatureChange>> getObjectChanges()

  My object changes are the concatenation of the changes in my composed descriptions.

  Specified by:
    `getObjectChanges` in interface `org.eclipse.emf.ecore.change.ChangeDescription`
  Overrides:
    `getObjectChanges` in class `org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl`

### getObjectsToDetach

    public org.eclipse.emf.common.util.EList<org.eclipse.emf.ecore.EObject> getObjectsToDetach()

  My objects to attach are the concatenation of the changes in my composed descriptions.

  Specified by:
    `getObjectsToDetach` in interface `org.eclipse.emf.ecore.change.ChangeDescription`
  Overrides:
    `getObjectsToDetach` in class `org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl`

### getObjectsToAttach

    public org.eclipse.emf.common.util.EList<org.eclipse.emf.ecore.EObject> getObjectsToAttach()

  My objects to detach are the concatenation of the changes in my composed descriptions.

  Specified by:
    `getObjectsToAttach` in interface `org.eclipse.emf.ecore.change.ChangeDescription`
  Overrides:
    `getObjectsToAttach` in class `org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl`

### getResourceChanges

    public org.eclipse.emf.common.util.EList<org.eclipse.emf.ecore.change.ResourceChange> getResourceChanges()

  My resource changes are the concatenation of the changes in my composed descriptions.

  Specified by:
    `getResourceChanges` in interface `org.eclipse.emf.ecore.change.ChangeDescription`
  Overrides:
    `getResourceChanges` in class `org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl`

### toString

    public String toString()

  Overrides:
    `toString` in class `org.eclipse.emf.ecore.impl.BasicEObjectImpl`

Copyright 2002, 2007 IBM Corporation and others. All Rights Reserved.