use of org.neo4j.graphdb.Path in project neo4j by neo4j.
the class ValuePathTest method canConstructPathWithLoop.
@Test
public void canConstructPathWithLoop() {
// Given C->D->D
Path path = PATH_WITH_LOOP;
// Then
assertThat(path.length(), equalTo(2));
assertThat(path.startNode(), equalTo(CAROL));
assertThat(path.endNode(), equalTo(DAVE));
assertThat(nodes(path), equalTo(nodes(CAROL, DAVE, DAVE)));
assertThat(path.lastRelationship(), equalTo(DAVE_WORKS_FOR_DAVE));
assertThat(relationships(path), equalTo(relationships(CAROL_MARRIED_TO_DAVE, DAVE_WORKS_FOR_DAVE)));
}
use of org.neo4j.graphdb.Path in project neo4j by neo4j.
the class PathShellApp method exec.
@Override
protected Continuation exec(AppCommandParser parser, Session session, Output out) throws Exception {
String fromString = parser.options().get("from");
String toString = parser.argument(0, "Must supply a 'to' node as first argument");
String algo = parser.options().get("a");
String maxDepthString = parser.options().get("m");
boolean quietPrint = parser.options().containsKey("q");
boolean caseInsensitiveFilters = parser.options().containsKey("i");
boolean looseFilters = parser.options().containsKey("l");
int maxDepth = maxDepthString != null ? Integer.parseInt(maxDepthString) : Integer.MAX_VALUE;
fromString = fromString != null ? fromString : String.valueOf(this.getCurrent(session).getId());
Map<String, Object> filter = parseFilter(parser.options().get("f"), out);
PathExpander expander = toExpander(getServer().getDb(), Direction.BOTH, filter, caseInsensitiveFilters, looseFilters);
PathFinder<Path> finder = expander != null ? getPathFinder(algo, expander, maxDepth, out) : null;
if (finder != null) {
Node fromNode = getNodeById(Long.parseLong(fromString));
Node toNode = getNodeById(Long.parseLong(toString));
boolean single = parser.options().containsKey("s");
Iterable<Path> paths = single ? Arrays.asList(finder.findSinglePath(fromNode, toNode)) : finder.findAllPaths(fromNode, toNode);
for (Path path : paths) {
printPath(path, quietPrint, session, out);
}
}
return Continuation.INPUT_COMPLETE;
}
use of org.neo4j.graphdb.Path in project neo4j by neo4j.
the class ProcedureIT method shouldCallProcedureReturningPaths.
@Test
public void shouldCallProcedureReturningPaths() throws Throwable {
// Given
try (Transaction ignore = db.beginTx()) {
Node node1 = db.createNode();
Node node2 = db.createNode();
Relationship rel = node1.createRelationshipTo(node2, RelationshipType.withName("KNOWS"));
// When
Result res = db.execute("CALL org.neo4j.procedure.nodePaths({node}) YIELD path RETURN path", map("node", node1));
// Then
assertTrue(res.hasNext());
Map<String, Object> value = res.next();
Path path = (Path) value.get("path");
assertThat(path.length(), equalTo(1));
assertThat(path.startNode(), equalTo(node1));
assertThat(asList(path.relationships()), equalTo(singletonList(rel)));
assertThat(path.endNode(), equalTo(node2));
assertFalse(res.hasNext());
}
}
use of org.neo4j.graphdb.Path in project neo4j-documentation by neo4j.
the class OrderedPath method printPaths.
String printPaths(TraversalDescription td, Node A) {
try (Transaction transaction = db.beginTx()) {
String output = "";
// START SNIPPET: printPath
Traverser traverser = td.traverse(A);
PathPrinter pathPrinter = new PathPrinter("name");
for (Path path : traverser) {
output += Paths.pathToString(path, pathPrinter);
}
// END SNIPPET: printPath
output += "\n";
return output;
}
}
use of org.neo4j.graphdb.Path in project neo4j-documentation by neo4j.
the class Person method getStatus.
public Iterable<StatusUpdate> getStatus() {
Relationship firstStatus = underlyingNode.getSingleRelationship(STATUS, Direction.OUTGOING);
if (firstStatus == null) {
return Collections.emptyList();
}
// START SNIPPET: getStatusTraversal
TraversalDescription traversal = graphDb().traversalDescription().depthFirst().relationships(NEXT);
return new IterableWrapper<StatusUpdate, Path>(traversal.traverse(firstStatus.getEndNode())) {
@Override
protected StatusUpdate underlyingObjectToObject(Path path) {
return new StatusUpdate(path.endNode());
}
};
}
Aggregations