Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
2620 vikas 1
package in.shop2020.web;
2
 
3
import java.io.IOException;
2669 rajveer 4
import java.util.HashMap;
5
import java.util.List;
6
import java.util.Map;
2620 vikas 7
 
8
import javax.servlet.http.HttpServlet;
9
import javax.servlet.http.HttpServletRequest;
10
import javax.servlet.http.HttpServletResponse;
11
 
2669 rajveer 12
import org.json.JSONObject;
13
 
2620 vikas 14
import com.google.appengine.api.datastore.DatastoreService;
15
import com.google.appengine.api.datastore.DatastoreServiceFactory;
16
import com.google.appengine.api.datastore.Entity;
17
import com.google.appengine.api.datastore.PreparedQuery;
18
import com.google.appengine.api.datastore.Query;
19
 
20
public class ShowCompareProducts extends HttpServlet {
21
    private static final long serialVersionUID = -8236918415987438049L;
22
 
23
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
2669 rajveer 24
        resp.setContentType("application/json");
2620 vikas 25
 
26
        DatastoreService datastore = DatastoreServiceFactory
27
                .getDatastoreService();
28
 
29
        Query q = new Query("DataLog");
30
        q.addFilter("eventType", Query.FilterOperator.EQUAL, "PRODUCT_COMPARE");
31
 
32
        PreparedQuery pq = datastore.prepare(q);
2669 rajveer 33
        Map<Long, Map<Long, Long>> comparisonStats = new HashMap<Long, Map<Long, Long>>();
34
 
2620 vikas 35
        try {
36
            for (Entity result : pq.asIterable()) {
2670 rajveer 37
            	List<Long> itemIds;
38
            	try{
39
            		itemIds =  (List<Long>) result.getProperty("itemIds");
40
            	}catch (ClassCastException ce) {
41
					System.out.println("Unable to cast itemIds to List");
42
					continue;
43
				}
2669 rajveer 44
                if(itemIds != null && !itemIds.isEmpty()){
45
                	for(int i=0; i<itemIds.size(); i++){
46
                		for(int j=0; j<i; j++){
47
                			Long itemOne = itemIds.get(i);
48
                			Long itemTwo = itemIds.get(j);
49
                			Map<Long, Long> comparedItems;
50
                			comparedItems = comparisonStats.get(itemOne);
51
                			if(comparedItems==null){
52
                				comparedItems = new HashMap<Long, Long>();
53
                				comparisonStats.put(itemOne, comparedItems);
54
                			}
55
                			if(comparedItems.containsKey(itemTwo)){
56
                				comparedItems.put(itemTwo, comparedItems.get(itemTwo)+1);
57
                			}else{
58
                				comparedItems.put(itemTwo, 1L);
59
                			}
60
 
61
                			comparedItems = comparisonStats.get(itemTwo);;
62
                			if(comparedItems==null){
63
                				comparedItems = new HashMap<Long, Long>();
64
                				comparisonStats.put(itemTwo, comparedItems);
65
                			}
66
                			if(comparedItems.containsKey(itemOne)){
67
                				comparedItems.put(itemOne, comparedItems.get(itemOne)+1);
68
                			}else{
69
                				comparedItems.put(itemOne, 1L);
70
                			}
71
                		}
72
                	}
73
                }
2620 vikas 74
            }
2669 rajveer 75
 
76
            JSONObject comparisonStatsJson = new JSONObject(comparisonStats);
77
            resp.getWriter().println(comparisonStatsJson);
78
 
2620 vikas 79
        } catch (IOException e) {
2670 rajveer 80
            System.out.println("Unable to write at output stream");
2620 vikas 81
        }
82
    }
83
 
84
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
85
        doPost(req, resp);
86
    }
87
}