Mercurial > hg > AnnotationManagerN4J
diff src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorGroups.java @ 88:b406507a953d
upped version to 0.5.
can use display name and groups from auth token.
author | casties |
---|---|
date | Tue, 03 Feb 2015 19:01:27 +0100 |
parents | 25eb2e1df106 |
children | cf44d9e1a4a7 |
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorGroups.java Tue Feb 03 11:33:45 2015 +0100 +++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorGroups.java Tue Feb 03 19:01:27 2015 +0100 @@ -1,6 +1,3 @@ -/** - * ReST API for accessing groups in the Annotation store. - */ package de.mpiwg.itgroup.annotations.restlet; /* @@ -39,6 +36,7 @@ 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; @@ -66,14 +64,52 @@ public Representation doGetJSON(Representation entity) { logger.fine("AnnotatorGroups doGetJSON!"); setCorsHeaders(); - Form form = getRequest().getResourceRef().getQueryAsForm(); - String user = form.getFirstValue("user"); - String uri = form.getFirstValue("uri"); + // get user from auth token (preferred) + Person authUser = getUserFromAuthToken(entity); + JSONArray results = null; + if (authUser != null && authUser.groups != null) { + results = getGroupsFromPerson(authUser); + } else { + // get user or uri from request + Form form = getRequest().getResourceRef().getQueryAsForm(); + String user = form.getFirstValue("user"); + String uri = form.getFirstValue("uri"); + results = getGroupsFromStore(uri, user); + } + // assemble result object + JSONObject result = new JSONObject(); + try { + result.put("rows", results); + result.put("total", results.length()); + } catch (JSONException e) { + setStatus(Status.SERVER_ERROR_INTERNAL, "JSON Error"); + return null; + } + logger.fine("sending:"); + logger.fine(result.toString()); + return new JsonRepresentation(result); + } + + public JSONArray getGroupsFromPerson(Person person) { + JSONArray results = new JSONArray(); + for (String group : person.groups) { + JSONObject jo = new JSONObject(); + try { + jo.put("id", group); + jo.put("name", group); + } catch (JSONException e) { + } + results.put(jo); + } + return results; + } + + public JSONArray getGroupsFromStore(String uri, String user) { + JSONArray results = new JSONArray(); if (uri == null || uri.isEmpty()) { // get uri from user-id uri = Actor.getUriFromId(user, false); } - JSONArray results = new JSONArray(); AnnotationStore store = getAnnotationStore(); Node person = store.getPersonNodeByUri(uri); if (person != null) { @@ -89,18 +125,6 @@ results.put(jo); } } - // assemble result object - JSONObject result = new JSONObject(); - try { - result.put("rows", results); - result.put("total", results.length()); - } catch (JSONException e) { - setStatus(Status.SERVER_ERROR_INTERNAL, "JSON Error"); - return null; - } - logger.fine("sending:"); - logger.fine(result.toString()); - return new JsonRepresentation(result); - + return results; } }