KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > factories > ClickstreamFactory


1 package com.dotmarketing.factories;
2
3 import java.util.Date JavaDoc;
4 import java.util.List JavaDoc;
5
6 import javax.servlet.http.Cookie JavaDoc;
7 import javax.servlet.http.HttpServletRequest JavaDoc;
8 import javax.servlet.http.HttpServletResponse JavaDoc;
9 import javax.servlet.http.HttpSession JavaDoc;
10
11 import com.dotmarketing.beans.Clickstream;
12 import com.dotmarketing.beans.ClickstreamRequest;
13 import com.dotmarketing.db.DotHibernate;
14 import com.dotmarketing.util.BotChecker;
15 import com.dotmarketing.util.UtilMethods;
16 import com.dotmarketing.util.WebKeys;
17 import com.liferay.portal.model.User;
18
19 /**
20  * The actual stream of clicks tracked during a user's navigation through a
21  * site.
22  *
23  * @author <a HREF="plightbo@hotmail.com">Patrick Lightbody </a>
24  */

25 public class ClickstreamFactory {
26
27     /**
28      * Adds a new request to the stream of clicks. The HttpServletRequest is
29      * converted to a ClickstreamRequest object and added to the clickstream.
30      *
31      * @param request
32      * The serlvet request to be added to the clickstream
33      */

34     public static Clickstream addRequest(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) {
35          HttpSession JavaDoc session = request.getSession();
36         Clickstream clickstream = (Clickstream) request.getSession().getAttribute("clickstream");
37         if(clickstream == null){
38             clickstream = new Clickstream();
39             session.setAttribute("clickstream", clickstream);
40         }
41
42         clickstream.setLastRequest(new Date JavaDoc());
43        
44
45         if (clickstream.getHostname() == null) {
46             clickstream.setHostname(request.getRemoteHost());
47         }
48         if (clickstream.getRemoteAddress() == null) {
49             clickstream.setRemoteAddress(request.getRemoteAddr());
50         }
51
52         // if this is the first request in the click stream
53
if (clickstream.getClickstreamRequests().size() == 0) {
54             // setup initial referrer
55
if (request.getHeader("REFERER") != null) {
56                 clickstream.setInitialReferrer(request.getHeader("REFERER"));
57             } else {
58                 clickstream.setInitialReferrer("");
59             }
60
61             if (request.getHeader("User-Agent") != null) {
62                 clickstream.setUserAgent(request.getHeader("User-Agent"));
63             } else {
64                 clickstream.setUserAgent("");
65             }
66
67             clickstream.setBot(BotChecker.isBot(request));
68
69         }
70
71         // Set the cookie id to the long lived cookie
72
if (! UtilMethods.isSet(clickstream.getCookieId())) {
73             
74             String JavaDoc _dotCMSID = UtilMethods.getCookieValue(request.getCookies(), com.dotmarketing.util.WebKeys.LONG_LIVED_DOTCMS_ID_COOKIE);
75             if(UtilMethods.isSet(_dotCMSID)){
76                 clickstream.setCookieId(_dotCMSID);
77             }
78         }
79
80         //set the user if we have it
81
if (session.getAttribute(WebKeys.CMS_USER) != null && clickstream.getUserId() == null) {
82             User user = (User) session.getAttribute(WebKeys.CMS_USER);
83             setClickStreamUser(user.getUserId(), request);
84         }
85
86         ClickstreamRequest cr = ClickstreamRequestFactory.getClickstreamRequest(request, clickstream.getLastRequest());
87         cr.setRequestOrder(clickstream.getClickstreamRequests().size()+1);
88         clickstream.addClickstreamRequest(cr);
89         return clickstream;
90     }
91
92     public static void save(Clickstream clickstream) {
93         DotHibernate.save(clickstream);
94     }
95
96     public static Object JavaDoc getClickstream(String JavaDoc clickstreamId) {
97         DotHibernate dh = new DotHibernate(Clickstream.class);
98         dh.setQuery("from clickstream in class " + Clickstream.class.getName() + " where clickstream_id = ?");
99         dh.setParam(clickstreamId);
100         return dh.load();
101
102     }
103     
104     @SuppressWarnings JavaDoc("unchecked")
105     public static List JavaDoc<Clickstream> getClickstreamsByCookieId(String JavaDoc cookieId) {
106         DotHibernate dh = new DotHibernate(Clickstream.class);
107         dh.setQuery("from clickstream in class " + Clickstream.class.getName() + " where cookie_id = ?");
108         dh.setParam(cookieId);
109         return dh.list();
110
111     }
112     
113     
114 /**
115  * This method sets the user for the current clickstream on login.
116  * @param userId the
117  * @param request
118  */

119
120     public static void setClickStreamUser(String JavaDoc userId, HttpServletRequest JavaDoc request) {
121         if (!UtilMethods.isSet(userId))
122             return;
123
124         HttpSession JavaDoc session = ((HttpServletRequest JavaDoc) request).getSession();
125         Clickstream clickstream = null;
126         if (session.getAttribute("clickstream") == null) {
127             clickstream = new Clickstream();
128         } else {
129             clickstream = (Clickstream) session.getAttribute("clickstream");
130         }
131         
132         // overwrite if user is not already set
133
if(!UtilMethods.isSet(clickstream.getUserId())){
134             clickstream.setUserId(userId);
135         }
136         session.setAttribute("clickstream", clickstream);
137     }
138
139 }
Popular Tags