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

public class UpdateStat extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
    	int number=0;
    	try {
    		number=Integer.parseInt(request.getParameter("inputNumber"));
	} catch (NumberFormatException e){
		
	}

	// Add the number to the Stat in our session as well as to the 
	// Stat in the context

	// Get our session (if one exists) otherwise create one
	HttpSession session = request.getSession(true); 
	Stat mStat=(Stat)session.getAttribute("myStat");
	if(mStat==null){
		mStat=new Stat();
		session.setAttribute("myStat",mStat);
	}

	mStat.add(number); // Don't need this to be synchronized. Only
		// the one session should be accessing this!!

	// All servlets share an instance of Stat
	ServletContext sc=getServletContext();
	Stat sStat=(Stat)sc.getAttribute("sharedStat");
	String mSummary=sStat.addAndReport(number); // We need this to be synchronized!!
		// Possibly many threads will be looking at this instance!

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Stat Update Report</title>");
        out.println("</head>");
        out.println("<body>");
	out.println("<table border>");
	out.println("<tr><th>Shared stat summary</th><td>"+mSummary+"</td></tr>");
	out.println("<tr><th>My stat summary</th><td>"+mStat.report()+"</td></tr>");
	out.println("</table>");
        out.println("</body>");
        out.println("</html>");

    }
}
