/*
* Copyright (C) 2014 Thibaut Comte
*
* This is for your eyes only!
* Destroy after reading!
*/
package servlets;
import java.io.IOException;
import java.util.Collection;
import javax.ejb.EJB;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import morceaux.gestionnaires.GestionnaireMorceaux;
import morceaux.modele.Morceau;
import utilisateurs.gestionnaires.GestionnaireUtilisateurs;
import utilisateurs.modele.Utilisateur;
/**
*
* @author Thibaut
*/
@WebServlet(name = "ServletSearch", urlPatterns = {"/ServletSearch"})
public class ServletSearch extends HttpServlet {
String forwardTo = "";
String message = "";
int code = 1;
@EJB
private GestionnaireMorceaux gestionnaireMorceaux;
@EJB
private GestionnaireUtilisateurs gestionnaireUtilisateurs;
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
String nbpagination = request.getParameter("nbpagination");
int nbpagi = 0;
if (nbpagination != null) {
nbpagi = Integer.parseInt(nbpagination);
}
int sizeListe = 0;
HttpSession session = request.getSession(true);
String conneclogin = session.getAttribute("login") == null ? "fail" : session.getAttribute("login").toString();
Utilisateur user = gestionnaireUtilisateurs.getUserByLogin(conneclogin);
request.setAttribute("utilisateur", user);
if (action.equals("recherche")) {
Collection<Morceau> liste;
String search = request.getParameter("champ_recherche");
String typeRecherche = request.getParameter("typeRecherche");
if(typeRecherche.equals("rechercheMorceau")) {
liste = gestionnaireMorceaux.rechercheParMorceau(search, nbpagi);
sizeListe = gestionnaireMorceaux.countRechercheParMorceau(search);
request.setAttribute("listeMorceaux", liste);
forwardTo = "index.jsp?action=recherche&champ_recherche="+search+"&nbpagination="+nbpagi;
code = 0;
message = "";
} else if(typeRecherche.equals("rechercheArtiste")) {
liste = gestionnaireMorceaux.rechercheParArtiste(search, nbpagi);
sizeListe = gestionnaireMorceaux.countRechercheParArtiste(search);
request.setAttribute("listeMorceaux", liste);
forwardTo = "index.jsp?action=recherche&champ_recherche="+search+"&nbpagination="+nbpagi;
code = 0;
message = "";
} else if(typeRecherche.equals("rechercheGenre")) {
liste = gestionnaireMorceaux.rechercheParGenre(search, nbpagi);
sizeListe = gestionnaireMorceaux.countRechercheParGenre(search);
request.setAttribute("listeMorceaux", liste);
forwardTo = "index.jsp?action=recherche&champ_recherche="+search+"&nbpagination="+nbpagi;
code = 0;
message = "";
} else if(typeRecherche.equals("rechercheInstrument")) {
liste = gestionnaireMorceaux.rechercheParInstrument(search, nbpagi);
sizeListe = gestionnaireMorceaux.countRechercheParInstrument(search);
request.setAttribute("listeMorceaux", liste);
forwardTo = "index.jsp?action=recherche&champ_recherche="+search+"&nbpagination="+nbpagi;;
code = 0;
message = "";
}
}
setPagination(request, nbpagi, sizeListe);
RequestDispatcher dp = request.getRequestDispatcher(forwardTo + "&message=" + message + "&code=" + code);
dp.forward(request, response);
}
private int setPagination(HttpServletRequest request, int nbpagi, int sizeListe) {
if (nbpagi == 0) {
request.setAttribute("pagBefore", 0);
} else {
request.setAttribute("pagBefore", nbpagi - 1);
}
request.setAttribute("pagAfter", nbpagi + 1);
int nbPages = (int) sizeListe / 10;
request.setAttribute("nbPages", nbPages);
System.out.println(sizeListe);
return nbpagi;
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}