/*
 *
 * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
 * 
 * This software is the proprietary information of Sun Microsystems, Inc.  
 * Use is subject to license terms.
 * 
 */

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import database.*;
import cart.*;
import util.Currency;
import exception.*;

/**
 * This is a simple example of an HTTP Servlet.  It responds to the GET
 * method of the HTTP protocol. 
 */
public class BookDetailsServlet extends HttpServlet {

   private BookDB bookDB;

   public void init() throws ServletException {
      bookDB =
            (BookDB)getServletContext().getAttribute("bookDB");
         if (bookDB == null)
             throw new UnavailableException("Couldn't get database.");
   }

   public void destroy() {
         bookDB = null;
   }

      
   public void doGet (HttpServletRequest request,
                       HttpServletResponse response)
        throws ServletException, IOException {

   // set headers and buffer size before accessing the Writer
        response.setContentType("text/html");
            response.setBufferSize(8192);
            PrintWriter out = response.getWriter();

   // then write the response
        out.println("<html>" +
                    "<head><title>Book Description</title></head>");

        // Get the dispatcher; it gets the banner to the user
        RequestDispatcher dispatcher =
               getServletContext().getRequestDispatcher("/banner");
                                       
            if (dispatcher != null)
               dispatcher.include(request, response);
               
        //Get the identifier of the book to display
        String bookId = request.getParameter("bookId");
        if (bookId != null) {

            // and the information about the book
            try {
               BookDetails bd = bookDB.getBookDetails(bookId);
               Currency c = new Currency();
               c.setLocale(request.getLocale());
               c.setAmount(bd.getPrice());
      

               //Print out the information obtained
               out.println("<h2>" + bd.getTitle() + "</h2>" +
                           "&nbsp; By <em>" + bd.getFirstName() + " " +
                           bd.getSurname() + "</em> &nbsp; &nbsp; " +
                           "(" + bd.getYear() + ")<br> &nbsp; <br>" +
                           "<h4>Here's what the critics say: </h4>" +
                           "<blockquote>" + bd.getDescription() +
                           "</blockquote>" +
                           "<h4>Our price: " + c.getFormat() + "</h4>" +
                           "<p><strong><a href=\"" +
                           response.encodeURL(request.getContextPath() + "/catalog?bookId=" + bookId) +
                           "\"> Add To Your Shopping Cart</a>&nbsp;&nbsp;&nbsp;" +
                           "<a href=\"" + 
                           response.encodeURL(request.getContextPath() + "/catalog") + "\">Continue Shopping</a></p></strong>");
            } catch (BookNotFoundException ex) {
                     response.resetBuffer();
                     throw new ServletException(ex);
            }
                                    

        }
        out.println("</body></html>");
        out.close();
    }

    public String getServletInfo() {
        return "The BookDetail servlet returns information about" +
               "any book that is available from the bookstore.";
    }

}
