package controleur;
import Metier.Categorie;
import Metier.CategorieService;
import Metier.Livre;
import Metier.LivreService;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletContext;
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 ModifyLivre extends HttpServlet {
public static final String VUE_MODIFY = "/privateAcces/ModifyLivre.jsp";
public static final String VUE_ACCUEIL = "/Accueil.jsp";
public static final String VUE_RECHERCHE = "/Recherche.jsp";
public static final String PARAM_ID = "id";
public static final String CHAMP_TITRE = "titre";
public static final String CHAMP_AUTEUR = "auteur";
public static final String CHAMP_TOME = "tome";
public static final String CHAMP_EXEMPLAIRE = "exemplaire";
public static final String CHAMP_ORIGINE = "origine";
public static final String CHAMP_ANNEE = "annee";
public static final String CHAMP_PRIX = "prix";
public static final String CHAMP_LOCALISATION = "localisation";
public static final String CHAMP_CATEGORIE = "categorie";
public static final String ATT_LIVRE = "livre";
public static final String ATT_RESULTAT = "resultat";
private String id;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/* Affichage de la page de modification */
this.getServletContext().getRequestDispatcher(this.VUE_ACCUEIL).forward( request, response );
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/* Récupération d'id envoié */
this.id = request.getParameter(this.PARAM_ID);
Livre livre = Metier.MetierFactory.getLivreService().getById(this.id);
/* Stockage du résultat dans l'objet request */
request.setAttribute(this.ATT_LIVRE, livre);
this.getServletContext().getRequestDispatcher(this.VUE_MODIFY).forward( request, response );
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
ServletContext context = getServletConfig().getServletContext();
/* Récupération des champs du formulaire. */
String titre = request.getParameter(this.CHAMP_TITRE);
String auteur = request.getParameter(this.CHAMP_AUTEUR);
String tome = request.getParameter(this.CHAMP_TOME);
int exemplaire = Integer.parseInt(request.getParameter(this.CHAMP_EXEMPLAIRE));
String origine = request.getParameter(this.CHAMP_ORIGINE);
String annee = request.getParameter(this.CHAMP_ANNEE);
String prix = request.getParameter(this.CHAMP_PRIX);
String localisation = request.getParameter(this.CHAMP_LOCALISATION);
String categorie = request.getParameter(this.CHAMP_CATEGORIE);
Livre l = new Livre(auteur, titre, localisation, tome, exemplaire, annee, prix, origine);
l.setId(this.id);
CategorieService categorieSrv = Metier.MetierFactory.getCategorieService();
Categorie c = categorieSrv.getByNom(categorie);
l.setCatégorie(c);
LivreService livreSrv = Metier.MetierFactory.getLivreService();
livreSrv.update(l);
String resultat = "<div class=\"alert alert-success alert-dismissable\">\n" +
" <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>\n" +
" Le livre <strong>"+ l.getTitre() +"</strong> a été modifié.\n" +
"</div>";
List<Livre> livres = (List<Livre>) session.getAttribute("lastRecherche");
for(int i=0; i<livres.size(); i++){
if(livres.get(i).getId().equals(l.getId())){
if(context.getAttribute("nbLivres") != null){
int nbLivres = (int) context.getAttribute("nbLivres");
if(livres.get(i).getExemplaire() > l.getExemplaire()){
nbLivres = nbLivres - (livres.get(i).getExemplaire() - l.getExemplaire());
} else if(livres.get(i).getExemplaire() < l.getExemplaire()) {
nbLivres = nbLivres + (l.getExemplaire() - livres.get(i).getExemplaire());
}
context.setAttribute("nbLivres", nbLivres);
}
livres.set(i, l);
session.setAttribute("lastRecherche", livres);
}
}
request.setAttribute(this.ATT_RESULTAT, resultat);
this.getServletContext().getRequestDispatcher(this.VUE_RECHERCHE).forward( request, response );
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}