From 04b1eccab863a66314e69892d299d6e4f2ec7a22 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Tue, 7 Sep 2010 22:34:26 +0200 Subject: [PATCH] added finder for traversals, renamed finder methods to findXXX --- .../datastore/graph/neo4j/finder/Finder.java | 7 +++++-- .../neo4j/spi/Neo4jGraphPersistenceTest.java | 21 ++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/springframework/datastore/graph/neo4j/finder/Finder.java b/src/main/java/org/springframework/datastore/graph/neo4j/finder/Finder.java index c78ff4ad4..0e753c11a 100644 --- a/src/main/java/org/springframework/datastore/graph/neo4j/finder/Finder.java +++ b/src/main/java/org/springframework/datastore/graph/neo4j/finder/Finder.java @@ -54,7 +54,7 @@ public class Finder { return null; } } - public T getByIndex(String property, Object value) { + public T findByPropertyValue(String property, Object value) { try { final Node node = indexService.getSingleNode(property, value); if (node==null) return null; @@ -64,7 +64,7 @@ public class Finder { } } - public Iterable getAllByIndex(String property, Object value) { + public Iterable findAllByPropertyValue(String property, Object value) { try { final IndexHits nodes = indexService.getNodes(property, value); if (nodes==null) return Collections.emptyList(); @@ -77,7 +77,10 @@ public class Finder { } catch(NotFoundException e) { return null; } + } + public Iterable findAllByTraversal(N startNode,TraversalDescription traversalDescription) { + return (Iterable) startNode.find(clazz, traversalDescription); } } diff --git a/src/test/java/org/springframework/datastore/graph/neo4j/spi/Neo4jGraphPersistenceTest.java b/src/test/java/org/springframework/datastore/graph/neo4j/spi/Neo4jGraphPersistenceTest.java index ba8679c4d..849a76516 100644 --- a/src/test/java/org/springframework/datastore/graph/neo4j/spi/Neo4jGraphPersistenceTest.java +++ b/src/test/java/org/springframework/datastore/graph/neo4j/spi/Neo4jGraphPersistenceTest.java @@ -7,7 +7,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.neo4j.graphdb.*; -import org.neo4j.graphdb.traversal.PruneEvaluator; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.helpers.collection.IteratorUtil; import org.neo4j.index.IndexService; @@ -410,7 +409,7 @@ public class Neo4jGraphPersistenceTest { Group group = new Group(); group.setName("test"); final Finder finder = finderFactory.getFinderForClass(Group.class); - final Group found = finder.getByIndex("name", "test"); + final Group found = finder.findByPropertyValue("name", "test"); Assert.assertEquals(group,found); } @@ -422,7 +421,7 @@ public class Neo4jGraphPersistenceTest { Group group2 = new Group(); group2.setName("test"); final Finder finder = finderFactory.getFinderForClass(Group.class); - final Iterable found = finder.getAllByIndex("name", "test"); + final Iterable found = finder.findAllByPropertyValue("name", "test"); final Collection result = IteratorUtil.addToCollection(found.iterator(), new HashSet()); Assert.assertEquals(new HashSet(Arrays.asList(group,group2)), result); } @@ -441,4 +440,20 @@ public class Neo4jGraphPersistenceTest { } Assert.assertEquals(Collections.singleton(p),found); } + @Test + @Transactional + public void testTraverseFromGroupToPeopleWithFinder() { + final Finder finder = finderFactory.getFinderForClass(Person.class); + Person p=new Person("Michael",35); + Group group = new Group(); + group.setName("dev"); + group.addPerson(p); + final TraversalDescription traversalDescription = new TraversalDescriptionImpl().relationships(DynamicRelationshipType.withName("persons")).filter(Traversal.returnAllButStartNode()); + Iterable people=finder.findAllByTraversal(group, traversalDescription); + final HashSet found = new HashSet(); + for (Person person : people) { + found.add(person); + } + Assert.assertEquals(Collections.singleton(p),found); + } }