private Object toRelationship(Object value, boolean virtual, Map<Long, Object> nodesCache) { Value internalValue = ((InternalEntity) value).asValue(); Relationship relationship = internalValue.asRelationship(); if (virtual) { VirtualNode start = (VirtualNode) nodesCache.getOrDefault(relationship.startNodeId(), new VirtualNode(relationship.startNodeId(), db)); VirtualNode end = (VirtualNode) nodesCache.getOrDefault(relationship.endNodeId(), new VirtualNode(relationship.endNodeId(), db)); VirtualRelationship virtualRelationship = new VirtualRelationship(relationship.id(), start, end, RelationshipType.withName(relationship.type()), relationship.asMap()); return virtualRelationship; } else return Util.map("entityType", internalValue.type().name(), "type", relationship.type(), "id", relationship.id(), "start", relationship.startNodeId(), "end", relationship.endNodeId(), "properties", relationship.asMap()); }
public Long startNodeId(Object relationship) { return ((Relationship) relationship).startNodeId(); }
public Long startNodeId(Object relationship) { return ((Relationship) relationship).startNodeId(); }
public Neo4jBoltRelationship(Relationship rel) { this.id = String.valueOf(rel.id()); this.types = Collections.singletonList(rel.type()); this.propertyContainer = new Neo4jBoltPropertyContainer(rel.asMap()); this.startNodeId = String.valueOf(rel.startNodeId()); this.endNodeId = String.valueOf(rel.endNodeId()); }
private static boolean isEndpoint( Node node, Relationship relationship ) { return node.id() == relationship.startNodeId() || node.id() == relationship.endNodeId(); }
@Nonnull default String pathAsString(@Nonnull Path path) { List<String> list = new ArrayList<>(path.length()); Node lastTraversed = path.start(); if (lastTraversed != null) { list.add(nodeAsString(lastTraversed)); for (Path.Segment segment : path) { Relationship relationship = segment.relationship(); if (relationship.startNodeId() == lastTraversed.id()) { list.add("-" + relationshipAsString(relationship) + "->"); } else { list.add("<-" + relationshipAsString(relationship) + "-"); } list.add(nodeAsString(segment.end())); lastTraversed = segment.end(); } } return list.stream().collect(Collectors.joining()); }
@Override public String toString() { return String.format( relationship.startNodeId() == start.id() ? "(%s)-[%s:%s]->(%s)" : "(%s)<-[%s:%s]-(%s)", start.id(), relationship.id(), relationship.type(), end.id() ); } }
public static RelationInfo fromRecordValue(Value val) { if (val instanceof ListValue) return RelationInfo.fromRecordValue(((ListValue)val).get(0)); RelationInfo ret = null; if (val != null) { String typName = val.type().name(); // must be: RELATIONSHIP if ("RELATIONSHIP".equals(typName)) { ret = new RelationInfo(); ret.startNodeId = val.asRelationship().startNodeId(); ret.endNodeId = val.asRelationship().endNodeId(); } } return ret; }
public static RelationInfo fromRecordValue(Value val) { if (val instanceof ListValue) return RelationInfo.fromRecordValue(((ListValue)val).get(0)); RelationInfo ret = null; if (val != null) { String typName = val.type().name(); // must be: RELATIONSHIP if ("RELATIONSHIP".equals(typName)) { ret = new RelationInfo(); ret.startNodeId = val.asRelationship().startNodeId(); ret.endNodeId = val.asRelationship().endNodeId(); } } return ret; }
when(relationship.startNodeId()).thenReturn(1l);
when(relationship.startNodeId()).thenReturn(1l).thenReturn(3l).thenReturn(3l);
when(relationship.startNodeId()).thenReturn(1l).thenReturn(3l);
when(r1.startNodeId()).thenReturn(2L); when(r1.type()).thenReturn("R1"); when(r1.asMap(anyObject())).thenReturn(Collections.emptyMap()); when(r2.startNodeId()).thenReturn(2L); when(r2.type()).thenReturn("R2"); when(r2.asMap(anyObject())).thenReturn(Collections.emptyMap());
@Test public void returnNodeAndRelationship() { Driver driver = GremlinDatabase.driver("//localhost:" + server.getPort()); try (Session session = driver.session()) { StatementResult result = session.run("CREATE (n1:Person {name: 'Marko'})-[r:knows {since:1999}]->(n2:Person)" + "RETURN n1,r,n2", parameters("message", "Hello")); Record record = result.single(); Node n1 = record.get("n1").asNode(); Relationship r = record.get("r").asRelationship(); Node n2 = record.get("n2").asNode(); assertThat(n1.hasLabel("Person")).isTrue(); assertThat(n1.get("name").asString()).isEqualTo("Marko"); assertThat(r.hasType("knows")).isTrue(); assertThat(r.startNodeId()).isEqualTo(n1.id()); assertThat(r.endNodeId()).isEqualTo(n2.id()); assertThat(r.get("since").asLong()).isEqualTo(1999L); assertThat(n2.hasLabel("Person")).isTrue(); } }