import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

import database.*;
import cart.*;

//import database.BookDetails;

public class SearchServlet extends HttpServlet
{
  public void doGet (HttpServletRequest request,
		     HttpServletResponse response)
    throws ServletException, IOException
    {
      HttpSession session = request.getSession(true);
      ShoppingCart cart = (ShoppingCart)session.getValue(session.getId());
      
      response.setContentType ("text/html");
      PrintWriter out = response.getWriter();
      
      out.println("<html>");
      out.println("<head> <title> Search Results </title></head>");
      out.println("<body bgcolor=#fffed0>");
      //out.println("inside get");
      out.println("<center><h2>"
		  +"<font color=\"#ff0000\">Search Results</font></h2></center>");
      out.println("<BR>");
      
      // If the user has no cart, create a new one
      if (cart == null) {
	cart = new ShoppingCart();
	session.putValue(session.getId(), cart);
      }
      BookDBServlet database = (BookDBServlet)
	getServletConfig().getServletContext().getServlet("bookdb");
      MusicDBServlet mdbase = (MusicDBServlet)
	getServletConfig().getServletContext().getServlet("musicdb");
 
      String bookToAdd = request.getParameter("Buy");
      if (bookToAdd != null) 
	{
	  BookDetails book = database.getBookDetails(bookToAdd);
	  cart.add(bookToAdd, book, "book");
	  out.println("You just added <strong>\""+book.getTitle()+"\"</strong> to your Shopping Cart");
	}

      /* out.println("</TD><TD align=right>");
      out.println("<A href=\""+
		  response.encodeUrl("/servlet/catalog")+"\"><B>Back to Catalog</B></A>");
   out.println("</TD></TR></TABLE>");
      */
      out.println("<HR><BR><BR>");
      out.println("<table>");
      out.println("<tr>");

      String query = request.getParameter("query");//Query string
      //out.println("query = "+query);
      String category=request.getParameter("in");
      //out.println("in="+category);
      String by=request.getParameter("by");
      //out.println("by="+by);
      if (query != null)//Make sure he entered something
      {
	if (category.equals("books") || category.equals("any") )//Search in books
	  {
	    // out.println("Searching in books");
	    //    BookDBServlet database = (BookDBServlet)
            getServletConfig().getServletContext().getServlet("bookdb");
	    
	    BookDetails [] books = database.getBooksSortedByTitle();
	    //out.println(database.getNumberOfBooks());
	    for (int i=0; i<database.getNumberOfBooks(); ++i)
	      {
	        //out.println(books[i].getTitle());
		String bname;
		if (by.equals("Name"))
		  {
		    bname= books[i].getTitle();
		    //  out.println(bname);
		  }
		else 
		  {
		    if (by.equals("Author"))
			{ 
			  bname=books[i].getFirstName()+" "+books[i].getSurname();
			}
		    else
		      bname="";
		  }
		//out.println(bname);
		 if (bname.indexOf(query) != -1)
		  {
		    out.println("<td>");
		    out.println ("<B><A href=\""+
				 response.encodeUrl("/servlet/bookdetails?bookId="
						    +books[i].getBookId())
				 +"\">" + books[i].getTitle() + "</A><B>");
		    out.println("</TD>");
		    out.println("<TD align=right>	");
		    out.println("<A href=\""+
				response.encodeUrl("/servlet/search?Buy="+books[i].getBookId()+"&query="+URLEncoder.encode(query)+"&by="+by+"&in="+category)+
				"\"><B>Add to Shopping Cart</B> </TD></tr>");
		    out.println("<TR><TD> Author : "+books[i].getFirstName()+" "+books[i].getSurname()+"</TD></TR>");
		  }
	      }
	  }
	else 
	  {
	    MusicDetails [] musics = mdbase.getMusicsSortedByTitle();
	    //out.println(database.getNumberOfBooks());
	    for (int i=0; i<mdbase.getNumberOfMusics(); ++i)
	      {
		//out.println(books[i].getTitle());
		String bname;
		if (by.equals("Name"))
		  {
		    bname= musics[i].getTitle();
		    //  out	.println(bname);
		  }
		else 
		  {
		    if (by.equals("Author"))
		      { 
			bname=musics[i].getFirstName()+" "+musics[i].getSurname();
		      }
		    else
		      bname="";
		  }
		//out.p	rintln(bname);
		if (bname.indexOf(query) != -1)
		  {
		    out.println("<td>");
		    out.println ("<B><A href=\""+
				 response.encodeUrl("/servlet/musicdetails?bookId="
						    +musics[i].getMusicId())
				 +"\">" + musics[i].getTitle() + "</A><B>");
		    out.println("</TD>");
		    out.println("<TD align=right>");
		    out.println("<A href =\""+
				response.encodeUrl("/servlet/search?Buy="+musics[i].getMusicId()+"&query="+URLEncoder.encode(query)+"&by="+by+"&in="+category)+
				"\"> <B>Add to Shopping Cart</B> </TD></tr>");
		    out.println("<TR><TD> Author : "+musics[i].getFirstName()+" "+musics[i].getSurname()+"</TD></TR>");
		  }
	      }
	  }
	out.println("</table></body></html>");
	out.close();
      }	
    }

  public void doPost (HttpServletRequest request,
		     HttpServletResponse response)
    throws ServletException, IOException
    {
      response.setContentType ("text/html");
      PrintWriter out = response.getWriter();
      
      out.println("<html>");
      out.println("<head> <title> Search Results </title></head>");
      out.println("<body>");
      out.println("inside post");
      out.println("<table>");
      out.println("<tr>");


      String query = request.getParameter("query");//Query string
      String category=request.getParameter("in");
      String by=request.getParameter("by");
      if (query != null)//Make sure he entered something
      {
	if (category == "books")//Search in books
	  {
	    BookDBServlet database = (BookDBServlet)
            getServletConfig().getServletContext().getServlet("bookdb");
	    
	    BookDetails [] books = database.getBooksSortedByTitle();
	    for (int i=0; i<database.getNumberOfBooks(); ++i)
	      {
	        
		String bname;
		if (by=="Name")
		  bname= books[i].getTitle();
		else 
		  bname="";
		if (bname.indexOf(query) != -1)
		  {
		    out.println("<td>");
		    out.println ("<B><A href=\""+
				 response.encodeUrl("/servlet/bookdetails?bookId="
						    +books[i].getBookId())
				 +"\">" + bname + "</A><B>");
		    out.println("</TD>");
		    out.println("<TD align=right>	");
		    out.println("<A href=\""+
				response.encodeUrl("/servlet/catalog?Buy="+books[i].getBookId())+
				"\"><B>Add to Shopping Cart</B> </TD></tr>");
		  }
	      }
	  }
	out.println("</table></body></html>");
	out.close();
      }
    }
}
	

