All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.neo4j.ogm.drivers.bolt.response.BoltEntityAdapter Maven / Gradle / Ivy

Go to download

Neo4j-OGM transport that uses the official Java-Driver to connect to Neo4j via the Bolt-protocol.

There is a newer version: 4.0.14
Show newest version
/*
 * Copyright (c) 2002-2016 "Neo Technology,"
 * Network Engine for Objects in Lund AB [http://neotechnology.com]
 *
 * This product is licensed to you under the Apache License, Version 2.0 (the "License").
 * You may not use this product except in compliance with the License.
 *
 * This product may include a number of subcomponents with
 * separate copyright notices and license terms. Your use of the source
 * code for these subcomponents is subject to the terms and
 *  conditions of the subcomponent's license, as noted in the LICENSE file.
 */
package org.neo4j.ogm.drivers.bolt.response;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.neo4j.driver.v1.types.Entity;
import org.neo4j.driver.v1.types.Node;
import org.neo4j.driver.v1.types.Path;
import org.neo4j.driver.v1.types.Relationship;

/**
 * Helper methods for Bolt entities
 *
 * @author Luanne Misquitta
 */
public class BoltEntityAdapter {

	public boolean isPath(Object value) {
		return value instanceof Path;
	}

	public boolean isNode(Object value) {
		return value instanceof Node;
	}

	public boolean isRelationship(Object value) {
		return value instanceof Relationship;
	}

	public long nodeId(Object node) {
		return ((Node) node).id();
	}

	public List labels(Object value) {
		Node node = (Node) value;
		List labels = new ArrayList<>();
		for (String label : node.labels()) {
			labels.add(label);
		}
		return labels;
	}

	public long relationshipId(Object relationship) {
		return ((Relationship) relationship).id();
	}

	public String relationshipType(Object relationship) {
		return ((Relationship) relationship).type();
	}

	public Long startNodeId(Object relationship) {
		return ((Relationship) relationship).startNodeId();
	}

	public Long endNodeId(Object relationship) {
		return ((Relationship) relationship).endNodeId();
	}

	public Map properties(Object container) {
		return ((Entity) container).asMap();
	}

	public List nodesInPath(Object pathValue) {
		Path path = (Path) pathValue;
		List nodes = new ArrayList<>(path.length());
		for (Node node : path.nodes()) {
			nodes.add(node);
		}
		return nodes;
	}

	public List relsInPath(Object pathValue) {
		Path path = (Path) pathValue;
		List rels = new ArrayList<>(path.length());
		for (Relationship rel : path.relationships()) {
			rels.add(rel);
		}
		return rels;
	}
}