Mercurial > hg > AnnotationManagerN4J
annotate src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupMembersResource.java @ 27:6bc918105c9a
back to this.getReference, problem was with mod_proxy (ProxyPreserveHost).
author | casties |
---|---|
date | Mon, 24 Sep 2012 19:25:40 +0200 |
parents | f204ce7d1da8 |
children | 707902d468f6 |
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.Actor; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
18 import de.mpiwg.itgroup.annotations.Person; |
24 | 19 import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore.NodeTypes; |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
20 |
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 * Resource class for the members of an annotation group. |
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 * @author casties |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
25 * |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
26 */ |
24 | 27 public class GroupMembersResource extends GroupResource { |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
28 |
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 * 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
|
31 * |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
32 * @param entity |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
33 * @return |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
34 */ |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
35 @Get("html") |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
36 public Representation doGetHTML(Representation entity) { |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
37 // id from URI /annotations/groups/{id}/members |
24 | 38 if (requestId == null || requestId.isEmpty()) { |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
39 // invalid id |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
40 setStatus(Status.CLIENT_ERROR_BAD_REQUEST); |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
41 return null; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
42 } |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
43 String result = null; |
27
6bc918105c9a
back to this.getReference, problem was with mod_proxy (ProxyPreserveHost).
casties
parents:
26
diff
changeset
|
44 Reference thisUrl = this.getReference(); |
24 | 45 Reference groupsUrl = thisUrl.getParentRef(); |
46 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
|
47 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
|
48 result += "<p>Members:</p>\n"; |
27
6bc918105c9a
back to this.getReference, problem was with mod_proxy (ProxyPreserveHost).
casties
parents:
26
diff
changeset
|
49 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
|
50 result += "<table>"; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
51 List<Person> members = store.getMembersOfGroup(group); |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
52 for (Person p : members) { |
24 | 53 result += String.format("<tr><td>%s</td><td>(%s)</td>", p.getName(), p.getIdString()); |
25 | 54 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
|
55 } |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
56 result += "</table>\n"; |
25 | 57 result += "</form>\n"; |
24 | 58 result += String.format("<form method=\"post\" action=\"%s\">\n", thisUrl); |
59 result += "<p>Add new member: <select name=\"add_member\">\n"; | |
60 for (Actor p : store.getActors("uri", "*", NodeTypes.PERSON)) { | |
61 result += String.format("<option value=\"%s\">%s</option>\n", p.getIdString(), p.getName()); | |
62 } | |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
63 result += "</select>\n"; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
64 result += "<input type=\"submit\"/>\n"; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
65 result += "</form>\n"; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
66 result += "</body>\n</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 return new StringRepresentation(result, MediaType.TEXT_HTML); |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
69 } |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
70 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
71 /** |
24 | 72 * POST adds or deletes members of the Group. |
23
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 * @return |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
75 */ |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
76 @Post |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
77 public Representation doPost(Representation entity) { |
24 | 78 logger.debug("GroupMembersResource doPost!"); |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
79 // TODO: do authentication |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
80 Form form = new Form(entity); |
24 | 81 String addMemberId = form.getFirstValue("add_member"); |
82 String delMemberId = form.getFirstValue("del_member"); | |
83 if (group == null || ((addMemberId == null || addMemberId.isEmpty()) | |
84 && (delMemberId == null || delMemberId.isEmpty()))) { | |
85 // no id | |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
86 setStatus(Status.CLIENT_ERROR_BAD_REQUEST); |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
87 return null; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
88 } |
25 | 89 if (addMemberId != null) { |
90 logger.debug("adding member: "+addMemberId); | |
91 Person member = new Person(addMemberId); | |
92 store.addGroupMember(group, member); | |
93 } else if (delMemberId != null) { | |
94 if (delMemberId.startsWith("delete:")) { | |
95 delMemberId = delMemberId.substring(7); | |
96 } | |
97 logger.debug("deleting member: "+delMemberId); | |
98 Person member = new Person(delMemberId); | |
99 store.deleteGroupMember(group, member); | |
100 } | |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
101 // return 303: see other |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
102 setStatus(Status.REDIRECTION_SEE_OTHER); |
24 | 103 // go get same URL |
104 Reference thisUrl = this.getReference(); | |
105 this.getResponse().setLocationRef(thisUrl); | |
23
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
106 return null; |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
107 } |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
108 |
d22d01ba953a
reorganised code for annotations and groups ui. work in progress.
casties
parents:
diff
changeset
|
109 } |