com.sdm.quasar.client.core.data.plugins.impl
Class EventNotificationValueHandler

java.lang.Object
  extended bycom.sdm.quasar.client.core.data.plugins.impl.EventNotificationValueHandler
All Implemented Interfaces:
ValueHandler

public class EventNotificationValueHandler
extends java.lang.Object
implements ValueHandler

A ValueHandler that notifies a listener whenever change notifications are registered in the node.

Version:
1.0
Author:
Bernd Olleck, sd&m AG

Constructor Summary
EventNotificationValueHandler(EventNotificationValueHandlerListener listener)
          Creates a new EventNotificationValueHandler.
 
Method Summary
 boolean canHandle(Node node)
          Tests whether the value handler can handle nodes of the given type. Returns always true.
 boolean canModifyValue(NodeController node, Context context, NestedValueHandler nestedValueHandler)
          Tests whether the value of the node can be modified. If the implementation takes responsability for the storing of the value it should determine the result on its own. Otherwise it should query the nested value handler using NestedValueHandler#canModifyValue(). Returns the value of NestedValueHandler#canModifyValue() without any changes.
 java.util.Set getIndexSet(NodeController node, Context context, NestedValueHandler nestedValueHandler)
          Retrieves a Set of the index values for the node. If this value handler does not take responsability for the storing of the value it must retrieve the set by using NestedValueHandler.getIndexSet(com.sdm.quasar.client.core.data.Context). Returns the result of NestedValueHandler#getIndexSet() without any changes.
 java.lang.Object getValue(NodeController node, Context context, NestedValueHandler nestedValueHandler)
          Retrieves the value of the node. If this value handler does not take responsability for the storing of the value it must retrieve the value by using NestedValueHandler.getValue(Context). Returns the value of NestedValueHandler#getValue() without any changes.
 boolean hasValue(NodeController node, Context context, NestedValueHandler nestedValueHandler)
          Tests whether the node has a indexed value. If the implementation takes responsability for the storing of the value it should determine the result on its own. Otherwise it should query the nested value handler using NestedValueHandler#hasValue(). Returns the value of NestedValueHandler#hasValue() without any changes.
 void notifyChildValueChanged(NodeController node, java.lang.String childKey)
          Called when the value of a node that depends on this node has changed. Notifies the listener using EventNotificationValueHandlerListener.notifyChildValueChanged(NodeController, String).
 void notifyNodeValueChanged(NodeController node)
          Called when the value of the node has changed because of a change originating at the given node. Notifies the listener using EventNotificationValueHandlerListener.notifyNodeValueChanged(NodeController).
 void notifySourceValueChanged(NodeController node, java.lang.String sourceKey)
          Called when the value of a node that the node depends on or an ancestor further removed has changed. Notifies the listener using EventNotificationValueHandlerListener.notifySourceValueChanged(NodeController, String).
 void setValue(NodeController node, Context context, java.lang.Object value, NestedValueHandler nestedValueHandler)
          Sets the indexed value of the node. If it takes responsability for the storing of the value it must notify the node of the change if appropriate by using NodeController.startNodeValueChangedNotification(). If it does not take responsability it must notify the nested value handler using NestedValueHandler.setValue(Context, Object). Calls NestedValueHandler#setValue(Object) without any changes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EventNotificationValueHandler

public EventNotificationValueHandler(EventNotificationValueHandlerListener listener)
Creates a new EventNotificationValueHandler.

Parameters:
listener - the listener to be notified on change events in the value handler
Method Detail

canHandle

public boolean canHandle(Node node)
Tests whether the value handler can handle nodes of the given type. Returns always true.

Specified by:
canHandle in interface ValueHandler
Parameters:
node - the node definition
Returns:
true iff the value handler can handle that node
See Also:
ValueHandler.canHandle(Node)

hasValue

public boolean hasValue(NodeController node,
                        Context context,
                        NestedValueHandler nestedValueHandler)
Tests whether the node has a indexed value. If the implementation takes responsability for the storing of the value it should determine the result on its own. Otherwise it should query the nested value handler using NestedValueHandler#hasValue(). Returns the value of NestedValueHandler#hasValue() without any changes.

Specified by:
hasValue in interface ValueHandler
Parameters:
node - the concerned node
context - the context to resolve the indices
nestedValueHandler - the adapter to the next value handler
Returns:
true iff the node has a value
See Also:
com.sdm.quasar.client.core.data.internal.impl.ValueHandler#hasValue(com.sdm.quasar.client.core.data.internal.impl.NodeController, com.sdm.quasar.client.core.data.Context, com.sdm.quasar.client.core.data.internal.impl.NestedValueHandler)

getValue

public java.lang.Object getValue(NodeController node,
                                 Context context,
                                 NestedValueHandler nestedValueHandler)
