org.dishevelled.observable.graph
Class AbstractObservableGraph<N,E>

java.lang.Object
  extended by org.dishevelled.graph.impl.AbstractGraphDecorator<N,E>
      extended by org.dishevelled.observable.graph.AbstractObservableGraph<N,E>
Type Parameters:
N - node value type
E - edge value type
All Implemented Interfaces:
Graph<N,E>, ObservableGraph<N,E>
Direct Known Subclasses:
ObservableGraphImpl

public abstract class AbstractObservableGraph<N,E>
extends AbstractGraphDecorator<N,E>
implements ObservableGraph<N,E>

Abstract implementation of an observable graph that decorates an instance of Graph.

Version:
$Revision$ $Date$
Author:
Michael Heuer

Constructor Summary
protected AbstractObservableGraph(Graph<N,E> graph)
          Create a new abstract observable graph that decorates the specified graph.
 
Method Summary
 void addGraphChangeListener(GraphChangeListener<N,E> l)
          Add the specified graph change listener.
 void addVetoableGraphChangeListener(VetoableGraphChangeListener<N,E> l)
          Add the specified vetoable graph change listener.
 void clear()
          
 Edge<N,E> createEdge(Node<N,E> source, Node<N,E> target, E value)
          
 Node<N,E> createNode(N value)
          
protected  void fireCleared()
          Fire a cleared change event to all registered GraphChangeListeners.
protected  void fireEdgeCreated(Edge<N,E> edge)
          Fire an edge created change event to all registered GraphChangeListeners.
protected  void fireEdgeRemoved(Edge<N,E> edge)
          Fire an edge removed change event to all registered GraphChangeListeners.
protected  void fireNodeCreated(Node<N,E> node)
          Fire a node created change event to all registered GraphChangeListeners.
protected  void fireNodeRemoved(Node<N,E> node)
          Fire a node removed change event to all registered GraphChangeListeners.
protected  void fireWillClear()
          Fire a will clear change event to all registered VetoableGraphChangeListeners.
protected  void fireWillCreateEdge(Node<N,E> sourceNode, Node<N,E> targetNode, E edgeValue)
          Fire a will create edge change event to all registered VetoableGraphChangeListeners.
protected  void fireWillCreateNode(N nodeValue)
          Fire a will create node change event to all registered VetoableGraphChangeListeners.
protected  void fireWillRemoveEdge(Edge<N,E> edge)
          Fire a will remove edge change event to all registered VetoableGraphChangeListeners.
protected  void fireWillRemoveNode(Node<N,E> node)
          Fire a will remove node change event to all registered VetoableGraphChangeListeners.
 int getGraphChangeListenerCount()
          Return the number of GraphChangeListeners registered to this observable graph.
 GraphChangeListener<N,E>[] getGraphChangeListeners()
          Return an array of all GraphChangeListeners, or an empty array if none are registered.
protected  ObservableGraphChangeSupport<N,E> getObservableGraphChangeSupport()
          Return the ObservableGraphChangeSupport class backing this abstract observable graph.
 int getVetoableGraphChangeListenerCount()
          Return the number of VetoableGraphChangeListeners registered to this observable graph.
 VetoableGraphChangeListener<N,E>[] getVetoableGraphChangeListeners()
          Return an array of all VetoableGraphChangeListeners, or an empty array if none are registered.
protected abstract  void postClear()
          Notify subclasses the clear method has just been called on the wrapped graph.
protected abstract  void postCreateEdge(Node<N,E> source, Node<N,E> target, E value, Edge<N,E> edge)
          Notify subclasses the createEdge method has just been called on the wrapped graph with the specified parameters.
protected abstract  void postCreateNode(N value, Node<N,E> node)
          Notify subclasses the createNode method has just been called on the wrapped graph with the specified parameter.
protected abstract  void postRemove(Edge<N,E> edge)
          Notify subclasses the remove(Edge<N, E>) method has just been called on the wrapped graph with the specified parameter.
protected abstract  void postRemove(Node<N,E> node)
          Notify subclasses the remove(Node<N, E>) method has just been called on the wrapped graph with the specified parameter.
protected abstract  boolean preClear()
          Notify subclasses the clear method is about to be called on the wrapped graph.
protected abstract  boolean preCreateEdge(Node<N,E> source, Node<N,E> target, E value)
          Notify subclasses the createEdge method is about to be called on the wrapped graph with the specified parameters.
protected abstract  boolean preCreateNode(N value)
          Notify subclasses the createNode method is about to be called on the wrapped graph with the specified parameter.
protected abstract  boolean preRemove(Edge<N,E> edge)
          Notify subclasses the remove(Edge<N, E>) method is about to be called on the wrapped graph with the specified parameter.
protected abstract  boolean preRemove(Node<N,E> node)
          Notify subclasses the remove(Node<N, E>) method is about to be called on the wrapped graph with the specified parameter.
 void remove(Edge<N,E> edge)
          
 void remove(Node<N,E> node)
          
 void removeGraphChangeListener(GraphChangeListener<N,E> l)
          Remove the specified graph change listener.
 void removeVetoableGraphChangeListener(VetoableGraphChangeListener<N,E> l)
          Remove the specified vetoable graph change listener.
 
