From 2c2e16e021e4800151461d42c552f937f5b5815c Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Tue, 11 Jan 2011 13:39:36 +0100 Subject: [PATCH] moved index name out and added @Indexed.name --- ...ePropertyFieldAccessorListenerFactory.java | 19 +++++++++----- .../PartialNodeEntityStateAccessors.java | 5 ++-- .../data/graph/neo4j/finder/Finder.java | 4 +-- .../neo4j/support/GraphDatabaseContext.java | 26 +++++++++---------- .../graph/neo4j/support/node/Neo4jHelper.java | 2 +- .../support/Neo4jGraphPersistenceTest.java | 6 ++--- 6 files changed, 32 insertions(+), 30 deletions(-) diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/IndexingNodePropertyFieldAccessorListenerFactory.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/IndexingNodePropertyFieldAccessorListenerFactory.java index 86737eb93..2091a5aa7 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/IndexingNodePropertyFieldAccessorListenerFactory.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/IndexingNodePropertyFieldAccessorListenerFactory.java @@ -59,10 +59,15 @@ class IndexingNodePropertyFieldAccessorListenerFactory implements FieldAccessorL @Override public FieldAccessListener forField(final Field field) { - return new IndexingNodePropertyFieldAccessorListener(field, graphDatabaseContext); + return new IndexingNodePropertyFieldAccessorListener(field, graphDatabaseContext, getIndexName(field)); } - /** + private String getIndexName(Field field) { + Indexed indexed = field.getAnnotation(Indexed.class); + return indexed != null ? indexed.name() : null; + } + + /** * @author Michael Hunger * @since 12.09.2010 */ @@ -72,16 +77,18 @@ class IndexingNodePropertyFieldAccessorListenerFactory implements FieldAccessorL protected final String indexKey; private final GraphDatabaseContext graphDatabaseContext; + private String indexName; - public IndexingNodePropertyFieldAccessorListener(final Field field, final GraphDatabaseContext graphDatabaseContext) { + public IndexingNodePropertyFieldAccessorListener(final Field field, final GraphDatabaseContext graphDatabaseContext, final String indexName) { this.indexKey = DelegatingFieldAccessorFactory.getNeo4jPropertyName(field); this.graphDatabaseContext = graphDatabaseContext; - } + this.indexName = indexName; + } @Override public void valueChanged(final NodeBacked nodeBacked, final Object oldVal, final Object newVal) { - if (newVal==null) graphDatabaseContext.removeIndex(nodeBacked.getUnderlyingState(), indexKey ); - else graphDatabaseContext.index(nodeBacked.getUnderlyingState(), indexKey, newVal.toString()); + if (newVal==null) graphDatabaseContext.removeIndex(indexName, nodeBacked.getUnderlyingState(), indexKey); + else graphDatabaseContext.index(indexName, nodeBacked.getUnderlyingState(), indexKey, newVal.toString()); } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/PartialNodeEntityStateAccessors.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/PartialNodeEntityStateAccessors.java index 84bfb9898..7ac4da1ce 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/PartialNodeEntityStateAccessors.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/fieldaccess/PartialNodeEntityStateAccessors.java @@ -18,7 +18,6 @@ package org.springframework.data.graph.neo4j.fieldaccess; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.NotInTransactionException; -import org.springframework.core.convert.ConversionService; import org.springframework.dao.InvalidDataAccessResourceUsageException; import org.springframework.data.graph.annotation.GraphProperty; import org.springframework.data.graph.annotation.RelatedTo; @@ -108,7 +107,7 @@ public class PartialNodeEntityStateAccessors extends final Object id = getId(entity,type); if (id == null) return; final String foreignId = createForeignId(id); - Node node = graphDatabaseContext.getSingleIndexedNode(FOREIGN_ID, foreignId); + Node node = graphDatabaseContext.getSingleIndexedNode("node", FOREIGN_ID, foreignId); if (node == null) { node = graphDatabaseContext.createNode(); persistForeignId(node, id); @@ -129,7 +128,7 @@ public class PartialNodeEntityStateAccessors extends if (!node.hasProperty(FOREIGN_ID) && id != null) { final String foreignId = createForeignId(id); node.setProperty(FOREIGN_ID, id); - graphDatabaseContext.index(node, FOREIGN_ID, foreignId); + graphDatabaseContext.index("node", node, FOREIGN_ID, foreignId); } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/finder/Finder.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/finder/Finder.java index 58761633c..9110a7977 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/finder/Finder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/finder/Finder.java @@ -80,7 +80,7 @@ public class Finder { */ public T findByPropertyValue(final String property, final Object value) { try { - final Node node = graphDatabaseContext.getSingleIndexedNode(property, value); + final Node node = graphDatabaseContext.getSingleIndexedNode("node", property, value); if (node == null) return null; return graphDatabaseContext.createEntityFromState(node, clazz); } catch (NotFoundException e) { @@ -97,7 +97,7 @@ public class Finder { */ public Iterable findAllByPropertyValue(final String property, final Object value) { try { - final IndexHits nodes = graphDatabaseContext.getIndexedNodes(property, value); + final IndexHits nodes = graphDatabaseContext.getIndexedNodes("node", property, value); if (nodes == null) return Collections.emptyList(); return new IterableWrapper(nodes) { @Override diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/GraphDatabaseContext.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/GraphDatabaseContext.java index 47c496989..ddb0ede6b 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/GraphDatabaseContext.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/GraphDatabaseContext.java @@ -53,8 +53,6 @@ public class GraphDatabaseContext { public EntityInstantiator relationshipEntityInstantiator; - private IndexManager indexManager; - private ConversionService conversionService; private NodeTypeStrategy nodeTypeStrategy; @@ -117,16 +115,16 @@ public class GraphDatabaseContext { private IndexManager getIndexManager() { return graphDatabaseService.index(); } - public IndexHits getIndexedNodes(final String property, final Object value) { - return getNodeIndex().get(property, value.toString()); + public IndexHits getIndexedNodes(final String indexName, final String property, final Object value) { + return getNodeIndex(indexName).get(property, value.toString()); } - private Index getNodeIndex() { - return getIndexManager().forNodes("node"); + private Index getNodeIndex(final String indexName) { + return getIndexManager().forNodes(indexName); } - public Node getSingleIndexedNode(final String property, final Object value) { - IndexHits indexHits = getIndexedNodes(property, value); + public Node getSingleIndexedNode(final String indexName, final String property, final Object value) { + IndexHits indexHits = getIndexedNodes(indexName, property, value); return indexHits.hasNext() ? indexHits.next() : null; } @@ -172,16 +170,16 @@ public class GraphDatabaseContext { } } - public void removeIndex(final Node node, final String propName) { - getNodeIndex().remove(node, propName, null); + public void removeIndex(final String indexName, final Node node, final String propName) { + getNodeIndex(indexName).remove(node, propName, null); } - public void removeIndex(final String propName) { - removeIndex(null,propName); + public void removeIndex(final String indexName, final String propName) { + removeIndex(indexName, null,propName); } - public void index(final Node node, final String propName, final Object newVal) { - getNodeIndex().add(node, propName, newVal.toString()); + public void index(final String indexName, final Node node, final String propName, final Object newVal) { + getNodeIndex(indexName).add(node, propName, newVal.toString()); } public boolean canConvert(final Class from, final Class to) { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/node/Neo4jHelper.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/node/Neo4jHelper.java index 2e6f7a605..56d5ff84f 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/node/Neo4jHelper.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/node/Neo4jHelper.java @@ -33,7 +33,7 @@ public abstract class Neo4jHelper { } } for (String indexField : indexFieldsToRemove) { - graphDatabaseContext.removeIndex(indexField); + graphDatabaseContext.removeIndex("node", indexField); } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest.java index 84ae97007..1519ea7cb 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest.java @@ -10,7 +10,6 @@ import org.junit.runner.RunWith; import org.neo4j.graphdb.*; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.helpers.collection.IteratorUtil; -import org.neo4j.index.IndexService; import org.neo4j.kernel.Traversal; import org.neo4j.kernel.impl.traversal.TraversalDescriptionImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -18,7 +17,6 @@ import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.graph.neo4j.*; import org.springframework.data.graph.neo4j.finder.Finder; import org.springframework.data.graph.neo4j.finder.FinderFactory; -import org.springframework.data.graph.neo4j.support.GraphDatabaseContext; import org.springframework.data.graph.neo4j.support.node.Neo4jHelper; import org.springframework.data.graph.neo4j.Car; import org.springframework.data.graph.neo4j.Friendship; @@ -432,9 +430,9 @@ public class Neo4jGraphPersistenceTest { Group group = new Group(); group.setName("test"); final Finder finder = finderFactory.getFinderForClass(Group.class); - graphDatabaseContext.removeIndex(group.getUnderlyingState(), "name"); + graphDatabaseContext.removeIndex("node", group.getUnderlyingState(), "name"); final Group found = finder.findByPropertyValue("name", "test"); - assertNull("Group.name removed from index",found); + assertNull("Group.name removed from index", found); } @Test