KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > loggers > DatabaseClickstreamLogger


1 package com.dotmarketing.loggers;
2
3 import java.util.Iterator JavaDoc;
4 import java.util.List JavaDoc;
5
6 import com.dotmarketing.beans.Clickstream;
7 import com.dotmarketing.beans.ClickstreamRequest;
8 import com.dotmarketing.factories.ClickstreamFactory;
9 import com.dotmarketing.factories.ClickstreamRequestFactory;
10
11 /**
12  * A simple ClickstreamLogger that outputs the entire clickstream to the <a
13  * HREF="http://jakarta.apache.org/commons/logging.html">Jakarta Commons Logging
14  * component</a>.
15  *
16  * @author <a HREF="plightbo@hotmail.com">Patrick Lightbody</a>
17  */

18 public class DatabaseClickstreamLogger implements ClickstreamLogger {
19
20     public void log(Clickstream clickstream) {
21         if (clickstream == null)
22             return;
23
24         
25         /*
26          * Save current clickstream
27          */

28         List JavaDoc myStream = clickstream.getClickstreamRequests();
29         if (myStream != null && myStream.size() > 0) {
30             Iterator JavaDoc myStreamIter = myStream.iterator();
31             ClickstreamFactory.save(clickstream);
32             long clickStreamId = clickstream.getClickstreamId();
33             while (myStreamIter.hasNext()) {
34                 ClickstreamRequest myClickstreamRequest = (ClickstreamRequest) myStreamIter.next();
35                 myClickstreamRequest.setClickstreamId(clickStreamId);
36                 ClickstreamRequestFactory.save(myClickstreamRequest);
37
38             }
39         }
40
41         /*
42          * Loop over old clickstreams (by long lived cookie) that don't have any user
43          * information and update them to our known information
44          * This should log people even if they don't login
45          */

46         String JavaDoc _dotCMSID = clickstream.getCookieId();
47         String JavaDoc _loggedInUser = clickstream.getUserId();
48
49         if (_dotCMSID != null) {
50             List JavaDoc<Clickstream> csl = ClickstreamFactory.getClickstreamsByCookieId(_dotCMSID);
51             if (_loggedInUser == null) {
52                 for (Clickstream cs : csl) {
53                     if (cs.getUserId() != null) {
54                         _loggedInUser = cs.getUserId();
55                         break;
56                     }
57                 }
58             }
59             if (_loggedInUser != null) {
60                 for (Clickstream cs : csl) {
61                     if (cs.getUserId() == null) {
62                         cs.setUserId(_loggedInUser);
63                         ClickstreamFactory.save(cs);
64                     }
65                 }
66             }
67         }
68     }
69 }
70
Popular Tags