Methods inherited from class org.dishevelled.graph.impl.AbstractGraphDecorator
edgeCount, edgeMap, edges, edgeValues, forEachEdge, forEachEdge, forEachEdgeValue, forEachEdgeValue, forEachNode, forEachNode, forEachNodeValue, forEachNodeValue, getGraph, isEmpty, nodeCount, nodeMap, nodes, nodeValues
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.dishevelled.graph.Graph
edgeCount, edgeMap, edges, edgeValues, forEachEdge, forEachEdge, forEachEdgeValue, forEachEdgeValue, forEachNode, forEachNode, forEachNodeValue, forEachNodeValue, isEmpty, nodeCount, nodeMap, nodes, nodeValues
 

Constructor Detail

AbstractObservableGraph

protected AbstractObservableGraph(Graph<N,E> graph)
Create a new abstract observable graph that decorates the specified graph.

Parameters:
graph - graph to decorate
Method Detail

getObservableGraphChangeSupport

protected final ObservableGraphChangeSupport<N,E> getObservableGraphChangeSupport()
Return the ObservableGraphChangeSupport class backing this abstract observable graph.

Returns:
the ObservableGraphChangeSupport class backing this abstract observable graph

addGraphChangeListener

public final void addGraphChangeListener(GraphChangeListener<N,E> l)
Add the specified graph change listener.

Specified by:
addGraphChangeListener in interface ObservableGraph<N,E>
Parameters:
l - graph change listener to add

removeGraphChangeListener

public final void removeGraphChangeListener(GraphChangeListener<N,E> l)
Remove the specified graph change listener.

Specified by:
removeGraphChangeListener in interface ObservableGraph<N,E>
Parameters:
l - graph change listener to remove

addVetoableGraphChangeListener

public final void addVetoableGraphChangeListener(VetoableGraphChangeListener<N,E> l)
Add the specified vetoable graph change listener.

Specified by:
addVetoableGraphChangeListener in interface ObservableGraph<N,E>
Parameters:
l - vetoable graph change listener to add

removeVetoableGraphChangeListener

public final void removeVetoableGraphChangeListener(VetoableGraphChangeListener<N,E> l)
Remove the specified vetoable graph change listener.

Specified by:
removeVetoableGraphChangeListener in interface ObservableGraph<N,E>
Parameters:
l - vetoable graph change listener to remove

getGraphChangeListeners

public final GraphChangeListener<N,E>[] getGraphChangeListeners()
Return an array of all GraphChangeListeners, or an empty array if none are registered.

Specified by:
getGraphChangeListeners in interface ObservableGraph<N,E>
Returns:
an array of all GraphChangeListeners, or an empty array if none are registered

getGraphChangeListenerCount

public final int getGraphChangeListenerCount()
Return the number of GraphChangeListeners registered to this observable graph.

Specified by:
getGraphChangeListenerCount in interface ObservableGraph<N,E>
Returns:
the number of GraphChangeListeners registered to this observable graph

getVetoableGraphChangeListeners

public final VetoableGraphChangeListener<N,E>[] getVetoableGraphChangeListeners()
Return an array of all VetoableGraphChangeListeners, or an empty array if none are registered.

Specified by:
getVetoableGraphChangeListeners in interface ObservableGraph<N,E>
Returns:
an array of all VetoableGraphChangeListeners, or an empty array if none are registered

getVetoableGraphChangeListenerCount

public final int getVetoableGraphChangeListenerCount()
Return the number of VetoableGraphChangeListeners registered to this observable graph.

Specified by:
getVetoableGraphChangeListenerCount in interface ObservableGraph<N,E>
Returns:
the number of VetoableGraphChangeListeners registered to this observable graph

fireWillClear

protected void fireWillClear()
                      throws GraphChangeVetoException
Fire a will clear change event to all registered VetoableGraphChangeListeners.

Throws:
GraphChangeVetoException - if any of the listeners veto the change

fireCleared

protected void fireCleared()
Fire a cleared change event to all registered GraphChangeListeners.


fireWillCreateNode

protected void fireWillCreateNode(N nodeValue)
                           throws GraphChangeVetoException
Fire a will create node change event to all registered VetoableGraphChangeListeners.

Parameters:
nodeValue - node value for an about to be created node
Throws:
GraphChangeVetoException - if any of the listeners veto the change

fireWillCreateEdge

protected void fireWillCreateEdge(Node<N,E> sourceNode,
                                  Node<N,E> targetNode,
                                  E edgeValue)
                           throws GraphChangeVetoException
Fire a will create edge change event to all registered VetoableGraphChangeListeners.

Parameters:
sourceNode - source node for an about to be created edge
targetNode - target node for an about to be created edge
edgeValue - edge value for an about to be created edge
Throws:
GraphChangeVetoException - if any of the listeners veto the change

