/*
 *
 * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
 * 
 * Redistribution and use in source and binary forms, with or
 * without modification, are permitted provided that the following
 * conditions are met:
 * 
 * - Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 * 
 * - Redistribution in binary form must reproduce the above
 *   copyright notice, this list of conditions and the following
 *   disclaimer in the documentation and/or other materials
 *   provided with the distribution.
 * 
 * Neither the name of Sun Microsystems, Inc. or the names of
 * contributors may be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * 
 * This software is provided "AS IS," without a warranty of any
 * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
 * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
 * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
 * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR
 * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
 * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
 * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
 * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
 * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS
 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 * 
 * You acknowledge that this software is not designed, licensed or
 * intended for use in the design, construction, operation or
 * maintenance of any nuclear facility.
 * 
 */

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import database.*;
import exception.*;
/**
 * An HTTP Servlet that overrides the service method to return a
 * simple web page.
 */
public class BookStoreServlet 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.remove();
      bookDB = null;
   }

      
   public void doGet (HttpServletRequest request,
                         HttpServletResponse response)
        throws ServletException, IOException {        
            
      HttpSession session = request.getSession();
      ResourceBundle messages = (ResourceBundle)session.getAttribute("messages");
      if (messages == null) {
         Locale locale=request.getLocale();
         messages = ResourceBundle.getBundle("messages.BookstoreMessages", locale); 
         session.setAttribute("messages", messages);
      }
      
      
      // set content-type header before accessing the Writer
        response.setContentType("text/html");
            response.setBufferSize(8192);
            PrintWriter out = response.getWriter();
        
        // then write the data of the response
        out.println("<html>" +
                    "<head><title>Duke's Bookstore</title></head>");

        // Get the dispatcher; it gets the banner to the user
        RequestDispatcher dispatcher =
               getServletContext().getRequestDispatcher("/banner");
                                       
            if (dispatcher != null)
               dispatcher.include(request, response);
                                     
        try {      
           BookDetails bd = bookDB.getBookDetails("203");      

            
           //Left cell -- the "book of choice"
           out.println("<b>" + messages.getString("What") + "</b>" +
                       "<p>" + "<blockquote>" + 
                              "<em><a href=\"" +
                       response.encodeURL(request.getContextPath() + "/bookdetails?bookId=203") +
                       "\">" + bd.getTitle() + "</a></em>" + messages.getString("Talk") + "</blockquote>");
           
           //Right cell -- various navigation options
           out.println("<p><a href=\"" +
                       response.encodeURL(request.getContextPath() + "/catalog") +
                       "\"><b>" + messages.getString("Start") + "</b></a></font><br>" +
                       "<br> &nbsp;" +
                       "<br> &nbsp;" +
                       "<br> &nbsp;" +
                       "</body>" +
                       "</html>");
         } catch (BookNotFoundException ex) {
                  response.resetBuffer();
            throw new ServletException(ex);
         }
         out.close();
    }

    public String getServletInfo() {
        return "The BookStore servlet returns the main web page " +
               "for Duke's Bookstore.";
    }
}
