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

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

public class AspectValueHandler
extends java.lang.Object
implements ValueHandler

Default implementation for a value handler that takes responsibility for storing and accessing a value defined by an AspectNode.

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

Constructor Summary
AspectValueHandler()
          Creates a new AspectValueHandler.
 
Method Summary
 boolean canHandle(Node node)
          Tests whether the value handler can handle nodes of the given type.
 boolean canModifyValue(NodeController node, Context context, NestedValueHandler nestedValueHandler)
          Tests whether the value of the node can be modified.
 java.util.Set getIndexSet(NodeController node, Context context, NestedValueHandler nestedValueHandler)
          Retrieves a Set of the index values for the node.
 java.lang.Object getValue(NodeController node, Context context, NestedValueHandler nestedValueHandler)
          Retrieves the value of the node.
 boolean hasValue(NodeController node, Context context, NestedValueHandler nestedValueHandler)
          Tests whether the node has a indexed value.
 void notifyChildValueChanged(NodeController node, java.lang.String childKey)
          Called when the value of a node that depends on this node has changed. This implementation does nothing.
 void notifyNodeValueChanged(NodeController node)
          Called when the value of the node has changed because of a change originating at the given node. This implementation does nothing
 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. This implenentation does nothing
 void setValue(NodeController node, Context context, java.lang.Object value, NestedValueHandler nestedValueHandler)
          Sets the indexed value of the node.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AspectValueHandler

public AspectValueHandler()
Creates a new AspectValueHandler.

Method Detail

canHandle

public boolean canHandle(Node node)
Description copied from interface: ValueHandler
Tests whether the value handler can handle nodes of the given type.

Specified by:
canHandle in interface ValueHandler
Parameters:
node - the node definition
Returns:
true iff the value handler can handle that node
See Also:
com.sdm.quasar.client.core.data.internal.impl.ValueHandler#canHandle(com.sdm.quasar.client.core.data.structure.Node)

hasValue

public boolean hasValue(NodeController node,
                        Context context,
                        NestedValueHandler nestedValueHandler)
Description copied from interface: ValueHandler
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().

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)
Description copied from interface: ValueHandler
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).

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)

setValue

public void setValue(NodeController node,
                     Context context,
                     java.lang.Object value,
                     NestedValueHandler nestedValueHandler)
Description copied from interface: ValueHandler
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).

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)
Description copied from interface: ValueHandler
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).

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)

canModifyValue

public boolean canModifyValue(NodeController node,
                              Context context,
                              NestedValueHandler nestedValueHandler)
Description copied from interface: ValueHandler
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().

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)

notifyNodeValueChanged

public void notifyNodeValueChanged(NodeController node)
Called when the value of the node has changed because of a change originating at the given node. This implementation does nothing

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

notifyChildValueChanged

public void notifyChildValueChanged(NodeController node,
                                    java.lang.String childKey)
Called when the value of a node that depends on this node has changed. This implementation does nothing.

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)

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. This implenentation does nothing

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)