Subversion Repositories SmartDukaan

Rev

Rev 2889 | Rev 3073 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2528 vikas 1
package in.shop2020.utils;
2
 
3
import in.shop2020.datalogger.EventType;
2777 varun.gupt 4
import in.shop2020.datalogger.SocialEventType;
2528 vikas 5
import in.shop2020.datalogger.event.Event;
2777 varun.gupt 6
import in.shop2020.datalogger.socialevent.SocialEvent;
2528 vikas 7
 
8
import java.io.BufferedReader;
9
import java.io.InputStreamReader;
10
import java.io.OutputStreamWriter;
11
import java.net.URL;
12
import java.net.URLConnection;
13
import java.net.URLEncoder;
14
import java.util.Date;
15
import java.util.ResourceBundle;
16
import java.util.concurrent.ExecutorService;
17
import java.util.concurrent.Executors;
18
 
19
import org.apache.commons.lang.StringUtils;
20
import org.apache.log4j.Logger;
21
import org.json.JSONObject;
22
 
23
public class DataLogger {
24
    private static Logger log = Logger.getLogger(DataLogger.class);
2965 chandransh 25
    private static Logger rootLogger = Logger.getRootLogger();
2528 vikas 26
    private static ExecutorService asyncDataLogger = Executors.newSingleThreadExecutor();
2777 varun.gupt 27
    private static ExecutorService asyncSocialDataLogger = Executors.newSingleThreadExecutor();
2528 vikas 28
    private static ResourceBundle properties = ResourceBundle.getBundle(DataLogger.class.getName());
29
    private static String googleAppUrl = properties.getString("googleappurl");
2777 varun.gupt 30
 
2528 vikas 31
    public static void logData(final EventType eType, final String sessionId, final long userId, final String email, final String... logData) {
32
        final String strToWrite = StringUtils.join(logData, ", ");
33
        final Long time = (new Date()).getTime();
34
        asyncDataLogger.execute(new Runnable() {
35
            @Override
36
            public void run() {
37
                Event event = Event.createEvent(eType, sessionId, userId, email, logData);
38
                JSONObject logDataInJson = event.getLogDataInJson();
39
                try {
40
                    // Construct data
41
                    String data = URLEncoder.encode("time", "UTF-8") + "=" + URLEncoder.encode(time.toString(), "UTF-8");
42
                    data += "&" + URLEncoder.encode("eventType", "UTF-8") + "=" + URLEncoder.encode(eType.name(), "UTF-8");
43
                    data += "&" + URLEncoder.encode("sessionId", "UTF-8") + "=" + URLEncoder.encode(sessionId, "UTF-8");
44
                    data += "&" + URLEncoder.encode("userId", "UTF-8") + "=" + URLEncoder.encode(Long.toString(userId), "UTF-8");
45
                    data += "&" + URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode(email, "UTF-8");
46
                    if (logDataInJson != null) {
47
                        data += "&" + URLEncoder.encode("jsonLogData", "UTF-8")
48
                                + "=" + URLEncoder.encode(logDataInJson.toString(), "UTF-8");
49
                    }
50
 
51
                    // Send data
52
                    URL url = new URL("http://" + googleAppUrl + "/add-data-log");
53
                    URLConnection conn = url.openConnection();
54
                    conn.setDoOutput(true);
55
                    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
56
                    wr.write(data);
57
                    wr.close();
58
 
59
                    BufferedReader in = new BufferedReader(
60
                            new InputStreamReader(conn.getInputStream()));
61
 
62
                    while (in.readLine() != null);
63
                    in.close();
64
 
65
                } catch (Exception e) {
2965 chandransh 66
                    rootLogger.error("Unable to post data to web data log", e);
2889 vikas 67
                    log.info(eType.name() + ", " + sessionId + ", " + Long.toString(userId) + ", " + email + ", " + strToWrite);
2528 vikas 68
                }
2777 varun.gupt 69
            }
70
        });
71
    }
72
 
73
    public static void logSocialData(final SocialEventType eType, final String userId, final String... logData) {
74
        final String strToWrite = StringUtils.join(logData, ", ");
75
        final Long time = (new Date()).getTime();
76
        asyncSocialDataLogger.execute(new Runnable() {
77
            @Override
78
            public void run() {
79
                log.info(eType.name() + ", " + userId + ", " + strToWrite);
80
                SocialEvent event = SocialEvent.createEvent(eType, userId, logData);
81
                JSONObject logDataInJson = event.getLogDataInJson();
82
 
83
                try {
84
                    String data = URLEncoder.encode("time", "UTF-8") + "=" + URLEncoder.encode(time.toString(), "UTF-8");
85
                    data += "&" + URLEncoder.encode("eventType", "UTF-8") + "=" + URLEncoder.encode(eType.name(), "UTF-8");
86
                    data += "&" + URLEncoder.encode("userId", "UTF-8") + "=" + URLEncoder.encode(userId, "UTF-8");
87
 
88
                    if (logDataInJson != null) {
89
                        data += "&" + URLEncoder.encode("jsonLogData", "UTF-8") + "=" + URLEncoder.encode(logDataInJson.toString(), "UTF-8");
90
                    }
2528 vikas 91
 
2777 varun.gupt 92
                    // Send data
93
                    URL url = new URL("http://" + googleAppUrl + "/add-social-data-log");
94
                    URLConnection conn = url.openConnection();
95
                    conn.setDoOutput(true);
96
                    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
97
                    wr.write(data);
98
                    wr.close();
99
 
100
                    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
101
                    while (in.readLine() != null);
102
                    in.close();
103
 
104
                } catch (Exception e) {
105
                    Logger.getRootLogger().warn(e);
106
                }
2528 vikas 107
            }
108
        });
109
    }
2777 varun.gupt 110
}