Subversion Repositories SmartDukaan

Rev

Rev 2777 | Go to most recent revision | Details | 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;
4
import in.shop2020.datalogger.event.Event;
5
 
6
import java.io.BufferedReader;
7
import java.io.InputStreamReader;
8
import java.io.OutputStreamWriter;
9
import java.net.URL;
10
import java.net.URLConnection;
11
import java.net.URLEncoder;
12
import java.util.Date;
13
import java.util.ResourceBundle;
14
import java.util.concurrent.ExecutorService;
15
import java.util.concurrent.Executors;
16
 
17
import org.apache.commons.lang.StringUtils;
18
import org.apache.log4j.Logger;
19
import org.json.JSONObject;
20
 
21
public class DataLogger {
22
    private static Logger log = Logger.getLogger(DataLogger.class);
23
    private static ExecutorService asyncDataLogger = Executors.newSingleThreadExecutor();
24
    private static ResourceBundle properties = ResourceBundle.getBundle(DataLogger.class.getName());
25
    private static String googleAppUrl = properties.getString("googleappurl");
26
 
27
    public static void logDataOld(final EventType eType, final String sessionId, final long userId, final String email, String... logData) {
28
        final String strToWrite = StringUtils.join(logData, ", ");
29
        asyncDataLogger.execute(new Runnable() {
30
            @Override
31
            public void run() {
32
                log.info(eType.name() + ", " + sessionId + ", " + Long.toString(userId) + ", " + email + ", " + strToWrite);
33
            }
34
        });
35
    }
36
 
37
    public static void logData(final EventType eType, final String sessionId, final long userId, final String email, final String... logData) {
38
        final String strToWrite = StringUtils.join(logData, ", ");
39
        final Long time = (new Date()).getTime();
40
        asyncDataLogger.execute(new Runnable() {
41
            @Override
42
            public void run() {
43
                log.info(eType.name() + ", " + sessionId + ", " + Long.toString(userId) + ", " + email + ", " + strToWrite);
44
                Event event = Event.createEvent(eType, sessionId, userId, email, logData);
45
                JSONObject logDataInJson = event.getLogDataInJson();
46
                try {
47
                    // Construct data
48
                    String data = URLEncoder.encode("time", "UTF-8") + "=" + URLEncoder.encode(time.toString(), "UTF-8");
49
                    data += "&" + URLEncoder.encode("eventType", "UTF-8") + "=" + URLEncoder.encode(eType.name(), "UTF-8");
50
                    data += "&" + URLEncoder.encode("sessionId", "UTF-8") + "=" + URLEncoder.encode(sessionId, "UTF-8");
51
                    data += "&" + URLEncoder.encode("userId", "UTF-8") + "=" + URLEncoder.encode(Long.toString(userId), "UTF-8");
52
                    data += "&" + URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode(email, "UTF-8");
53
                    if (logDataInJson != null) {
54
                        data += "&" + URLEncoder.encode("jsonLogData", "UTF-8")
55
                                + "=" + URLEncoder.encode(logDataInJson.toString(), "UTF-8");
56
                    }
57
 
58
                    // Send data
59
                    URL url = new URL("http://" + googleAppUrl + "/add-data-log");
60
                    URLConnection conn = url.openConnection();
61
                    conn.setDoOutput(true);
62
                    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
63
                    wr.write(data);
64
                    wr.close();
65
 
66
                    BufferedReader in = new BufferedReader(
67
                            new InputStreamReader(conn.getInputStream()));
68
 
69
                    while (in.readLine() != null);
70
                    in.close();
71
 
72
                } catch (Exception e) {
73
                    Logger.getRootLogger().warn(e);
74
                }
75
 
76
            }
77
        });
78
    }
79
}