Class ChangeSupport
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.ChangeSupport
-
public class ChangeSupport extends java.lang.Object
ThisChangeSupport
is responsible to notifies registered listeners upon changes made to aStateObject
, those changes are either a property has changed (IPropertyChangeListener
) or the content of a list has changed (IListChangeListener
).- Version:
- 2.4
- Author:
- Pascal Filion
- Since:
- 2.4
-
-
Constructor Summary
Constructors Constructor Description ChangeSupport(StateObject source)
Creates a newChangeSupport
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T> void
addItem(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, T item)
Adds the given item as a child to the given list.<T> void
addItems(ListHolderStateObject<T> source, java.util.List<T> list, java.lang.String listName, java.util.List<? extends T> items)
Adds the given items as children to the given list.void
addListChangeListener(java.lang.String listName, IListChangeListener<?> listener)
Registers the givenIListChangeListener
for the specified list.protected <T> void
addListener(java.util.Map<java.lang.String,java.util.List<T>> listeners, java.lang.Class<?> listenerType, java.lang.String name, T listener)
Registers the given list for the specified name.void
addPropertyChangeListener(java.lang.String propertyName, IPropertyChangeListener<?> listener)
Registers the givenIPropertyChangeListener
for the specified property.<T> boolean
canMoveDown(java.util.List<T> list, T stateObject)
Determines whether the given item can be moved down by one position in the list owned by its parent.<T> boolean
canMoveUp(java.util.List<T> list, T item)
Determines whether the given item can be moved up by one position in the list owned by its parent.protected <T> void
fireListChangeEvent(IListChangeEvent<T> event)
void
firePropertyChanged(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)
Notifies theIPropertyChangeListeners
that have been registered with the given property name that the property has changed.boolean
hasListChangeListeners(java.lang.String listName)
Determines whether there are at least oneIListChangeListener
registered to listen for changes made to the list with the given list name.protected boolean
hasListeners(java.util.Map<java.lang.String,?> listeners, java.lang.String name)
Determines whether there are at least one listener registered.boolean
hasPropertyChangeListeners(java.lang.String propertyName)
Determines whether there are at least oneIPropertyChangeListener
registered to listen for changes made to the property with the given property name.protected void
initialize(StateObject source)
Initializes thisChangeSupport
.protected <T> ListIterable<IListChangeListener<T>>
listChangeListeners(java.lang.String listName)
<T> void
moveDown(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, T item)
Moves the givenStateObject
down by one position in the list owned by its parent.protected <T> void
moveItem(ListHolderStateObject<T> source, java.util.List<T> items, IListChangeEvent.EventType eventType, java.lang.String listName, T item, int oldIndex, int newIndex)
Moves the given item from its current position to a new position in the list owned by its parent.<T> void
moveUp(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, T item)
Moves the given item up by one position in the list owned by its parent.protected ListIterable<IPropertyChangeListener<?>>
propertyChangeListeners(java.lang.String propertyName)
<T> void
removeItem(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, T item)
Removes the given item from the list of children.<T> void
removeItems(ListHolderStateObject<T> source, java.util.List<? extends T> list, java.lang.String listName, java.util.Collection<? extends T> items)
Removes the given items from the list of children.void
removeListChangeListener(java.lang.String listName, IListChangeListener<?> listener)
Unregisters the givenIListChangeListener
that was registered for the specified list.protected <T> void
removeListener(java.util.Map<java.lang.String,java.util.List<T>> listeners, java.lang.Class<?> listenerType, java.lang.String name, T listener)
Unregisters the given listener that was registered for the specified name.void
removePropertyChangeListener(java.lang.String propertyName, IPropertyChangeListener<?> listener)
Unregisters the givenIPropertyChangeListener
that was registered for the specified property.<T> void
replaceItem(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, int index, T item)
Replaces the item at the given position by a new one.<T> void
replaceItems(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, java.util.List<T> newItems)
Replaces the given list by removing any existing items and adding the items contained in the second list.
-
-
-
Constructor Detail
-
ChangeSupport
public ChangeSupport(StateObject source)
Creates a newChangeSupport
.- Parameters:
source
- The object for which this object will take care of notifying the listeners upon changes made to the object's internal state- Throws:
java.lang.NullPointerException
- The sourceStateObject
cannot benull
-
-
Method Detail
-
addItem
public <T> void addItem(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, T item)
Adds the given item as a child to the given list.- Type Parameters:
T
- The type of the items- Parameters:
source
- TheListHolderStateObject
from where the change is comingitems
- The list of to which the child is addedlistName
- The name associated with the listitem
- The child to become a child of this one
-
addItems
public <T> void addItems(ListHolderStateObject<T> source, java.util.List<T> list, java.lang.String listName, java.util.List<? extends T> items)
Adds the given items as children to the given list.- Type Parameters:
T
- The type of the items- Parameters:
source
- TheListHolderStateObject
from where the change is cominglist
- The list of items to which the child is addedlistName
- The name associated with the listitems
- The child to become children of this one
-
addListChangeListener
public void addListChangeListener(java.lang.String listName, IListChangeListener<?> listener)
Registers the givenIListChangeListener
for the specified list. The listener will be notified only when items are added, removed, moved from the list.- Parameters:
listName
- The name of the list for which the listener will be notified when the content of the list has changedlistener
- The listener to be notified upon changes- Throws:
java.lang.NullPointerException
-IListChangeListener
cannot benull
java.lang.IllegalArgumentException
- The listener is already registered with the list name
-
addListener
protected <T> void addListener(java.util.Map<java.lang.String,java.util.List<T>> listeners, java.lang.Class<?> listenerType, java.lang.String name, T listener)
Registers the given list for the specified name. The listener will be notified upon changes.- Parameters:
listeners
- The list of listeners from which the given listener is addedlistenerType
- The type of the listener, which is only used in the exception's messagename
- The name of the event for which the listener is registeredlistener
- The listener to register- Throws:
java.lang.NullPointerException
-IPropertyChangeListener
cannot benull
java.lang.IllegalArgumentException
- The listener is already registered with the given name
-
addPropertyChangeListener
public void addPropertyChangeListener(java.lang.String propertyName, IPropertyChangeListener<?> listener)
Registers the givenIPropertyChangeListener
for the specified property. The listener will be notified only for changes to the specified property.- Parameters:
propertyName
- The name of the property for which the listener was registeredlistener
- The listener to be notified upon changes- Throws:
java.lang.NullPointerException
-IPropertyChangeListener
cannot benull
java.lang.IllegalArgumentException
- The listener is already registered with the property name
-
canMoveDown
public <T> boolean canMoveDown(java.util.List<T> list, T stateObject)
Determines whether the given item can be moved down by one position in the list owned by its parent.- Parameters:
list
- The list used to determine if the given item can be moved down in that liststateObject
- The item that could potentially be moved down- Returns:
true
if the object can be moved down by one unit;false
otherwise
-
canMoveUp
public <T> boolean canMoveUp(java.util.List<T> list, T item)
Determines whether the given item can be moved up by one position in the list owned by its parent.- Parameters:
list
- The list used to determine if the given item can be moved up in that listitem
- The item that could potentially be moved up- Returns:
true
if the object can be moved up by one unit;false
otherwise
-
fireListChangeEvent
protected <T> void fireListChangeEvent(IListChangeEvent<T> event)
-
firePropertyChanged
public void firePropertyChanged(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)
Notifies theIPropertyChangeListeners
that have been registered with the given property name that the property has changed.- Parameters:
propertyName
- The name of the property associated with the property changeoldValue
- The old value of the property that changednewValue
- The new value of the property that changed
-
hasListChangeListeners
public boolean hasListChangeListeners(java.lang.String listName)
Determines whether there are at least oneIListChangeListener
registered to listen for changes made to the list with the given list name.- Parameters:
listName
- The name of the list to check if it has registered listeners- Returns:
true
if listeners have been registered for the given list name;false
otherwise
-
hasListeners
protected boolean hasListeners(java.util.Map<java.lang.String,?> listeners, java.lang.String name)
Determines whether there are at least one listener registered.- Parameters:
name
- The name of the property or list to check if it has registered listeners- Returns:
true
if listeners have been registered for the given name;false
otherwise
-
hasPropertyChangeListeners
public boolean hasPropertyChangeListeners(java.lang.String propertyName)
Determines whether there are at least oneIPropertyChangeListener
registered to listen for changes made to the property with the given property name.- Parameters:
propertyName
- The name of the property to check if it has registered listeners- Returns:
true
if listeners have been registered for the given property name;false
otherwise
-
initialize
protected void initialize(StateObject source)
Initializes thisChangeSupport
.- Parameters:
source
- The object for which this object will take care of notifying the listeners upon changes made to the object's internal state- Throws:
java.lang.NullPointerException
- The sourceStateObject
cannot benull
-
listChangeListeners
protected <T> ListIterable<IListChangeListener<T>> listChangeListeners(java.lang.String listName)
-
moveDown
public <T> void moveDown(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, T item)
Moves the givenStateObject
down by one position in the list owned by its parent.- Type Parameters:
T
- The type of the items- Parameters:
source
- TheListHolderStateObject
from where the change is comingitems
- The list of items to which the child is moved downlistName
- The name associated with the listitem
- The child to move down within the list
-
moveItem
protected <T> void moveItem(ListHolderStateObject<T> source, java.util.List<T> items, IListChangeEvent.EventType eventType, java.lang.String listName, T item, int oldIndex, int newIndex)
Moves the given item from its current position to a new position in the list owned by its parent.- Type Parameters:
T
- The type of the items- Parameters:
source
- TheListHolderStateObject
from where the change is comingitems
- The list of items to which the child is movedeventType
- The type describing how the item was moved (up or down)listName
- The name associated with the listitem
- The child to move within the listoldIndex
- The current position of the item to movenewIndex
- The new position within the list
-
moveUp
public <T> void moveUp(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, T item)
Moves the given item up by one position in the list owned by its parent.- Type Parameters:
T
- The type of the items- Parameters:
source
- TheListHolderStateObject
from where the change is comingitems
- The list of items to which the child is moved uplistName
- The name associated with the listitem
- The child to move up within the list
-
propertyChangeListeners
protected ListIterable<IPropertyChangeListener<?>> propertyChangeListeners(java.lang.String propertyName)
-
removeItem
public <T> void removeItem(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, T item)
Removes the given item from the list of children.- Type Parameters:
T
- The type of the items- Parameters:
source
- TheListHolderStateObject
from where the change is comingitems
- The list of item to which the child is removedlistName
- The name associated with the listitem
- The child to removed from the list
-
removeItems
public <T> void removeItems(ListHolderStateObject<T> source, java.util.List<? extends T> list, java.lang.String listName, java.util.Collection<? extends T> items)
Removes the given items from the list of children.- Type Parameters:
T
- The type of the items- Parameters:
source
- TheListHolderStateObject
from where the change is cominglist
- The list of items to which the child is removedlistName
- The name associated with the listitems
- The items to removed from the list
-
removeListChangeListener
public void removeListChangeListener(java.lang.String listName, IListChangeListener<?> listener)
Unregisters the givenIListChangeListener
that was registered for the specified list. The listener will no longer be notified only when items are added, removed, moved from the list.- Parameters:
listName
- The name of the list for which the listener was registeredlistener
- The listener to unregister- Throws:
java.lang.NullPointerException
-IListChangeListener
cannot benull
java.lang.IllegalArgumentException
- The listener was never registered with the list name
-
removeListener
protected <T> void removeListener(java.util.Map<java.lang.String,java.util.List<T>> listeners, java.lang.Class<?> listenerType, java.lang.String name, T listener)
Unregisters the given listener that was registered for the specified name. The listener will no longer be notified upon changes.- Parameters:
listeners
- The list of listeners from which the given listener is removedlistenerType
- The type of the listener, which is only used in the exception's messagename
- The name of the event for which the listener was registeredlistener
- The listener to unregister- Throws:
java.lang.NullPointerException
-IPropertyChangeListener
cannot benull
java.lang.IllegalArgumentException
- The listener was never registered with the given name
-
removePropertyChangeListener
public void removePropertyChangeListener(java.lang.String propertyName, IPropertyChangeListener<?> listener)
Unregisters the givenIPropertyChangeListener
that was registered for the specified property. The listener will no longer be notified when the property changes.- Parameters:
propertyName
- The name of the property for which the listener was registeredlistener
- The listener to unregister- Throws:
java.lang.NullPointerException
-IPropertyChangeListener
cannot benull
java.lang.IllegalArgumentException
- The listener was never registered with the property name
-
replaceItem
public <T> void replaceItem(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, int index, T item)
Replaces the item at the given position by a new one.- Type Parameters:
T
- The type of the items- Parameters:
source
- TheListHolderStateObject
from where the change is comingitems
- The list of items to which a child is replacedlistName
- The name associated with the listindex
- The position of the item to replaceitem
- The item to replace the one at the given position
-
replaceItems
public <T> void replaceItems(ListHolderStateObject<T> source, java.util.List<T> items, java.lang.String listName, java.util.List<T> newItems)
Replaces the given list by removing any existing items and adding the items contained in the second list.- Type Parameters:
T
- The type of the items- Parameters:
source
- TheListHolderStateObject
from where the change is comingitems
- The list of items to which the child is removedlistName
- The name associated with the listnewItems
- The items to removed from the list
-
-