Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
3487 rajveer 1
package in.shop2020.web;
2
 
3
import in.shop2020.model.ComparisonStats;
4
import in.shop2020.server.ComparisonStatsRepository;
5
 
6
import java.text.SimpleDateFormat;
7
import java.util.Calendar;
8
import java.util.Date;
9
import java.util.HashMap;
10
import java.util.List;
11
import java.util.Map;
12
 
13
import javax.servlet.http.HttpServlet;
14
import javax.servlet.http.HttpServletRequest;
15
import javax.servlet.http.HttpServletResponse;
16
 
17
 
18
import com.google.appengine.api.datastore.DatastoreService;
19
import com.google.appengine.api.datastore.DatastoreServiceFactory;
20
import com.google.appengine.api.datastore.Entity;
21
import com.google.appengine.api.datastore.PreparedQuery;
22
import com.google.appengine.api.datastore.Query;
23
 
24
public class DailyComparisonStatsGenerator extends HttpServlet {
25
    private static final long serialVersionUID = -8236918415987438049L;
26
 
27
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
28
        resp.setContentType("application/json");
29
 
30
        DatastoreService datastore = DatastoreServiceFactory
31
                .getDatastoreService();
32
 
33
        Calendar cal = Calendar.getInstance();
34
        Date toDate =  cal.getTime();
35
        cal.add(Calendar.MONTH, -1);
36
        Date fromDate = cal.getTime();
37
 
38
 
39
        Query q = new Query("DataLog");
40
        q.addFilter("eventType", Query.FilterOperator.EQUAL, "PRODUCT_COMPARE");
41
        q.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);
42
        q.addFilter("date", Query.FilterOperator.LESS_THAN_OR_EQUAL, toDate);
43
 
44
        PreparedQuery pq = datastore.prepare(q);
45
        Map<Long, Map<Long, Long>> comparisonStats = new HashMap<Long, Map<Long, Long>>();
46
 
47
 
48
        for (Entity result : pq.asIterable()) {
49
        	List<Long> itemIds;
50
        	try{
51
        		itemIds =  (List<Long>) result.getProperty("itemIds");
52
        	}catch (ClassCastException ce) {
53
				System.out.println("Unable to cast itemIds to List");
54
				continue;
55
			}
56
            if(itemIds != null && !itemIds.isEmpty()){
57
            	for(int i=0; i<itemIds.size(); i++){
58
            		for(int j=0; j<i; j++){
59
            			Long itemOne = itemIds.get(i);
60
            			Long itemTwo = itemIds.get(j);
61
            			Map<Long, Long> comparedItems;
62
            			comparedItems = comparisonStats.get(itemOne);
63
            			if(comparedItems==null){
64
            				comparedItems = new HashMap<Long, Long>();
65
            				comparisonStats.put(itemOne, comparedItems);
66
            			}
67
            			if(comparedItems.containsKey(itemTwo)){
68
            				comparedItems.put(itemTwo, comparedItems.get(itemTwo)+1);
69
            			}else{
70
            				comparedItems.put(itemTwo, 1L);
71
            			}
72
 
73
            			comparedItems = comparisonStats.get(itemTwo);
74
            			if(comparedItems==null){
75
            				comparedItems = new HashMap<Long, Long>();
76
            				comparisonStats.put(itemTwo, comparedItems);
77
            			}
78
            			if(comparedItems.containsKey(itemOne)){
79
            				comparedItems.put(itemOne, comparedItems.get(itemOne)+1);
80
            			}else{
81
            				comparedItems.put(itemOne, 1L);
82
            			}
83
            		}
84
            	}
85
            }
86
        }
87
 
88
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
3498 rajveer 89
        String id = sdf.format(toDate);  
3487 rajveer 90
 
91
 
92
 
93
        ComparisonStats compStats = new ComparisonStats();
94
        compStats.setId(id);
95
        compStats.setComparisonStats(comparisonStats);
96
 
97
        ComparisonStatsRepository repo = new ComparisonStatsRepository();
98
        repo.store(compStats);
99
    }
100
 
101
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
102
        doPost(req, resp);
103
    }
104
}