use of org.neo4j.graphdb.traversal.TraversalDescription in project neo4j by neo4j.
the class AllPaths method instantiateTraverser.
@Override
protected Traverser instantiateTraverser(Node start, Node end) {
// // Legacy single-directional traversal (for reference or something)
// return traversal().expand( expander ).depthFirst().uniqueness( uniqueness() )
// .evaluator( toDepth( maxDepth ) ).evaluator( Evaluators.includeWhereEndNodeIs( end ) )
// .traverse( start );
// Bidirectional traversal
GraphDatabaseService db = start.getGraphDatabase();
TraversalDescription base = db.traversalDescription().depthFirst().uniqueness(uniqueness());
return db.bidirectionalTraversalDescription().startSide(base.expand(expander).evaluator(toDepth(maxDepth / 2))).endSide(base.expand(expander.reverse()).evaluator(toDepth(maxDepth - maxDepth / 2))).traverse(start, end);
}
use of org.neo4j.graphdb.traversal.TraversalDescription in project neo4j by neo4j.
the class DijkstraBidirectional method traverser.
private Traverser traverser(Node start, final Node end, PathInterest interest) {
final MutableDouble shortestSoFar = new MutableDouble(Double.MAX_VALUE);
final MutableDouble startSideShortest = new MutableDouble(0);
final MutableDouble endSideShortest = new MutableDouble(0);
PathExpander dijkstraExpander = new DijkstraBidirectionalPathExpander(expander, shortestSoFar, true, startSideShortest, endSideShortest, epsilon);
GraphDatabaseService db = start.getGraphDatabase();
TraversalDescription side = db.traversalDescription().expand(dijkstraExpander, stateFactory).order(new DijkstraSelectorFactory(interest, costEvaluator)).evaluator(new DijkstraBidirectionalEvaluator(costEvaluator)).uniqueness(Uniqueness.NODE_PATH);
TraversalDescription startSide = side;
TraversalDescription endSide = side.reverse();
BidirectionalTraversalDescription traversal = db.bidirectionalTraversalDescription().startSide(startSide).endSide(endSide).collisionEvaluator(Evaluators.all()).collisionPolicy(new BranchCollisionPolicy() {
@Override
public BranchCollisionDetector create(Evaluator evaluator, Predicate<Path> pathPredicate) {
return new DijkstraBranchCollisionDetector(evaluator, costEvaluator, shortestSoFar, epsilon, pathPredicate);
}
});
lastTraverser = traversal.traverse(start, end);
return lastTraverser;
}
use of org.neo4j.graphdb.traversal.TraversalDescription in project neo4j by neo4j.
the class ExactDepthPathFinder method instantiateTraverser.
@Override
protected Traverser instantiateTraverser(Node start, Node end) {
GraphDatabaseService db = start.getGraphDatabase();
TraversalDescription side = db.traversalDescription().breadthFirst().uniqueness(uniqueness).order(new BranchOrderingPolicy() {
@Override
public BranchSelector create(TraversalBranch startSource, PathExpander expander) {
return new LiteDepthFirstSelector(startSource, startThreshold, expander);
}
});
return db.bidirectionalTraversalDescription().startSide(side.expand(expander).evaluator(toDepth(onDepth / 2))).endSide(side.expand(expander.reverse()).evaluator(toDepth(onDepth - onDepth / 2))).collisionEvaluator(atDepth(onDepth)).traverse(start, end);
}
use of org.neo4j.graphdb.traversal.TraversalDescription in project jo-client-platform by jo-source.
the class SyncNeo4JSimpleTraversalReaderServiceImpl method getAllRelatedBeans.
private Set<? extends BEAN_TYPE> getAllRelatedBeans(final List<? extends IBeanKey> parentBeans, final PARAM_TYPE parameter, final IExecutionCallback executionCallback) {
final Set<BEAN_TYPE> result = new LinkedHashSet<BEAN_TYPE>();
for (final IBeanKey beanKey : parentBeans) {
CapServiceToolkit.checkCanceled(executionCallback);
final Node parentNode = NodeAccess.findNode(parentBeanTypeId, beanKey.getId());
if (parentNode != null) {
for (final TraversalDescription traversalDescription : traversalDescriptions) {
for (final Node resultNode : traversalDescription.traverse(parentNode).nodes()) {
CapServiceToolkit.checkCanceled(executionCallback);
if (resultNode.hasProperty(beanTypePropertyName) && beanTypeIdString.equals(resultNode.getProperty(beanTypePropertyName))) {
result.add(beanFactory.createNodeBean(beanType, beanTypeId, resultNode));
}
}
}
}
}
return result;
}
use of org.neo4j.graphdb.traversal.TraversalDescription in project graphdb by neo4j-attic.
the class OldTraverserWrapper method traversal.
private static TraversalDescription traversal(TraverserImpl traverser, Order order, StopEvaluator stopEvaluator, ReturnableEvaluator returnableEvaluator) {
TraversalDescription description = BASE_DESCRIPTION;
switch(order) {
case BREADTH_FIRST:
description = description.breadthFirst();
break;
case DEPTH_FIRST:
description = description.depthFirst();
break;
default:
throw new IllegalArgumentException("Onsupported traversal order: " + order);
}
description = description.prune(new Pruner(traverser, stopEvaluator));
description = description.filter(new Filter(traverser, returnableEvaluator));
return description;
}
Aggregations