Mercurial > hg > AnnotationManagerN4J
comparison src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java @ 81:3be57c18c693
more fixing bugs with transactions thanks to neo4j 2 :-(
author | casties |
---|---|
date | Wed, 23 Jul 2014 15:09:54 +0200 |
parents | 4e2dc67997a0 |
children | 5a764c625290 |
comparison
equal
deleted
inserted
replaced
80:4724fc7b4733 | 81:3be57c18c693 |
---|---|
311 * @param person | 311 * @param person |
312 * @return | 312 * @return |
313 */ | 313 */ |
314 public List<Group> getGroupsForPersonNode(Node person) { | 314 public List<Group> getGroupsForPersonNode(Node person) { |
315 ArrayList<Group> groups = new ArrayList<Group>(); | 315 ArrayList<Group> groups = new ArrayList<Group>(); |
316 Iterable<Relationship> rels = person.getRelationships(RelationTypes.MEMBER_OF); | 316 try (Transaction tx = graphDb.beginTx()) { |
317 for (Relationship rel : rels) { | 317 Iterable<Relationship> rels = person.getRelationships(RelationTypes.MEMBER_OF); |
318 Node groupNode = rel.getEndNode(); | 318 for (Relationship rel : rels) { |
319 Actor group = createActorFromNode(groupNode); | 319 Node groupNode = rel.getEndNode(); |
320 // make sure we're getting a group | 320 Actor group = createActorFromNode(groupNode); |
321 if (!(group instanceof Group)) { | 321 // make sure we're getting a group |
322 logger.severe("target of MEMBER_OF is not GROUP! rel=" + rel); | 322 if (!(group instanceof Group)) { |
323 continue; | 323 logger.severe("target of MEMBER_OF is not GROUP! rel=" + rel); |
324 } | 324 continue; |
325 groups.add((Group) group); | 325 } |
326 groups.add((Group) group); | |
327 } | |
328 tx.success(); | |
326 } | 329 } |
327 return groups; | 330 return groups; |
328 } | 331 } |
329 | 332 |
330 /** | 333 /** |
361 * @return | 364 * @return |
362 */ | 365 */ |
363 public List<Person> getMembersOfGroup(Group group) { | 366 public List<Person> getMembersOfGroup(Group group) { |
364 ArrayList<Person> members = new ArrayList<Person>(); | 367 ArrayList<Person> members = new ArrayList<Person>(); |
365 Node gn = getActorNode(group); | 368 Node gn = getActorNode(group); |
366 Iterable<Relationship> rels = gn.getRelationships(RelationTypes.MEMBER_OF); | 369 try (Transaction tx = graphDb.beginTx()) { |
367 for (Relationship rel : rels) { | 370 Iterable<Relationship> rels = gn.getRelationships(RelationTypes.MEMBER_OF); |
368 Node memberNode = rel.getStartNode(); | 371 for (Relationship rel : rels) { |
369 Actor member = createActorFromNode(memberNode); | 372 Node memberNode = rel.getStartNode(); |
370 // make sure we're getting a group | 373 Actor member = createActorFromNode(memberNode); |
371 if (!(member instanceof Person)) { | 374 // make sure we're getting a group |
372 logger.severe("source of MEMBER_OF is not PERSON! rel=" + rel); | 375 if (!(member instanceof Person)) { |
373 continue; | 376 logger.severe("source of MEMBER_OF is not PERSON! rel=" + rel); |
374 } | 377 continue; |
375 members.add((Person) member); | 378 } |
379 members.add((Person) member); | |
380 } | |
381 tx.success(); | |
376 } | 382 } |
377 return members; | 383 return members; |
378 } | 384 } |
379 | 385 |
380 /** | 386 /** |
401 * @param member | 407 * @param member |
402 */ | 408 */ |
403 public void deleteGroupMember(Group group, Person member) { | 409 public void deleteGroupMember(Group group, Person member) { |
404 Node gn = getActorNode(group); | 410 Node gn = getActorNode(group); |
405 Node pn = getActorNode(member); | 411 Node pn = getActorNode(member); |
406 Iterable<Relationship> rels = gn.getRelationships(RelationTypes.MEMBER_OF); | 412 try (Transaction tx = graphDb.beginTx()) { |
407 for (Relationship rel : rels) { | 413 Iterable<Relationship> rels = gn.getRelationships(RelationTypes.MEMBER_OF); |
408 Node mn = rel.getStartNode(); | 414 for (Relationship rel : rels) { |
409 if (mn.equals(pn)) { | 415 Node mn = rel.getStartNode(); |
410 try (Transaction tx = graphDb.beginTx()) { | 416 if (mn.equals(pn)) { |
411 rel.delete(); | 417 rel.delete(); |
412 tx.success(); | |
413 } | 418 } |
414 // there should be only one | 419 // there should be only one |
415 break; | 420 break; |
416 } | 421 } |
422 tx.success(); | |
417 } | 423 } |
418 } | 424 } |
419 | 425 |
420 /** | 426 /** |
421 * Returns the stored Actor matching the given one. | 427 * Returns the stored Actor matching the given one. |
471 if (actor.isGroup()) { | 477 if (actor.isGroup()) { |
472 idx = getNodeIndex(NodeTypes.GROUP); | 478 idx = getNodeIndex(NodeTypes.GROUP); |
473 } else { | 479 } else { |
474 idx = getNodeIndex(NodeTypes.PERSON); | 480 idx = getNodeIndex(NodeTypes.PERSON); |
475 } | 481 } |
476 Node actorNode = idx.get("uri", uri).getSingle(); | 482 try (Transaction tx = graphDb.beginTx()) { |
477 if (actorNode != null) { | 483 Node actorNode = idx.get("uri", uri).getSingle(); |
478 // delete relations | 484 if (actorNode != null) { |
479 try (Transaction tx = graphDb.beginTx()) { | 485 // delete relations |
480 for (Relationship rel : actorNode.getRelationships()) { | 486 for (Relationship rel : actorNode.getRelationships()) { |
481 rel.delete(); | 487 rel.delete(); |
482 } | 488 } |
483 if (!actorNode.hasRelationship()) { | 489 if (!actorNode.hasRelationship()) { |
484 // this shouldn't happen | 490 // this shouldn't happen |
485 deleteNode(actorNode); | 491 deleteNode(actorNode); |
486 } else { | 492 } else { |
487 logger.severe("deleteActor: unable to delete: Node still has relations."); | 493 logger.severe("deleteActor: unable to delete: Node still has relations."); |
488 } | 494 } |
489 tx.success(); | 495 } |
490 } | 496 tx.success(); |
491 } | 497 } |
492 } | 498 } |
493 | 499 |
494 /** | 500 /** |
495 * Returns the Annotation with the given id. | 501 * Returns the Annotation with the given id. |