diff --git a/src/main/java/com/ntlab/irisserver/entities/Game.java b/src/main/java/com/ntlab/irisserver/entities/Game.java index 23652da..c619fb5 100644 --- a/src/main/java/com/ntlab/irisserver/entities/Game.java +++ b/src/main/java/com/ntlab/irisserver/entities/Game.java @@ -13,8 +13,8 @@ private DrawingController drawingController = null; - public Game() { - drawingController = new DrawingController(this); + public Game(Room room) { + drawingController = new DrawingController(room, room.getMembers(), assignments); } public DrawingController getDrawingController() { diff --git a/src/main/java/com/ntlab/irisserver/models/KeywordManager.java b/src/main/java/com/ntlab/irisserver/models/KeywordManager.java index 2103fd6..c175210 100644 --- a/src/main/java/com/ntlab/irisserver/models/KeywordManager.java +++ b/src/main/java/com/ntlab/irisserver/models/KeywordManager.java @@ -1,54 +1,22 @@ package com.ntlab.irisserver.models; import org.springframework.stereotype.Component; - -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.io.BufferedReader; -import java.io.File; import java.io.FileReader; import java.io.IOException; -import org.apache.catalina.core.ApplicationContext; -import com.ntlab.irisserver.utils.Base64Decode; -import org.apache.catalina.core.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.beans.BeansException; - import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; @Component public class KeywordManager { + private static KeywordManager theInstance = null; String[] keywords = {"0"}; - /*= {"りんご", - "ごりら","らっぱ","ぱんつ","つみき",};*/ - private List FileRead(String path) { - List ss = new ArrayList(); - - try { - BufferedReader buffReader = - new BufferedReader(new FileReader(path)); - String s; - - while ((s = buffReader.readLine()) != null) { - ss.add(s); - } - buffReader.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - return ss; - - } - + //シングルトンパターンでインスタンス作成 public static KeywordManager getInstance() { if(theInstance == null) { theInstance = new KeywordManager(); @@ -56,6 +24,8 @@ return theInstance; } + //------------------------------------------------------------------------------ + //読み込んだファイルのキーワードをStringの配列で返す public String[] getKeywords(String path){ var response = Response.status(Response.Status.NO_CONTENT); @@ -63,11 +33,34 @@ response.status(400).entity("パスがありません"); throw new WebApplicationException(response.build()); } else if(FileRead(path).size() == 0){ - response.status(400).entity(path+"に対応したファイルがありません"); + response.status(404).entity(path+"に対応したファイルがありません"); throw new WebApplicationException(response.build()); } else { keywords = FileRead(path).toArray(new String[FileRead(path).size()]); } + return keywords; } + + //----------------------------------------------------------------------------- + //pathのファイルを読み込み + private List FileRead(String path) { + List ss = new ArrayList(); + + try { + BufferedReader buffReader = new BufferedReader(new FileReader(path)); + String s; + while ((s = buffReader.readLine()) != null) { + ss.add(s); + } + + buffReader.close(); + + } catch (IOException e) { + e.printStackTrace(); + } + + return ss; + } + } diff --git a/src/main/java/com/ntlab/irisserver/models/keywords.txt b/src/main/java/com/ntlab/irisserver/models/keywords.txt deleted file mode 100644 index 70d2edc..0000000 --- a/src/main/java/com/ntlab/irisserver/models/keywords.txt +++ /dev/null @@ -1,7 +0,0 @@ -りんご -ごりら -らっぱ -パイナップル -ルビー -ビール -ルアー diff --git a/src/main/java/com/ntlab/irisserver/resources/DrawingsRest.java b/src/main/java/com/ntlab/irisserver/resources/DrawingsRest.java index 083ee2f..13190ca 100644 --- a/src/main/java/com/ntlab/irisserver/resources/DrawingsRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/DrawingsRest.java @@ -1,24 +1,26 @@ 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 javax.ws.rs.core.MediaType; import java.io.IOException; @Component @Path("/rooms") -public class DrawingsRest { - private ApplicationContext applicationContext; +public class DrawingsRest implements ApplicationContextAware { - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + private org.springframework.context.ApplicationContext applicationContext; + + public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } + // お絵描きの終了判定 @GET @Path("/{rid}/game/drawings") public String getDrawings(@PathParam("rid") String rid) { @@ -26,34 +28,50 @@ return null; } + // 絵のデータ取得(パスを渡せば良い) @GET @Path("/{rid}/game/drawings/{dno}") + @Produces(MediaType.APPLICATION_JSON) public String getDrawing(@PathParam("rid") String rid, @PathParam("dno") int dno ) { - return null; - } - @PUT - @Path("/{rid}/game/drawings/{dno}") - public String putDrawing(@PathParam("rid") String rid, @PathParam("dno") int dno, @FormParam("drawing") String drawing ) { - - String path1 = ""; String path = ""; + String path1 = ""; + String fileName = ""; 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); - + path1 = applicationContext.getResource("file:").getFile().getAbsolutePath() + "/apache-tomcat-9.0.10/webapps/irisdata"; + fileName= rid + "-" + dno + ".png"; + path = path1 + fileName; + System.out.println("生成されたパス:" + path.toString()); } catch (IOException e) { e.printStackTrace(); throw new WebApplicationException(500); } - // いったんnullにしとく - return null; + return path; + } + + // 描いた絵を送る + @PUT + @Path("/{rid}/game/drawings/{dno}") + @Produces(MediaType.APPLICATION_JSON) + 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().getAbsolutePath() + "/apache-tomcat-9.0.10/webapps"; + System.out.println("保存前のディレクトリのパス:" + path1.toString()); + System.out.println("クライアントから届いたBASE64の文字列"+ drawing.toString()); + // utilsのBase64Decodeにデコードしてもらって、そのついでに保存してもらう + path = Base64Decode.saveAsFile(rid, dno, path1, drawing); + } catch (IOException e) { + e.printStackTrace(); + throw new WebApplicationException(500); + } + System.out.println("画像デーをが追加しました。これがパス:" + path); + + return "画像保存完了"; } } diff --git a/src/main/java/com/ntlab/irisserver/resources/KeywordsRest.java b/src/main/java/com/ntlab/irisserver/resources/KeywordsRest.java index cc9cec8..d34045c 100644 --- a/src/main/java/com/ntlab/irisserver/resources/KeywordsRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/KeywordsRest.java @@ -29,14 +29,10 @@ public String[] getKeywords() throws IOException { String path; - path = applicationContext.getResource("file:").getFile().getAbsolutePath() - +"/apache-tomcat-9.0.10/webapps/iris/WEB-INF/classes/com/ntlab/irisserver/models/keywords.txt"; - - //path = "C:\\Users\\student\\Desktop\\IrisServer\\src\\main\\java\\com\\ntlab\\irisserver\\models\\keywords.txt"; + path = applicationContext.getResource("file:").getFile().getAbsolutePath()+"/apache-tomcat-9.0.10/webapps/irisdata/keywords.txt"; KeywordManager km = KeywordManager.getInstance(); - String[] keywords = km.getKeywords(path); - return keywords; + return km.getKeywords(path); } } diff --git a/src/main/java/com/ntlab/irisserver/utils/Base64Decode.java b/src/main/java/com/ntlab/irisserver/utils/Base64Decode.java index 2e4a135..bcde778 100644 --- a/src/main/java/com/ntlab/irisserver/utils/Base64Decode.java +++ b/src/main/java/com/ntlab/irisserver/utils/Base64Decode.java @@ -12,10 +12,10 @@ //デコードを行う 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; + //ファイルを作成する + String fileName = rid + "-" + dno.toString() + ".png"; + String path2 = "irisdata"; + String path = path1 + "/" + path2 + "/" + fileName; System.out.println(path.toString());