Retrieves the value of the node. If this value handler does not take responsability for the storing of the value it must retrieve the value by using NestedValueHandler.getValue(Context). Returns the value of NestedValueHandler#getValue() without any changes.

Specified by:
getValue in interface ValueHandler
Parameters:
node - the concerned node
context - the context to resolve the indices
nestedValueHandler - the adapter to the next value handler in the chain of value handlers of that node
Returns:
the value of the node
See Also:
com.sdm.quasar.client.core.data.internal.impl.ValueHandler#getValue(com.sdm.quasar.client.core.data.internal.impl.NodeController, com.sdm.quasar.client.core.data.Context, com.sdm.quasar.client.core.data.internal.impl.NestedValueHandler)

canModifyValue

public boolean canModifyValue(NodeController node,
                              Context context,
                              NestedValueHandler nestedValueHandler)
Tests whether the value of the node can be modified. If the implementation takes responsability for the storing of the value it should determine the result on its own. Otherwise it should query the nested value handler using NestedValueHandler#canModifyValue(). Returns the value of NestedValueHandler#canModifyValue() without any changes.

Specified by:
canModifyValue in interface ValueHandler
Parameters:
node - the concerned node
context - the context to resolve the indices
nestedValueHandler - the adapter to the next value handler
Returns:
true iff the value of the node has a value
See Also:
com.sdm.quasar.client.core.data.internal.impl.ValueHandler#canModifyValue(com.sdm.quasar.client.core.data.internal.impl.NodeController, com.sdm.quasar.client.core.data.Context, com.sdm.quasar.client.core.data.internal.impl.NestedValueHandler)

setValue

public void setValue(NodeController node,
                     Context context,
                     java.lang.Object value,
                     NestedValueHandler nestedValueHandler)
Sets the indexed value of the node. If it takes responsability for the storing of the value it must notify the node of the change if appropriate by using NodeController.startNodeValueChangedNotification(). If it does not take responsability it must notify the nested value handler using NestedValueHandler.setValue(Context, Object). Calls NestedValueHandler#setValue(Object) without any changes.

Specified by:
setValue in interface ValueHandler
Parameters:
node - the concerned node
context - the context to resolve the indices
value - the value to be set, may be null
nestedValueHandler - the adapter to the next value handler in the chain of value handlers of that node
See Also:
com.sdm.quasar.client.core.data.internal.impl.ValueHandler#setValue(com.sdm.quasar.client.core.data.internal.impl.NodeController, com.sdm.quasar.client.core.data.Context, java.lang.Object, com.sdm.quasar.client.core.data.internal.impl.NestedValueHandler)

getIndexSet

public java.util.Set getIndexSet(NodeController node,
                                 Context context,
                                 NestedValueHandler nestedValueHandler)
Retrieves a Set of the index values for the node. If this value handler does not take responsability for the storing of the value it must retrieve the set by using NestedValueHandler.getIndexSet(com.sdm.quasar.client.core.data.Context). Returns the result of NestedValueHandler#getIndexSet() without any changes.

Specified by:
getIndexSet in interface ValueHandler
Parameters:
node - the concerned node
context - the context to resolve the indices
nestedValueHandler - the adapter to the next value handler
Returns:
A Set of the index values for the node or null.
See Also:
com.sdm.quasar.client.core.data.internal.impl.ValueHandler#getIndexSet(com.sdm.quasar.client.core.data.internal.impl.NodeController, com.sdm.quasar.client.core.data.Context, com.sdm.quasar.client.core.data.internal.impl.NestedValueHandler)

notifyNodeValueChanged

public void notifyNodeValueChanged(NodeController node)
Called when the value of the node has changed because of a change originating at the given node. Notifies the listener using EventNotificationValueHandlerListener.notifyNodeValueChanged(NodeController).

Specified by:
notifyNodeValueChanged in interface ValueHandler
Parameters:
node - the node whose value has changed
See Also:
ValueHandler.notifyNodeValueChanged(NodeController)

notifySourceValueChanged

public void notifySourceValueChanged(NodeController node,
                                     java.lang.String sourceKey)
Called when the value of a node that the node depends on or an ancestor further removed has changed. Notifies the listener using EventNotificationValueHandlerListener.notifySourceValueChanged(NodeController, String).

Specified by:
notifySourceValueChanged in interface ValueHandler
Parameters:
node - the node that is notified
sourceKey - the key of the source node whose value has changed
See Also:
ValueHandler.notifySourceValueChanged(NodeController, String)

notifyChildValueChanged

public void notifyChildValueChanged(NodeController node,
                                    java.lang.String childKey)
Called when the value of a node that depends on this node has changed. Notifies the listener using EventNotificationValueHandlerListener.notifyChildValueChanged(NodeController, String).

Specified by:
notifyChildValueChanged in interface ValueHandler
Parameters:
node - the node that is notified
childKey - the key of the child node whose value has changed
See Also:
ValueHandler.notifyChildValueChanged(NodeController, String)