/*
*
* 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>" +
" By <em>" + bd.getFirstName() + " " +
bd.getSurname() + "</em> " +
"(" + bd.getYear() + ")<br> <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> " +
"<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.";
}
}