import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Quiz extends HttpServlet {
  @Override    
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
  throws IOException {
    // 最初の問は GET
    doPost(request, response);
  }

  @Override    
  public void doPost(HttpServletRequest request, HttpServletResponse response) 
  throws IOException {
    response.setContentType("text/html; charset=Windows-31J");
    PrintWriter out = response.getWriter();
    out.println("<html><head></head><body>");

    int i, number=-1, score=0, answer=0;
    ArrayList<String[]> questions;

    HttpSession session = request.getSession(true);
    if (session.isNew()) {
      // 最初の問
      questions = new ArrayList<String[]>();
      File f = new File(getServletContext().getRealPath("/quiz.txt"));
      BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Windows-31J"));
      String line="";
      while((line=in.readLine())!=null) {
        line = line.trim();
        if(line.equals("")) 
          continue;
        questions.add(line.split("\\s+"));
      }
      in.close();
      session.setAttribute("questions", questions);
      out.println("<p>ようこそ QUIZへ!<br>では最初の問題です。</p>");
    } else { 
      // 最初の問ではない
      answer = Integer.parseInt(request.getParameter("answer"));
      number = Integer.parseInt((String)session.getAttribute("number"));
      score  = Integer.parseInt((String)session.getAttribute("score"));			
      questions = (ArrayList<String[]>)session.getAttribute("questions");

      String[] tokens = questions.get(number);
      int a = Integer.parseInt(tokens[tokens.length-1]);
      if (a==answer) { // aは最後の文字
        out.println("正解です。<br>");
        score++;
      } else {
        out.println("残念でした。<br>");
      }
    } 

    number++;
    if (number >= questions.size()) { // 終
      out.println("<br>これで QUIZは終わりです。<br>");
      out.println("正解数は、"+score+"問でした。");
      session.invalidate();
    } else { // 次の問を表示
      String[] tokens = questions.get(number);
      out.println("次の問: "+tokens[0]+"<br>");
      out.println("<form method='post'>");
      for (i=0; i<3; i++) {
        out.print("<input type='radio' name='answer'");
        out.print(" value='"+(i+1)+"'>");
        out.print(" "+tokens[i+1]);
      }
      out.println("<br>");
      out.println("<input type='submit' value='送信'>");
      out.println("<input type='reset' value='やめ'>");
      out.println("</form>");

      session.setAttribute("number", Integer.toString(number));
      session.setAttribute("score", Integer.toString(score));
    }

    out.println("</body></html>");
    out.close();
  }
}
