KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > listeners > BannersListener


1 package com.dotmarketing.listeners;
2
3 import java.util.Collections JavaDoc;
4 import java.util.HashMap JavaDoc;
5 import java.util.HashSet JavaDoc;
6 import java.util.Iterator JavaDoc;
7 import java.util.Map JavaDoc;
8 import java.util.Set JavaDoc;
9
10 import javax.servlet.ServletContextEvent JavaDoc;
11 import javax.servlet.ServletContextListener JavaDoc;
12 import javax.servlet.http.HttpSession JavaDoc;
13 import javax.servlet.http.HttpSessionEvent JavaDoc;
14 import javax.servlet.http.HttpSessionListener JavaDoc;
15
16 import org.apache.commons.logging.LogFactory;
17
18 import com.dotmarketing.db.DotHibernate;
19 import com.dotmarketing.factories.InodeFactory;
20 import com.dotmarketing.portlets.banners.model.Banner;
21 import com.dotmarketing.util.Logger;
22
23 /**
24  * The listener that keeps track of all clickstreams in the container as well as
25  * the creating new Clickstream objects and initiating logging when the
26  * clickstream dies (session has been invalidated).
27  *
28  * @author <a HREF="plightbo@hotmail.com">Patrick Lightbody </a>
29  */

30 public class BannersListener implements ServletContextListener JavaDoc, HttpSessionListener JavaDoc {
31
32     public static final String JavaDoc BANNERS_ATTRIBUTE_KEY = "banners";
33     
34     private static Map JavaDoc sesions_banners = Collections.synchronizedMap(new HashMap JavaDoc());
35
36     public BannersListener() {
37         Logger.debug(this, "BannersListener constructed");
38     }
39
40     public void contextInitialized(ServletContextEvent JavaDoc sce) {
41
42         sce.getServletContext().setAttribute(BANNERS_ATTRIBUTE_KEY, sesions_banners);
43     }
44
45     public void contextDestroyed(ServletContextEvent JavaDoc sce) {
46     }
47
48     public void sessionCreated(HttpSessionEvent JavaDoc hse) {
49         HttpSession JavaDoc session = hse.getSession();
50         Logger.debug(this, "Session " + session.getId() + " was created, adding a banners to the session.");
51         Set JavaDoc banners = new HashSet JavaDoc();
52         session.setAttribute(BANNERS_ATTRIBUTE_KEY, banners);
53         sesions_banners.put(session.getId(), banners);
54     }
55
56     public void sessionDestroyed(HttpSessionEvent JavaDoc hse) {
57         HttpSession JavaDoc session = hse.getSession();
58         Logger.debug(this, "Session " + session.getId() + " was destroyed, logging the banners info and removing it.");
59
60         Set JavaDoc banners = (Set JavaDoc) sesions_banners.get(session.getId());
61         
62         if (banners != null) {
63             
64             Logger.debug(this, "sessionDestroyed, banners.size(): " + banners.size());
65             try {
66                 Iterator JavaDoc it = banners.iterator();
67                 while (it.hasNext()) {
68                     Banner sessBanner = (Banner) it.next();
69                     int numViews = sessBanner.getNmbrViews();
70                     int numClicks = sessBanner.getNmbrClicks();
71                     long inode = sessBanner.getInode();
72                     Logger.debug(this, "sessionDestroyed, banners inode: " + inode + ", views: " + numViews + ", numClicks: " + numClicks);
73                     
74                     Banner bann = (Banner) InodeFactory.getInode(inode, Banner.class);
75                     bann.setNmbrViews(numViews);
76                     bann.setNmbrClicks(numClicks);
77                     
78                     InodeFactory.saveInode(bann);
79                 }
80             } catch (Exception JavaDoc e) {
81                 // log.error(e.getMessage(), e);
82
LogFactory.getLog(this.getClass()).debug(e.getMessage());
83             } finally {
84                 sesions_banners.remove(session.getId());
85                 DotHibernate.closeSession();
86             }
87         }
88     }
89 }
Popular Tags