package servlet; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import account.Account; import account.AccountManager; import room.Room; import room.RoomManager; public class RoomListServlet extends HttpServlet{ // 受け取る部分 ↓reqで受け取る ↓respで返す public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { //RoomManagerを使うため、宣言しておく RoomManager roommgr = RoomManager.getInstance(); // AccountManagerを使うため、宣言しておく ↓シングルトンパターンを利用しているため AccountManager accountmgr = AccountManager.getInstance(); // 返す文字の宣言 ↓返すためresp PrintWriter printwriter = resp.getWriter(); /******************************* * パラメータを受け取る req *******************************/ String state = req.getParameter("state"); String sId = req.getSession().getId(); //System.out.println(" ******************** RoomListServlet ******************** "); /******************************* * init||update 全ルームリストを返す *******************************/ if(state.equals("init") || state.equals("update")) { //System.out.println("RoomList sId : " + sId); printwriter.println("<roomlist>"); for(int i=0; i<roommgr.getRoomCount(); i++) { Room room = new Room(); room = roommgr.getRoom(i); int rid = room.getId(); String name = room.getName(); int num = room.getMemberCount(); printwriter.println("<room id = \"" + rid +"\" name = \"" + name + "\" members = \"" + num + "\">"); printwriter.println("</room>"); } printwriter.println("</roomlist>"); System.out.println("RoomList state = init"); /******************************* * enter 入室判定およびユーザの追加 *******************************/ } else if(state.equals("enter")) { //roomidを受け取る String roomid = req.getParameter("id"); //idの一致するroomを探す Room room = roommgr.searchIdRoom(Integer.parseInt(roomid)); //該当するroomがあった場合 if(room != null) { //部屋の人数が、MAX_MENBER未満のとき、部屋に入室できる if(room.getMemberCount() < Room.MAX_MEMBERS){ //入室処理 Account ac = accountmgr.getAccount(sId); room.addMember(ac); printwriter.println("<result state = \"ok\">"); //部屋の人数がMAX_MEMBERSの時、入室できない } else { printwriter.println("<result state = \"ng\">"); } //idの一致する部屋がなかった場合 } else { printwriter.println("<result state = \"ng\">"); } printwriter.println("</result>"); } } // 返す部分(テスト用) public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { // 共有させることによってこちらだけで実行できる doPost(req, resp); } }