package esl.cuenet.ranking.network; import esl.cuenet.ranking.TypedEdge; import esl.cuenet.ranking.URINode; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Relationship; import java.util.ArrayList; import java.util.List; public class NeoURINode implements URINode { Node node = null; private List<TypedEdge> outgoingEdges = new ArrayList<TypedEdge>(10); public NeoURINode(Node node) { this.node = node; for (Relationship rel: this.node.getRelationships(Direction.BOTH)) outgoingEdges.add(new NeoTypedEdge(rel)); NeoCache.getInstance().putNode(node, this); } @Override public long getId() { return node.getId(); } @Override public TypedEdge createEdgeTo(URINode uriNode) { Relationship rel = this.node.createRelationshipTo(((NeoURINode)uriNode).node, NeoRelationships.BLANK); TypedEdge edge = new NeoTypedEdge(rel); outgoingEdges.add(edge); return edge; } @Override public boolean hasProperty(String key) { return node.hasProperty(key); } @Override public void setProperty(String key, Object value) { node.setProperty(key, value); } @Override public Object getProperty(String key) { if (node.hasProperty(key)) return node.getProperty(key); return null; } @Override public Iterable<TypedEdge> getAllRelationships() { return outgoingEdges; } }