Interface StopEvaluator

public interface StopEvaluator

A client hook for evaluating whether the traverser should traverse beyond a specific node. This is used for pruning the traversal.

When a traverser is created, the client parameterizes it with a StopEvaluator. The traverser then invokes the isStopNode() operation just before traversing the relationships of a node, allowing the client to either approve or disapprove of traversing beyond that node.

When implementing a StopEvaluator, the client investigates the information encapsulated in a TraversalPosition to decide whether to block traversal beyond a node or not. For example, here's a snippet detailing a StopEvaluator that blocks traversal beyond a node if it has a certain property value:

 StopEvaluator stopEvaluator = new StopEvaluator()
     // Block traversal if the node has a property with key 'key' and value
     // 'someValue'
     public boolean isStopNode( TraversalPosition position )
         if ( position.isStartNode() )
             return false;
         Node node = position.currentNode();
         Object someProp = node.getProperty( "key", null );
         return someProp instanceof String &&
             ((String) someProp).equals( "someValue" );

Field Summary
static StopEvaluator DEPTH_ONE
          Traverses to depth 1.
static StopEvaluator END_OF_GRAPH
          Traverse until the end of the graph.
Method Summary
 boolean isStopNode(TraversalPosition currentPos)
          Method invoked by traverser to see if current position is a stop node.

Field Detail


static final StopEvaluator END_OF_GRAPH
Traverse until the end of the graph. This evaluator returns false all the time.


static final StopEvaluator DEPTH_ONE
Traverses to depth 1.

Method Detail


boolean isStopNode(TraversalPosition currentPos)
Method invoked by traverser to see if current position is a stop node.

currentPos - the traversal position
True if current position is a stop node

Copyright © 2010 The Neo4j Graph Database Project. All Rights Reserved.