import java.util.Enumeration;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

/**
 * Servlet implementation class for Servlet: Guess
 *
 * @web.servlet
 *   name="Guess"
 *   display-name="Guess" 
 *
 * @web.servlet-mapping
 *   url-pattern="/Guess"
 *  
 */
 public class Guess extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    /* (non-Java-doc)
   * @see javax.servlet.http.HttpServlet#HttpServlet()
   */
  public Guess() {
    super();
  }     
  private String getQuestionHtml(){
    return "Your questions is:<br/><br/><form method=\"get\" action=\"/Magic/Guess\">" +
          "<em>&ldquo;Am I thinking of a <input type=\"text\" name=\"name\"/>?&rdquo;" +
          "<br/><br/><input type=\"submit\" value=\"Ask John\"/></form><br/><br/>";
  }
  
  /* (non-Java-doc)
   * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    
//     Get the current session object, create one if necessary
      HttpSession session = request.getSession();

      // state = 0 we show hello screen
      // state = 1 it is a bad guess
      // state = 2 its the answer
      Integer state = (Integer)session.getAttribute("tracker.state");
      if (state == null)
        state = new Integer(0);
      else
        state = new Integer(state.intValue());
      String name = request.getParameter("name");

      out.println("<html><head><title>Edward in a Servlet</title></head>");
      out.println("<body>");      
      switch (state) {
      case 0:
        out.println("Hi, I am John Edward and I will <span style=\"text-decoration: line-through\">" +
            "steal your</span> read your mind.<br/><br/>");
        out.println(getQuestionHtml());
        state = 1;
        break;
      case 1: 
        out.println("No, you are not thinking of a " + name + ".<br/><br/>");
        out.println(getQuestionHtml());
        break;
      case 2:
        out.println("Yes, you are thinking of a " + name 
            + "!<br/><br/>The spirits told me.<br/><a href=\"/Magic/Guess\">Try again</a>");
        state = 0;
      }
      if (name != null && name.charAt(0) == 'c' && state == 1){
        state = 2;
      }
      session.setAttribute("tracker.state", state);
      out.println("</body></html>");
  }   
  
  /* (non-Java-doc)
   * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
  }             
}