1 package com.dotmarketing.factories; 2 3 import java.util.Date ; 4 import java.util.List ; 5 6 import javax.servlet.http.Cookie ; 7 import javax.servlet.http.HttpServletRequest ; 8 import javax.servlet.http.HttpServletResponse ; 9 import javax.servlet.http.HttpSession ; 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 25 public class ClickstreamFactory { 26 27 34 public static Clickstream addRequest(HttpServletRequest request, HttpServletResponse response) { 35 HttpSession 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 ()); 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 (clickstream.getClickstreamRequests().size() == 0) { 54 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 if (! UtilMethods.isSet(clickstream.getCookieId())) { 73 74 String _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 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 getClickstream(String 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 ("unchecked") 105 public static List <Clickstream> getClickstreamsByCookieId(String 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 119 120 public static void setClickStreamUser(String userId, HttpServletRequest request) { 121 if (!UtilMethods.isSet(userId)) 122 return; 123 124 HttpSession session = ((HttpServletRequest ) 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 if(!UtilMethods.isSet(clickstream.getUserId())){ 134 clickstream.setUserId(userId); 135 } 136 session.setAttribute("clickstream", clickstream); 137 } 138 139 } | Popular Tags |