Ignore:
Timestamp:
Sep 25, 2012, 7:59:21 PM (12 years ago)
Author:
casties
Branch:
default
Message:

UI for editing groups and persons works now. (still no authorisation!)

Location:
src/main/java/de/mpiwg/itgroup/annotations/restlet
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotations.java

    r22 r32  
    222222       
    223223        // delete annotation
    224         store.deleteById(id);
     224        store.deleteAnnotationById(id);
    225225        setStatus(Status.SUCCESS_NO_CONTENT);
    226226        return null;
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorSearch.java

    r15 r32  
    5757        logger.debug(String.format("searching for uri=%s user=%s", uri, user));
    5858        AnnotationStore store = getAnnotationStore();
    59         List<Annotation> annots = store.searchByUriUser(uri, user, limit, offset);
     59        List<Annotation> annots = store.searchAnnotationByUriUser(uri, user, limit, offset);
    6060        for (Annotation annot : annots) {
    6161            // check permission
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/AnnotationsUiRestlet.java

    r23 r32  
    1717public class AnnotationsUiRestlet extends BaseRestlet {
    1818
    19     public final String version = "AnnotationManagerN4J/AnnotationStore 0.1";
     19    public final String version = "AnnotationManagerN4J/AnnotationsUI 0.2";
    2020
    2121    public static Logger logger = Logger.getLogger(AnnotationsUiRestlet.class);
     
    4242        router.attach("/groups/{id}/", GroupResource.class);
    4343        router.attach("/groups/{id}/members", GroupMembersResource.class);
     44        router.attach("/persons", PersonsResource.class);
     45        router.attach("/persons/", PersonsResource.class);
     46        router.attach("/persons/{id}", PersonResource.class);
     47        router.attach("/persons/{id}/", PersonResource.class);
    4448
    4549        router.attach("/", InfoResource.class);
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupResource.java

    r24 r32  
    55
    66import org.apache.log4j.Logger;
     7import org.restlet.data.Form;
    78import org.restlet.data.MediaType;
    89import org.restlet.data.Reference;
     
    1011import org.restlet.representation.Representation;
    1112import org.restlet.representation.StringRepresentation;
     13import org.restlet.resource.Delete;
    1214import org.restlet.resource.Get;
     15import org.restlet.resource.Put;
    1316import org.restlet.resource.ResourceException;
    1417import org.restlet.resource.ServerResource;
     
    2932
    3033    protected AnnotationStore store;
    31    
     34
    3235    protected String requestId;
    33    
     36
    3437    protected Group group;
    35    
     38
    3639    @Override
    3740    protected void doInit() throws ResourceException {
     
    5861    @Get("html")
    5962    public Representation doGetHTML(Representation entity) {
    60         if (requestId == null || requestId.isEmpty()) {
     63        if (group == null) {
     64            // invalid id
     65            setStatus(Status.CLIENT_ERROR_NOT_FOUND);
     66            return null;
     67        }
     68        String result = null;
     69        // get form parameter
     70        Form f = this.getQuery();
     71        String form = f.getFirstValue("form");
     72        if (form != null && form.equals("edit")) {
     73            // output edit form
     74            result = "<html><body>\n";
     75            result += String.format("<h1>Edit group %s</h1>\n", group.getId());
     76            result += String.format("<p><a href=\"%s\">All groups</a></p>", this.getReference().getParentRef());
     77            // tunnel PUT method through POST
     78            result += String.format("<form method=\"post\" action=\"%s?method=PUT\">\n", this.getReference().getHierarchicalPart());
     79            result += "<table>";
     80            result += String.format("<tr><td><b>name</b></td><td><input type=\"text\" name=\"name\" value=\"%s\"/></td></tr>\n",
     81                    group.getName());
     82            result += String.format("<tr><td><b>uri</b></td><td><input type=\"text\" name=\"uri\" value=\"%s\"/></td></tr>\n",
     83                    group.getUriString());
     84            result += "</table>\n";
     85            result += "<p><input type=\"submit\"/></p>";
     86            result += "</table>\n</form>\n</body>\n</html>";
     87        } else {
     88            // output group content
     89            result = "<html><body>\n<h1>Group</h1>\n";
     90            result += String.format("<p><a href=\"%s\">All groups</a></p>", this.getReference().getParentRef());
     91            result += "<table>";
     92            result += String.format("<tr><td><b>id</b></td><td>%s</td></tr>\n", group.getId());
     93            result += String.format("<tr><td><b>name</b></td><td>%s</td></tr>\n", group.getName());
     94            result += String.format("<tr><td><b>uri</b></td><td>%s</td></tr>\n", group.getUri());
     95            result += String.format("<tr><td><b>members</b></td><td><a href=\"%s\">view members</a></td></tr>\n", this
     96                    .getReference().addSegment("members"));
     97            result += "</table>\n";
     98            result += "<p><a href=\"?form=edit\">Edit group</a></p>\n";
     99            // tunnel POST as DELETE
     100            result += String.format(
     101                    "<form method=\"post\" action=\"%s?method=DELETE\"><input type=\"submit\" value=\"Delete group\"/></form>\n",
     102                    this.getReference().getHierarchicalPart());
     103            result += "</body>\n</html>";
     104        }
     105        return new StringRepresentation(result, MediaType.TEXT_HTML);
     106    }
     107
     108    /**
     109     * PUT updates the group.
     110     *
     111     * @param entity
     112     * @return
     113     */
     114    @Put
     115    public Representation doPut(Representation entity) {
     116        logger.debug("GroupResource.doPut!");
     117        if (group == null) {
    61118            // invalid id
    62119            setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
    63120            return null;
    64121        }
    65         String result = null;
    66         Reference groupsUrl = this.getReference().getParentRef();
    67         result = "<html><body>\n<h1>Group</h1>\n";
    68         result += String.format("<p><a href=\"%s\">All groups</a></p>", groupsUrl);
    69         result += "<table>";
    70         result += String.format("<tr><td><b>id</b></td><td>%s</td></tr>\n", group.getId());
    71         result += String.format("<tr><td><b>name</b></td><td>%s</td></tr>\n", group.getName());
    72         result += String.format("<tr><td><b>uri</b></td><td>%s</td></tr>\n", group.getUri());
    73         result += String.format("<tr><td><b>members</b></td><td><a href=\"%s\">view members</a></td></tr>\n", this.getReference()
    74                 .addSegment("members"));
    75         result += "</table>\n</body>\n</html>";
    76 
    77         logger.debug("sending:");
    78         logger.debug(result);
    79         return new StringRepresentation(result, MediaType.TEXT_HTML);
     122        // TODO: do authentication
     123        Form form = new Form(entity);
     124        String name = form.getFirstValue("name");
     125        String uri = form.getFirstValue("uri");
     126        if (name != null && !name.isEmpty()) {
     127            group.setName(name);
     128        }
     129        if (uri != null && !uri.isEmpty()) {
     130            group.setUri(uri);
     131        }
     132        store.storeActor(group);
     133        // return 303: see other
     134        setStatus(Status.REDIRECTION_SEE_OTHER);
     135        // go GET same URL
     136        Reference url = this.getReference();
     137        this.getResponse().setLocationRef(url);
     138        return null;
    80139    }
    81140
     141    /**
     142     * DELETE deletes the group.
     143     *
     144     * @param entity
     145     * @return
     146     */
     147    @Delete
     148    public Representation doDelete(Representation entity) {
     149        logger.debug("GroupResource.doDelete!");
     150        if (group == null) {
     151            // invalid id
     152            setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
     153            return null;
     154        }
     155        // TODO: do authentication
     156        store.deleteActor(group);
     157        // return 303: see other
     158        setStatus(Status.REDIRECTION_SEE_OTHER);
     159        // go GET parent URL
     160        Reference url = this.getReference().getParentRef();
     161        this.getResponse().setLocationRef(url);
     162        return null;
     163    }
    82164}
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupsResource.java

    r23 r32  
    1515import org.restlet.resource.Get;
    1616import org.restlet.resource.Post;
     17import org.restlet.resource.ResourceException;
    1718import org.restlet.resource.ServerResource;
    1819
     
    3435    private AnnotationStore store;
    3536
     37    @Override
     38    protected void doInit() throws ResourceException {
     39        super.doInit();
     40        // get store instance
     41        if (store == null) {
     42            store = ((BaseRestlet) getApplication()).getAnnotationStore();
     43        }
     44    }
     45
    3646    /**
    3747     * GET with HTML content type. Lists all groups.
     
    4353    public Representation doGetHTML(Representation entity) {
    4454        String result = null;
    45         store = getAnnotationStore();
    46         // list all groups
    47         result = "<html><body>\n<h1>Groups</h1>\n<table>";
    48         result += "<tr><th>id</th><th>name</th><th>uri</th></tr>";
    49         List<Group> groups = store.getGroups("uri", "*");
    50         for (Group group : groups) {
    51             Reference groupUrl = this.getReference();
    52             groupUrl.addSegment(group.getId());
    53             result += String.format("<tr><td><a href=\"%s\">%s</a></td><td>%s</td><td>%s</td></tr>\n", groupUrl, group.getId(),
    54                     group.getName(), group.getUri());
     55        // get form parameter
     56        Form f = this.getQuery();
     57        String form = f.getFirstValue("form");
     58        if (form != null && form.equals("new_group")) {
     59            // output new group form
     60            result = "<html><body>\n";
     61            result += "<h1>New group</h1>\n";
     62            result += String.format("<p><a href=\"%s\">All groups</a></p>", this.getReference());
     63            result += String.format("<form method=\"post\" action=\"%s\">\n", this.getReference().getHierarchicalPart());
     64            result += "<table>";
     65            result += "<tr><td><b>id</b></td><td><input type=\"text\" name=\"id\"/></td></tr>\n";
     66            result += "<tr><td><b>name</b></td><td><input type=\"text\" name=\"name\"/></td></tr>\n";
     67            result += "</table>\n";
     68            result += "<p><input type=\"submit\"/></p>\n";
     69            result += "</form>\n</body>\n</html>";
     70        } else {
     71            // list all groups
     72            result = "<html><body>\n<h1>Groups</h1>\n";
     73            result += "<table>\n";
     74            result += "<tr><th>id</th><th>name</th><th>uri</th></tr>";
     75            List<Group> groups = store.getGroups("uri", "*");
     76            for (Group group : groups) {
     77                Reference groupUrl = this.getReference().clone();
     78                groupUrl.addSegment(group.getId());
     79                result += String.format("<tr><td><a href=\"%s\">%s</a></td><td>%s</td><td>%s</td></tr>\n", groupUrl, group.getId(),
     80                        group.getName(), group.getUri());
     81            }
     82            result += "</table>\n";
     83            result += "<p><a href=\"?form=new_group\">Add new group</a></p>\n";
     84            result += "</body>\n</html>";
    5585        }
    56         result += "</table>\n</body>\n</html>";
    57         logger.debug("sending:");
    58         logger.debug(result);
    5986        return new StringRepresentation(result, MediaType.TEXT_HTML);
    6087    }
     
    79106        String gid = makeGroupId(id);
    80107        Group newGroup = new Group(gid, null, name);
    81         store = getAnnotationStore();
    82108        Actor storedGroup = store.storeActor(newGroup);
    83109        gid = storedGroup.getId();
Note: See TracChangeset for help on using the changeset viewer.