package javacodebook.server.servletbasics.pathinfo;

import java.io.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class CatalogServlet extends HttpServlet {

    private Hashtable catalog;

    public void init(ServletConfig config)
    throws ServletException {
        catalog = new Hashtable();
        catalog.put("P001", new Book("Das Java Codebook",
            "Donnermeyer/Rusch/Brodersen/Skulschus/Wiederstein",
            "------", "Addison-Wesley"));
        catalog.put("P002", new Book("Das Excel-VBA Codebook",
            "Körn/Weber", "3-8273-1979-X", "Addison-Wesley"));
        catalog.put("P003", new Book("Das Acces-VBA Codebook",
            "Grießhammer/Michaels/Zerbe", "3-8273-1953-6", "Addison-Wesley"));
    }


    protected void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, java.io.IOException {
        res.setContentType("text/html");
        java.io.PrintWriter out = res.getWriter();
        out.println("<html>");
        out.println("<body>");
        if(req.getPathInfo() == null)
            showCatalog(out);
        else {
            String pathInfo = req.getPathInfo();
            String prodNr = pathInfo.substring(pathInfo.lastIndexOf("/") + 1,
                pathInfo.lastIndexOf("."));
            Book book = (Book)catalog.get(prodNr);
            if(book != null) {
                out.println("<b>" + book.getTitle() + "</b><br>");
                out.println(book.getAuthors() + "<br>");
                out.println("ISBN " + book.getIsbn() + "<br>");
                out.println(book.getPublisher() + "<br>");
            }
            else {
                out.println("<b>Kein Buch mit dieser Produktnummer gefunden</b>");
            }
        }
        out.println("</body>");
        out.println("</html>");
    }

    private void showCatalog(PrintWriter out) {
        out.println("<table border=1 cellpadding=1 cellspacing=0>");
        out.println("<tr>");
        out.println("<th width=150 align=left>Produktnummer</th>");
        out.println("<th width=450 align=left>Bezeichnung</th>");
        out.println("</tr>");
        for(Enumeration keys = catalog.keys(); keys.hasMoreElements(); ) {
            String prodNr = (String)keys.nextElement();
            Book book = (Book)catalog.get(prodNr);
            out.println("<tr>");
            out.println("<td><a href=\"catalog/produkt/" + prodNr + ".html\">"
                + prodNr + "</a></td>");
            out.println("<td>" + book.getTitle() + "</td>");
            out.println("</tr>");
        }
        out.println("</table>");
    }
}
