// ShowSession.java servlet -- example use of session methods and info
// Chen Li, ICS 185 Winter 2005
// Minor updates (to use Java 5.0 features) by N. Jacobson for ICS185 Spring 2005

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

public class ShowItems extends HttpServlet
{
  public void doGet(HttpServletRequest request,HttpServletResponse response)
  throws ServletException, IOException
 {
    HttpSession session = request.getSession();
    ArrayList<String> previousItems =
      (ArrayList<String>)session.getAttribute("previousItems");
    if (previousItems == null)
    {
	  previousItems = new ArrayList<String>();
	  session.setAttribute("previousItems", previousItems);
    }

    String newItem = request.getParameter("newItem");

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

  String docType =
      "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
    out.println(docType +
                "<HTML>\n" +
                "<HEAD><TITLE>Items Purchased</TITLE></HEAD>\n" +
                "<BODY BGCOLOR=\"#FDF5E6\">\n" +
                "<H1>Items Purchased</H1>");

    // Show ShowSessionInfo servlet # of accesses info it gathered
    // (example of how to get info from another thread that may be running)
   Object accessCount = session.getAttribute("accessCount");
   if (accessCount == null)
   	out.println("<p>Number of previous accesses unavailable at this time.<p>");
   else
	out.println("<p>Note: Number of previous accesses is " + (Integer)accessCount + "</p>");

  synchronized(previousItems)
  {
      if (newItem != null)
      {
        previousItems.add(newItem);
      }
      if (previousItems.size() == 0)
      {
        out.println("<I>No items</I>");
      }
      else
      {
        out.println("<UL>");
        for(int i = 0; i < previousItems.size(); i++)
        {
          out.println("<LI>" + previousItems.get(i));
        }
        out.println("</UL>");
      }
    }

   out.println("</BODY></HTML>");
  }
}
