Changeset 29:3be0ebb6d5ad in AnnotationManagerN4J for src


Ignore:
Timestamp:
Sep 25, 2012, 7:35:26 AM (12 years ago)
Author:
dwinter
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.
Message:

Merge with 1cf7203009f26a8a55fc387adcb8ae6ca681520c

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java

    r25 r29  
    2525import de.mpiwg.itgroup.annotations.Group;
    2626import de.mpiwg.itgroup.annotations.Person;
     27import de.mpiwg.itgroup.annotations.Tag;
    2728
    2829/**
     
    7475    }
    7576
     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
    7687    public List<Actor> getActors(String key, String query, NodeTypes type) {
    7788        ArrayList<Actor> actors = new ArrayList<Actor>();
     
    111122        return groups;
    112123    }
    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   /**
    115151     * Returns List of Groups the person is member of.
    116152     *
     
    351387        return null;
    352388    }
     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
    353399
    354400    /**
     
    466512                        for (String tag : newTags) {
    467513                            // create new tag
    468                             Node tagNode = getOrCreateTagNode(tag);
     514                            Node tagNode = getOrCreateTagNode(new Tag(null,null,tag));
    469515                            getOrCreateRelation(annotNode, RelationTypes.HAS_TAG, tagNode);
    470516                        }
     
    687733    }
    688734
    689     protected Node getOrCreateTagNode(String tagname) {
     735    protected Node getOrCreateTagNode(Tag inTag) {
    690736        Index<Node> idx = getNodeIndex(NodeTypes.TAG);
     737        String tagname = inTag.getName();
    691738        IndexHits<Node> tags = idx.get("name", tagname);
    692739        Node tag = tags.getSingle();
     
    699746                tag.setProperty("name", tagname);
    700747                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               
    701753                tx.success();
    702754            } finally {
     
    802854    }
    803855
     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
    804872}
  • src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java

    r28 r29  
    212212        }
    213213        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        }       
    214250    }
    215251   
Note: See TracChangeset for help on using the changeset viewer.