org.eclipse.jpt.utility.model.event
Class CollectionChangeEvent

java.lang.Object
  extended by java.util.EventObject
      extended by org.eclipse.jpt.utility.model.event.ChangeEvent
          extended by org.eclipse.jpt.utility.model.event.CollectionChangeEvent
All Implemented Interfaces:
java.io.Serializable

public class CollectionChangeEvent
extends ChangeEvent

A "collection change" event gets delivered whenever a model changes a "bound" or "constrained" collection. A CollectionChangeEvent is sent as an argument to the CollectionChangeListener. Normally a CollectionChangeEvent is accompanied by the collection name and the items that were added to or removed from the changed collection. Design options: - create a collection to wrap a single added or removed item (this is the option we implemented below and in collaborating code) since there is no way to optimize downstream code for single items, we take another performance hit by building a collection each time (@see Collections#singleton(Object)) and forcing downstream code to use an iterator every time - fire a separate event for each item added or removed eliminates any potential for optimizations to downstream code - add protocol to support both single items and collections adds conditional logic to downstream code Provisional API: This class is part of an interim API that is still under development and expected to change significantly before reaching stability. It is available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

See Also:
Serialized Form

Constructor Summary
CollectionChangeEvent(Model source, java.lang.String collectionName)
          Construct a new collection change event.
CollectionChangeEvent(Model source, java.lang.String collectionName, java.util.Collection<?> items)
          Construct a new collection change event.
 
Method Summary
 CollectionChangeEvent cloneWithSource(Model newSource)
          Return a copy of the event with the specified source replacing the current source.
 CollectionChangeEvent cloneWithSource(Model newSource, java.lang.String newCollectionName)
          Return a copy of the event with the specified source and collection name replacing the current source and collection name.
 java.lang.String getAspectName()
          Return the name of the aspect of the source that changed.
 java.lang.String getCollectionName()
          Return the programmatic name of the collection that was changed.
 java.util.Iterator<?> items()
          Return an iterator on the items that were added to or removed from the collection.
 int itemsSize()
          Return the number of items that were added to or removed from the collection.
 
Methods inherited from class org.eclipse.jpt.utility.model.event.ChangeEvent
getSource, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CollectionChangeEvent

public CollectionChangeEvent(Model source,
                             java.lang.String collectionName,
                             java.util.Collection<?> items)
Construct a new collection change event.

Parameters:
source - The object on which the event initially occurred.
collectionName - The programmatic name of the collection that was changed.
items - The items that were added to or removed from the collection.

CollectionChangeEvent

public CollectionChangeEvent(Model source,
                             java.lang.String collectionName)
Construct a new collection change event.

Parameters:
source - The object on which the event initially occurred.
collectionName - The programmatic name of the collection that was changed.
Method Detail

getCollectionName

public java.lang.String getCollectionName()
Return the programmatic name of the collection that was changed.


getAspectName

public java.lang.String getAspectName()
Description copied from class: ChangeEvent
Return the name of the aspect of the source that changed. May be null if inappropriate.

Specified by:
getAspectName in class ChangeEvent

items

public java.util.Iterator<?> items()
Return an iterator on the items that were added to or removed from the collection. May be empty if inappropriate or unknown.


itemsSize

public int itemsSize()
Return the number of items that were added to or removed from the collection. May be 0 if inappropriate or unknown.


cloneWithSource

public CollectionChangeEvent cloneWithSource(Model newSource)
Return a copy of the event with the specified source replacing the current source.

Specified by:
cloneWithSource in class ChangeEvent

cloneWithSource

public CollectionChangeEvent cloneWithSource(Model newSource,
                                             java.lang.String newCollectionName)
Return a copy of the event with the specified source and collection name replacing the current source and collection name.