- package controleur;
- import java.util.ArrayList;
- import java.util.Enumeration;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import modele.BeanBillet;
- import modele.BeanRepresentation;
- import modele.BeanSpectacle;
- import modele.DelegateRepresentation;
- import modele.DelegateSpectacle;
- import modele.MessageException;
- /**
- * Servlet implementation class GestionReservation
- */
- public class GestionReservation extends HttpServlet {
- /**
- *
- */
- private static final long serialVersionUID = -8550107410007143340L;
- private static final String PATH_IMAGE= "images/";
- public void executerTraitementReservation(HttpServletRequest request,
- HttpServletResponse response) {
- BeanRepresentation uneRepresentation = null;
- //On cherche les info de la représentation
- try {
- uneRepresentation = DelegateRepresentation
- .obtenirInfoRepresentation(Integer.parseInt(request
- .getParameter("idSpectacle")), Integer
- .parseInt(request.getParameter("idRepresentation")));
- } catch (NumberFormatException e2) {
- // TODO Auto-generated catch block
- e2.printStackTrace();
- } catch (MessageException e2) {
- // TODO Auto-generated catch block
- e2.printStackTrace();
- }
- //Construction de l'objet billet qui sera envoyé à la session
- BeanBillet unBillet = new BeanBillet(uneRepresentation
- .getIdRepresentation(), Integer.parseInt(request
- .getParameter("nbBillets")), uneRepresentation.getPrix(),
- uneRepresentation.getIdRepresentation(), uneRepresentation
- .getIdSpectacle(), Integer.parseInt(request
- .getParameter("nbBillets"))
- * uneRepresentation.getPrix());
- // Démarer une session de réservation de billets.
- HttpSession session = request.getSession();
- //Objet d'incrémentation qui servira à créer un nouvel objet billet à chaque réservation
- Object increment = session.getAttribute("increment");
- if (increment == null) {
- session.setAttribute("increment", new Integer(0));
- } else {
- int value = ((Integer) increment).intValue();
- session.setAttribute("increment", ++value);
- }
- //Condition qui sert à savoir si la session a déjà été créée
- if (session.getAttribute("IP") == null) {
- session.setMaxInactiveInterval(10 * 60);// 10 minutes
- // Ajout d'attributs
- if (request.getRemoteAddr().equals("0:0:0:0:0:0:0:1")) {
- session.setAttribute("IP", "Localhost");
- } else {
- session.setAttribute("IP", request.getRemoteAddr());
- }
- //Peut être enlevé, ne sert à rien pour le moment
- // session.setAttribute("ObjRepresentation"
- // + session.getAttribute("increment"), uneRepresentation);
- session.setAttribute("Billet" + session.getAttribute("increment"),
- unBillet);
- } else {
- // Ajout d'attributs
- // session.setAttribute("ObjRepresentation"
- // + session.getAttribute("increment"), uneRepresentation);
- session.setAttribute("Billet" + session.getAttribute("increment"),
- unBillet);
- }
- //Enlevé les billets réservés des billets disponibles.
- ChangerNombreBilletsMoins(unBillet);
- }
- //Méthode qui enlève les billets de la BD
- public void ChangerNombreBilletsMoins(BeanBillet unBillet) {
- ArrayList<BeanRepresentation> listeRepresentations;
- ArrayList<BeanSpectacle> listeSpectacle;
- try {
- listeRepresentations = DelegateRepresentation
- .obtenirRepresentations(PATH_IMAGE);
- listeSpectacle = DelegateSpectacle.obtenirSpectacles(PATH_IMAGE);
- //changer la liste
- for (int i = 0; i < listeRepresentations.size(); i++) {
- if(listeRepresentations.get(i).getIdSpectacle() == unBillet.getIdSpectacle() && listeRepresentations.get(i).getIdRepresentation() == unBillet.getIdRepresentation()){
- listeRepresentations.get(i).setNbBilletDispo(listeRepresentations.get(i).getNbBilletDispo() - unBillet.getNombre());
- }}
- //réécrire la liste
- DelegateRepresentation.ecrireNbBilletsDispo(listeSpectacle, listeRepresentations);
- } catch (MessageException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- //Méthode qui ajoute les billets à la BD
- public void ChangerNombreBilletsPlus(BeanBillet unBillet) {
- ArrayList<BeanRepresentation> listeRepresentations;
- ArrayList<BeanSpectacle> listeSpectacle;
- try {
- listeRepresentations = DelegateRepresentation
- .obtenirRepresentations(PATH_IMAGE);
- listeSpectacle = DelegateSpectacle.obtenirSpectacles(PATH_IMAGE);
- for (int i = 0; i < listeRepresentations.size(); i++) {
- //Si nous sommes rendu à la même représentation du même spectacle
- if (listeRepresentations.get(i).getIdSpectacle() == unBillet
- .getIdSpectacle()
- && listeRepresentations.get(i).getIdRepresentation() == unBillet
- .getIdRepresentation()) {
- //On ajoute les billets qui étaient réservés à la BD ( ou dans le XML dans notre cas)
- listeRepresentations.get(i).setNbBilletDispo(
- listeRepresentations.get(i).getNbBilletDispo()
- + unBillet.getNombre());
- }
- }
- //On réécris dans la BD la donnée ( ou dans le XML dans notre cas)
- DelegateRepresentation.ecrireNbBilletsDispo(listeSpectacle,
- listeRepresentations);
- } catch (MessageException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- //Ne sert plus à rien, nous la gardons au cas.
- public ArrayList<BeanRepresentation> lectureReservation(
- HttpServletRequest request, HttpServletResponse response) {
- ArrayList<BeanRepresentation> lesRepresentations = new ArrayList<BeanRepresentation>();
- // Prendre la session en attribut
- HttpSession session = request.getSession();
- if (session.getAttribute("IP") == null) {
- System.out.println("Il n'y a rien dans le panier d'achat");
- return null;
- }
- if (session.getAttribute("IP") != null) {
- // On parcourt maintenant le contenu de notre objet session
- Enumeration<?> e = session.getAttributeNames();
- while (e.hasMoreElements()) {
- String key = (String) e.nextElement();
- if (key.contains("ObjRepresentation")) {
- lesRepresentations.add((BeanRepresentation) session
- .getAttribute(key));
- }
- }
- }
- return lesRepresentations;
- }
- public ArrayList<BeanBillet> lectureBillets(HttpServletRequest request,
- HttpServletResponse response) {
- ArrayList<BeanBillet> lesBillets = new ArrayList<BeanBillet>();
- // Démarer une session de réservation de billets.
- HttpSession session = request.getSession();
- if (session.getAttribute("IP") == null) {
- System.out.println("Il n'y a rien dans le panier d'achat");
- return null;
- }
- if (session.getAttribute("IP") != null) {
- // On parcourt maintenant le contenu de notre objet session
- Enumeration<?> e = session.getAttributeNames();
- while (e.hasMoreElements()) {
- String key = (String) e.nextElement();
- if (key.contains("Billet")) {
- lesBillets.add((BeanBillet) session.getAttribute(key));
- }
- }
- }
- return lesBillets;
- }
- //Fonction qui sert à savoir combien de représentations sont choisis dans la session
- public String nbBilletReserve(HttpServletRequest request,
- HttpServletResponse response) {
- String nbBillets;
- if(lectureBillets(request, response)!=null){
- nbBillets = Integer.toString(lectureBillets(request, response)
- .size());
- return "[" + nbBillets + "]";
- }
- else
- return "";
- }
- //Fonction qui sert à enlever une réservation au choix
- public void supprReservation(HttpServletRequest request, int idBillet) {
- // Prendre la session en attribut
- HttpSession session = request.getSession();
- BeanBillet unBillet;
- if (session.getAttribute("IP") != null) {
- // On parcourt maintenant le contenu de notre objet session
- Enumeration<?> e = session.getAttributeNames();
- while (e.hasMoreElements()) {
- String key = (String) e.nextElement();
- if (key.contains("Billet")) {
- unBillet = (BeanBillet) session.getAttribute(key);
- if(unBillet.getIdBillet() == idBillet){
- session.removeAttribute(key);
- ChangerNombreBilletsPlus(unBillet);
- }
- }
- }
- }
- }
- }