diff --git a/src/main/java/com/ntlab/irisserver/entities/Game.java b/src/main/java/com/ntlab/irisserver/entities/Game.java index d11ed8e..8d723fe 100644 --- a/src/main/java/com/ntlab/irisserver/entities/Game.java +++ b/src/main/java/com/ntlab/irisserver/entities/Game.java @@ -1,7 +1,32 @@ package com.ntlab.irisserver.entities; import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class Game { + private Map drawingList = new HashMap<>(); + private Map keywordList = new HashMap<>(); + + public Drawing getDrawing(int dno) { + Drawing d = drawingList.get(dno); + return d; + } + + public Drawing putDrawing(int dno, Drawing drawing) { + Drawing d = drawingList.put(dno, drawing); + return d; + } + + public List getKeywords() { + List keywords = new ArrayList<>(keywordList.values()); + return keywords; + } + + public String getKeyword(int dno) { + String keyword = keywordList.get(dno); + return keyword; + } } diff --git a/src/main/java/com/ntlab/irisserver/entities/Member.java b/src/main/java/com/ntlab/irisserver/entities/Member.java index 68fc6ff..1afa6df 100644 --- a/src/main/java/com/ntlab/irisserver/entities/Member.java +++ b/src/main/java/com/ntlab/irisserver/entities/Member.java @@ -23,7 +23,7 @@ } //----------------------------------------------------------------- - // setter0 + // setter public void setNickname(String nickname) {this.nickname = nickname;} public void setBelongs(String belongs) {this.belongs = belongs;} diff --git a/src/main/java/com/ntlab/irisserver/entities/Room.java b/src/main/java/com/ntlab/irisserver/entities/Room.java index fc9d96a..9724813 100644 --- a/src/main/java/com/ntlab/irisserver/entities/Room.java +++ b/src/main/java/com/ntlab/irisserver/entities/Room.java @@ -2,8 +2,11 @@ import com.fasterxml.jackson.annotation.JsonProperty; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; import java.util.*; + public class Room { @JsonProperty("rid") public String rid; @@ -23,22 +26,31 @@ @JsonProperty("settings") Settings settings = new Settings(); + @JsonProperty("game") + Game game =null; + private Member redMaster; private Member blueMaster; + public Room(String rid, String owner) { this.rid=rid; ownerName=owner; } + public String getOwnerName() { + return ownerName; + } + public Settings getSettings() { return settings; } public List getMembers() { + List memberslist = new ArrayList(members.values()) ; return memberslist; @@ -51,7 +63,7 @@ //変更対象の情報を取得 Member m = members.get(nick); - //変更先のチームに既に所属している場合は変更なし + //変更先のチームに既に所属している場合はチームに変更なし if(!(m.getBelongs().equals(belongs))) { //1チームの最大人数は8人 @@ -74,40 +86,56 @@ } - //マスターを変更 - if(belongs.equals("r")) { + //変更対象がマスターであればマスター不在に修正 + if(m.isMaster()){ - //赤チームのマスターをメンバーに変更 - if(redMaster != null) { - redMaster.setMaster(false); + m.setMaster(false); + + if(redMaster == m){ + redMaster = null; } - - //変更対象を赤チームのマスターに変更 - m.setMaster(true); - redMaster = m; + if(blueMaster == m){ + blueMaster = null; + } } - if(belongs.equals("b")) { + //マスターに変更する処理 + if(isMaster){ + //マスターを変更 + if(belongs.equals("r")) { - //青チームのマスターをメンバーに変更 - if(blueMaster != null) { - blueMaster.setMaster(false); + //赤チームのマスターをメンバーに変更 + if(redMaster != null) { + redMaster.setMaster(false); + } + + //変更対象を赤チームのマスターに変更 + m.setMaster(true); + redMaster = m; } - //変更対象を赤チームのマスターに変更 - m.setMaster(true); - blueMaster = m; - } + if(belongs.equals("b")) { + //青チームのマスターをメンバーに変更 + if(blueMaster != null) { + blueMaster.setMaster(false); + } + + //変更対象を赤チームのマスターに変更 + m.setMaster(true); + blueMaster = m; + } + } } - public Game createGame() { - return null; + public Game createGame(String owner) { + game=new Game(); + return game; } public Game getGame() { - return null; + return game; } public Member getMember(String nick) { @@ -125,8 +153,8 @@ members.remove(nick); } - public int getStateRest() { - return 0; + public int getState() { + return state; } } diff --git a/src/main/java/com/ntlab/irisserver/models/RoomManager.java b/src/main/java/com/ntlab/irisserver/models/RoomManager.java index e3fef6e..e985294 100644 --- a/src/main/java/com/ntlab/irisserver/models/RoomManager.java +++ b/src/main/java/com/ntlab/irisserver/models/RoomManager.java @@ -3,9 +3,7 @@ import org.springframework.stereotype.Component; import javax.ws.rs.*; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; +import java.util.*; @Component public class RoomManager { @@ -32,6 +30,11 @@ return r; } + public List getRooms() { + List roomlist = new ArrayList<>(rooms.values()); + return roomlist; + } + public void deleteRoom(String rid) { rooms.remove(rid); } diff --git a/src/main/java/com/ntlab/irisserver/resources/MembersRest.java b/src/main/java/com/ntlab/irisserver/resources/MembersRest.java index 1239ede..913baa4 100644 --- a/src/main/java/com/ntlab/irisserver/resources/MembersRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/MembersRest.java @@ -14,8 +14,6 @@ import javax.ws.rs.core.Response; @Component - - @Path("/rooms") public class MembersRest { @@ -35,6 +33,8 @@ //Listの0番目と1番目をチームマスターにする if(i==0 || i==1){ info.setMaster(true); + }else{ + info.setMaster(false); } //Listの偶数番目を"r"(赤)に、奇数番目を"b"(青)にする @@ -50,21 +50,21 @@ //ランダムにチーム編成を送り、全員の役職を変更する @PUT @Path("/{rid}/members") + @Produces(MediaType.APPLICATION_JSON) public void putMembers(@PathParam("rid") String rid, @FormParam("nickname") String nickname) { RoomManager rm = RoomManager.getInstance(); Room room = rm.getRoom(rid); List gm = room.getMembers(); //引数で取ってきたnicknameがownerかどうか確認 -/* - if(nickname != room.ownerName) { + String owner = room.getOwnerName(); + if(nickname.equals(owner)) { + //全員の役職を変更 + membershuffle(gm); + }else{ var response = Response.status(401).entity("あなたはオーナーではありません"); throw new WebApplicationException(response.build()); } -*/ - - //全員の役職を変更 - membershuffle(gm); } @@ -72,22 +72,16 @@ //自分のnicknameを送り、Roomに追加 @POST @Path("/{rid}/members") - public void postMembers(@PathParam("rid") String rid, @FormParam("nickname") String nickname) { + @Produces(MediaType.APPLICATION_JSON) + public Room postMembers(@PathParam("rid") String rid, @FormParam("nickname") String nickname) { RoomManager rm = RoomManager.getInstance(); Room room = rm.getRoom(rid); - List m = room.getMembers(); //引数で取ってきたnicknameがListに存在しているか確認 -/* - for(int i=0; i<10; i++){ - Member info = m.get(i); - if(info.getNickname() == nickname) { - var response = Response.status(401).entity("入力したnicknameは既に存在しています"); - throw new WebApplicationException(response.build()); - } - } -*/ - room.addMember(nickname); + if(room.getMember(nickname)==null)room.addMember(nickname); + + return room; + } diff --git a/src/main/java/com/ntlab/irisserver/resources/RoomsRest.java b/src/main/java/com/ntlab/irisserver/resources/RoomsRest.java index 6f426a7..97995b6 100644 --- a/src/main/java/com/ntlab/irisserver/resources/RoomsRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/RoomsRest.java @@ -5,29 +5,59 @@ import javax.ws.rs.*; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.util.List; @Component @Path("/rooms") -@Produces(MediaType.APPLICATION_JSON) + public class RoomsRest { - @POST + @GET //テスト用(すべての部屋の情報を表示) @Path("/") - public Room makeRooms(@FormParam("nickname") String ownername){ + @Produces(MediaType.APPLICATION_JSON) + public List getRoomsInfo(){ RoomManager rm = RoomManager.getInstance(); - Room room = rm.createRoom(ownername); + rm.getRooms(); + List rms = rm.getRooms(); + + return rms; + } + + @POST //部屋の作成,オーナーを設定 + @Path("/") + @Produces(MediaType.APPLICATION_JSON) + public Room makeRooms(@FormParam("nickname") String owner){ + RoomManager rm = RoomManager.getInstance(); + Room room = rm.createRoom(owner); + room.addMember(owner); + return room; } - @GET + @GET//部屋の情報を表示 @Path("/{rid}") + @Produces(MediaType.APPLICATION_JSON) public Room getRoomMember(@PathParam("rid") String rid){ RoomManager rm = RoomManager.getInstance(); Room room = rm.getRoom(rid); + if(room == null){ + //部屋がなければエラー + var response = Response.status(Response.Status.NO_CONTENT); + response.status(404).entity("部屋が存在しません"); + throw new WebApplicationException(response.build()); + } + return room; } + @DELETE//部屋の削除 + @Path("/{rid}") + public void deleteRooms(@PathParam("rid") String rid){ + RoomManager rm = RoomManager.getInstance(); + rm.deleteRoom(rid); + } }