Rev 2772 | Rev 3506 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.web;import java.io.IOException;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.json.JSONObject;import com.google.appengine.api.datastore.DatastoreService;import com.google.appengine.api.datastore.DatastoreServiceFactory;import com.google.appengine.api.datastore.Entity;import com.google.appengine.api.datastore.PreparedQuery;import com.google.appengine.api.datastore.Query;public class ShowCompareProducts extends HttpServlet {private static final long serialVersionUID = -8236918415987438049L;public void doPost(HttpServletRequest req, HttpServletResponse resp) {resp.setContentType("application/json");DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();String fromDateString = req.getParameter("fromdate");String toDateString = req.getParameter("todate");Date fromDate = new Date(0);Date toDate = new Date();try{if(fromDateString!=null){fromDate = new Date(Long.parseLong(fromDateString));}if(toDateString!=null){toDate = new Date(Long.parseLong(toDateString));}}catch (Exception e) {System.out.println("Parse exception, using default date from 1970 to Today");}Query q = new Query("DataLog");q.addFilter("eventType", Query.FilterOperator.EQUAL, "PRODUCT_COMPARE");q.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);q.addFilter("date", Query.FilterOperator.LESS_THAN_OR_EQUAL, toDate);PreparedQuery pq = datastore.prepare(q);Map<Long, Map<Long, Long>> comparisonStats = new HashMap<Long, Map<Long, Long>>();try {for (Entity result : pq.asIterable()) {List<Long> itemIds;try{itemIds = (List<Long>) result.getProperty("itemIds");}catch (ClassCastException ce) {System.out.println("Unable to cast itemIds to List");continue;}if(itemIds != null && !itemIds.isEmpty()){for(int i=0; i<itemIds.size(); i++){for(int j=0; j<i; j++){Long itemOne = itemIds.get(i);Long itemTwo = itemIds.get(j);Map<Long, Long> comparedItems;comparedItems = comparisonStats.get(itemOne);if(comparedItems==null){comparedItems = new HashMap<Long, Long>();comparisonStats.put(itemOne, comparedItems);}if(comparedItems.containsKey(itemTwo)){comparedItems.put(itemTwo, comparedItems.get(itemTwo)+1);}else{comparedItems.put(itemTwo, 1L);}comparedItems = comparisonStats.get(itemTwo);if(comparedItems==null){comparedItems = new HashMap<Long, Long>();comparisonStats.put(itemTwo, comparedItems);}if(comparedItems.containsKey(itemOne)){comparedItems.put(itemOne, comparedItems.get(itemOne)+1);}else{comparedItems.put(itemOne, 1L);}}}}}JSONObject comparisonStatsJson = new JSONObject(comparisonStats);resp.getWriter().println(comparisonStatsJson);} catch (IOException e) {System.out.println("Unable to write at output stream");}}public void doGet(HttpServletRequest req, HttpServletResponse resp) {doPost(req, resp);}}