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