Mercurial > hg > AnnotationManagerN4J
annotate src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupMembersResource.java @ 50:64aa756c60cc
annotations ui can show and delete annotations now.
author | casties |
---|---|
date | Thu, 27 Sep 2012 17:12:08 +0200 |
parents | 707902d468f6 |
children | 2b1e6df5e21a |
rev | line source |
---|---|
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
1 /** |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
2 * |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
3 */ |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
4 package de.mpiwg.itgroup.annotations.restlet.annotations_ui; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
5 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
6 import java.util.List; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
7 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
8 import org.restlet.data.Form; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
9 import org.restlet.data.MediaType; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
10 import org.restlet.data.Reference; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
11 import org.restlet.data.Status; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
12 import org.restlet.representation.Representation; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
13 import org.restlet.representation.StringRepresentation; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
14 import org.restlet.resource.Get; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
15 import org.restlet.resource.Post; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
16 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
17 import de.mpiwg.itgroup.annotations.Person; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
18 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
19 /** |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
20 * Resource class for the members of an annotation group. |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
21 * |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
22 * @author casties |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
23 * |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
24 */ |
24 | 25 public class GroupMembersResource extends GroupResource { |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
26 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
27 /** |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
28 * GET with HTML content type. Shows the members of the group. |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
29 * |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
30 * @param entity |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
31 * @return |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
32 */ |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
33 @Get("html") |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
34 public Representation doGetHTML(Representation entity) { |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
35 // id from URI /annotations/groups/{id}/members |
24 | 36 if (requestId == null || requestId.isEmpty()) { |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
37 // invalid id |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
38 setStatus(Status.CLIENT_ERROR_BAD_REQUEST); |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
39 return null; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
40 } |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
41 String result = null; |
27
6bc918105c9a
back to this.getReference, problem was with mod_proxy (ProxyPreserveHost).
casties
parents:
26
diff
changeset
|
42 Reference thisUrl = this.getReference(); |
24 | 43 Reference groupsUrl = thisUrl.getParentRef(); |
44 result = "<html><body>\n<h1>Group members</h1>\n"; | |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
45 result += String.format("<p>Group: %s <a href=\"%s\">(%s)</a></p>\n", group.getName(), groupsUrl, group.getId()); |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
46 result += "<p>Members:</p>\n"; |
27
6bc918105c9a
back to this.getReference, problem was with mod_proxy (ProxyPreserveHost).
casties
parents:
26
diff
changeset
|
47 result += String.format("<form method=\"post\" action=\"%s\">", thisUrl); |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
48 result += "<table>"; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
49 List<Person> members = store.getMembersOfGroup(group); |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
50 for (Person p : members) { |
24 | 51 result += String.format("<tr><td>%s</td><td>(%s)</td>", p.getName(), p.getIdString()); |
25 | 52 result += String.format("<td><input type=\"submit\" name=\"del_member\" value=\"delete:%s\"></td></tr>\n", p.getIdString()); |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
53 } |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
54 result += "</table>\n"; |
25 | 55 result += "</form>\n"; |
24 | 56 result += String.format("<form method=\"post\" action=\"%s\">\n", thisUrl); |
57 result += "<p>Add new member: <select name=\"add_member\">\n"; | |
45 | 58 for (Person p : store.getPersons("uri", "*")) { |
24 | 59 result += String.format("<option value=\"%s\">%s</option>\n", p.getIdString(), p.getName()); |
60 } | |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
61 result += "</select>\n"; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
62 result += "<input type=\"submit\"/>\n"; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
63 result += "</form>\n"; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
64 result += "</body>\n</html>"; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
65 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
66 return new StringRepresentation(result, MediaType.TEXT_HTML); |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
67 } |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
68 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
69 /** |
24 | 70 * POST adds or deletes members of the Group. |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
71 * |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
72 * @return |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
73 */ |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
74 @Post |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
75 public Representation doPost(Representation entity) { |
24 | 76 logger.debug("GroupMembersResource doPost!"); |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
77 // TODO: do authentication |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
78 Form form = new Form(entity); |
24 | 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 | |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
84 setStatus(Status.CLIENT_ERROR_BAD_REQUEST); |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
85 return null; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
86 } |
25 | 87 if (addMemberId != null) { |
88 logger.debug("adding member: "+addMemberId); | |
89 Person member = new Person(addMemberId); | |
90 store.addGroupMember(group, member); | |
91 } else if (delMemberId != null) { | |
92 if (delMemberId.startsWith("delete:")) { | |
93 delMemberId = delMemberId.substring(7); | |
94 } | |
95 logger.debug("deleting member: "+delMemberId); | |
96 Person member = new Person(delMemberId); | |
97 store.deleteGroupMember(group, member); | |
98 } | |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
99 // return 303: see other |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
100 setStatus(Status.REDIRECTION_SEE_OTHER); |
24 | 101 // go get same URL |
102 Reference thisUrl = this.getReference(); | |
103 this.getResponse().setLocationRef(thisUrl); | |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
104 return null; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
105 } |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
106 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
107 } |