
// LojaVirtualServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class LojaVirtualServlet extends HttpServlet {

  class ItemObject {
    public ItemObject(String nome, double preco) {
      this.nome = nome;
      this.preco = preco;
    }
    public String getNome() {
      return nome;
    }
    public double getPreco() {
      return preco;
    }
    private String nome;
    private double preco;
  }

  public void init() {
    itemList = new Vector();
    for (int i = 1; i <= 10; i++) {
      itemList.addElement(new ItemObject("Item " + i, 10 * i));
    }
  }

  public void doGet(
    HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {

    HttpSession sessao = request.getSession(true);

    Vector itemCurr = (Vector) sessao.getAttribute("itemCurr");
    if (itemCurr == null) {
      itemCurr = new Vector();
    }

    String cmd = request.getParameter("cmd");
    if (cmd != null) {

      if (cmd.equals("Add")) {
        itemCurr.addElement(new ItemObject(
          request.getParameter("itemNome"),
          Double.parseDouble(request.getParameter("itemPreco"))));
      }

      if (cmd.equals("Remove")) {
        itemCurr.removeElementAt(
          Integer.parseInt(request.getParameter("itemAt")));
      }
    }


    sessao.setAttribute("itemCurr", itemCurr);

    StringBuffer output = new StringBuffer();
    output.append("<html><head><title>Loja Virtual Servlet</title></head>");
    output.append("<body><h1>Itens disponiveis</h1><br><table>");

    int i;
    ItemObject itob;

    for (i = 0; i < itemList.size(); i++) {
      itob = (ItemObject) itemList.elementAt(i);
      output.append("<tr><td align=left><a href=\"" +
        encodeAddCmd(response, itob) + "\">" + itob.getNome() +
        "</a></td><td align=right>" + itob.getPreco() + "<td></tr>");
    }

    output.append("</table><h1>Itens na cesta</h1><br><table>");

    for (i = 0; i < itemCurr.size(); i++) {
      itob = (ItemObject) itemCurr.elementAt(i);
      output.append("<tr><td align=left><a href=\"" +
        encodeRemoveCmd(response, i) + "\">" + itob.getNome() +
        "</td><td align=right>" + itob.getPreco() + "<td></tr>");
    }

    output.append("</table></body></html>");

    response.setContentType("text/html");
    response.getWriter().println(output);
  }

  public String encodeAddCmd(HttpServletResponse response, ItemObject itob) {
    return response.encodeURL("LojaVirtualServlet?cmd=Add&itemNome=" +
      itob.getNome() + "&itemPreco=" + itob.getPreco());
  }

  public String encodeRemoveCmd(HttpServletResponse response, int pos) {
    return response.encodeURL("LojaVirtualServlet?cmd=Remove&itemAt=" + pos);
  }

  private Vector itemList;
}
