changeset 81:3be57c18c693

more fixing bugs with transactions thanks to neo4j 2 :-(
author casties
date Wed, 23 Jul 2014 15:09:54 +0200
parents 4724fc7b4733
children 0554e29069ec
files src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java
diffstat 1 files changed, 41 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java	Mon Jul 21 17:28:15 2014 +0200
+++ b/src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java	Wed Jul 23 15:09:54 2014 +0200
@@ -313,16 +313,19 @@
      */
     public List<Group> getGroupsForPersonNode(Node person) {
         ArrayList<Group> groups = new ArrayList<Group>();
-        Iterable<Relationship> rels = person.getRelationships(RelationTypes.MEMBER_OF);
-        for (Relationship rel : rels) {
-            Node groupNode = rel.getEndNode();
-            Actor group = createActorFromNode(groupNode);
-            // make sure we're getting a group
-            if (!(group instanceof Group)) {
-                logger.severe("target of MEMBER_OF is not GROUP! rel=" + rel);
-                continue;
-            }
-            groups.add((Group) group);
+        try (Transaction tx = graphDb.beginTx()) {
+        	Iterable<Relationship> rels = person.getRelationships(RelationTypes.MEMBER_OF);
+        	for (Relationship rel : rels) {
+        		Node groupNode = rel.getEndNode();
+        		Actor group = createActorFromNode(groupNode);
+        		// make sure we're getting a group
+        		if (!(group instanceof Group)) {
+        			logger.severe("target of MEMBER_OF is not GROUP! rel=" + rel);
+        			continue;
+        		}
+        		groups.add((Group) group);
+        	}
+        	tx.success();
         }
         return groups;
     }
@@ -363,16 +366,19 @@
     public List<Person> getMembersOfGroup(Group group) {
         ArrayList<Person> members = new ArrayList<Person>();
         Node gn = getActorNode(group);
-        Iterable<Relationship> rels = gn.getRelationships(RelationTypes.MEMBER_OF);
-        for (Relationship rel : rels) {
-            Node memberNode = rel.getStartNode();
-            Actor member = createActorFromNode(memberNode);
-            // make sure we're getting a group
-            if (!(member instanceof Person)) {
-                logger.severe("source of MEMBER_OF is not PERSON! rel=" + rel);
-                continue;
-            }
-            members.add((Person) member);
+        try (Transaction tx = graphDb.beginTx()) {
+        	Iterable<Relationship> rels = gn.getRelationships(RelationTypes.MEMBER_OF);
+        	for (Relationship rel : rels) {
+        		Node memberNode = rel.getStartNode();
+        		Actor member = createActorFromNode(memberNode);
+        		// make sure we're getting a group
+        		if (!(member instanceof Person)) {
+        			logger.severe("source of MEMBER_OF is not PERSON! rel=" + rel);
+        			continue;
+        		}
+        		members.add((Person) member);
+        	}
+        	tx.success();
         }
         return members;
     }
@@ -403,17 +409,17 @@
     public void deleteGroupMember(Group group, Person member) {
         Node gn = getActorNode(group);
         Node pn = getActorNode(member);
-        Iterable<Relationship> rels = gn.getRelationships(RelationTypes.MEMBER_OF);
-        for (Relationship rel : rels) {
-            Node mn = rel.getStartNode();
-            if (mn.equals(pn)) {
-                try (Transaction tx = graphDb.beginTx()) {
+        try (Transaction tx = graphDb.beginTx()) {
+        	Iterable<Relationship> rels = gn.getRelationships(RelationTypes.MEMBER_OF);
+        	for (Relationship rel : rels) {
+        		Node mn = rel.getStartNode();
+        		if (mn.equals(pn)) {
                     rel.delete();
-                    tx.success();
                 }
                 // there should be only one
                 break;
             }
+            tx.success();
         }
     }
 
@@ -473,21 +479,21 @@
         } else {
             idx = getNodeIndex(NodeTypes.PERSON);
         }
-        Node actorNode = idx.get("uri", uri).getSingle();
-        if (actorNode != null) {
-            // delete relations
-            try (Transaction tx = graphDb.beginTx()) {
-                for (Relationship rel : actorNode.getRelationships()) {
-                    rel.delete();
-                }
-                if (!actorNode.hasRelationship()) {
+        try (Transaction tx = graphDb.beginTx()) {
+        	Node actorNode = idx.get("uri", uri).getSingle();
+        	if (actorNode != null) {
+        		// delete relations
+            	for (Relationship rel : actorNode.getRelationships()) {
+            		rel.delete();
+            	}
+            	if (!actorNode.hasRelationship()) {
                     // this shouldn't happen
                     deleteNode(actorNode);
                 } else {
                     logger.severe("deleteActor: unable to delete: Node still has relations.");
                 }
-                tx.success();
             }
+            tx.success();
         }
     }