| | package org.ntlab.acanthus_server.resources.gallery; |
---|
| | |
---|
| | import org.ntlab.acanthus_server.entities.*; |
---|
| | import org.ntlab.acanthus_server.entities.Stroke; |
---|
| | import org.ntlab.acanthus_server.models.Gallery; |
---|
| | import org.ntlab.acanthus_server.utils.Base64Decode; |
---|
| | import org.springframework.beans.BeansException; |
---|
| | import org.springframework.context.ApplicationContext; |
---|
| | import org.springframework.context.ApplicationContextAware; |
---|
| | import org.springframework.stereotype.Component; |
---|
| | |
---|
| | import javax.ws.rs.*; |
---|
| | import javax.ws.rs.core.MediaType; |
---|
| | import java.util.ArrayList; |
---|
| | import java.util.Collections; |
---|
| | import java.util.Comparator; |
---|
| | import java.util.SortedSet; |
---|
| | import java.io.IOException; |
---|
| | import java.util.*; |
---|
| | |
---|
| | // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ |
---|
| | // |
---|
| | @Component |
---|
| | @Path("/gallery") |
---|
| | public class StrokesRest { |
---|
| | public class StrokesRest implements ApplicationContextAware { |
---|
| | private final Gallery gallery = Gallery.getInstance(); |
---|
| | private int srstrokeSize=0; |
---|
| | private int srstrokeNo=0; |
---|
| | private int srstrokeSize = 0; |
---|
| | private int srstrokeNo = 0; |
---|
| | |
---|
| | private ApplicationContext applicationContext; |
---|
| | |
---|
| | |
---|
| | public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { |
---|
| | this.applicationContext = applicationContext; |
---|
| | } |
---|
| | |
---|
| | |
---|
| | // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ |
---|
| | // 1ページの1レイヤーに置ける筆跡情報を全て取得します |
---|
| | // 成功時のレスポンス:strokeNo{pen, color, thickness, potions{x, y}} |
---|
| | // @PathParam Integer aid 作品ID |
---|
| |
---|
| | @Path("/{aid}/pageMap/{pid}/layers/{layerNo}/strokes") |
---|
| | @POST |
---|
| | @Produces(MediaType.APPLICATION_JSON) |
---|
| | public String addStrokes(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid, @PathParam("layerNo") Integer layerNo, |
---|
| | @FormParam("uid") Integer uid, @FormParam("strokeNo") Integer strokeNo, @FormParam("uidToken") String uidToken, @FormParam("pen") Integer pen, |
---|
| | @FormParam("color") Integer color, @FormParam("thick") Integer thick) { |
---|
| | @FormParam("uid") Integer uid, @FormParam("strokeNo") Integer strokeNo, @FormParam("uidToken") String uidToken, @FormParam("pen") Integer pen, |
---|
| | @FormParam("color") Integer color, @FormParam("thick") Integer thick) { |
---|
| | var pages = gallery.getAnimationByAid(aid).getPages(); |
---|
| | var strokes = new ArrayList<Stroke>(); |
---|
| | |
---|
| | for (var p : pages) { |
---|
| |
---|
| | // 画像URLを返す |
---|
| | @Path("/{aid}/pageMap/{pid}/image") |
---|
| | @GET |
---|
| | @Produces(MediaType.APPLICATION_JSON) |
---|
| | public String getLayers(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid) { |
---|
| | return "http://nitta-lab-www.is.konan-u.ac.jp/gallery/" + aid + "/" + pid + "/a" + aid + "p" + pid + ".png"; |
---|
| | } |
---|
| | public HashMap getPageUrls(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid) { |
---|
| | Animation animation = gallery.getAnimationByAid(aid); |
---|
| | ArrayList<Page> pages = animation.getPages(); |
---|
| | HashMap<Integer, String> pageUrl = new HashMap<>(); |
---|
| | |
---|
| | for (Page p : pages) { |
---|
| | String url = "http://nitta-lab-www.is.konan-u.ac.jp/gallery/" + aid + "/" + p.getPid() + "/a" + aid + "p" + p.getPid() + ".png"; |
---|
| | pageUrl.put(p.getPageNo(), url); |
---|
| | } |
---|
| | |
---|
| | return pageUrl; |
---|
| | } |
---|
| | |
---|
| | |
---|
| | // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ |
---|
| | // スクショで撮った画像をサーバ内の指定フォルダーにおく |
---|
| | // @PathParam Integer aid 作品のID |
---|
| | // @PathParam Integer pid ページのID |
---|
| | // @FormParam String image Base64 |
---|
| | @Path("/{aid}/pageMap/{pid}/image") |
---|
| | @POST |
---|
| | @Produces(MediaType.APPLICATION_JSON) |
---|
| | public String addImage(@PathParam("aid") Integer aid, @PathParam("pid") Integer pid, @FormParam("image") String image) { |
---|
| | |
---|
| | |
---|
| | String vid = "a" + aid.toString() + pid.toString(); |
---|
| | // String url = "http://nitta-lab-www.is.konan-u.ac.jp/nitta-lab-www/webapps/"; |
---|
| | |
---|
| | String path1 = ""; |
---|
| | try { |
---|
| | // path1 = applicationContext.getResource("http:").getFile().getAbsolutePath() + "/apache-tomcat-9.0.10/webapps"; |
---|
| | path1 = applicationContext.getResource("file:").getFile().getAbsolutePath() + "/apache-tomcat-9.0.10/webapps"; |
---|
| | // String url = "http://nitta-lab-www.is.konan-u.ac.jp" + path1; |
---|
| | Base64Decode.saveAsFile(aid, pid, path1, image); |
---|
| | |
---|
| | } catch (IOException e) { |
---|
| | e.printStackTrace(); |
---|
| | throw new WebApplicationException(500); |
---|
| | } |
---|
| | |
---|
| | |
---|
| | |
---|
| | /* ArrayList<String> categories = (ArrayList<String>) category; |
---|
| | ScreenImage v = screenimage.createScreenImage(aid, pid, vid, url, categories); |
---|
| | return v;*/ |
---|
| | |
---|
| | return path1; |
---|
| | } |
---|
| | |
---|
| | |
---|
| | // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ |
---|
| | // レイヤーごとのstrokeをすべて消去 |
---|
| | // @PathParam Integer aid 作品のID |
---|
| |
---|
| | @Path("/{aid}/pageMap/{pid}/layers/{layerNo}/strokes/{strokeNo}/positions") |
---|
| | @POST |
---|
| | @Produces(MediaType.APPLICATION_JSON) |
---|
| | public String 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 = new ArrayList<Stroke>(); |
---|
| | for (var p : pages) { |
---|
| |
---|
| | } |
---|
| | |
---|
| | var position = new Position(); |
---|
| | position.setXY(positionNo, x, y); |
---|
| | if(srstrokeNo==strokeNo){ |
---|
| | if (srstrokeNo == strokeNo) { |
---|
| | strokes.get(srstrokeSize).addPosition(position); |
---|
| | }else { |
---|
| | for(int i = 0; i < strokes.size(); i++){ |
---|
| | if(strokes.get(i).getStrokeNo()==strokeNo) |
---|
| | { |
---|
| | srstrokeNo=strokes.get(i).getStrokeNo(); |
---|
| | srstrokeSize=i; |
---|
| | } else { |
---|
| | for (int i = 0; i < strokes.size(); i++) { |
---|
| | if (strokes.get(i).getStrokeNo() == strokeNo) { |
---|
| | srstrokeNo = strokes.get(i).getStrokeNo(); |
---|
| | srstrokeSize = i; |
---|
| | strokes.get(i).addPosition(position); |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | // strokes.get(strokeNo).addPosition(position); // 呼び出したstrokesに座標を追加する |
---|
| | // strokes.get(strokeNo).addPosition(position); // 呼び出したstrokesに座標を追加する |
---|
| | // if(animation != null) { |
---|
| | ////// this.Position.setXY(x, y); |
---|
| | ////// this.positions.add(this.Position); |
---|
| | ////// }else{ |
---|
| |
---|
| | |