org.progeeks.graph
Class CacheGraph

java.lang.Object
  extended by org.progeeks.graph.CacheGraph
All Implemented Interfaces:
com.phoenixst.plexus.Graph, com.phoenixst.plexus.ObservableGraph

public class CacheGraph
extends java.lang.Object
implements com.phoenixst.plexus.ObservableGraph

A graph implementation that delegates to a supplied graph and caches any accessed nodes/edges in a DefaultGraph. Note that nodes cannot be Predicates in this Graph implementation.

Version:
$Revision: 1.20 $
Author:
Paul Speed

Nested Class Summary
 
Nested classes/interfaces inherited from interface com.phoenixst.plexus.Graph
com.phoenixst.plexus.Graph.Edge
 
Constructor Summary
CacheGraph()
           
 
Method Summary
 com.phoenixst.plexus.Graph.Edge addEdge(java.lang.Object object, java.lang.Object tail, java.lang.Object head, boolean isDirected)
           
 void addGraphListener(com.phoenixst.plexus.GraphListener listener)
          Adds the specified GraphListener which will be notified whenever this ObservableGraph's structure changes.
 boolean addNode(java.lang.Object node)
           
 java.util.Collection adjacentNodes(java.lang.Object node, org.apache.commons.collections.Predicate traverserPredicate)
           
protected  com.phoenixst.plexus.Graph.Edge cacheEdge(com.phoenixst.plexus.Graph.Edge edge)
          Caches the specified main graph edge by converting it to a cache edge and making sure the nodes are cached.
 boolean containsEdge(com.phoenixst.plexus.Graph.Edge edge)
           
 boolean containsNode(java.lang.Object node)
           
 int degree(java.lang.Object node)
           
 int degree(java.lang.Object node, org.apache.commons.collections.Predicate traverserPredicate)
           
 java.util.Collection edges(org.apache.commons.collections.Predicate edgePredicate)
           
 java.lang.Object getAdjacentNode(java.lang.Object node, org.apache.commons.collections.Predicate traverserPredicate)
           
protected  com.phoenixst.plexus.Graph.Edge getCachedEdgeForGraphEdge(com.phoenixst.plexus.Graph.Edge edge)
           
 com.phoenixst.plexus.Graph.Edge getEdge(org.apache.commons.collections.Predicate edgePredicate)
           
 com.phoenixst.plexus.Graph getGraph()
           
protected  com.phoenixst.plexus.Graph.Edge getGraphEdgeForCacheEdge(com.phoenixst.plexus.Graph.Edge edge)
           
 com.phoenixst.plexus.Graph.Edge getIncidentEdge(java.lang.Object node, org.apache.commons.collections.Predicate traverserPredicate)
           
 java.lang.Object getNode(org.apache.commons.collections.Predicate nodePredicate)
          Returns a node from this graph that matches the specified filter.
 java.util.Collection incidentEdges(java.lang.Object node, org.apache.commons.collections.Predicate traverserPredicate)
           
 java.util.Collection nodes(org.apache.commons.collections.Predicate nodePredicate)
           
 boolean removeEdge(com.phoenixst.plexus.Graph.Edge edge)
           
 void removeGraphListener(com.phoenixst.plexus.GraphListener listener)
          Removes a previously added GraphListener.
 boolean removeNode(java.lang.Object node)
           
 void setGraph(com.phoenixst.plexus.Graph graph)
           
 com.phoenixst.plexus.Traverser traverser(java.lang.Object node, org.apache.commons.collections.Predicate traverserPredicate)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CacheGraph

public CacheGraph()
Method Detail

setGraph

public void setGraph(com.phoenixst.plexus.Graph graph)

getGraph

public com.phoenixst.plexus.Graph getGraph()

degree

public int degree(java.lang.Object node)
Specified by:
degree in interface com.phoenixst.plexus.Graph

degree

public int degree(java.lang.Object node,
                  org.apache.commons.collections.Predicate traverserPredicate)
Specified by:
degree in interface com.phoenixst.plexus.Graph

addNode

