Mercurial > hg > AnnotationManagerN4J
diff src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java @ 63:9f8c9611848a
fixed bug with new rectangle shapes. added limit, offset and sortBy parameters to annotator/ and annotator/search.
author | casties |
---|---|
date | Fri, 23 Nov 2012 17:55:04 +0100 |
parents | b8ef15c8c4a5 |
children | c48435e7f312 |
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java Thu Nov 22 17:45:23 2012 +0100 +++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java Fri Nov 23 17:55:04 2012 +0100 @@ -386,11 +386,11 @@ String x = geom.getString("x"); String y = geom.getString("y"); fragment = String.format("xywh=fraction:%s,%s,0,0", x, y); - } else if (type.equalsIgnoreCase("point")) { + } else if (type.equalsIgnoreCase("rectangle")) { String x = geom.getString("x"); String y = geom.getString("y"); - String width = shape.getString("width"); - String height = shape.getString("height"); + String width = geom.getString("width"); + String height = geom.getString("height"); fragment = String.format("xywh=fraction:%s,%s,%s,%s", x, y, width, height); } else { logger.error("Unable to parse this shape: " + shape); @@ -416,7 +416,6 @@ String end = range.getString("end"); String startOffset = range.getString("startOffset"); String endOffset = range.getString("endOffset"); - String fragment = String.format( "xpointer(start-point(string-range(\"%s\",%s,1))/range-to(end-point(string-range(\"%s\",%s,1))))", start, startOffset, end, endOffset); @@ -559,20 +558,26 @@ */ try { if (jo.has("ranges")) { - JSONObject ranges = jo.getJSONArray("ranges").getJSONObject(0); - annot.setFragmentType(FragmentTypes.XPOINTER); - String fragment = parseRange(ranges); - annot.setTargetFragment(fragment); + JSONArray ranges = jo.getJSONArray("ranges"); + if (ranges.length() > 0) { + JSONObject range = ranges.getJSONObject(0); + annot.setFragmentType(FragmentTypes.XPOINTER); + String fragment = parseRange(range); + annot.setTargetFragment(fragment); + } } } catch (JSONException e) { // nothing to do } try { if (jo.has("shapes")) { - JSONObject shapes = jo.getJSONArray("shapes").getJSONObject(0); - annot.setFragmentType(FragmentTypes.AREA); - String fragment = parseShape(shapes); - annot.setTargetFragment(fragment); + JSONArray shapes = jo.getJSONArray("shapes"); + if (shapes.length() > 0) { + JSONObject shape = shapes.getJSONObject(0); + annot.setFragmentType(FragmentTypes.AREA); + String fragment = parseShape(shape); + annot.setTargetFragment(fragment); + } } } catch (JSONException e) { // nothing to do @@ -580,15 +585,22 @@ // deprecated areas type try { if (jo.has("areas")) { - JSONObject area = jo.getJSONArray("areas").getJSONObject(0); - annot.setFragmentType(FragmentTypes.AREA); - String fragment = parseArea(area); - annot.setTargetFragment(fragment); + JSONArray areas = jo.getJSONArray("areas"); + if (areas.length() > 0) { + JSONObject area = areas.getJSONObject(0); + annot.setFragmentType(FragmentTypes.AREA); + String fragment = parseArea(area); + annot.setTargetFragment(fragment); + } } } catch (JSONException e) { // nothing to do } - + // no fragment is an error + if (annot.getFragmentType() == null || annot.getTargetFragment() == null) { + throw new JSONException("Annotation has no valid target fragment!"); + } + /* * permissions */ @@ -649,11 +661,19 @@ return actor; } - public float getFloat(String s) { + public static float getFloat(String s) { try { return Float.parseFloat(s); } catch (NumberFormatException e) { } return 0f; } + + public static int getInt(String s) { + try { + return Integer.parseInt(s); + } catch (NumberFormatException e) { + } + return 0; + } }