source: AnnotationManagerN4J/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorTags.java @ 91:cf44d9e1a4a7

Last change on this file since 91:cf44d9e1a4a7 was 91:cf44d9e1a4a7, checked in by casties, 9 years ago

let CORS be handled by Restlet 2.3 CorsFilter?.

File size: 3.7 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.List;
28
29import org.json.JSONArray;
30import org.json.JSONException;
31import org.json.JSONObject;
32import org.neo4j.graphdb.Node;
33import org.restlet.data.Status;
34import org.restlet.ext.json.JsonRepresentation;
35import org.restlet.representation.Representation;
36import org.restlet.resource.Get;
37
38import de.mpiwg.itgroup.annotations.Tag;
39import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
40
41/**
42 * API for accessing tags in the Annotation store.
43 *
44 * @author dwinter
45 *
46 */
47public class AnnotatorTags extends AnnotatorResourceImpl {
48
49    /**
50     * GET with JSON content-type.
51     * Parameters:
52     *   user: short user name
53     *   uri: user uri
54     *
55     * @param entity
56     * @return
57     */
58    @Get("json")
59    public Representation doGetJSON(Representation entity) {
60        logger.fine("AnnotatorGroups doGetJSON!");
61
62        String jsonId = (String) getRequest().getAttributes().get("id");
63        // String id = decodeJsonId(jsonId);
64        String id = jsonId;
65        logger.fine("annotation-id=" + id);
66
67        if (id == null) {
68            return getAllTags();
69        } else {
70            // URL decode
71            try {
72                id = URLDecoder.decode(id, "UTF-8");
73            } catch (UnsupportedEncodingException e) {
74                // this shouldn't happen
75            }
76            return getTag(id);
77        }
78    }
79
80    protected Representation getTag(String id) {
81        AnnotationStore store = getAnnotationStore();
82        String tagUri = BaseRestlet.TAGS_URI_PREFIX + id;
83        Node tagNode = store.getTagNodeByUri(tagUri);
84        Tag tag = store.createTagFromNode(tagNode);
85        JSONObject jo = new JSONObject();
86        try {
87            jo.put("id", tag.getId());
88            jo.put("name", tag.getName());
89            jo.put("uri", tag.getUri());
90        } catch (JSONException e) {
91        }
92
93        return new JsonRepresentation(jo);
94    }
95
96    protected Representation getAllTags() {
97        JSONArray results = new JSONArray();
98        AnnotationStore store = getAnnotationStore();
99
100        List<Tag> tags = store.getTags(null, null);
101        for (Tag tag : tags) {
102            JSONObject jo = new JSONObject();
103            try {
104                jo.put("id", tag.getId());
105                jo.put("name", tag.getName());
106                jo.put("uri", tag.getUri());
107            } catch (JSONException e) {
108            }
109            results.put(jo);
110        }
111
112        // assemble result object
113        JSONObject result = new JSONObject();
114        try {
115            result.put("rows", results);
116            result.put("total", results.length());
117        } catch (JSONException e) {
118            setStatus(Status.SERVER_ERROR_INTERNAL, "JSON Error");
119            return null;
120        }
121        logger.fine("sending:");
122        logger.fine(result.toString());
123        return new JsonRepresentation(result);
124    }
125
126}
Note: See TracBrowser for help on using the repository browser.