Subversion Repositories SmartDukaan

Rev

Rev 2392 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2262 vikas 1
package in.shop2020.datalogger;
2
 
3
 
4
import in.shop2020.datalogger.event.Event;
5
 
6
import java.io.BufferedReader;
7
import java.io.File;
8
import java.io.FileInputStream;
9
import java.io.IOException;
10
import java.io.InputStreamReader;
11
import java.util.ArrayList;
12
import java.util.HashMap;
13
import java.util.HashSet;
14
import java.util.List;
15
import java.util.Map;
16
import java.util.Set;
17
 
18
import org.apache.commons.lang.StringUtils;
19
 
20
public class DataLogParser {
21
    private static String dataFile = "/var/log/website/data.log";
22
    private static Map<String, List<Event>> logDataMap;
23
    private static Map<Long, String> orderSessionMap;
24
    private static Map<Long, Set<String>> userSessionMap;
25
 
26
    private static void parseFile(String dataFile) {
27
        // TODO Auto-generated method stub
28
        logDataMap = new HashMap<String, List<Event>>();
29
        orderSessionMap = new HashMap<Long, String>();
30
        userSessionMap = new HashMap<Long, Set<String>>();
31
        File f = new File(dataFile);
32
        if(!f.exists()) {
33
            System.out.println(dataFile + " - does not exist");
34
        }
35
 
36
        FileInputStream fis = null;
37
        try {
38
            fis = new FileInputStream(f);
39
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
40
            String line;
41
            while((line = br.readLine()) != null){
42
                String[] logFields = StringUtils.split(line, ",");
43
                Event event = Event.createEvent(logFields);
44
                String sessionId = event.getSessionId();
45
                if (!logDataMap.containsKey(sessionId)) {
46
                    List<Event> logEvents = new ArrayList<Event>();
47
                    logEvents.add(event);
48
                    logDataMap.put(sessionId, logEvents);
49
                }
50
                else {
51
                    logDataMap.get(sessionId).add(event);
52
                }
53
                String eventName = event.getEventType().name();
54
                if(eventName.equals(EventType.ORDER_CREATION.name())) {
55
                    Long orderId = Long.parseLong(logFields[5].trim());
56
                    if (!orderSessionMap.containsKey(orderId)) {
57
                        orderSessionMap.put(orderId, sessionId);
58
                    }
59
                }
60
                try {
61
                    Long userId = event.getUserId();
62
                    if (!userSessionMap.containsKey(userId)) {
63
                        Set<String> userSessions = new HashSet<String>();
64
                        userSessions.add(sessionId);
65
                        userSessionMap.put(userId, userSessions);
66
                    }
67
                    else {
68
                        userSessionMap.get(userId).add(sessionId);
69
                    }
70
                } catch (NumberFormatException e) {
71
                    // e.printStackTrace();
72
                }
73
            }
74
        } catch (IOException e) {
75
            e.printStackTrace();
76
        }
77
        finally {
78
            if(fis != null) {
79
                try {
80
                    fis.close();
81
                } catch (IOException e) {
82
                    e.printStackTrace();
83
                }
84
            }
85
        }
86
    }
87
 
88
    private static void printHistoryEventsForOrder(long i) {
89
        String session = orderSessionMap.get(i);
90
 
91
        List<Event> events = logDataMap.get(session);
92
        for (Event event : events) {
93
            System.out.println(event);
94
        }
95
    }
96
 
97
    public static void main(String[] args) {
98
        parseFile(dataFile);
99
 
100
        /*
101
        for (Map.Entry<String, List<String>> entry : logDataMap.entrySet()) {
102
            List<String> logs = entry.getValue();
103
            for (String log : logs) {
104
                System.out.println(entry.getKey() + " : " + log);
105
            }
106
        }
107
        for (Map.Entry<Long, Set<String>> entry : userSessionMap.entrySet()) {
108
            Set<String> sessions = entry.getValue();
109
            for (String session : sessions) {
110
                System.out.println(entry.getKey() + " : " + session);
111
            }
112
        }
113
        for (Map.Entry<Long, String> entry : orderSessionMap.entrySet()) {
114
            System.out.println(entry.getKey() + " : " + entry.getValue());
115
        }
116
        */
117
        System.out.println(orderSessionMap.size());
118
        System.out.println(userSessionMap.size());
119
        System.out.println(logDataMap.size());
120
 
121
        printHistoryEventsForOrder(500);
122
    }
123
}