Subversion Repositories SmartDukaan

Rev

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