diff --git a/src/main/java/com/ntlab/irisserver/entities/Drawing.java b/src/main/java/com/ntlab/irisserver/entities/Drawing.java index bd51375..c49a153 100644 --- a/src/main/java/com/ntlab/irisserver/entities/Drawing.java +++ b/src/main/java/com/ntlab/irisserver/entities/Drawing.java @@ -3,6 +3,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class Drawing { @@ -13,7 +16,7 @@ // 作者名 @JsonProperty("member") private String member; - + // 絵のデータ @JsonProperty("drawing") private String drawing; @@ -21,6 +24,10 @@ @JsonProperty("isDrawn") private Boolean isDrawn; + // リストに何を持たすかは相談したいところなので仮置き。。。 + private Map drawings = new HashMap<>(); + + //----------------------------------------------------------------- // getter public String getTitle() { diff --git a/src/main/java/com/ntlab/irisserver/resources/DrawingsRest.java b/src/main/java/com/ntlab/irisserver/resources/DrawingsRest.java index 22db30f..083ee2f 100644 --- a/src/main/java/com/ntlab/irisserver/resources/DrawingsRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/DrawingsRest.java @@ -1,29 +1,58 @@ package com.ntlab.irisserver.resources; +import com.ntlab.irisserver.utils.Base64Decode; +import org.apache.catalina.core.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.beans.BeansException; import org.springframework.stereotype.Component; import javax.ws.rs.*; +import java.io.IOException; @Component @Path("/rooms") public class DrawingsRest { + private ApplicationContext applicationContext; + + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } + @GET @Path("/{rid}/game/drawings") - public String getDrawings(@PathParam("rid") int rid) { + public String getDrawings(@PathParam("rid") String rid) { // 絵のデータ取得 return null; } @GET @Path("/{rid}/game/drawings/{dno}") - public String getDrawing(@PathParam("rid") int rid, @PathParam("dno") String dno ) { + public String getDrawing(@PathParam("rid") String rid, @PathParam("dno") int dno ) { return null; } @PUT @Path("/{rid}/game/drawings/{dno}") - public String putDrawing(@PathParam("rid") int rid, @PathParam("dno") String dno ) { + public String putDrawing(@PathParam("rid") String rid, @PathParam("dno") int dno, @FormParam("drawing") String drawing ) { + + String path1 = ""; + String path = ""; + + try { + path1 = applicationContext.getResource("file:").getFile(); + // 下記が本物だけど上手くいかない。。。 + //path1 = applicationContext.getResource("file:").getFile().getAbsolutePath() +"/apache-tomcat-9.0.10"+ "/webapps"; + System.out.println("0"+ path1.toString()); + System.out.println("!!!クライアントから届いたBASE64の文字列!!!:" + drawing.toString()); + path = Base64Decode.saveAsFile(rid, dno, path1, drawing); + + } catch (IOException e) { + e.printStackTrace(); + throw new WebApplicationException(500); + } + + // いったんnullにしとく return null; } diff --git a/src/main/java/com/ntlab/irisserver/utils/Base64Decode.java b/src/main/java/com/ntlab/irisserver/utils/Base64Decode.java new file mode 100644 index 0000000..2e4a135 --- /dev/null +++ b/src/main/java/com/ntlab/irisserver/utils/Base64Decode.java @@ -0,0 +1,40 @@ +package com.ntlab.irisserver.utils; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Base64; + +public class Base64Decode { + public static String saveAsFile(String rid ,Integer dno ,String path1 ,String enimage) throws IOException { + + //デコードを行う + byte[] dedata = Base64.getDecoder().decode(enimage); + + //ファイルがないときは作成する + String fileName = "r" + rid + "d" + dno.toString() + ".png"; + String path2 = "/gallery/"+ rid + "/"+ dno.toString(); + String path = path1 + path2 + "/" + fileName; + + System.out.println(path.toString()); + + File file = new File(path); + System.out.println("1" + path.toString()); + file.getParentFile().mkdirs(); + System.out.println("2"+ path.toString()); + file.createNewFile(); + System.out.println("3 koregarogu" + path.toString()); + + //ファイルに画像データを書き込む + FileOutputStream file1 = new FileOutputStream(file, false); + BufferedOutputStream bf = new BufferedOutputStream(file1); + bf.write(dedata, 0, dedata.length); + + //ファイルを閉じる + bf.close(); + + //セーブしたファイルの相対パスを文字列として返す + return path; + } +} diff --git a/src/main/java/utils/Base64Decode.java b/src/main/java/utils/Base64Decode.java deleted file mode 100644 index a300629..0000000 --- a/src/main/java/utils/Base64Decode.java +++ /dev/null @@ -1,10 +0,0 @@ -package utils; - -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Base64; - -public class Base64Decode { -}