public boolean addNode(java.lang.Object node)
Specified by:
addNode in interface com.phoenixst.plexus.Graph

removeNode

public boolean removeNode(java.lang.Object node)
Specified by:
removeNode in interface com.phoenixst.plexus.Graph

containsNode

public boolean containsNode(java.lang.Object node)
Specified by:
containsNode in interface com.phoenixst.plexus.Graph

addEdge

public com.phoenixst.plexus.Graph.Edge addEdge(java.lang.Object object,
                                               java.lang.Object tail,
                                               java.lang.Object head,
                                               boolean isDirected)
Specified by:
addEdge in interface com.phoenixst.plexus.Graph

cacheEdge

protected com.phoenixst.plexus.Graph.Edge cacheEdge(com.phoenixst.plexus.Graph.Edge edge)
Caches the specified main graph edge by converting it to a cache edge and making sure the nodes are cached.


getGraphEdgeForCacheEdge

protected com.phoenixst.plexus.Graph.Edge getGraphEdgeForCacheEdge(com.phoenixst.plexus.Graph.Edge edge)

getCachedEdgeForGraphEdge

protected com.phoenixst.plexus.Graph.Edge getCachedEdgeForGraphEdge(com.phoenixst.plexus.Graph.Edge edge)

removeEdge

public boolean removeEdge(com.phoenixst.plexus.Graph.Edge edge)
Specified by:
removeEdge in interface com.phoenixst.plexus.Graph

containsEdge

public boolean containsEdge(com.phoenixst.plexus.Graph.Edge edge)
Specified by:
containsEdge in interface com.phoenixst.plexus.Graph

nodes

public java.util.Collection nodes(org.apache.commons.collections.Predicate nodePredicate)
Specified by:
nodes in interface com.phoenixst.plexus.Graph

edges

public java.util.Collection edges(org.apache.commons.collections.Predicate edgePredicate)
Specified by:
edges in interface com.phoenixst.plexus.Graph

adjacentNodes

public java.util.Collection adjacentNodes(java.lang.Object node,
                                          org.apache.commons.collections.Predicate traverserPredicate)
Specified by:
adjacentNodes in interface com.phoenixst.plexus.Graph

incidentEdges

public java.util.Collection incidentEdges(java.lang.Object node,
                                          org.apache.commons.collections.Predicate traverserPredicate)
Specified by:
incidentEdges in interface com.phoenixst.plexus.Graph

getNode

public java.lang.Object getNode(org.apache.commons.collections.Predicate nodePredicate)
Returns a node from this graph that matches the specified filter.

Specified by:
getNode in interface com.phoenixst.plexus.Graph

getEdge

public com.phoenixst.plexus.Graph.Edge getEdge(org.apache.commons.collections.Predicate edgePredicate)
Specified by:
getEdge in interface com.phoenixst.plexus.Graph

getAdjacentNode

public java.lang.Object getAdjacentNode(java.lang.Object node,
                                        org.apache.commons.collections.Predicate traverserPredicate)
Specified by:
getAdjacentNode in interface com.phoenixst.plexus.Graph

getIncidentEdge

public com.phoenixst.plexus.Graph.Edge getIncidentEdge(java.lang.Object node,
                                                       org.apache.commons.collections.Predicate traverserPredicate)
Specified by:
getIncidentEdge in interface com.phoenixst.plexus.Graph

traverser

public com.phoenixst.plexus.Traverser traverser(java.lang.Object node,
                                                org.apache.commons.collections.Predicate traverserPredicate)
Specified by:
traverser in interface com.phoenixst.plexus.Graph

addGraphListener

public void addGraphListener(com.phoenixst.plexus.GraphListener listener)
Adds the specified GraphListener which will be notified whenever this ObservableGraph's structure changes.

Specified by:
addGraphListener in interface com.phoenixst.plexus.ObservableGraph

removeGraphListener

public void removeGraphListener(com.phoenixst.plexus.GraphListener listener)
Removes a previously added GraphListener.

Specified by:
removeGraphListener in interface com.phoenixst.plexus.ObservableGraph


Copyright © 2002-2003 Paul Speed. All Rights Reserved.