Mercurial > hg > AnnotationManagerN4J
comparison src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java @ 67:875a97f8b8da
more quick fixes for neo4j 2.0.
| author | casties |
|---|---|
| date | Fri, 21 Feb 2014 22:19:23 +0100 |
| parents | 5b568de5ee0d |
| children | 39bc52f9b102 |
comparison
equal
deleted
inserted
replaced
| 66:5b568de5ee0d | 67:875a97f8b8da |
|---|---|
| 60 public AnnotationStore(GraphDatabaseService graphDb) { | 60 public AnnotationStore(GraphDatabaseService graphDb) { |
| 61 super(); | 61 super(); |
| 62 this.graphDb = graphDb; | 62 this.graphDb = graphDb; |
| 63 nodeIndexes = new ArrayList<Index<Node>>(5); | 63 nodeIndexes = new ArrayList<Index<Node>>(5); |
| 64 // List.set(enum.ordinal(), val) seems not to work. | 64 // List.set(enum.ordinal(), val) seems not to work. |
| 65 try ( Transaction tx = graphDb.beginTx() ) | 65 try ( Transaction tx = graphDb.beginTx() ) { |
| 66 { | |
| 67 nodeIndexes.add(NodeTypes.ANNOTATION.ordinal(), graphDb.index().forNodes("annotations")); | 66 nodeIndexes.add(NodeTypes.ANNOTATION.ordinal(), graphDb.index().forNodes("annotations")); |
| 68 nodeIndexes.add(NodeTypes.PERSON.ordinal(), graphDb.index().forNodes("persons")); | 67 nodeIndexes.add(NodeTypes.PERSON.ordinal(), graphDb.index().forNodes("persons")); |
| 69 nodeIndexes.add(NodeTypes.TARGET.ordinal(), graphDb.index().forNodes("targets")); | 68 nodeIndexes.add(NodeTypes.TARGET.ordinal(), graphDb.index().forNodes("targets")); |
| 70 nodeIndexes.add(NodeTypes.GROUP.ordinal(), graphDb.index().forNodes("groups")); | 69 nodeIndexes.add(NodeTypes.GROUP.ordinal(), graphDb.index().forNodes("groups")); |
| 71 nodeIndexes.add(NodeTypes.TAG.ordinal(), graphDb.index().forNodes("tags")); | 70 nodeIndexes.add(NodeTypes.TAG.ordinal(), graphDb.index().forNodes("tags")); |
| 118 * @param type | 117 * @param type |
| 119 * @return | 118 * @return |
| 120 */ | 119 */ |
| 121 public Node getNodeFromIndex(String key, String value, NodeTypes type) { | 120 public Node getNodeFromIndex(String key, String value, NodeTypes type) { |
| 122 if (key == null || value == null) return null; | 121 if (key == null || value == null) return null; |
| 123 Node node = getNodeIndex(type).get(key, value).getSingle(); | 122 Node node = null; |
| 123 try (Transaction tx = graphDb.beginTx()) { | |
| 124 node = getNodeIndex(type).get(key, value).getSingle(); | |
| 125 tx.success(); | |
| 126 } | |
| 124 return node; | 127 return node; |
| 125 } | 128 } |
| 126 | 129 |
| 127 /** | 130 /** |
| 128 * Returns list of Actors of given type (Group or Person). Key has to be | 131 * Returns list of Actors of given type (Group or Person). Key has to be |
| 309 */ | 312 */ |
| 310 public boolean isPersonInGroup(Person person, Group group) { | 313 public boolean isPersonInGroup(Person person, Group group) { |
| 311 Node pn = getPersonNodeByUri(person.getUriString()); | 314 Node pn = getPersonNodeByUri(person.getUriString()); |
| 312 if (pn == null) return false; | 315 if (pn == null) return false; |
| 313 // optimized version of getGroupsForPersonNode | 316 // optimized version of getGroupsForPersonNode |
| 317 try (Transaction tx = graphDb.beginTx()) { | |
| 314 Iterable<Relationship> rels = pn.getRelationships(RelationTypes.MEMBER_OF); | 318 Iterable<Relationship> rels = pn.getRelationships(RelationTypes.MEMBER_OF); |
| 315 for (Relationship rel : rels) { | 319 for (Relationship rel : rels) { |
| 316 Node gn = rel.getEndNode(); | 320 Node gn = rel.getEndNode(); |
| 317 if (gn.getProperty("uri", "").equals(group.getUriString()) || gn.getProperty("id", "").equals(group.getId())) { | 321 if (gn.getProperty("uri", "").equals(group.getUriString()) || gn.getProperty("id", "").equals(group.getId())) { |
| 322 tx.success(); | |
| 318 return true; | 323 return true; |
| 319 } | 324 } |
| 325 } | |
| 326 tx.success(); | |
| 320 } | 327 } |
| 321 return false; | 328 return false; |
| 322 } | 329 } |
| 323 | 330 |
| 324 /** | 331 /** |
| 472 * | 479 * |
| 473 * @param id | 480 * @param id |
| 474 * @return | 481 * @return |
| 475 */ | 482 */ |
| 476 public Annotation getAnnotationById(String id) { | 483 public Annotation getAnnotationById(String id) { |
| 484 Annotation annot = null; | |
| 485 try ( Transaction tx = graphDb.beginTx() ) { | |
| 477 Node annotNode = getNodeIndex(NodeTypes.ANNOTATION).get("id", id).getSingle(); | 486 Node annotNode = getNodeIndex(NodeTypes.ANNOTATION).get("id", id).getSingle(); |
| 478 Annotation annot = createAnnotationFromNode(annotNode); | 487 annot = createAnnotationFromNode(annotNode); |
| 488 tx.success(); | |
| 489 } | |
| 479 return annot; | 490 return annot; |
| 480 } | 491 } |
| 481 | 492 |
| 482 /** | 493 /** |
| 483 * Returns an Annotation object from an annotation-Node. | 494 * Returns an Annotation object from an annotation-Node. |
| 485 * @param annotNode | 496 * @param annotNode |
| 486 * @return | 497 * @return |
| 487 */ | 498 */ |
| 488 public Annotation createAnnotationFromNode(Node annotNode) { | 499 public Annotation createAnnotationFromNode(Node annotNode) { |
| 489 Annotation annot = new Annotation(); | 500 Annotation annot = new Annotation(); |
| 501 try ( Transaction tx = graphDb.beginTx() ) { | |
| 490 annot.setUri((String) annotNode.getProperty("id", null)); | 502 annot.setUri((String) annotNode.getProperty("id", null)); |
| 491 annot.setBodyText((String) annotNode.getProperty("bodyText", null)); | 503 annot.setBodyText((String) annotNode.getProperty("bodyText", null)); |
| 492 annot.setBodyUri((String) annotNode.getProperty("bodyUri", null)); | 504 annot.setBodyUri((String) annotNode.getProperty("bodyUri", null)); |
| 493 /* | 505 /* |
| 494 * get annotation target and resource from relation | 506 * get annotation target and resource from relation |
| 562 if (tag != null) { | 574 if (tag != null) { |
| 563 tags.add(tag); | 575 tags.add(tag); |
| 564 } | 576 } |
| 565 } | 577 } |
| 566 annot.setTags(tags); | 578 annot.setTags(tags); |
| 567 | 579 |
| 580 tx.success(); | |
| 581 } | |
| 568 return annot; | 582 return annot; |
| 569 } | 583 } |
| 570 | 584 |
| 571 /** | 585 /** |
| 572 * Returns an Actor object from a node. | 586 * Returns an Actor object from a node. |
| 811 List<Annotation> annotations = new ArrayList<Annotation>(); | 825 List<Annotation> annotations = new ArrayList<Annotation>(); |
| 812 if (targetUri != null) { | 826 if (targetUri != null) { |
| 813 // there should be only one | 827 // there should be only one |
| 814 Node target = getNodeFromIndex("uri", targetUri, NodeTypes.TARGET); | 828 Node target = getNodeFromIndex("uri", targetUri, NodeTypes.TARGET); |
| 815 if (target != null) { | 829 if (target != null) { |
| 830 try ( Transaction tx = graphDb.beginTx() ) { | |
| 816 Iterable<Relationship> relations = target.getRelationships(RelationTypes.ANNOTATES); | 831 Iterable<Relationship> relations = target.getRelationships(RelationTypes.ANNOTATES); |
| 817 for (Relationship relation : relations) { | 832 for (Relationship relation : relations) { |
| 818 Node ann = relation.getStartNode(); | 833 Node ann = relation.getStartNode(); |
| 819 if (ann.getProperty("TYPE", "").equals("ANNOTATION")) { | 834 if (ann.getProperty("TYPE", "").equals("ANNOTATION")) { |
| 820 Annotation annot = createAnnotationFromNode(ann); | 835 Annotation annot = createAnnotationFromNode(ann); |
| 821 annotations.add(annot); | 836 annotations.add(annot); |
| 822 } else { | 837 } else { |
| 823 logger.error("ANNOTATES relation does not start with ANNOTATION: " + ann); | 838 logger.error("ANNOTATES relation does not start with ANNOTATION: " + ann); |
| 824 } | 839 } |
| 840 } | |
| 841 tx.success(); | |
| 825 } | 842 } |
| 826 } | 843 } |
| 827 } | 844 } |
| 828 if (userUri != null) { | 845 if (userUri != null) { |
| 829 // there should be only one | 846 // there should be only one |
