Package org.neo4j.graphdb.traversal

Examples of org.neo4j.graphdb.traversal.TraversalDescription


   */
  private class NodeProxyIterator implements Iterator<Node> {
    Iterator<Path> traverser;

    NodeProxyIterator(Node first) {
            TraversalDescription traversalDescription =  first.getGraphDatabase().traversalDescription().relationships(OSMRelation.NEXT,
                    Direction.OUTGOING);
            traverser = createTraverserInBackwardsCompatibleWay( traversalDescription, first ).iterator();
    }
View Full Code Here


    }

    @Test @Transactional
    public void testTraverse() throws Exception {
//        final TraversalDescription traversalDescription = neo4jOperations.traversalDescription().relationships(DynamicRelationshipType.withName("knows"), Direction.OUTGOING).filter(Traversal.returnAllButStartNode());
        final TraversalDescription traversalDescription = neo4jOperations.traversalDescription().relationships(DynamicRelationshipType.withName("knows"), Direction.OUTGOING).evaluator(Evaluators.excludeStartPosition());
        final Person knows = neo4jOperations.traverse(testTeam.michael, traversalDescription).to(Person.class).single();
        assertEquals(testTeam.david.getName(), knows.getName());
    }
View Full Code Here

  @Override
  public Object revert(Object source) {

    final AbstractNode startNode         = (AbstractNode) currentObject;
    final TraversalDescription localDesc = Traversal.description().depthFirst().uniqueness(Uniqueness.NODE_PATH).relationships(RelType.CONTAINS, Direction.INCOMING);
    final String uuidPropertyName        = GraphObject.id.dbName();

    Set<String> treeAddresses = new HashSet<>();

    // do traversal
    for (Path path : localDesc.traverse(startNode.getNode())) {

      String pageId       = (String) path.endNode().getProperty(uuidPropertyName);
      String treeAddress  = "";
      boolean isConnected = false;
View Full Code Here

  }

  @Override
  public List<T> getProperty(SecurityContext securityContext, GraphObject obj, boolean applyConverter, final org.neo4j.helpers.Predicate<GraphObject> predicate) {
   
    TraversalDescription description = traverserInterface.getTraversalDescription(securityContext);
    AbstractNode currentNode = (AbstractNode)obj;

    Comparator<AbstractNode> comparator = traverserInterface.getComparator();
    List<T> nodes = getTraversalResults(securityContext, comparator, description, currentNode);
View Full Code Here


  @Override
  public TraversalDescription getTraversalDescription(final SecurityContext securityContext) {

    TraversalDescription description = StructrApp.getInstance(securityContext).getGraphDatabaseService().traversalDescription()
      .breadthFirst()
      .uniqueness(getUniqueness());

    // set evaluators
    for (Evaluator evaluator : getEvaluators()) {
      description = description.evaluator(evaluator);
    }
   
    // add predicates as evaluators
    for (final Predicate<Node> predicate : predicates) {
      description = description.evaluator(new Evaluator() {

        @Override
        public Evaluation evaluate(Path path) {
          Node endNode = path.endNode();
          if (predicate.evaluate(securityContext, endNode)) {
            return Evaluation.EXCLUDE_AND_PRUNE;
          }
         
          return Evaluation.INCLUDE_AND_CONTINUE;
        }
      });
    }
   
    // set rel type and direction
    int numRels = relTypes.size();
    for (int i=0; i<numRels; i++) {
      RelationshipType relType = relTypes.get(i);
      Direction direction = directions.get(i);
      description = description.relationships(relType, direction);
    }

    return description;
  }
View Full Code Here

  }

  @Override
  public TraversalDescription getTraversalDescription(final SecurityContext securityContext) {

    TraversalDescription description = StructrApp.getInstance(securityContext).getGraphDatabaseService().traversalDescription()
      .breadthFirst()
      .uniqueness(Uniqueness.NODE_RECENT)
      .evaluator(Evaluators.excludeStartPosition())
      .evaluator(new Evaluator() {

        @Override
        public Evaluation evaluate(Path path) {

          // prune path at depth maxDepth
          if(path.length() > maxDepth) {
            return Evaluation.EXCLUDE_AND_PRUNE;
          }

          Node endNode = path.endNode();

          if(!predicates.isEmpty()) {

            boolean include = true;

            for(Predicate<Node> predicate : predicates) {

              try {
                include &= predicate.evaluate(securityContext, endNode);

              } catch(PruneException p) {

                // catch PruneException to stop
                // evaluating this specific path
                // immediately.
                return Evaluation.EXCLUDE_AND_PRUNE;
              }
            }

            if(include) {

              return Evaluation.INCLUDE_AND_CONTINUE;
            }


          } else {

            logger.log(Level.WARNING, "No predicates to evaluate, this collector will not return any nodes!");
          }

          // node has wrong type: exclude and continue traversal
          return Evaluation.EXCLUDE_AND_CONTINUE;
        }

      })
    ;

    int numRels = relTypes.size();
    for(int i=0; i<numRels; i++) {
      RelationshipType relType = relTypes.get(i);
      Direction direction = directions.get(i);
      description = description.relationships(relType, direction);
    }

    return description;
  }
View Full Code Here

  }

  @Override
  public T getProperty(SecurityContext securityContext, GraphObject obj, boolean applyConverter, final org.neo4j.helpers.Predicate<GraphObject> predicate) {
   
    TraversalDescription description = traverserInterface.getTraversalDescription(securityContext);
    AbstractNode currentNode = (AbstractNode)obj;

    Comparator<T> comparator = traverserInterface.getComparator();
    List<T> nodes = getTraversalResults(securityContext, comparator, description, currentNode);
View Full Code Here

  }

  protected Node addGeomNode(Geometry geom, String[] fieldsName, Object[] fields) {
    Node geomNode = super.addGeomNode(geom, fieldsName, fields);
    if (previousGeomNode == null) {
      TraversalDescription traversalDescription = Traversal.description().order(Traversal.postorderBreadthFirst())
          .relationships(OrderedRelationshipTypes.GEOMETRIES, Direction.INCOMING)
          .relationships(OrderedRelationshipTypes.NEXT_GEOM, Direction.INCOMING)
          .evaluator(Evaluators.excludeStartPosition());
      for (Node node : createTraverserInBackwardsCompatibleWay(traversalDescription, layerNode).nodes()) {
        previousGeomNode = node;
View Full Code Here

  @Override
  protected void extract(GeoPipeFlow pipeFlow) {
    Node geomNode = pipeFlow.getRecord().getGeomNode();
    Node node = geomNode.getSingleRelationship(OSMRelation.GEOM, Direction.INCOMING).getStartNode();

    TraversalDescription td = Traversal
      .description()
      .evaluator(new Evaluator() {
                @Override
                public Evaluation evaluate(Path path) {
                    if (path.length() > 0
View Full Code Here

                        assertTrue(transactionData.mutationsOccurred());

                        Map<Long, Change<Relationship>> changed = changesToMap(transactionData.getAllChangedRelationships());
                        Relationship previous = changed.entrySet().iterator().next().getValue().getPrevious();

                        TraversalDescription traversalDescription = new MonoDirectionalTraversalDescription()
                                .relationships(withName("R1"), OUTGOING)
                                .relationships(withName("R2"), OUTGOING)
                                .depthFirst()
                                .uniqueness(Uniqueness.NODE_GLOBAL)
                                .evaluator(Evaluators.toDepth(3));

                        assertEquals(4, count(traversalDescription.traverse(previous.getEndNode()).nodes()));
                    }
                }
        );
    }
View Full Code Here

TOP

Related Classes of org.neo4j.graphdb.traversal.TraversalDescription

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.