de.grogra.graph
Class VisitorImpl

java.lang.Object
  extended by de.grogra.graph.VisitorImpl
All Implemented Interfaces:
Visitor

public abstract class VisitorImpl
extends java.lang.Object
implements Visitor


Field Summary
protected  EdgePattern pattern
           
protected  GraphState state
           
 
Fields inherited from interface de.grogra.graph.Visitor
STOP
 
Constructor Summary
VisitorImpl()
           
 
Method Summary
 GraphState getGraphState()
          Returns the graph state within which the visitor is operating.
 void init(GraphState gs, EdgePattern pattern)
           
 java.lang.Object visitEnter(Path path, boolean node)
          Informs this visitor about a node or edge in the graph.
 java.lang.Object visitInstanceEnter()
          Informs this visitor about the beginning of an instantiation.
 boolean visitInstanceLeave(java.lang.Object o)
          Informs this visitor that an instantiation has been processed completely.
 boolean visitLeave(java.lang.Object o, Path path, boolean node)
          Informs this visitor that a node or an edge has been processed completely.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

pattern

protected EdgePattern pattern

state

protected GraphState state
Constructor Detail

VisitorImpl

public VisitorImpl()
Method Detail

getGraphState

public GraphState getGraphState()
Description copied from interface: Visitor
Returns the graph state within which the visitor is operating.

Specified by:
getGraphState in interface Visitor
Returns:
graph state of visitor

init

public void init(GraphState gs,
                 EdgePattern pattern)

visitEnter

public java.lang.Object visitEnter(Path path,
                                   boolean node)
Description copied from interface: Visitor
Informs this visitor about a node or edge in the graph. path contains the path from the root up to and including the node or, in case an edge is visited, the edge and its terminal node. Later on, Visitor.visitLeave(java.lang.Object, de.grogra.graph.Path, boolean) will be invoked with the returned value of this invocation, path and node as arguments. If this method returns Visitor.STOP, the corresponding visitLeave-method will be invoked immediately after this method, i.e., the visitor does not dive more deeply in the hierarchy. Otherwise, if a node is visited and there are instantiations associated with or edges connected with it (regardless of their direction), their corresponding visitor methods will be invoked inbetween. Likewise, if an edge is visited, its indicent terminal node will be visited next.

Specified by:
visitEnter in interface Visitor
Parameters:
path - current path
node - do we enter a node or an edge?
Returns:
value to pass to visitLeave, may be Visitor.STOP

visitInstanceEnter

public java.lang.Object visitInstanceEnter()
Description copied from interface: Visitor
Informs this visitor about the beginning of an instantiation. This method invokation is nested immediately within visitEnter/visitLeave of a node. Later on, Visitor.visitInstanceLeave(Object) will be invoked with the returned value of this invocation as argument. If this method returns Visitor.STOP, the visitInstanceLeave-method will be invoked immediately after this method, i.e., the visitor does not dive into the instantiation. Otherwise, the instantiation is performed, starting with an edge.

Specified by:
visitInstanceEnter in interface Visitor
Returns:
value to pass to visitInstanceLeave, may be Visitor.STOP

visitInstanceLeave

public boolean visitInstanceLeave(java.lang.Object o)
Description copied from interface: Visitor
Informs this visitor that an instantiation has been processed completely. The value o is the return value of the corresponding invocation of Visitor.visitInstanceEnter(). If this invocation returns false, no further instantiations or edges of the current level of hierarchy will be passed to this visitor, i.e., the visitLeave method for the enclosing node will be invoked immediately.

Specified by:
visitInstanceLeave in interface Visitor
Parameters:
o - returned value of visitInstanceEnter
Returns:
true iff processing of current level shall be continued

visitLeave

public boolean visitLeave(java.lang.Object o,
                          Path path,
                          boolean node)
Description copied from interface: Visitor
Informs this visitor that a node or an edge has been processed completely. The value o is the return value of the corresponding invocation of Visitor.visitEnter(de.grogra.graph.Path, boolean). In case of a node and if this invocation returns false, no further edges of the current level of hierarchy will be passed to this visitor, i.e., the visitLeave methods for the enclosing edge and node will be invoked immediately. Likewise, in case of an edge and a return value false, no further instantiations or edges of the current level of hierarchy will be passed to this visitor, i.e., the visitLeave method for the enclosing node will be invoked immediately.

Specified by:
visitLeave in interface Visitor
Parameters:
o - returned value of visitEnter
path - current path to node
node - do we leave a node or an edge?
Returns:
true iff processing of current level shall be continued