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);
}
}