Mercurial > hg > AnnotationManagerN4J
diff src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java @ 16:794077e6288c
CLOSED - # 252: Tags for Annotations
https://it-dev.mpiwg-berlin.mpg.de/tracs/mpdl-project-software/ticket/252
author | casties |
---|---|
date | Tue, 04 Sep 2012 20:02:59 +0200 |
parents | 58357a4b86de |
children | aafa3884b2c4 |
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java Tue Aug 28 20:23:12 2012 +0200 +++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java Tue Sep 04 20:02:59 2012 +0200 @@ -9,7 +9,9 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -189,6 +191,9 @@ jo.put("text", annot.getBodyText()); jo.put("uri", annot.getTargetBaseUri()); + /* + * user + */ if (makeUserObject) { // create user object JSONObject userObject = new JSONObject(); @@ -213,6 +218,9 @@ jo.put("user", annot.getCreatorUri()); } + /* + * ranges + */ if (annot.getTargetFragment() != null) { // we only look at the first xpointer List<String> fragments = new ArrayList<String>(); @@ -225,7 +233,9 @@ } } - // permissions + /* + * permissions + */ JSONObject perms = new JSONObject(); jo.put("permissions", perms); // admin @@ -266,6 +276,21 @@ readPerms.put(readPerm.getIdString()); } + /* + * tags + */ + Set<String> tagset = annot.getTags(); + if (tagset != null) { + JSONArray tags = new JSONArray(); + jo.put("tags", tags); + for (String tag : tagset) { + tags.put(tag); + } + } + + /* + * id + */ // encode Annotation URL (=id) in base64 String annotUrl = annot.getUri(); String annotId = encodeJsonId(annotUrl); @@ -412,15 +437,21 @@ */ public Annotation updateAnnotation(Annotation annot, JSONObject jo, Representation entity) throws JSONException, UnsupportedEncodingException { - // target uri + /* + * target uri + */ if (jo.has("uri")) { annot.setTargetBaseUri(jo.getString("uri")); } - // annotation text + /* + * annotation text + */ if (jo.has("text")) { annot.setBodyText(jo.getString("text")); } - // check authentication + /* + * check authentication + */ String authUser = checkAuthToken(entity); if (authUser == null) { /* @@ -433,7 +464,9 @@ * } authUser = httpUser.getIdentifier(); */ } - // get or create creator object + /* + * get or create creator object + */ Actor creator = annot.getCreator(); if (creator == null) { creator = new Person(); @@ -482,7 +515,9 @@ if (creator.getUri() == null) { creator.setUri(userUri); } - + /* + * creation date + */ if (annot.getCreated() == null) { // set creation date SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); @@ -490,7 +525,9 @@ annot.setCreated(ct); } - // create xpointer from the first range/area + /* + * create xpointer from the first range/area + */ if (jo.has("ranges")) { JSONObject ranges = jo.getJSONArray("ranges").getJSONObject(0); annot.setFragmentType(FragmentTypes.XPOINTER); @@ -504,7 +541,9 @@ annot.setTargetFragment(fragment); } - // permissions + /* + * permissions + */ if (jo.has("permissions")) { JSONObject permissions = jo.getJSONObject("permissions"); if (permissions.has("admin")) { @@ -529,6 +568,19 @@ } } + /* + * tags + */ + if (jo.has("tags")) { + HashSet<String> tagset = new HashSet<String>(); + JSONArray tags = jo.getJSONArray("tags"); + for (int i = 0; i < tags.length(); ++i) { + tagset.add(tags.getString(i)); + } + annot.setTags(tagset); + } + + return annot; }