diff --git a/src/main/java/org/ntlab/acanthus_server/resources/gallery/LayersRest.java b/src/main/java/org/ntlab/acanthus_server/resources/gallery/LayersRest.java index 88b550c..e0a00e8 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/gallery/LayersRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/gallery/LayersRest.java @@ -1,7 +1,9 @@ package org.ntlab.acanthus_server.resources.gallery; import org.ntlab.acanthus_server.entities.Layer; +import org.ntlab.acanthus_server.entities.Page; import org.ntlab.acanthus_server.entities.Position; +import org.ntlab.acanthus_server.entities.Stroke; import org.ntlab.acanthus_server.models.Gallery; import org.springframework.stereotype.Component; @@ -27,7 +29,12 @@ @Produces(MediaType.APPLICATION_JSON) public Integer getLayers(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid) { var pages = gallery.getAnimationByAid(aid).getPages(); - return pages.get(pid).getLayers().size(); + for (var p : pages) { + if (!p.getPid().equals(pid)) continue; + return p.getLayers().size(); + } + + throw new WebApplicationException(404); } @@ -40,13 +47,17 @@ @POST @Produces(MediaType.APPLICATION_JSON) public Integer addLayer(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid) { + var layerSize = 4; var pages = gallery.getAnimationByAid(aid).getPages(); + var page = (Page) null; - if (pages.get(pid).getLayers().size() < 4) { - pages.get(pid).getLayers().add(new Layer()); + for (var p : pages) { + if (!p.getPid().equals(pid)) continue; + page = p; + if (p.getLayers().size() < layerSize) p.getLayers().add(new Layer()); } - return pages.get(pid).getLayers().size(); + return page.getLayers().size(); } @@ -61,7 +72,11 @@ @Produces(MediaType.APPLICATION_JSON) public Integer getStrokeNo(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid, @PathParam("layerNo") Integer layerNo) { var pages = gallery.getAnimationByAid(aid).getPages(); - var strokes = pages.get(pid).getLayers().get(layerNo).getStrokes(); + var strokes = new ArrayList(); + for (var p : pages) { + if (pid.equals(p.getPid())) + strokes = p.getLayers().get(layerNo).getStrokes(); + } if (strokes == null) return null; return (strokes.size() - 1); diff --git a/src/main/java/org/ntlab/acanthus_server/resources/gallery/StrokesRest.java b/src/main/java/org/ntlab/acanthus_server/resources/gallery/StrokesRest.java index f27d813..0a66e85 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/gallery/StrokesRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/gallery/StrokesRest.java @@ -29,7 +29,12 @@ @Produces(MediaType.APPLICATION_JSON) public ArrayList getStrokes(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid, @PathParam("layerNo") Integer layerNo) { var pages = gallery.getAnimationByAid(aid).getPages(); - return pages.get(pid).getLayers().get(layerNo).getStrokes(); + + for (var p : pages) { + if (pid.equals(p.getPid())) return p.getLayers().get(layerNo).getStrokes(); + } + + throw new WebApplicationException(404); } // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ @@ -51,17 +56,16 @@ @FormParam("uid") Integer uid, @FormParam("uidToken") String uidToken, @FormParam("pen") Integer pen, @FormParam("color") Integer color, @FormParam("thick") Integer thick) { var pages = gallery.getAnimationByAid(aid).getPages(); - var strokes = pages.get(pid).getLayers().get(layerNo).getStrokes(); + var strokes = new ArrayList(); - Stroke stroke = new Stroke(); + for (var p : pages) { + if (pid.equals(p.getPid())) strokes = p.getLayers().get(layerNo).getStrokes(); + } + + var stroke = new Stroke(); stroke.addStrokes(pen, color, thick); // 線の情報を追加 strokes.add(stroke); - stroke.setStrokeNo(strokes.size()-1); // strokeNoに現在のstrokesのsizeを入れる -// if(animation != null) { -// this.Test.setStrokes(pen, color, thick); -// }else{ -// throw new WebApplicationException(401); -// } + stroke.setStrokeNo(strokes.size() - 1); // strokeNoに現在のstrokesのsizeを入れる return stroke.getStrokeNo(); } @@ -85,7 +89,10 @@ @Produces(MediaType.APPLICATION_JSON) public String deleteStrokes(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid, @PathParam("layerNo") Integer layerNo, @QueryParam("uid") Integer uid) { var pages = gallery.getAnimationByAid(aid).getPages(); - var strokes = pages.get(pid).getLayers().get(layerNo).getStrokes(); + var strokes = new ArrayList(); + for (var page : pages) { + if (pid.equals(page.getPid())) strokes = page.getLayers().get(layerNo).getStrokes(); + } strokes.clear(); return "LGTM?"; @@ -108,9 +115,13 @@ @DELETE @Produces(MediaType.APPLICATION_JSON) public String deleteStrokeByStrokeNo(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid, - @PathParam("layerNo") Integer layerNo, @PathParam("strokeNo") Integer strokeNo) { + @PathParam("layerNo") Integer layerNo, @PathParam("strokeNo") Integer strokeNo) { var pages = gallery.getAnimationByAid(aid).getPages(); - var strokes = pages.get(pid).getLayers().get(layerNo).getStrokes(); + var strokes = new ArrayList(); + for (var page : pages) { + if (pid.equals(page.getPid())) strokes = page.getLayers().get(layerNo).getStrokes(); + } + strokes.remove((int) strokeNo); return "やかんの麦茶"; @@ -134,7 +145,11 @@ public SortedSet getPositions(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid, @PathParam("layerNo") Integer layerNo, @PathParam("strokeNo") Integer strokeNo) { var pages = gallery.getAnimationByAid(aid).getPages(); - var strokes = pages.get(pid).getLayers().get(layerNo).getStrokes(); + var strokes = new ArrayList(); + for (var p : pages) { + if (pid.equals(p.getPid())) strokes = p.getLayers().get(layerNo).getStrokes(); + } + /* Collections.sort(strokes.get(strokeNo).getPositions(), new Comparator() { @@ -165,12 +180,16 @@ @POST @Produces(MediaType.APPLICATION_JSON) public Integer addPosition(@FormParam("positionNo") Integer positionNo, @PathParam("aid") Integer aid, @PathParam("pid") Integer pid, @PathParam("strokeNo") Integer strokeNo, - @PathParam("layerNo") Integer layerNo, @FormParam("x") Float x, @FormParam("y") Float y) { + @PathParam("layerNo") Integer layerNo, @FormParam("x") Float x, @FormParam("y") Float y) { var pages = gallery.getAnimationByAid(aid).getPages(); - var strokes = pages.get(pid).getLayers().get(layerNo).getStrokes(); + var strokes = new ArrayList(); + for (var p : pages) { + if (pid.equals(p.getPid())) + strokes = p.getLayers().get(layerNo).getStrokes(); + } - Position position = new Position(); + var position = new Position(); position.setXY(positionNo, x, y); strokes.get(strokeNo).addPosition(position); // 呼び出したstrokesに座標を追加する // if(animation != null) {