source: AnnotationManagerN4J/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotationsByResources.java @ 105:7417f5915181

tip
Last change on this file since 105:7417f5915181 was 105:7417f5915181, checked in by casties, 7 years ago

check admin permission before changing permissions.
Enum for typesafe actions.

File size: 3.9 KB
Line 
1package de.mpiwg.itgroup.annotations.restlet;
2
3/*
4 * #%L
5 * AnnotationManager
6 * %%
7 * Copyright (C) 2012 - 2014 MPIWG Berlin
8 * %%
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU Lesser General Public License as
11 * published by the Free Software Foundation, either version 3 of the
12 * License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Lesser Public License for more details.
18 *
19 * You should have received a copy of the GNU General Lesser Public
20 * License along with this program.  If not, see
21 * <http://www.gnu.org/licenses/lgpl-3.0.html>.
22 * #L%
23 */
24
25import java.io.UnsupportedEncodingException;
26import java.net.URLDecoder;
27import java.util.ArrayList;
28import java.util.List;
29
30import org.json.JSONArray;
31import org.json.JSONException;
32import org.json.JSONObject;
33import org.restlet.data.Form;
34import org.restlet.data.Parameter;
35import org.restlet.data.Status;
36import org.restlet.ext.json.JsonRepresentation;
37import org.restlet.representation.Representation;
38import org.restlet.resource.Get;
39
40import de.mpiwg.itgroup.annotations.Annotation;
41import de.mpiwg.itgroup.annotations.Annotation.Action;
42import de.mpiwg.itgroup.annotations.Person;
43import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
44import de.mpiwg.itgroup.annotations.restlet.utils.JSONObjectComparator;
45
46/**
47 * API for accessing tags in the Annotation store.
48 *
49 * @author dwinter
50 *
51 */
52public class AnnotatorAnnotationsByResources extends AnnotatorResourceImpl {
53
54    @Get("json")
55    public Representation doGetJSON(Representation entity) {
56        logger.fine("AnnotatorAnnotatonsByResource doGetJSON!");
57
58        // do authentication
59        Person authUser = getUserFromAuthToken(entity);
60        logger.fine("request authenticated=" + authUser);
61
62        String id = null;
63        String jsonId = (String) getRequest().getAttributes().get("id");
64        if (jsonId != null) {
65            // URL decode
66            try {
67                jsonId = URLDecoder.decode(jsonId, "UTF-8");
68            } catch (UnsupportedEncodingException e) {
69                // this shouldn't happen
70            }
71            id = decodeJsonId(jsonId);
72            // String id = jsonId;
73            logger.fine("ressource-id=" + id);
74        }
75
76        Form form = getRequest().getResourceRef().getQueryAsForm();
77        String sortBy = null;
78        for (Parameter parameter : form) {
79            if (parameter.getName().equals("sortBy")) {
80                sortBy = parameter.getValue();
81            }
82        }
83
84        AnnotationStore store = getAnnotationStore();
85        // String tagUri=NS.MPIWG_TAGS_URL+id;
86        List<Annotation> annotations = store.getAnnotationsByResource(id);
87
88        // JSONArray results = new JSONArray();
89        ArrayList<JSONObject> results = new ArrayList<JSONObject>();
90
91        for (Annotation annot : annotations) {
92            // check permission
93            if (!annot.isActionAllowed(Action.read, authUser, store))
94                continue;
95
96            JSONObject jo = createAnnotatorJson(annot, false);
97            results.add(jo);
98        }
99
100        if (sortBy != null) {
101            JSONObjectComparator.sortAnnotations(results, sortBy);
102        }
103
104        JSONArray resultsJa = new JSONArray();
105        for (JSONObject result : results) {
106            resultsJa.put(result);
107        }
108
109        // assemble result object
110        JSONObject result = new JSONObject();
111        try {
112            result.put("rows", resultsJa);
113            result.put("total", resultsJa.length());
114        } catch (JSONException e) {
115            setStatus(Status.SERVER_ERROR_INTERNAL, "JSON Error");
116            return null;
117        }
118        return new JsonRepresentation(result);
119    }
120
121}
Note: See TracBrowser for help on using the repository browser.