Changeset 24:e208a7b1a37a in AnnotationManagerN4J for src


Ignore:
Timestamp:
Sep 23, 2012, 2:28:05 PM (12 years ago)
Author:
casties
Branch:
default
Children:
25:2140ef107551, 28:f4ed2ed33e5b
Message:

more work on groups ui.

Location:
src/main/java/de/mpiwg/itgroup/annotations
Files:
3 edited

Legend:

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

    r22 r24  
    7272        Node person = getNodeIndex(NodeTypes.PERSON).get("uri", userUri).getSingle();
    7373        return person;
     74    }
     75
     76    public List<Actor> getActors(String key, String query, NodeTypes type) {
     77        ArrayList<Actor> actors = new ArrayList<Actor>();
     78        Index<Node> idx = getNodeIndex(type);
     79        if (key == null) {
     80            key = "uri";
     81            query = "*";
     82        }
     83        IndexHits<Node> actorNodes = idx.query(key, query);
     84        for (Node actorNode : actorNodes) {
     85            Actor actor = createActorFromNode(actorNode);
     86            actors.add(actor);
     87        }
     88        return actors;
    7489    }
    7590
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupMembersResource.java

    r23 r24  
    66import java.util.List;
    77
    8 import org.apache.log4j.Logger;
    98import org.restlet.data.Form;
    109import org.restlet.data.MediaType;
     
    1514import org.restlet.resource.Get;
    1615import org.restlet.resource.Post;
    17 import org.restlet.resource.ServerResource;
    1816
    1917import de.mpiwg.itgroup.annotations.Actor;
    20 import de.mpiwg.itgroup.annotations.Group;
    2118import de.mpiwg.itgroup.annotations.Person;
    22 import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
    23 import de.mpiwg.itgroup.annotations.restlet.BaseRestlet;
     19import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore.NodeTypes;
    2420
    2521/**
     
    2925 *
    3026 */
    31 public class GroupMembersResource extends ServerResource {
    32 
    33     public static Logger logger = Logger.getLogger(GroupMembersResource.class);
    34 
    35     private AnnotationStore store;
     27public class GroupMembersResource extends GroupResource {
    3628
    3729    /**
     
    4436    public Representation doGetHTML(Representation entity) {
    4537        // id from URI /annotations/groups/{id}/members
    46         String id = (String) getRequest().getAttributes().get("id");
    47         logger.debug("group-id=" + id);
    48         if (id == null || id.isEmpty()) {
     38        if (requestId == null || requestId.isEmpty()) {
    4939            // invalid id
    5040            setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
     
    5242        }
    5343        String result = null;
    54         store = getAnnotationStore();
    55         Reference groupsUrl = this.getReference().getParentRef();
    56         result = "<html><body>\n<h1>Members of group</h1>\n";
    57         Group group = new Group(id);
    58         group = (Group) store.getActor(group);
     44        Reference thisUrl = this.getReference();
     45        Reference groupsUrl = thisUrl.getParentRef();
     46        result = "<html><body>\n<h1>Group members</h1>\n";
    5947        result += String.format("<p>Group: %s <a href=\"%s\">(%s)</a></p>\n", group.getName(), groupsUrl, group.getId());
    6048        result += "<p>Members:</p>\n";
     
    6250        List<Person> members = store.getMembersOfGroup(group);
    6351        for (Person p : members) {
    64             result += String.format("<tr><td>%s</td><td>(%s)</td></tr>\n", p.getName(), p.getIdString());
     52            result += String.format("<tr><td>%s</td><td>(%s)</td>", p.getName(), p.getIdString());
     53            //result += String.format("<td></td></tr>\n", p.getName(), p.getIdString());
    6554        }
    6655        result += "</table>\n";
    67         result += "<form method=\"post\" action=\"\">\n";
    68         result += "<p>Add new member: <select name=\"new_member\">\n";
    69         result += String.format("<option value=\"%s\">%s</option>\n", "casties", "casties");
     56        result += String.format("<form method=\"post\" action=\"%s\">\n", thisUrl);
     57        result += "<p>Add new member: <select name=\"add_member\">\n";
     58        for (Actor p : store.getActors("uri", "*", NodeTypes.PERSON)) {
     59            result += String.format("<option value=\"%s\">%s</option>\n", p.getIdString(), p.getName());
     60        }
    7061        result += "</select>\n";
    7162        result += "<input type=\"submit\"/>\n";
     
    7768
    7869    /**
    79      * POST creates a new Group.
     70     * POST adds or deletes members of the Group.
    8071     *
    8172     * @return
     
    8374    @Post
    8475    public Representation doPost(Representation entity) {
    85         logger.debug("AnnotationsUiGroup doPost!");
     76        logger.debug("GroupMembersResource doPost!");
    8677        // TODO: do authentication
    8778        Form form = new Form(entity);
    88         String id = form.getFirstValue("id");
    89         String name = form.getFirstValue("name");
    90         if (id == null || id.isEmpty()) {
    91             // invalid id
     79        String addMemberId = form.getFirstValue("add_member");
     80        String delMemberId = form.getFirstValue("del_member");
     81        if (group == null || ((addMemberId == null || addMemberId.isEmpty())
     82                && (delMemberId == null || delMemberId.isEmpty()))) {
     83            // no id
    9284            setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
    9385            return null;
    9486        }
    95         String gid = null;
    96         Group newGroup = new Group(gid, null, name);
    97         store = getAnnotationStore();
    98         Actor storedGroup = store.storeActor(newGroup);
    99         gid = storedGroup.getId();
     87       
    10088        // return 303: see other
    10189        setStatus(Status.REDIRECTION_SEE_OTHER);
    102         // go GET URL for this group
    103         Reference groupUrl = this.getReference();
    104         groupUrl.addSegment(gid);
    105         this.getResponse().setLocationRef(groupUrl);
     90        // go get same URL
     91        Reference thisUrl = this.getReference();
     92        this.getResponse().setLocationRef(thisUrl);
    10693        return null;
    10794    }
    10895
    109     protected AnnotationStore getAnnotationStore() {
    110         if (store == null) {
    111             store = ((BaseRestlet) getApplication()).getAnnotationStore();
    112         }
    113         return store;
    114     }
    11596}
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupResource.java

    r23 r24  
    55
    66import org.apache.log4j.Logger;
    7 import org.restlet.data.Form;
    87import org.restlet.data.MediaType;
    98import org.restlet.data.Reference;
     
    1211import org.restlet.representation.StringRepresentation;
    1312import org.restlet.resource.Get;
    14 import org.restlet.resource.Post;
     13import org.restlet.resource.ResourceException;
    1514import org.restlet.resource.ServerResource;
    1615
    17 import de.mpiwg.itgroup.annotations.Actor;
    1816import de.mpiwg.itgroup.annotations.Group;
    1917import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
     
    3028    public static Logger logger = Logger.getLogger(GroupResource.class);
    3129
    32     private AnnotationStore store;
     30    protected AnnotationStore store;
     31   
     32    protected String requestId;
     33   
     34    protected Group group;
     35   
     36    @Override
     37    protected void doInit() throws ResourceException {
     38        super.doInit();
     39        // id from URI /annotations/groups/{id}
     40        requestId = (String) getRequest().getAttributes().get("id");
     41        logger.debug("group-id=" + requestId);
     42        // get store instance
     43        if (store == null) {
     44            store = ((BaseRestlet) getApplication()).getAnnotationStore();
     45        }
     46        // get group from store
     47        if (requestId != null) {
     48            group = (Group) store.getActor(new Group(requestId));
     49        }
     50    }
    3351
    3452    /**
     
    4058    @Get("html")
    4159    public Representation doGetHTML(Representation entity) {
    42         // id from URI /annotations/groups/{id}
    43         String id = (String) getRequest().getAttributes().get("id");
    44         logger.debug("group-id=" + id);
    45         if (id == null || id.isEmpty()) {
     60        if (requestId == null || requestId.isEmpty()) {
    4661            // invalid id
    4762            setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
     
    4964        }
    5065        String result = null;
    51         store = getAnnotationStore();
    5266        Reference groupsUrl = this.getReference().getParentRef();
    5367        result = "<html><body>\n<h1>Group</h1>\n";
    5468        result += String.format("<p><a href=\"%s\">All groups</a></p>", groupsUrl);
    55         Group group = new Group(id);
    56         group = (Group) store.getActor(group);
    5769        result += "<table>";
    5870        result += String.format("<tr><td><b>id</b></td><td>%s</td></tr>\n", group.getId());
     
    6880    }
    6981
    70     /**
    71      * POST creates a new Group.
    72      *
    73      * @return
    74      */
    75     @Post
    76     public Representation doPost(Representation entity) {
    77         logger.debug("AnnotationsUiGroup doPost!");
    78         // TODO: do authentication
    79         Form form = new Form(entity);
    80         String id = form.getFirstValue("id");
    81         String name = form.getFirstValue("name");
    82         if (id == null || id.isEmpty()) {
    83             // invalid id
    84             setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
    85             return null;
    86         }
    87         String gid = null;
    88         Group newGroup = new Group(gid, null, name);
    89         store = getAnnotationStore();
    90         Actor storedGroup = store.storeActor(newGroup);
    91         gid = storedGroup.getId();
    92         // return 303: see other
    93         setStatus(Status.REDIRECTION_SEE_OTHER);
    94         // go GET URL for this group
    95         Reference groupUrl = this.getReference();
    96         groupUrl.addSegment(gid);
    97         this.getResponse().setLocationRef(groupUrl);
    98         return null;
    99     }
    100 
    101     protected AnnotationStore getAnnotationStore() {
    102         if (store == null) {
    103             store = ((BaseRestlet) getApplication()).getAnnotationStore();
    104         }
    105         return store;
    106     }
    10782}
Note: See TracChangeset for help on using the changeset viewer.