fireWillRemoveNode

protected void fireWillRemoveNode(Node<N,E> node)
                           throws GraphChangeVetoException
Fire a will remove node change event to all registered VetoableGraphChangeListeners.

Parameters:
node - node about to be removed
Throws:
GraphChangeVetoException - if any of the listeners veto the change

fireWillRemoveEdge

protected void fireWillRemoveEdge(Edge<N,E> edge)
                           throws GraphChangeVetoException
Fire a will remove edge change event to all registered VetoableGraphChangeListeners.

Parameters:
edge - edge about to be removed
Throws:
GraphChangeVetoException - if any of the listeners veto the change

fireNodeCreated

protected void fireNodeCreated(Node<N,E> node)
Fire a node created change event to all registered GraphChangeListeners.

Parameters:
node - newly created node

fireNodeRemoved

protected void fireNodeRemoved(Node<N,E> node)
Fire a node removed change event to all registered GraphChangeListeners.

Parameters:
node - removed node

fireEdgeCreated

protected void fireEdgeCreated(Edge<N,E> edge)
Fire an edge created change event to all registered GraphChangeListeners.

Parameters:
edge - newly created edge

fireEdgeRemoved

protected void fireEdgeRemoved(Edge<N,E> edge)
Fire an edge removed change event to all registered GraphChangeListeners.

Parameters:
edge - removed edge

preClear

protected abstract boolean preClear()
Notify subclasses the clear method is about to be called on the wrapped graph. Return true to proceed with the change.

Returns:
true to proceed with the change

postClear

protected abstract void postClear()
Notify subclasses the clear method has just been called on the wrapped graph.


preCreateNode

protected abstract boolean preCreateNode(N value)
Notify subclasses the createNode method is about to be called on the wrapped graph with the specified parameter. Return true to proceed with the change.

Parameters:
value - createNode method parameter
Returns:
true to proceed with the change

postCreateNode

protected abstract void postCreateNode(N value,
                                       Node<N,E> node)
Notify subclasses the createNode method has just been called on the wrapped graph with the specified parameter.

Parameters:
value - createNode method parameter
node - newly created node

preRemove

protected abstract boolean preRemove(Node<N,E> node)
Notify subclasses the remove(Node<N, E>) method is about to be called on the wrapped graph with the specified parameter. Return true to proceed with the change.

Parameters:
node - remove(Node<N, E>) method parameter
Returns:
true to proceed with the change

postRemove

protected abstract void postRemove(Node<N,E> node)
Notify subclasses the remove(Node<N, E>) method has just been called on the wrapped graph with the specified parameter.

Parameters:
node - remove(Node<N, E>) method parameter

preCreateEdge

protected abstract boolean preCreateEdge(Node<N,E> source,
                                         Node<N,E> target,
                                         E value)
Notify subclasses the createEdge method is about to be called on the wrapped graph with the specified parameters. Return true to proceed with the change.

Parameters:
source - createEdge method parameter
target - createEdge method parameter
value - createEdge method parameter
Returns:
true to proceed with the change

postCreateEdge

protected abstract void postCreateEdge(Node<N,E> source,
                                       Node<N,E> target,
                                       E value,
                                       Edge<N,E> edge)
Notify subclasses the createEdge method has just been called on the wrapped graph with the specified parameters.

Parameters:
source - createEdge method parameter
target - createEdge method parameter
value - createEdge method parameter
edge - newly created edge

preRemove

protected abstract boolean preRemove(Edge<N,E> edge)
Notify subclasses the remove(Edge<N, E>) method is about to be called on the wrapped graph with the specified parameter. Return true to proceed with the change.

Parameters:
edge - remove(Edge<N, E>) method parameter
Returns:
true to proceed with the change

postRemove

protected abstract void postRemove(Edge<N,E> edge)
Notify subclasses the remove(Edge<N, E>) method has just been called on the wrapped graph with the specified parameter.

Parameters:
edge - remove(Edge<N, E>) method parameter

clear

public void clear()

Specified by:
clear in interface Graph<N,E>
Overrides:
clear in class AbstractGraphDecorator<N,E>

createNode

public Node<N,E> createNode(N value)

Specified by:
createNode in interface Graph<N,E>
Overrides:
createNode in class AbstractGraphDecorator<N,E>

remove

public void remove(Node<N,E> node)

Specified by:
remove in interface Graph<N,E>
Overrides:
remove in class AbstractGraphDecorator<N,E>

createEdge

public Edge<N,E> createEdge(Node<N,E> source,
                            Node<N,E> target,
                            E value)

Specified by:
createEdge in interface Graph<N,E>
Overrides:
createEdge in class AbstractGraphDecorator<N,E>

remove

public void remove(Edge<N,E> edge)

Specified by:
remove in interface Graph<N,E>
Overrides:
remove in class AbstractGraphDecorator<N,E>


Copyright (c) 2008-2012 held jointly by the individual authors. Licensed under the GNU Lesser General Public License (LGPL).