KickJava   Java API By Example, From Geeks To Geeks.

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


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

27 public class ClickstreamListener implements ServletContextListener JavaDoc, HttpSessionListener JavaDoc {
28     // private static final Log log =
29
// LogFactory.getLog(ClickstreamListener.class);
30

31     public static final String JavaDoc CLICKSTREAMS_ATTRIBUTE_KEY = "clickstreams";
32     private Map JavaDoc clickstreams = Collections.synchronizedMap(new HashMap JavaDoc());
33
34     public ClickstreamListener() {
35         Logger.debug(this, "ClickstreamLogger constructed");
36     }
37
38     public void contextInitialized(ServletContextEvent JavaDoc sce) {
39
40         sce.getServletContext().setAttribute(CLICKSTREAMS_ATTRIBUTE_KEY, clickstreams);
41     }
42
43     public void contextDestroyed(ServletContextEvent JavaDoc sce) {
44     }
45
46     public void sessionCreated(HttpSessionEvent JavaDoc hse) {
47         HttpSession JavaDoc session = hse.getSession();
48         Logger.debug(this, "Session " + session.getId() + " was created, adding a new clickstream.");
49         Clickstream clickstream = new Clickstream();
50         session.setAttribute("clickstream", clickstream);
51         clickstreams.put(session.getId(), clickstream);
52     }
53
54     public void sessionDestroyed(HttpSessionEvent JavaDoc hse) {
55         HttpSession JavaDoc session = hse.getSession();
56         Logger.debug(this, "Session " + session.getId() + " was destroyed, logging the clickstream and removing it.");
57         // if (log.isDebugEnabled()) log.debug("Session " + session.getId() + "
58
// was destroyed, logging the clickstream and removing it.");
59
Clickstream stream = (Clickstream) clickstreams.get(session.getId());
60
61         try {
62             if (stream.getClickstreamRequests() != null) {
63                 DatabaseClickstreamLogger dblogger = new DatabaseClickstreamLogger();
64                 dblogger.log(stream);
65             }
66         } catch (Exception JavaDoc e) {
67             // log.error(e.getMessage(), e);
68
LogFactory.getLog(this.getClass()).debug(e.getMessage());
69         } finally {
70             clickstreams.remove(session.getId());
71             DotHibernate.closeSession();
72         }
73     }
74 }
Popular Tags