Search in sources :

Example 11 with Path

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)));
}
Also used : Path(org.neo4j.graphdb.Path) Test(org.junit.Test)

Example 12 with Path

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;
}
Also used : Path(org.neo4j.graphdb.Path) Node(org.neo4j.graphdb.Node) PathExpander(org.neo4j.graphdb.PathExpander)

Example 13 with Path

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());
    }
}
Also used : Path(org.neo4j.graphdb.Path) Transaction(org.neo4j.graphdb.Transaction) KernelTransaction(org.neo4j.kernel.api.KernelTransaction) Node(org.neo4j.graphdb.Node) Relationship(org.neo4j.graphdb.Relationship) Result(org.neo4j.graphdb.Result) Test(org.junit.Test)

Example 14 with Path

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;
    }
}
Also used : Path(org.neo4j.graphdb.Path) Transaction(org.neo4j.graphdb.Transaction) Traverser(org.neo4j.graphdb.traversal.Traverser)

Example 15 with Path

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());
        }
    };
}
Also used : Path(org.neo4j.graphdb.Path) Relationship(org.neo4j.graphdb.Relationship) TraversalDescription(org.neo4j.graphdb.traversal.TraversalDescription) IterableWrapper(org.neo4j.helpers.collection.IterableWrapper)

Aggregations

Path (org.neo4j.graphdb.Path)170 Node (org.neo4j.graphdb.Node)73 Transaction (org.neo4j.graphdb.Transaction)51 Test (org.junit.jupiter.api.Test)49 Relationship (org.neo4j.graphdb.Relationship)47 Test (org.junit.Test)37 WeightedPath (org.neo4j.graphalgo.WeightedPath)25 Traverser (org.neo4j.graphdb.traversal.Traverser)24 BasicEvaluationContext (org.neo4j.graphalgo.BasicEvaluationContext)21 ArrayList (java.util.ArrayList)19 Map (java.util.Map)18 TraversalDescription (org.neo4j.graphdb.traversal.TraversalDescription)18 HashSet (java.util.HashSet)12 RelationshipType (org.neo4j.graphdb.RelationshipType)10 Entity (org.neo4j.graphdb.Entity)9 Evaluator (org.neo4j.graphdb.traversal.Evaluator)9 HashMap (java.util.HashMap)7 LinkedList (java.util.LinkedList)6 PathFinder (org.neo4j.graphalgo.PathFinder)6 PathExpander (org.neo4j.graphdb.PathExpander)6