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;
     }
 }