| 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);
|
|
|
25 |
private static ExecutorService asyncDataLogger = Executors.newSingleThreadExecutor();
|
| 2777 |
varun.gupt |
26 |
private static ExecutorService asyncSocialDataLogger = Executors.newSingleThreadExecutor();
|
| 2528 |
vikas |
27 |
private static ResourceBundle properties = ResourceBundle.getBundle(DataLogger.class.getName());
|
|
|
28 |
private static String googleAppUrl = properties.getString("googleappurl");
|
| 2777 |
varun.gupt |
29 |
|
| 2528 |
vikas |
30 |
public static void logData(final EventType eType, final String sessionId, final long userId, final String email, final String... logData) {
|
|
|
31 |
final String strToWrite = StringUtils.join(logData, ", ");
|
|
|
32 |
final Long time = (new Date()).getTime();
|
|
|
33 |
asyncDataLogger.execute(new Runnable() {
|
|
|
34 |
@Override
|
|
|
35 |
public void run() {
|
|
|
36 |
Event event = Event.createEvent(eType, sessionId, userId, email, logData);
|
|
|
37 |
JSONObject logDataInJson = event.getLogDataInJson();
|
|
|
38 |
try {
|
|
|
39 |
// Construct data
|
|
|
40 |
String data = URLEncoder.encode("time", "UTF-8") + "=" + URLEncoder.encode(time.toString(), "UTF-8");
|
|
|
41 |
data += "&" + URLEncoder.encode("eventType", "UTF-8") + "=" + URLEncoder.encode(eType.name(), "UTF-8");
|
|
|
42 |
data += "&" + URLEncoder.encode("sessionId", "UTF-8") + "=" + URLEncoder.encode(sessionId, "UTF-8");
|
|
|
43 |
data += "&" + URLEncoder.encode("userId", "UTF-8") + "=" + URLEncoder.encode(Long.toString(userId), "UTF-8");
|
|
|
44 |
data += "&" + URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode(email, "UTF-8");
|
|
|
45 |
if (logDataInJson != null) {
|
|
|
46 |
data += "&" + URLEncoder.encode("jsonLogData", "UTF-8")
|
|
|
47 |
+ "=" + URLEncoder.encode(logDataInJson.toString(), "UTF-8");
|
|
|
48 |
}
|
|
|
49 |
|
|
|
50 |
// Send data
|
|
|
51 |
URL url = new URL("http://" + googleAppUrl + "/add-data-log");
|
|
|
52 |
URLConnection conn = url.openConnection();
|
|
|
53 |
conn.setDoOutput(true);
|
|
|
54 |
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
|
|
|
55 |
wr.write(data);
|
|
|
56 |
wr.close();
|
|
|
57 |
|
|
|
58 |
BufferedReader in = new BufferedReader(
|
|
|
59 |
new InputStreamReader(conn.getInputStream()));
|
|
|
60 |
|
|
|
61 |
while (in.readLine() != null);
|
|
|
62 |
in.close();
|
|
|
63 |
|
|
|
64 |
} catch (Exception e) {
|
| 2889 |
vikas |
65 |
log.info(eType.name() + ", " + sessionId + ", " + Long.toString(userId) + ", " + email + ", " + strToWrite);
|
| 2528 |
vikas |
66 |
}
|
| 2777 |
varun.gupt |
67 |
}
|
|
|
68 |
});
|
|
|
69 |
}
|
|
|
70 |
|
|
|
71 |
public static void logSocialData(final SocialEventType eType, final String userId, final String... logData) {
|
|
|
72 |
final String strToWrite = StringUtils.join(logData, ", ");
|
|
|
73 |
final Long time = (new Date()).getTime();
|
|
|
74 |
asyncSocialDataLogger.execute(new Runnable() {
|
|
|
75 |
@Override
|
|
|
76 |
public void run() {
|
|
|
77 |
log.info(eType.name() + ", " + userId + ", " + strToWrite);
|
|
|
78 |
SocialEvent event = SocialEvent.createEvent(eType, userId, logData);
|
|
|
79 |
JSONObject logDataInJson = event.getLogDataInJson();
|
|
|
80 |
|
|
|
81 |
try {
|
|
|
82 |
String data = URLEncoder.encode("time", "UTF-8") + "=" + URLEncoder.encode(time.toString(), "UTF-8");
|
|
|
83 |
data += "&" + URLEncoder.encode("eventType", "UTF-8") + "=" + URLEncoder.encode(eType.name(), "UTF-8");
|
|
|
84 |
data += "&" + URLEncoder.encode("userId", "UTF-8") + "=" + URLEncoder.encode(userId, "UTF-8");
|
|
|
85 |
|
|
|
86 |
if (logDataInJson != null) {
|
|
|
87 |
data += "&" + URLEncoder.encode("jsonLogData", "UTF-8") + "=" + URLEncoder.encode(logDataInJson.toString(), "UTF-8");
|
|
|
88 |
}
|
| 2528 |
vikas |
89 |
|
| 2777 |
varun.gupt |
90 |
// Send data
|
|
|
91 |
URL url = new URL("http://" + googleAppUrl + "/add-social-data-log");
|
|
|
92 |
URLConnection conn = url.openConnection();
|
|
|
93 |
conn.setDoOutput(true);
|
|
|
94 |
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
|
|
|
95 |
wr.write(data);
|
|
|
96 |
wr.close();
|
|
|
97 |
|
|
|
98 |
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
|
|
99 |
while (in.readLine() != null);
|
|
|
100 |
in.close();
|
|
|
101 |
|
|
|
102 |
} catch (Exception e) {
|
|
|
103 |
Logger.getRootLogger().warn(e);
|
|
|
104 |
}
|
| 2528 |
vikas |
105 |
}
|
|
|
106 |
});
|
|
|
107 |
}
|
| 2777 |
varun.gupt |
108 |
}
|