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 endNodeId(Object relationship) { return ((Relationship) relationship).endNodeId(); }
public Long endNodeId(Object relationship) { return ((Relationship) relationship).endNodeId(); }
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(); }
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; }
@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(); } }