Mercurial > hg > AnnotationManagerN4J
diff src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotations.java @ 31:9f653697437e
annotationbrowser
author | dwinter |
---|---|
date | Tue, 25 Sep 2012 21:47:58 +0200 |
parents | b1fb0d117877 |
children | 8427930c5f88 |
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotations.java Tue Sep 25 16:08:11 2012 +0200 +++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotations.java Tue Sep 25 21:47:58 2012 +0200 @@ -5,9 +5,14 @@ package de.mpiwg.itgroup.annotations.restlet; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import org.restlet.data.Form; +import org.restlet.data.Parameter; import org.restlet.data.Status; import org.restlet.ext.json.JsonRepresentation; import org.restlet.representation.Representation; @@ -18,7 +23,9 @@ import de.mpiwg.itgroup.annotations.Annotation; import de.mpiwg.itgroup.annotations.Person; +import de.mpiwg.itgroup.annotations.Tag; import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore; +import de.mpiwg.itgroup.annotations.restlet.utils.JSONObjectComparator; /** * Implements the "annotations" uri of the Annotator API. see @@ -49,9 +56,8 @@ logger.debug("annotation-id=" + id); if (id == null) { - // TODO: what to return without id - list all annotations? - setStatus(Status.CLIENT_ERROR_BAD_REQUEST); - return null; + + return getAllAnnotations(); } // do authentication @@ -76,7 +82,55 @@ } } - /** + private Representation getAllAnnotations() { + + Form form = getRequest().getResourceRef().getQueryAsForm(); + String sortBy=null; + for (Parameter parameter : form) { + if (parameter.getName().equals("sortBy")){ + sortBy = parameter.getValue(); + } + } + + AnnotationStore store = getAnnotationStore(); + ArrayList<JSONObject> results = new ArrayList<JSONObject>(); + + List<Annotation> annotations = store.getAnnotations(null, null); + for (Annotation annotation : annotations) { + + JSONObject jo = createAnnotatorJson(annotation,false); + results.add(jo); + + } + + if (sortBy!=null){ + JSONObjectComparator.sortAnnotations(results,sortBy); + } + + JSONArray resultsJa = new JSONArray(); + for (JSONObject result:results){ + resultsJa.put(result); + } + + // assemble result object + JSONObject result = new JSONObject(); + try { + result.put("rows", resultsJa); + result.put("total", resultsJa.length()); + } catch (JSONException e) { + setStatus(Status.SERVER_ERROR_INTERNAL, "JSON Error"); + return null; + } + logger.debug("sending:"); + logger.debug(result); + return new JsonRepresentation(result); + } + + + + + + /** * POST with JSON content-type. Creates a new Annotation. * * @return