package controleur;
import Metier.Principale;
import Metier.Livre;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Recherche extends HttpServlet {
public static final String VUE = "/Recherche.jsp";
public static final String CHAMP_TITRE = "titre";
public static final String CHAMP_OU_AUTEUR = "ouauteur"; //false = et true=ou
public static final String CHAMP_AUTEUR = "auteur";
public static final String CHAMP_OU_CATEGORIE = "oucategorie"; //false = et true=ou
public static final String CHAMP_CATEGORIE = "categorie";
public static final String CHAMP_MULTIPLE_LIVRE = "multipleLivre";
public static final String ATT_LAST_RECHERCHE = "lastRecherche";
public static final String ATT_RESULTAT = "resultat";
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/* Affichage de la page de connection */
this.getServletContext().getRequestDispatcher(this.VUE).forward( request, response );
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
ArrayList<Livre> listeLivre = new ArrayList();
/* Récupération des champs du formulaire. */
String titre = request.getParameter(this.CHAMP_TITRE);
boolean ouAuteur = Boolean.parseBoolean(request.getParameter(this.CHAMP_OU_AUTEUR));
String auteur = request.getParameter(this.CHAMP_AUTEUR);
boolean ouCategorie = Boolean.parseBoolean(request.getParameter(this.CHAMP_OU_CATEGORIE));
String categorie = request.getParameter(this.CHAMP_CATEGORIE);
boolean multipleLivre = Boolean.parseBoolean(request.getParameter(this.CHAMP_MULTIPLE_LIVRE));
// appel de la methode de recherche en metier qui me retourne une liste de Livre
listeLivre = Metier.MetierFactory.getPrincipale().recherche(auteur, ouAuteur, titre, ouCategorie, categorie, multipleLivre);
if(listeLivre.size() == 0){
String resultat = "<div class=\"alert alert-warning alert-dismissable\">\n" +
" <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>\n" +
" Il n'y pas de resultat dans la recherche !\n" +
"</div>";
request.setAttribute(this.ATT_RESULTAT, resultat);
}
// appel de la methode de recherche en metier qui tri la liste
Principale controleur = Metier.MetierFactory.getPrincipale();
listeLivre = controleur.tri(listeLivre, 0, 1);
/* Stockage du résultat dans l'objet session */
session.setAttribute(this.ATT_LAST_RECHERCHE, listeLivre);
session.setAttribute(this.CHAMP_TITRE, titre);
session.setAttribute(this.CHAMP_OU_AUTEUR, ouAuteur);
session.setAttribute(this.CHAMP_AUTEUR, auteur);
session.setAttribute(this.CHAMP_OU_CATEGORIE, ouCategorie);
session.setAttribute(this.CHAMP_CATEGORIE, categorie);
session.setAttribute(this.CHAMP_MULTIPLE_LIVRE, multipleLivre);
session.setAttribute("page", 0);
/* Transmission de la paire d'objets request/response à notre JSP */
this.getServletContext().getRequestDispatcher(this.VUE).forward( request, response );
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}