- package listener;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.Enumeration;
- import java.util.Locale;
- import javax.servlet.http.HttpSession;
- import javax.servlet.http.HttpSessionActivationListener;
- import javax.servlet.http.HttpSessionAttributeListener;
- import javax.servlet.http.HttpSessionBindingEvent;
- import javax.servlet.http.HttpSessionBindingListener;
- import javax.servlet.http.HttpSessionEvent;
- import javax.servlet.http.HttpSessionListener;
- import modele.BeanBillet;
- import modele.BeanRepresentation;
- import modele.BeanSpectacle;
- import modele.DelegateRepresentation;
- import modele.DelegateSpectacle;
- import modele.MessageException;
- /**
- * Application Lifecycle Listener implementation class SessionListen
- *
- */
- public class SessionListen implements HttpSessionListener,
- HttpSessionAttributeListener, HttpSessionActivationListener,
- HttpSessionBindingListener {
- private static final String PATH_IMAGE= "images/";
- /**
- * Default constructor.
- */
- public SessionListen() {
- // TODO Auto-generated constructor stub
- }
- static Locale locale = Locale.getDefault();
- static Date actuelle = new Date();
- /**
- * @see HttpSessionAttributeListener#attributeRemoved(HttpSessionBindingEvent)
- */
- public void attributeRemoved(HttpSessionBindingEvent arg0) {
- // TODO Auto-generated method stub
- }
- /**
- * @see HttpSessionAttributeListener#attributeAdded(HttpSessionBindingEvent)
- */
- public void attributeAdded(HttpSessionBindingEvent arg0) {
- // TODO Auto-generated method stub
- }
- /**
- * @see HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent)
- */
- public void valueUnbound(HttpSessionBindingEvent arg0) {
- // TODO Auto-generated method stub
- }
- /**
- * @see HttpSessionActivationListener#sessionDidActivate(HttpSessionEvent)
- */
- public void sessionDidActivate(HttpSessionEvent arg0) {
- // TODO Auto-generated method stub
- }
- /**
- * @see HttpSessionActivationListener#sessionWillPassivate(HttpSessionEvent)
- */
- public void sessionWillPassivate(HttpSessionEvent arg0) {
- // TODO Auto-generated method stub
- }
- /**
- * @see HttpSessionBindingListener#valueBound(HttpSessionBindingEvent)
- */
- public void valueBound(HttpSessionBindingEvent arg0) {
- // TODO Auto-generated method stub
- }
- /**
- * @see HttpSessionAttributeListener#attributeReplaced(HttpSessionBindingEvent)
- */
- public void attributeReplaced(HttpSessionBindingEvent arg0) {
- // TODO Auto-generated method stub
- }
- /**
- * @see HttpSessionListener#sessionCreated(HttpSessionEvent)
- */
- public void sessionCreated(HttpSessionEvent arg0) {
- // TODO Auto-generated method stub
- System.out.println("Session Created");
- }
- /**
- * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
- */
- public void sessionDestroyed(HttpSessionEvent arg0) {
- // TODO Auto-generated method stub
- //reception de l'argument
- HttpSession session = arg0.getSession();
- //Si la session contient des billets, on les remets dans la BD
- if (lectureBillets(session) != null) {
- ArrayList<BeanBillet> listeBillet = lectureBillets(session);
- for (int i = 0; i < listeBillet.size(); i++) {
- ChangerNombreBilletsPlus(listeBillet.get(i));
- }
- }
- //Destruction de la session
- session.invalidate();
- // Il faut aussi faire session.invalidate()
- System.out.println("Session Destroyed");
- }
- public ArrayList<BeanBillet> lectureBillets(HttpSession session2) {
- ArrayList<BeanBillet> lesBillets = new ArrayList<BeanBillet>();
- // Démarer une session de réservation de billets.
- HttpSession session = session2;
- 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();
- //Si le nom d'une key contient Billet
- if (key.contains("Billet")) {
- lesBillets.add((BeanBillet) session.getAttribute(key));
- }
- }
- }
- return lesBillets;
- }
- 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();
- }
- }
- }