package controleur;
import dao.DAOException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import model.Panier;
import model.Billet;
import model.Epreuve;
import dao.EpreuveDAO;
import dao.IEpreuveDAO;
/**
* Cette classe vient remplacer la Servlet qui servait à ajouter des articles au
* panier. Dans cette version de l'application, la gestion du panier se fait
* en AJAX via DWR. Cette classe GestionnairePanier est donc exposée via DWR
* à la partie cliente.
*
* @author Philippe.Genoud@imag.fr
*/
public class GestionnairePanier {
private Panier lePanier;
/**
* constructeur. L'instanciation de GestionnairePanier est prise en charge
* par le servlet DWR (voir balise create dans le fichier dwr.xml)
* <create creator="new" scope="session" javascript="Panier">
* <param name="class" value="control.GestionnairePanier"/>
* </create>
* C'est DWR qui instancie cette classe (creator="new") et stocke l'objet
* comme attribut de session (le nom de l'attribut étant "Panier").
*/
public GestionnairePanier() {
// création d'un panir vide
lePanier = new Panier();
// ajout de ce panier dans la session de l'utilisateur
// on fait cela pour ne pas avoir à modifier les autres servlets
// de l'application existante qui se servent de cet attribut.
WebContext ctx = WebContextFactory.get();
HttpServletRequest req = ctx.getHttpServletRequest();
HttpSession session = req.getSession(true);
session.setAttribute("lePanier", lePanier);
}
/**
* ajoute au panier un produit
* @param id id du produit
* @return le panier. De cette façon lorqu'une fonction JavaScript fait un
* appel distant à la méthode ajouterProduit, sa fonction callback récupère
* l'objet panier qu'elle peut utiliser pour en afficher le contenu.
*/
public Panier ajouterEpreuveINDAuPanier(int id) throws DAOException {
// récupération de la DAO dans le contexte de l'application
WebContext ctx = WebContextFactory.get();
ServletContext servletContext = ctx.getServletContext();
IEpreuveDAO dao = (IEpreuveDAO) servletContext.getAttribute("epreuveDAO");
// récupération de l'objet produit
Epreuve ep = dao.getEpreuveInd(id);
// ajout au panier
lePanier.ajouter(ep, 1);
return lePanier;
}
public Panier ajouterEpreuveEQAuPanier(int id) throws DAOException {
// récupération de la DAO dans le contexte de l'application
WebContext ctx = WebContextFactory.get();
ServletContext servletContext = ctx.getServletContext();
IEpreuveDAO dao = (IEpreuveDAO) servletContext.getAttribute("epreuveDAO");
// récupération de l'objet produit
Epreuve ep = dao.getEpreuveEQ(id);
// ajout au panier
lePanier.ajouter(ep, 1);
return lePanier;
}
/**
* Retourne le panier
* @return le panier
*/
public Panier getPanier() {
return lePanier;
}
/**
* retire un produit du panier
* @param id du produit
* @return le panier. De cette façon lorqu'une fonction JavaScript fait un
* appel distant à la méthode supprimerProduit, sa fonction callback récupère
* l'objet panier qu'elle peut utiliser pour en afficher le contenu.
*/
public Panier supprimerEpreuve(int idBillet) {
lePanier.supprimer(idBillet);
return lePanier;
}
}