Ignore:
Timestamp:
Feb 3, 2015, 6:01:27 PM (9 years ago)
Author:
casties
Branch:
default
Message:

upped version to 0.5.
can use display name and groups from auth token.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorGroups.java

    r75 r88  
    1 /**
    2  * ReST API for accessing groups in the Annotation store.
    3  */
    41package de.mpiwg.itgroup.annotations.restlet;
    52
     
    4037import de.mpiwg.itgroup.annotations.Actor;
    4138import de.mpiwg.itgroup.annotations.Group;
     39import de.mpiwg.itgroup.annotations.Person;
    4240import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
    4341
     
    6765        logger.fine("AnnotatorGroups doGetJSON!");
    6866        setCorsHeaders();
    69         Form form = getRequest().getResourceRef().getQueryAsForm();
    70         String user = form.getFirstValue("user");
    71         String uri = form.getFirstValue("uri");
     67        // get user from auth token (preferred)
     68        Person authUser = getUserFromAuthToken(entity);
     69        JSONArray results = null;
     70        if (authUser != null && authUser.groups != null) {
     71            results  = getGroupsFromPerson(authUser);
     72        } else {
     73            // get user or uri from request
     74            Form form = getRequest().getResourceRef().getQueryAsForm();
     75            String user = form.getFirstValue("user");
     76            String uri = form.getFirstValue("uri");
     77            results = getGroupsFromStore(uri, user);
     78        }
     79        // assemble result object
     80        JSONObject result = new JSONObject();
     81        try {
     82            result.put("rows", results);
     83            result.put("total", results.length());
     84        } catch (JSONException e) {
     85            setStatus(Status.SERVER_ERROR_INTERNAL, "JSON Error");
     86            return null;
     87        }
     88        logger.fine("sending:");
     89        logger.fine(result.toString());
     90        return new JsonRepresentation(result);
     91    }
     92
     93    public JSONArray getGroupsFromPerson(Person person) {
     94        JSONArray results = new JSONArray();
     95        for (String group : person.groups) {
     96            JSONObject jo = new JSONObject();
     97            try {
     98                jo.put("id", group);
     99                jo.put("name", group);
     100            } catch (JSONException e) {
     101            }
     102            results.put(jo);
     103        }
     104        return results;
     105    }
     106
     107    public JSONArray getGroupsFromStore(String uri, String user) {
     108        JSONArray results = new JSONArray();
    72109        if (uri == null || uri.isEmpty()) {
    73110            // get uri from user-id
    74111            uri = Actor.getUriFromId(user, false);
    75112        }
    76         JSONArray results = new JSONArray();
    77113        AnnotationStore store = getAnnotationStore();
    78114        Node person = store.getPersonNodeByUri(uri);
     
    90126            }
    91127        }
    92         // assemble result object
    93         JSONObject result = new JSONObject();
    94         try {
    95             result.put("rows", results);
    96             result.put("total", results.length());
    97         } catch (JSONException e) {
    98             setStatus(Status.SERVER_ERROR_INTERNAL, "JSON Error");
    99             return null;
    100         }
    101         logger.fine("sending:");
    102         logger.fine(result.toString());
    103         return new JsonRepresentation(result);
    104 
     128        return results;
    105129    }
    106130}
Note: See TracChangeset for help on using the changeset viewer.