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

/** 
 * a Java servlet that hopefully receives the session information
 *    from another servlet (St10SessionExample)
 *
 * @author Sharon Tuttle
 * @version 3-27-13
 */

import javax.servlet.*; 
import javax.servlet.http.*; 
import java.util.*; 
import java.io.*; 
 
public class St10SessionExample2 extends HttpServlet 
{
    /**
     * try to invalidate current sessions and redirect user to "proper" 
     *     login page - St10SessionExample via doGet --
     *     if they try to reach here via doGet 
     * 
     * @param request object containing the request information
     *                from the browser 
     * @param response object containing the response that will
     *                 be sent back to the browser - here a redirect
     *                 to St10SessionExample
     */

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
                     throws ServletException, IOException
    {
        HttpSession session = request.getSession(true);
        session.invalidate();

        //ServletOutputStream tryOut = response.getOutputStream();
        //tryOut.println("moo");
        response.sendRedirect("http://nrs-projects.humboldt.edu"
	       	      + ":8888/servlet/St10SessionExample");
    }

    /**
     * create an HTML document that shows session information
     *    passed to it from the St10SessionExample servlet
     * 
     * @param request object containing the request information
     *                from the browser 
     * @param response object containing the response that will
     *                 be sent back to the browser - here including
     *                 the session information it received
     */

    public void doPost(HttpServletRequest request,
                      HttpServletResponse response)
                     throws ServletException, IOException
    {
        HttpSession session = request.getSession(true);
        String sessionId = session.getId();

        response.setContentType("text/html");
        
        ServletOutputStream postOut = response.getOutputStream();

        String title = "from St10SessionExample2 doPost method!";

        String oldCourse = "";
        int oldInt = 0;
        int oldQuant = 0;
        int prevPageNumber = 0;

        // grab previous values from session, if can

        if (session.isNew() == false)
        {
            oldCourse = (String) session.getAttribute("this course");
            oldInt =  ((Integer)
                     session.getAttribute("course int")).intValue();
            oldQuant = ((Integer)
                     session.getAttribute("quantity")).intValue();
            prevPageNumber = ((Integer)
	        	        session.getAttribute("pageNumber")).intValue();
        }

        // otherwise, SHOULDN'T be here -- redirect to first page!

        else
        {
            // notice, only get here if session WAS new -- no need
            //     invalidate a new session, I think;

            response.sendRedirect("http://nrs-projects.humboldt.edu:8888/" +
                                  "servlet/St10SessionExample");
        }

        Html318Helpers.beginHtml(postOut, title);

        // if reach here, give next page based on previous page number

        if (prevPageNumber == 2)
	{
            // set up for testing clicker question answers
        
            session.setAttribute("looky", new Double(13.3));

            // the rest is the actual set-up for page 3

            session.setAttribute("pageNumber", new Integer(3));

            postOut.println("<h1> " + title + " - PAGE 3 </h1>");

            postOut.println("<table>");
            postOut.println("<tr> <td> Session id is:  </td> <td>" 
                            + sessionId + "</td> </tr>");
            postOut.println("<tr> <td> Quantity is:  </td> <td>" 
                            + oldQuant + "</td> </tr>");
            postOut.println("</table>");

            postOut.println("<form method=\"post\" " +
                       "action=\"http://nrs-projects.humboldt.edu:8888/servlet/" +
                       "St10SessionExample2\">");
            postOut.println("<p> Enter an amount:    ");
            postOut.println("<input type=\"text\" " +
                                "name=\"amount\" value=\"0\" />");
            postOut.println("</p>");
            postOut.println("<p> <input type=\"submit\" " +
                           "value=\"Send value\" />");
            postOut.println("   ");
            postOut.println("<input type=\"reset\" /> </p>\n");
            postOut.println("</form>");
        }

        else if (prevPageNumber == 3)
	{
            // testing clicker question answers (comment/uncomment as
            //     needed

            //Double lookyVal = session.getAttribute("looky");
            Double lookyVal = (Double) session.getAttribute("looky");
            //double lookyVal = (double) session.getAttribute("looky");
            //double lookyVal = session.getAttribute("looky");

            // the rest is the actual set-up for page 4

            postOut.println("<h1> " + title + " - PAGE 4 </h1>"); 

            postOut.println("Session id is: " + sessionId + "<br /><br />");

            postOut.println("<table>"); 
            postOut.println("   <tr> <td> quantity: </td> <td>" +  
                            oldQuant + "</td></tr>"); 
            postOut.println("   <tr> <td> this course: </td> <td>" +
                            oldCourse + "</td></tr>");
            postOut.println("   <tr> <td> course int: </td> <td>" +
                            oldInt + "</td></tr>");
            postOut.println("   <tr> <td> amount: </td> <td>" +
                            request.getParameter("amount")
                            + "</td></tr>");
            postOut.println("</table>"); 

            // now, end this session...

            session.invalidate();
        }

        // IF get here -- and I HOPE we can't -- invalidate session, and
        //    redirect to first page...
        else
        {
            session.invalidate();
            response.sendRedirect("http://nrs-projects.humboldt.edu:8888/" +
                                  "servlet/St10SessionExample");
        }

        // now, regardless of which page was created above,
        //    finish the page...

        Html318Helpers.endHtml(postOut);
    }
}