# HG changeset patch
# User casties
# Date 1348337538 -7200
# Node ID d22d01ba953a5222743743877be232b5149bbf93
# Parent b1fb0d11787772e530dc12fc3231b561cc86b2ba
reorganised code for annotations and groups ui. work in progress.
diff -r b1fb0d117877 -r d22d01ba953a src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotationStoreGroups.java
--- a/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotationStoreGroups.java Thu Sep 20 17:42:26 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/**
- *
- */
-package de.mpiwg.itgroup.annotations.restlet;
-
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.restlet.data.Form;
-import org.restlet.data.MediaType;
-import org.restlet.data.Reference;
-import org.restlet.data.Status;
-import org.restlet.representation.Representation;
-import org.restlet.representation.StringRepresentation;
-import org.restlet.resource.Get;
-import org.restlet.resource.Post;
-import org.restlet.resource.ServerResource;
-
-import de.mpiwg.itgroup.annotations.Actor;
-import de.mpiwg.itgroup.annotations.Group;
-import de.mpiwg.itgroup.annotations.Person;
-import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
-
-/**
- * @author casties
- *
- */
-public class AnnotationStoreGroups extends ServerResource {
-
- public static Logger logger = Logger.getLogger(AnnotationStoreGroups.class);
-
- private AnnotationStore store;
-
- /**
- * GET with HTML content type. Lists all groups.
- *
- * @param entity
- * @return
- */
- @Get("html")
- public Representation doGetHTML(Representation entity) {
- // id from URI /annotations/groups/{id}
- String id = (String) getRequest().getAttributes().get("id");
- logger.debug("group-id=" + id);
- String result = null;
- store = getAnnotationStore();
- if (id == null) {
- // list all groups
- result = "
\nGroups
\n";
- result += "id | name | uri |
";
- List groups = store.getGroups("uri", "*");
- for (Group group : groups) {
- Reference groupUrl = this.getReference();
- groupUrl.addSegment(group.getId());
- result += String.format("%s | %s | %s |
\n", groupUrl,
- group.getId(), group.getName(), group.getUri());
- }
- result += "
\n\n";
- } else {
- // just one group
- Reference groupsUrl = this.getReference().getParentRef();
- result = "\nGroup
\n";
- result += String.format("All groups
", groupsUrl);
- Group group = new Group(id);
- group = (Group) store.getActor(group);
- result += "";
- result += String.format("id | %s |
\n", group.getId());
- result += String.format("name | %s |
\n", group.getName());
- result += String.format("uri | %s |
\n", group.getUri());
- result += "members | ";
- List members = store.getMembersOfGroup(group);
- for (Person p : members) {
- result += String.format("%s (%s)\n", p.getName(), p.getIdString());
- }
- result += " |
\n";
- result += "
\n\n";
- }
-
- logger.debug("sending:");
- logger.debug(result);
- return new StringRepresentation(result, MediaType.TEXT_HTML);
- }
-
- /**
- * POST with HTML content-type. Creates a new Group.
- *
- * @return
- */
- @Post
- public Representation doPostHTML(Representation entity) {
- logger.debug("AnnotationStoreGroups doPostHTML!");
- // TODO: do authentication
- Form form = new Form(entity);
- String id = form.getFirstValue("id");
- String name = form.getFirstValue("name");
- if (id == null || id.isEmpty()) {
- // invalid id
- setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
- return null;
- }
- String gid = makeGroupId(id);
- Group newGroup = new Group(gid, null, name);
- store = getAnnotationStore();
- Actor storedGroup = store.storeActor(newGroup);
- gid = storedGroup.getId();
- // return 303: see other
- setStatus(Status.REDIRECTION_SEE_OTHER);
- // go GET URL for this group
- Reference groupUrl = this.getReference();
- groupUrl.addSegment(gid);
- this.getResponse().setLocationRef(groupUrl);
- return null;
- }
-
- /**
- * Returns a group id based on the given id.
- *
- * @param id
- * @return
- */
- protected String makeGroupId(String id) {
- // TODO: should we use different ids?
- id = id.replaceAll("\\W", "_");
- id = id.toLowerCase();
- return id;
- }
-
- protected AnnotationStore getAnnotationStore() {
- if (store == null) {
- store = ((BaseRestlet) getApplication()).getAnnotationStore();
- }
- return store;
- }
-}
diff -r b1fb0d117877 -r d22d01ba953a src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotationStoreInfo.java
--- a/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotationStoreInfo.java Thu Sep 20 17:42:26 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-package de.mpiwg.itgroup.annotations.restlet;
-
-import java.io.InputStream;
-
-import org.restlet.data.MediaType;
-import org.restlet.representation.InputRepresentation;
-import org.restlet.representation.Representation;
-import org.restlet.resource.Get;
-import org.restlet.resource.ServerResource;
-
-
-public class AnnotationStoreInfo extends ServerResource {
-
- @Get("html")
- public Representation getHTML(){
- InputStream is = getClass().getResourceAsStream("/de/mpiwg/itgroup/annotations/annotationstore-info.html");
-
- Representation rep = new InputRepresentation(is,MediaType.TEXT_HTML);
- return rep;
-
- }
-
-}
-
diff -r b1fb0d117877 -r d22d01ba953a src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotationStoreRestlet.java
--- a/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotationStoreRestlet.java Thu Sep 20 17:42:26 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/**
- *
- */
-package de.mpiwg.itgroup.annotations.restlet;
-
-import org.apache.log4j.Logger;
-import org.restlet.Context;
-import org.restlet.Restlet;
-import org.restlet.routing.Router;
-
-/**
- * @author casties
- *
- */
-public class AnnotationStoreRestlet extends BaseRestlet {
-
- public final String version = "AnnotationManagerN4J/AnnotationStore 0.1";
-
- public static Logger logger = Logger.getLogger(AnnotationStoreRestlet.class);
-
- public AnnotationStoreRestlet(Context context) {
- super(context);
- logger.debug("StoreRestlet!");
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.restlet.Application#createInboundRoot()
- */
- @Override
- public Restlet createInboundRoot() {
- // this.authenticator = createAuthenticator();
-
- Router router = new Router(getContext());
-
- router.attach("/groups", AnnotationStoreGroups.class);
- router.attach("/groups/", AnnotationStoreGroups.class);
- router.attach("/groups/{id}", AnnotationStoreGroups.class);
-
- router.attach("/", AnnotationStoreInfo.class);
- // authenticator.setNext(router);
- // return authenticator;
-
- return router;
- }
-
-
- @Override
- public String getVersion() {
- return version;
- }
-
-}
diff -r b1fb0d117877 -r d22d01ba953a src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/AnnotationsUiRestlet.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/AnnotationsUiRestlet.java Sat Sep 22 20:12:18 2012 +0200
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package de.mpiwg.itgroup.annotations.restlet.annotations_ui;
+
+import org.apache.log4j.Logger;
+import org.restlet.Context;
+import org.restlet.Restlet;
+import org.restlet.routing.Router;
+
+import de.mpiwg.itgroup.annotations.restlet.BaseRestlet;
+
+/**
+ * @author casties
+ *
+ */
+public class AnnotationsUiRestlet extends BaseRestlet {
+
+ public final String version = "AnnotationManagerN4J/AnnotationStore 0.1";
+
+ public static Logger logger = Logger.getLogger(AnnotationsUiRestlet.class);
+
+ public AnnotationsUiRestlet(Context context) {
+ super(context);
+ logger.debug("StoreRestlet!");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.restlet.Application#createInboundRoot()
+ */
+ @Override
+ public Restlet createInboundRoot() {
+ // this.authenticator = createAuthenticator();
+
+ Router router = new Router(getContext());
+
+ router.attach("/groups", GroupsResource.class);
+ router.attach("/groups/", GroupsResource.class);
+ router.attach("/groups/{id}", GroupResource.class);
+ router.attach("/groups/{id}/", GroupResource.class);
+ router.attach("/groups/{id}/members", GroupMembersResource.class);
+
+ router.attach("/", InfoResource.class);
+ // authenticator.setNext(router);
+ // return authenticator;
+
+ return router;
+ }
+
+
+ @Override
+ public String getVersion() {
+ return version;
+ }
+
+}
diff -r b1fb0d117877 -r d22d01ba953a src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupMembersResource.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupMembersResource.java Sat Sep 22 20:12:18 2012 +0200
@@ -0,0 +1,115 @@
+/**
+ *
+ */
+package de.mpiwg.itgroup.annotations.restlet.annotations_ui;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.restlet.data.Form;
+import org.restlet.data.MediaType;
+import org.restlet.data.Reference;
+import org.restlet.data.Status;
+import org.restlet.representation.Representation;
+import org.restlet.representation.StringRepresentation;
+import org.restlet.resource.Get;
+import org.restlet.resource.Post;
+import org.restlet.resource.ServerResource;
+
+import de.mpiwg.itgroup.annotations.Actor;
+import de.mpiwg.itgroup.annotations.Group;
+import de.mpiwg.itgroup.annotations.Person;
+import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
+import de.mpiwg.itgroup.annotations.restlet.BaseRestlet;
+
+/**
+ * Resource class for the members of an annotation group.
+ *
+ * @author casties
+ *
+ */
+public class GroupMembersResource extends ServerResource {
+
+ public static Logger logger = Logger.getLogger(GroupMembersResource.class);
+
+ private AnnotationStore store;
+
+ /**
+ * GET with HTML content type. Shows the members of the group.
+ *
+ * @param entity
+ * @return
+ */
+ @Get("html")
+ public Representation doGetHTML(Representation entity) {
+ // id from URI /annotations/groups/{id}/members
+ String id = (String) getRequest().getAttributes().get("id");
+ logger.debug("group-id=" + id);
+ if (id == null || id.isEmpty()) {
+ // invalid id
+ setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
+ return null;
+ }
+ String result = null;
+ store = getAnnotationStore();
+ Reference groupsUrl = this.getReference().getParentRef();
+ result = "\nMembers of group
\n";
+ Group group = new Group(id);
+ group = (Group) store.getActor(group);
+ result += String.format("Group: %s (%s)
\n", group.getName(), groupsUrl, group.getId());
+ result += "Members:
\n";
+ result += "";
+ List members = store.getMembersOfGroup(group);
+ for (Person p : members) {
+ result += String.format("%s | (%s) |
\n", p.getName(), p.getIdString());
+ }
+ result += "
\n";
+ result += "\n";
+ result += "\n";
+
+ return new StringRepresentation(result, MediaType.TEXT_HTML);
+ }
+
+ /**
+ * POST creates a new Group.
+ *
+ * @return
+ */
+ @Post
+ public Representation doPost(Representation entity) {
+ logger.debug("AnnotationsUiGroup doPost!");
+ // TODO: do authentication
+ Form form = new Form(entity);
+ String id = form.getFirstValue("id");
+ String name = form.getFirstValue("name");
+ if (id == null || id.isEmpty()) {
+ // invalid id
+ setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
+ return null;
+ }
+ String gid = null;
+ Group newGroup = new Group(gid, null, name);
+ store = getAnnotationStore();
+ Actor storedGroup = store.storeActor(newGroup);
+ gid = storedGroup.getId();
+ // return 303: see other
+ setStatus(Status.REDIRECTION_SEE_OTHER);
+ // go GET URL for this group
+ Reference groupUrl = this.getReference();
+ groupUrl.addSegment(gid);
+ this.getResponse().setLocationRef(groupUrl);
+ return null;
+ }
+
+ protected AnnotationStore getAnnotationStore() {
+ if (store == null) {
+ store = ((BaseRestlet) getApplication()).getAnnotationStore();
+ }
+ return store;
+ }
+}
diff -r b1fb0d117877 -r d22d01ba953a src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupResource.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupResource.java Sat Sep 22 20:12:18 2012 +0200
@@ -0,0 +1,107 @@
+/**
+ *
+ */
+package de.mpiwg.itgroup.annotations.restlet.annotations_ui;
+
+import org.apache.log4j.Logger;
+import org.restlet.data.Form;
+import org.restlet.data.MediaType;
+import org.restlet.data.Reference;
+import org.restlet.data.Status;
+import org.restlet.representation.Representation;
+import org.restlet.representation.StringRepresentation;
+import org.restlet.resource.Get;
+import org.restlet.resource.Post;
+import org.restlet.resource.ServerResource;
+
+import de.mpiwg.itgroup.annotations.Actor;
+import de.mpiwg.itgroup.annotations.Group;
+import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
+import de.mpiwg.itgroup.annotations.restlet.BaseRestlet;
+
+/**
+ * Resource class for a single group.
+ *
+ * @author casties
+ *
+ */
+public class GroupResource extends ServerResource {
+
+ public static Logger logger = Logger.getLogger(GroupResource.class);
+
+ private AnnotationStore store;
+
+ /**
+ * GET with HTML content type. Shows the group.
+ *
+ * @param entity
+ * @return
+ */
+ @Get("html")
+ public Representation doGetHTML(Representation entity) {
+ // id from URI /annotations/groups/{id}
+ String id = (String) getRequest().getAttributes().get("id");
+ logger.debug("group-id=" + id);
+ if (id == null || id.isEmpty()) {
+ // invalid id
+ setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
+ return null;
+ }
+ String result = null;
+ store = getAnnotationStore();
+ Reference groupsUrl = this.getReference().getParentRef();
+ result = "\nGroup
\n";
+ result += String.format("All groups
", groupsUrl);
+ Group group = new Group(id);
+ group = (Group) store.getActor(group);
+ result += "";
+ result += String.format("id | %s |
\n", group.getId());
+ result += String.format("name | %s |
\n", group.getName());
+ result += String.format("uri | %s |
\n", group.getUri());
+ result += String.format("members | view members |
\n", this.getReference()
+ .addSegment("members"));
+ result += "
\n\n";
+
+ logger.debug("sending:");
+ logger.debug(result);
+ return new StringRepresentation(result, MediaType.TEXT_HTML);
+ }
+
+ /**
+ * POST creates a new Group.
+ *
+ * @return
+ */
+ @Post
+ public Representation doPost(Representation entity) {
+ logger.debug("AnnotationsUiGroup doPost!");
+ // TODO: do authentication
+ Form form = new Form(entity);
+ String id = form.getFirstValue("id");
+ String name = form.getFirstValue("name");
+ if (id == null || id.isEmpty()) {
+ // invalid id
+ setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
+ return null;
+ }
+ String gid = null;
+ Group newGroup = new Group(gid, null, name);
+ store = getAnnotationStore();
+ Actor storedGroup = store.storeActor(newGroup);
+ gid = storedGroup.getId();
+ // return 303: see other
+ setStatus(Status.REDIRECTION_SEE_OTHER);
+ // go GET URL for this group
+ Reference groupUrl = this.getReference();
+ groupUrl.addSegment(gid);
+ this.getResponse().setLocationRef(groupUrl);
+ return null;
+ }
+
+ protected AnnotationStore getAnnotationStore() {
+ if (store == null) {
+ store = ((BaseRestlet) getApplication()).getAnnotationStore();
+ }
+ return store;
+ }
+}
diff -r b1fb0d117877 -r d22d01ba953a src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupsResource.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupsResource.java Sat Sep 22 20:12:18 2012 +0200
@@ -0,0 +1,112 @@
+/**
+ *
+ */
+package de.mpiwg.itgroup.annotations.restlet.annotations_ui;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.restlet.data.Form;
+import org.restlet.data.MediaType;
+import org.restlet.data.Reference;
+import org.restlet.data.Status;
+import org.restlet.representation.Representation;
+import org.restlet.representation.StringRepresentation;
+import org.restlet.resource.Get;
+import org.restlet.resource.Post;
+import org.restlet.resource.ServerResource;
+
+import de.mpiwg.itgroup.annotations.Actor;
+import de.mpiwg.itgroup.annotations.Group;
+import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
+import de.mpiwg.itgroup.annotations.restlet.BaseRestlet;
+
+/**
+ * Resource class for the list of annotation groups.
+ *
+ * @author casties
+ *
+ */
+public class GroupsResource extends ServerResource {
+
+ public static Logger logger = Logger.getLogger(GroupsResource.class);
+
+ private AnnotationStore store;
+
+ /**
+ * GET with HTML content type. Lists all groups.
+ *
+ * @param entity
+ * @return
+ */
+ @Get("html")
+ public Representation doGetHTML(Representation entity) {
+ String result = null;
+ store = getAnnotationStore();
+ // list all groups
+ result = "\nGroups
\n";
+ result += "id | name | uri |
";
+ List groups = store.getGroups("uri", "*");
+ for (Group group : groups) {
+ Reference groupUrl = this.getReference();
+ groupUrl.addSegment(group.getId());
+ result += String.format("%s | %s | %s |
\n", groupUrl, group.getId(),
+ group.getName(), group.getUri());
+ }
+ result += "
\n\n";
+ logger.debug("sending:");
+ logger.debug(result);
+ return new StringRepresentation(result, MediaType.TEXT_HTML);
+ }
+
+ /**
+ * POST creates a new Group.
+ *
+ * @return
+ */
+ @Post
+ public Representation doPost(Representation entity) {
+ logger.debug("AnnotationsUiGroups doPost!");
+ // TODO: do authentication
+ Form form = new Form(entity);
+ String id = form.getFirstValue("id");
+ String name = form.getFirstValue("name");
+ if (id == null || id.isEmpty()) {
+ // invalid id
+ setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
+ return null;
+ }
+ String gid = makeGroupId(id);
+ Group newGroup = new Group(gid, null, name);
+ store = getAnnotationStore();
+ Actor storedGroup = store.storeActor(newGroup);
+ gid = storedGroup.getId();
+ // return 303: see other
+ setStatus(Status.REDIRECTION_SEE_OTHER);
+ // go GET URL for this group
+ Reference groupUrl = this.getReference();
+ groupUrl.addSegment(gid);
+ this.getResponse().setLocationRef(groupUrl);
+ return null;
+ }
+
+ /**
+ * Returns a group id based on the given id.
+ *
+ * @param id
+ * @return
+ */
+ protected String makeGroupId(String id) {
+ // TODO: should we use different ids?
+ id = id.replaceAll("\\W", "_");
+ id = id.toLowerCase();
+ return id;
+ }
+
+ protected AnnotationStore getAnnotationStore() {
+ if (store == null) {
+ store = ((BaseRestlet) getApplication()).getAnnotationStore();
+ }
+ return store;
+ }
+}
diff -r b1fb0d117877 -r d22d01ba953a src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/InfoResource.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/InfoResource.java Sat Sep 22 20:12:18 2012 +0200
@@ -0,0 +1,24 @@
+package de.mpiwg.itgroup.annotations.restlet.annotations_ui;
+
+import java.io.InputStream;
+
+import org.restlet.data.MediaType;
+import org.restlet.representation.InputRepresentation;
+import org.restlet.representation.Representation;
+import org.restlet.resource.Get;
+import org.restlet.resource.ServerResource;
+
+
+public class InfoResource extends ServerResource {
+
+ @Get("html")
+ public Representation getHTML(){
+ InputStream is = getClass().getResourceAsStream("/de/mpiwg/itgroup/annotations/annotationstore-info.html");
+
+ Representation rep = new InputRepresentation(is,MediaType.TEXT_HTML);
+ return rep;
+
+ }
+
+}
+
diff -r b1fb0d117877 -r d22d01ba953a src/main/webapp/WEB-INF/web.xml
--- a/src/main/webapp/WEB-INF/web.xml Thu Sep 20 17:42:26 2012 +0200
+++ b/src/main/webapp/WEB-INF/web.xml Sat Sep 22 20:12:18 2012 +0200
@@ -24,7 +24,7 @@
org.restlet.application
- de.mpiwg.itgroup.annotations.restlet.AnnotationStoreRestlet
+ de.mpiwg.itgroup.annotations.restlet.annotations_ui.AnnotationsUiRestlet