Package org.neo4j.graphdb

Examples of org.neo4j.graphdb.Traverser


        final StopEvaluator stopEval = new PathStopEval();
        final PathReturnEval returnEval1 = new PathReturnEval( traversedNodes1,
            traversedNodes2 );
        final PathReturnEval returnEval2 = new PathReturnEval( traversedNodes2,
            traversedNodes1 );
        final Traverser trav1 = startNode.traverse( Order.BREADTH_FIRST,
            stopEval, returnEval1, relType, Direction.BOTH );
        final Traverser trav2 = endNode.traverse( Order.BREADTH_FIRST,
            stopEval, returnEval2, relType, Direction.BOTH );
        Iterator<Node> itr1 = trav1.iterator();
        Iterator<Node> itr2 = trav2.iterator();
        while ( itr1.hasNext() || itr2.hasNext() )
        {
            if ( itr1.hasNext() )
            {
                itr1.next();
View Full Code Here


    public long getTimestampForNode( Node node )
    {
        Transaction tx = graphDb.beginTx();
        try
        {
            Traverser traverser = node.traverse( Traverser.Order.DEPTH_FIRST,
                    StopEvaluator.END_OF_GRAPH, new ReturnableEvaluator()
                    {
                        public boolean isReturnableNode(
                                TraversalPosition position )
                        {
                            Node currentNode = position.currentNode();
                            return currentNode != null
                                   && !currentNode.hasRelationship(
                                           RelTypes.TIMELINE_INSTANCE,
                                           Direction.INCOMING );
                        }
                    }, RelTypes.TIMELINE_INSTANCE, Direction.INCOMING );

            Iterator<Node> hits = traverser.iterator();
            Long result = null;
            if ( hits.hasNext() )
            {
                Node hit = hits.next();
                result = (Long) hit.getProperty( TIMESTAMP );
View Full Code Here

    // Use a traverser to traverse all specific relationships that ending to
    // a specific node (our goal here is to find all teamate member of
    // Guillaume)
    System.out.println("** Use a traverser to traverse all specific relationships that ending to a specific node (our goal here is to find all teamate member of Guillaume)");
    Node guillaumeNode = graphDatabase.getNodeById(3);
    Traverser teammates = guillaumeNode.traverse(Order.BREADTH_FIRST, StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL_BUT_START_NODE, SocialNetworkRelationship.TEAMMATE, Direction.INCOMING);
    for (Node teammateMember : teammates) {
      System.out.printf("%s (NodeID=%s)\n", teammateMember.getProperty("MemberName"), teammateMember.getId());
    }

    // Finalize transaction
View Full Code Here

   *
   * @return the values of all entries values in this b-tree.
   */
  public Iterable<Object> values()
  {
    Traverser trav = getTreeRoot().getUnderlyingNode().traverse(
      Order.DEPTH_FIRST, StopEvaluator.END_OF_GRAPH,
      new ReturnableEvaluator()
      {
        public boolean isReturnableNode( TraversalPosition pos )
        {
View Full Code Here

  public Iterable<KeyEntry> entries()
  {
    EntryReturnableEvaluator entryEvaluator =
      new EntryReturnableEvaluator();
   
    Traverser trav = treeRoot.getUnderlyingNode().traverse(
      Order.DEPTH_FIRST, StopEvaluator.END_OF_GRAPH,
      entryEvaluator, RelTypes.KEY_ENTRY, Direction.OUTGOING,
      RelTypes.SUB_TREE, Direction.OUTGOING );
    return new EntryTraverser( trav, this, entryEvaluator );
  }
View Full Code Here

        getNodeWithName( "3" ).setProperty( "timestamp", 2L );
        tx.success();
        tx.finish();
       
        final RelationshipType type = DynamicRelationshipType.withName( "TO" );
        Traverser t = referenceNode().traverse( Order.DEPTH_FIRST, new StopEvaluator()
        {
            public boolean isStopNode( TraversalPosition position )
            {
                Relationship last = position.lastRelationshipTraversed();
                if ( last != null && last.isType( type ) )
                {
                    Node node = position.currentNode();
                    long currentTime = (Long) node.getProperty( "timestamp" );
                    return currentTime >= timestamp;
                }
                return false;
            }
        }, new ReturnableEvaluator()
        {
            public boolean isReturnableNode( TraversalPosition position )
            {
                Relationship last = position.lastRelationshipTraversed();
                if ( last != null && last.isType( type ) )
                {
                    return true;
                }
                return false;
            }
        }, type, Direction.OUTGOING );
        Iterator<Node> nodes = t.iterator();
        assertEquals( "2", nodes.next().getProperty( "name" ) );
        assertEquals( "3", nodes.next().getProperty( "name" ) );
        assertFalse( nodes.hasNext() );
    }
View Full Code Here

    public void testBruteBreadthTraversal() throws Exception
    {
        Node root = this.buildIseTreePopulation();
        RelationshipType[] traversableRels = new RelationshipType[] {
            MyRelTypes.TEST, MyRelTypes.TEST_TRAVERSAL };
        Traverser traverser = root.traverse( BREADTH_FIRST,
            StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL,
            traversableRels[0], Direction.BOTH, traversableRels[1],
            Direction.BOTH );

        try
        {
            this.assertLevelsOfNodes( traverser, new String[][] {
                    new String[] { "1" },
                    new String[] { "2", "3", "4" },
                    new String[] { "5", "6", "7", "8", "9" },
                    new String[] { "10", "11", "12", "13", "14" }
            } );
            assertTrue( "Too many nodes returned from traversal", traverser
                .iterator().hasNext() == false );
        }
        catch ( java.util.NoSuchElementException nsee )
        {
            fail( "Too few nodes returned from traversal" );
View Full Code Here

    @Test
    public void testMultiRelBreadthTraversal() throws Exception
    {
        Node root = this.buildIseTreePopulation();
        RelationshipType[] traversableRels = new RelationshipType[] { MyRelTypes.TEST };
        Traverser traverser = root.traverse( BREADTH_FIRST,
            StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL,
            traversableRels[0], Direction.BOTH );

        try
        {
            this.assertLevelsOfNodes( traverser, new String[][] {
                new String[] { "1" },
                new String[] { "2", "3", "4" },
                new String[] { "5", "6", "7" },
                new String[] { "10", "11", "12", "13" },
            } );
            assertTrue( "Too many nodes returned from traversal", traverser
                .iterator().hasNext() == false );
        }
        catch ( java.util.NoSuchElementException nsee )
        {
            fail( "Too few nodes returned from traversal" );
View Full Code Here

                    }
                }
            };

            // b) create a traverser
            Traverser toTheMiddleTraverser = root.traverse( BREADTH_FIRST,
                StopEvaluator.END_OF_GRAPH, returnEvaluator, MyRelTypes.TEST,
                Direction.BOTH );

            // c) get the first node it returns
            startNode = toTheMiddleTraverser.iterator().next();
            assertEquals( "2", startNode.getProperty( "node.test.id" ) );
        }
        catch ( Exception e )
        {
            e.printStackTrace();
            fail( "Something went wrong when trying to get a start node "
                + "in the middle of the tree: " + e );
        }

        // Construct the real traverser
        Traverser traverser = startNode.traverse( BREADTH_FIRST,
            StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL,
            MyRelTypes.TEST, Direction.OUTGOING );
        try
        {
            this.assertNextNodeId( traverser, "2" );
            this.assertNextNodeId( traverser, "5" );
            this.assertNextNodeId( traverser, "6" );
            this.assertNextNodeId( traverser, "10" );
            this.assertNextNodeId( traverser, "11" );
            this.assertNextNodeId( traverser, "12" );
            this.assertNextNodeId( traverser, "13" );
            assertTrue( "Too many nodes returned from traversal", traverser
                .iterator().hasNext() == false );
        }
        catch ( java.util.NoSuchElementException nsee )
        {
            nsee.printStackTrace();
View Full Code Here

    public void testBruteDepthTraversal() throws Exception
    {
        Node root = this.buildIseTreePopulation();
        RelationshipType[] traversableRels = new RelationshipType[] {
            MyRelTypes.TEST, MyRelTypes.TEST_TRAVERSAL };
        Traverser traverser = root.traverse( DEPTH_FIRST,
            StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL,
            traversableRels[0], Direction.BOTH, traversableRels[1],
            Direction.BOTH );

        try
        {
            this.assertNodes( traverser, "1", "2", "3", "4", "5", "6", "7",
                    "8", "9", "10", "11", "12", "13", "14" );
            assertTrue( "Too many nodes returned from traversal", traverser
                .iterator().hasNext() == false );
        }
        catch ( java.util.NoSuchElementException nsee )
        {
            fail( "Too few nodes returned from traversal" );
View Full Code Here

TOP

Related Classes of org.neo4j.graphdb.Traverser

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.