Changeset 29:3be0ebb6d5ad in AnnotationManagerN4J
- Timestamp:
- Sep 25, 2012, 7:35:26 AM (12 years ago)
- Branch:
- default
- Parents:
- 28:f4ed2ed33e5b (diff), 27:6bc918105c9a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java
r25 r29 25 25 import de.mpiwg.itgroup.annotations.Group; 26 26 import de.mpiwg.itgroup.annotations.Person; 27 import de.mpiwg.itgroup.annotations.Tag; 27 28 28 29 /** … … 74 75 } 75 76 77 /** 78 * @param tagUri 79 * @return 80 */ 81 public Node getTagNodeByUri(String tagUri) { 82 if (tagUri == null) return null; 83 Node person = getNodeIndex(NodeTypes.TAG).get("uri", tagUri).getSingle(); 84 return person; 85 } 86 76 87 public List<Actor> getActors(String key, String query, NodeTypes type) { 77 88 ArrayList<Actor> actors = new ArrayList<Actor>(); … … 111 122 return groups; 112 123 } 113 114 /** 124 125 126 /** 127 * Returns List of Tags. 128 * Key has to be indexed. 129 * 130 * @param key 131 * @param query 132 * @return 133 */ 134 public List<Tag> getTags(String key, String query) { 135 ArrayList<Tag> tags = new ArrayList<Tag>(); 136 Index<Node> idx = getNodeIndex(NodeTypes.TAG); 137 if (key == null) { 138 key = "uri"; 139 query = "*"; 140 } 141 IndexHits<Node> groupNodes = idx.query(key, query); 142 for (Node groupNode : groupNodes) { 143 Tag tag = createTagFromNode(groupNode); 144 tags.add(tag); 145 } 146 return tags; 147 } 148 149 150 /** 115 151 * Returns List of Groups the person is member of. 116 152 * … … 351 387 return null; 352 388 } 389 390 public Tag createTagFromNode(Node tagNode) { 391 String name = (String) tagNode.getProperty("name", null); 392 String uri = (String) tagNode.getProperty("uri", null); 393 String id = (String) tagNode.getProperty("id", null); 394 395 return new Tag(id, uri, name); 396 397 } 398 353 399 354 400 /** … … 466 512 for (String tag : newTags) { 467 513 // create new tag 468 Node tagNode = getOrCreateTagNode( tag);514 Node tagNode = getOrCreateTagNode(new Tag(null,null,tag)); 469 515 getOrCreateRelation(annotNode, RelationTypes.HAS_TAG, tagNode); 470 516 } … … 687 733 } 688 734 689 protected Node getOrCreateTagNode( String tagname) {735 protected Node getOrCreateTagNode(Tag inTag) { 690 736 Index<Node> idx = getNodeIndex(NodeTypes.TAG); 737 String tagname = inTag.getName(); 691 738 IndexHits<Node> tags = idx.get("name", tagname); 692 739 Node tag = tags.getSingle(); … … 699 746 tag.setProperty("name", tagname); 700 747 idx.add(tag, "name", tagname); 748 749 tag.setProperty("id", inTag.getId()); 750 tag.setProperty("uri", inTag.getUri()); 751 idx.add(tag, "uri", inTag.getUri()); 752 701 753 tx.success(); 702 754 } finally { … … 802 854 } 803 855 856 public List<Annotation> getAnnotationsByTag(String tagUri) { 857 858 ArrayList<Annotation> ret = new ArrayList<Annotation>(); 859 Node tag = getTagNodeByUri(tagUri); 860 861 862 Iterable<Relationship> rels = tag.getRelationships(Direction.INCOMING,RelationTypes.HAS_TAG); 863 864 for (Relationship rel:rels){ 865 Node node = rel.getStartNode(); 866 ret.add(createAnnotationFromNode(node)); 867 868 } 869 return ret; 870 } 871 804 872 } -
src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java
r28 r29 212 212 } 213 213 return members; 214 } 215 216 /** 217 * Add Person newMember to Group group. 218 * 219 * @param group 220 * @param member 221 */ 222 public Person addGroupMember(Group group, Person member) { 223 Node gn = getActorNode(group); 224 Node pn = getActorNode(member); 225 Person addedMember = null; 226 if (gn != null && pn != null) { 227 getOrCreateRelation(pn, RelationTypes.MEMBER_OF, gn); 228 addedMember = member; 229 } 230 return addedMember; 231 } 232 233 /** 234 * Delete Person oldMember from Group group. 235 * 236 * @param group 237 * @param member 238 */ 239 public void deleteGroupMember(Group group, Person member) { 240 Node gn = getActorNode(group); 241 Iterable<Relationship> rels = gn.getRelationships(RelationTypes.MEMBER_OF); 242 for (Relationship rel : rels) { 243 Node mn = rel.getStartNode(); 244 if (mn.equals(member)) { 245 rel.delete(); 246 // there should be only one 247 break; 248 } 249 } 214 250 } 215 251
Note: See TracChangeset
for help on using the changeset viewer.