@Override public Neo4jEdge next() { return new Neo4jEdge(this.relationshipIterator.next(), graph); } };
@Override public Vertex inVertex() { return new Neo4jVertex(this.getBaseEdge().end(), this.graph); }
@Override public Map<String, T> next() { return this.iterator.next().entrySet().stream().collect(Collectors.toMap( Map.Entry::getKey, entry -> { final T val = entry.getValue(); if (Neo4jNode.class.isAssignableFrom(val.getClass())) { return (T) new Neo4jVertex((Neo4jNode) val, this.graph); } else if (Neo4jRelationship.class.isAssignableFrom(val.getClass())) { return (T) new Neo4jEdge((Neo4jRelationship) val, this.graph); } else { return val; } })); } }
@Override public Vertex outVertex() { return new Neo4jVertex(this.getBaseEdge().start(), this.graph); }
return IteratorUtils.stream(this.getBaseGraph().allRelationships()) .filter(relationshipPredicate) .map(relationship -> (Edge) new Neo4jEdge(relationship, this)).iterator(); } else { ElementHelper.validateMixedElementIds(Edge.class, edgeIds); .map(relationship -> (Edge) new Neo4jEdge(relationship, this)).iterator();
@Override public String label() { this.graph.tx().readWrite(); return this.getBaseEdge().type(); }
@Override public Edge addEdge(final String label, final Vertex inVertex, final Object... keyValues) { if (null == inVertex) throw Graph.Exceptions.argumentCanNotBeNull("inVertex"); ElementHelper.validateLabel(label); ElementHelper.legalPropertyKeyValueArray(keyValues); if (ElementHelper.getIdValue(keyValues).isPresent()) throw Edge.Exceptions.userSuppliedIdsNotSupported(); this.graph.tx().readWrite(); final Neo4jNode node = (Neo4jNode) this.baseElement; final Neo4jEdge edge = new Neo4jEdge(node.connectTo(((Neo4jVertex) inVertex).getBaseVertex(), label), this.graph); ElementHelper.attachProperties(edge, keyValues); return edge; }
@Override public Iterator<Vertex> vertices(final Direction direction) { this.graph.tx().readWrite(); switch (direction) { case OUT: return IteratorUtils.of(new Neo4jVertex(this.getBaseEdge().start(), this.graph)); case IN: return IteratorUtils.of(new Neo4jVertex(this.getBaseEdge().end(), this.graph)); default: return IteratorUtils.of(new Neo4jVertex(this.getBaseEdge().start(), this.graph), new Neo4jVertex(this.getBaseEdge().end(), this.graph)); } }
@Override public Iterator<Edge> edges(final Direction direction, final String... edgeLabels) { this.graph.tx().readWrite(); return new Iterator<Edge>() { final Iterator<Neo4jRelationship> relationshipIterator = IteratorUtils.filter(0 == edgeLabels.length ? BOTH == direction ? IteratorUtils.concat(getBaseVertex().relationships(Neo4jHelper.mapDirection(OUT)).iterator(), getBaseVertex().relationships(Neo4jHelper.mapDirection(IN)).iterator()) : getBaseVertex().relationships(Neo4jHelper.mapDirection(direction)).iterator() : BOTH == direction ? IteratorUtils.concat(getBaseVertex().relationships(Neo4jHelper.mapDirection(OUT), (edgeLabels)).iterator(), getBaseVertex().relationships(Neo4jHelper.mapDirection(IN), (edgeLabels)).iterator()) : getBaseVertex().relationships(Neo4jHelper.mapDirection(direction), (edgeLabels)).iterator(), graph.trait.getRelationshipPredicate()); @Override public boolean hasNext() { return this.relationshipIterator.hasNext(); } @Override public Neo4jEdge next() { return new Neo4jEdge(this.relationshipIterator.next(), graph); } }; }
@Override public Vertex inVertex() { return new Neo4jVertex(this.getBaseEdge().end(), this.graph); }
@Override public Neo4jEdge next() { return new Neo4jEdge(this.relationshipIterator.next(), graph); } };
@Override public Vertex outVertex() { return new Neo4jVertex(this.getBaseEdge().start(), this.graph); }
@Override public Map<String, T> next() { return this.iterator.next().entrySet().stream().collect(Collectors.toMap( Map.Entry::getKey, entry -> { final T val = entry.getValue(); if (Neo4jNode.class.isAssignableFrom(val.getClass())) { return (T) new Neo4jVertex((Neo4jNode) val, this.graph); } else if (Neo4jRelationship.class.isAssignableFrom(val.getClass())) { return (T) new Neo4jEdge((Neo4jRelationship) val, this.graph); } else { return val; } })); } }
@Override public String label() { this.graph.tx().readWrite(); return this.getBaseEdge().type(); }
return IteratorUtils.stream(this.getBaseGraph().allRelationships()) .filter(relationshipPredicate) .map(relationship -> (Edge) new Neo4jEdge(relationship, this)).iterator(); } else { ElementHelper.validateMixedElementIds(Edge.class, edgeIds); .map(relationship -> (Edge) new Neo4jEdge(relationship, this)).iterator();
@Override public Iterator<Vertex> vertices(final Direction direction) { this.graph.tx().readWrite(); switch (direction) { case OUT: return IteratorUtils.of(new Neo4jVertex(this.getBaseEdge().start(), this.graph)); case IN: return IteratorUtils.of(new Neo4jVertex(this.getBaseEdge().end(), this.graph)); default: return IteratorUtils.of(new Neo4jVertex(this.getBaseEdge().start(), this.graph), new Neo4jVertex(this.getBaseEdge().end(), this.graph)); } }
@Override public Edge addEdge(final String label, final Vertex inVertex, final Object... keyValues) { if (null == inVertex) throw Graph.Exceptions.argumentCanNotBeNull("inVertex"); ElementHelper.validateLabel(label); ElementHelper.legalPropertyKeyValueArray(keyValues); if (ElementHelper.getIdValue(keyValues).isPresent()) throw Edge.Exceptions.userSuppliedIdsNotSupported(); this.graph.tx().readWrite(); final Neo4jNode node = (Neo4jNode) this.baseElement; final Neo4jEdge edge = new Neo4jEdge(node.connectTo(((Neo4jVertex) inVertex).getBaseVertex(), label), this.graph); ElementHelper.attachProperties(edge, keyValues); return edge; }
@Override public Iterator<Edge> edges(final Direction direction, final String... edgeLabels) { this.graph.tx().readWrite(); return new Iterator<Edge>() { final Iterator<Neo4jRelationship> relationshipIterator = IteratorUtils.filter(0 == edgeLabels.length ? BOTH == direction ? IteratorUtils.concat(getBaseVertex().relationships(Neo4jHelper.mapDirection(OUT)).iterator(), getBaseVertex().relationships(Neo4jHelper.mapDirection(IN)).iterator()) : getBaseVertex().relationships(Neo4jHelper.mapDirection(direction)).iterator() : BOTH == direction ? IteratorUtils.concat(getBaseVertex().relationships(Neo4jHelper.mapDirection(OUT), (edgeLabels)).iterator(), getBaseVertex().relationships(Neo4jHelper.mapDirection(IN), (edgeLabels)).iterator()) : getBaseVertex().relationships(Neo4jHelper.mapDirection(direction), (edgeLabels)).iterator(), graph.trait.getRelationshipPredicate()); @Override public boolean hasNext() { return this.relationshipIterator.hasNext(); } @Override public Neo4jEdge next() { return new Neo4jEdge(this.relationshipIterator.next(), graph); } }; }