source: AnnotationManagerN4J/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotationsByTags.java @ 37:34b9d044d0bf

Last change on this file since 37:34b9d044d0bf was 37:34b9d044d0bf, checked in by dwinter, 12 years ago

authorisation added
js / css aufgeraeumt

File size: 2.9 KB
Line 
1package de.mpiwg.itgroup.annotations.restlet;
2
3import java.util.ArrayList;
4import java.util.List;
5
6import org.json.JSONArray;
7import org.json.JSONException;
8import org.json.JSONObject;
9import org.neo4j.graphdb.Node;
10import org.restlet.data.Form;
11import org.restlet.data.Parameter;
12import org.restlet.data.Status;
13import org.restlet.ext.json.JsonRepresentation;
14import org.restlet.representation.Representation;
15import org.restlet.resource.Get;
16import org.restlet.resource.ServerResource;
17
18import de.mpiwg.itgroup.annotations.Annotation;
19import de.mpiwg.itgroup.annotations.NS;
20import de.mpiwg.itgroup.annotations.Person;
21import de.mpiwg.itgroup.annotations.Tag;
22import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
23import de.mpiwg.itgroup.annotations.restlet.utils.JSONObjectComparator;
24
25/**
26 * API for accessing tags in the Annotation store.
27 *
28 * @author dwinter
29 *
30 */
31public class AnnotatorAnnotationsByTags extends AnnotatorResourceImpl {
32    protected String getAllowedMethodsForHeader() {
33        return "OPTIONS,GET";
34    }
35   
36    @Get("json")
37    public Representation doGetJSON(Representation entity) {
38        logger.debug("AnnotatorAnnotatonsBytag doGetJSON!");
39        setCorsHeaders();
40       
41        // do authentication
42        Person authUser = Person.createPersonWithId(this.checkAuthToken(entity));
43        logger.debug("request authenticated=" + authUser);
44
45       
46        String jsonId = (String) getRequest().getAttributes().get("id");
47       
48        Form form = getRequest().getResourceRef().getQueryAsForm();
49        String sortBy=null;
50        for (Parameter parameter : form) {
51          if (parameter.getName().equals("sortBy")){
52          sortBy =  parameter.getValue();
53          }
54        }
55       
56        //String id = decodeJsonId(jsonId);
57        String id = jsonId;
58        logger.debug("annotation-id=" + id);
59       
60        AnnotationStore store = getAnnotationStore();
61                String tagUri=NS.MPIWG_TAGS_URL+id;
62        List<Annotation> annotations = store.getAnnotationsByTag(tagUri);
63       
64                //JSONArray results = new JSONArray();
65        ArrayList<JSONObject> results = new ArrayList<JSONObject>();
66       
67                for (Annotation annot : annotations) {
68                        //check permission
69                        if (!annot.isActionAllowed("read", authUser, store)) continue;
70           
71                        JSONObject jo = createAnnotatorJson(annot,false);
72            results.add(jo);
73        }
74   
75        if (sortBy!=null){
76                JSONObjectComparator.sortAnnotations(results,sortBy);
77        }
78               
79        JSONArray resultsJa = new JSONArray();
80        for (JSONObject result:results){
81                resultsJa.put(result);
82        }
83       
84    // assemble result object
85    JSONObject result = new JSONObject();
86    try {
87        result.put("rows", resultsJa);
88        result.put("total", resultsJa.length());
89    } catch (JSONException e) {
90        setStatus(Status.SERVER_ERROR_INTERNAL, "JSON Error");
91        return null;
92    }
93    logger.debug("sending:");
94    logger.debug(result);
95    return new JsonRepresentation(result);
96}
97
98   
99       
100}
Note: See TracBrowser for help on using the repository browser.