Rev 3100 | Rev 3141 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@page import="com.google.appengine.api.datastore.FetchOptions"%><%@page import="java.util.ArrayList"%><%@page import="in.shop2020.model.Item"%><%@page import="in.shop2020.server.ItemRepository"%><%@page import="java.util.Map"%><%@page import="java.util.HashMap"%><%@page import="java.util.Calendar"%><%@page import="java.util.Date"%><%@page import="java.util.TimeZone"%><%@page import="java.text.SimpleDateFormat"%><%@page import="com.google.appengine.api.datastore.Query.SortDirection"%><%@page import="java.util.Map.Entry"%><%@ page import="java.util.List" %><%@ page import="com.google.appengine.api.datastore.DatastoreServiceFactory" %><%@ page import="com.google.appengine.api.datastore.DatastoreService" %><%@ page import="com.google.appengine.api.datastore.Query" %><%@ page import="com.google.appengine.api.datastore.Entity" %><%@ page import="com.google.appengine.api.datastore.PreparedQuery" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><link rel="stylesheet" href="/DataTables/media/css/demo_table.css" type="text/css" /><link rel="stylesheet" href="/DataTables/extras/TableTools/media/css/TableTools.css" type="text/css" /></head><body><%SimpleDateFormat iSdf = new SimpleDateFormat("yyyyMMdd");Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("IST"));String dateStr = request.getParameter("date");ItemRepository itemRepository = new ItemRepository();List<Item> items = itemRepository.getAll();Map<Long, Item> itemsMap = new HashMap<Long, Item>();Map<Long, Item> itemsCatalogIdMap = new HashMap<Long, Item>();Map<String, Item> itemsNameMap = new HashMap<String, Item>();Map<Long, Map<String, Long>> itemsResultMap = new HashMap<Long, Map<String, Long>>();for (Item item : items) {itemsMap.put(item.getId(), item);itemsCatalogIdMap.put(item.getCatalogId(), item);itemsNameMap.put(item.getName().trim(), item);}if (dateStr != null && !dateStr.isEmpty()) {cal.setTime(iSdf.parse(dateStr));}else {dateStr = iSdf.format(cal.getTime());}cal.add(Calendar.DAY_OF_MONTH, 1);Date toDate = iSdf.parse(iSdf.format(cal.getTime()));cal.add(Calendar.DAY_OF_MONTH, -1);Date fromDate = iSdf.parse(iSdf.format(cal.getTime()));String fromDateStr = request.getParameter("fromDate");if (fromDateStr == null || fromDateStr.isEmpty()) {fromDateStr = iSdf.format(fromDate);}SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");sdf.setTimeZone(TimeZone.getTimeZone("IST"));DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();Query query = new Query("DataLog");query.addFilter("eventType", Query.FilterOperator.EQUAL, "PRODUCT_VIEW");query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);query.addFilter("date", Query.FilterOperator.LESS_THAN, toDate);PreparedQuery pq = datastore.prepare(query);for (Entity result : pq.asIterable()) {Long catalogItemId = (Long)result.getProperty("itemId");if(catalogItemId == null) {String name = (String)result.getProperty("productName");if (itemsNameMap.containsKey(name.trim())) {catalogItemId = itemsNameMap.get(name.trim()).getCatalogId();}}if (itemsResultMap.containsKey(catalogItemId)) {Map<String, Long> itemMap = itemsResultMap.get(catalogItemId);if (itemMap.containsKey("ViewCount")) {Long count = itemMap.get("ViewCount");itemMap.put("ViewCount", ++count);}else {itemMap.put("ViewCount", 1l);}}else {Map<String, Long> itemMap = new HashMap<String, Long>();itemMap.put("ViewCount", 1l);itemsResultMap.put(catalogItemId, itemMap);}}query = new Query("DataLog");query.addFilter("eventType", Query.FilterOperator.EQUAL, "ADD_TO_CART");query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);query.addFilter("date", Query.FilterOperator.LESS_THAN, toDate);pq = datastore.prepare(query);for (Entity result : pq.asIterable()) {for (Long itemId : (List<Long>)result.getProperty("itemIds")) {Long catalogItemId = itemsMap.get(itemId).getCatalogId();if (itemsResultMap.containsKey(catalogItemId)) {Map<String, Long> itemMap = itemsResultMap.get(catalogItemId);if (itemMap.containsKey("AddToCartCount")) {Long count = itemMap.get("AddToCartCount");itemMap.put("AddToCartCount", ++count);}else {itemMap.put("AddToCartCount", 1l);}}else {Map<String, Long> itemMap = new HashMap<String, Long>();itemMap.put("AddToCartCount", 1l);itemsResultMap.put(catalogItemId, itemMap);}}}query = new Query("DataLog");query.addFilter("eventType", Query.FilterOperator.EQUAL, "DELETE_FROM_CART");query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);query.addFilter("date", Query.FilterOperator.LESS_THAN, toDate);pq = datastore.prepare(query);for (Entity result : pq.asIterable()) {for (Long itemId : (List<Long>)result.getProperty("itemIds")) {Long catalogItemId = itemsMap.get(itemId).getCatalogId();if (itemsResultMap.containsKey(catalogItemId)) {Map<String, Long> itemMap = itemsResultMap.get(catalogItemId);if (itemMap.containsKey("DeleteFromCartCount")) {Long count = itemMap.get("DeleteFromCartCount");itemMap.put("DeleteFromCartCount", ++count);}else {itemMap.put("DeleteFromCartCount", 1l);}}else {Map<String, Long> itemMap = new HashMap<String, Long>();itemMap.put("DeleteFromCartCount", 1l);itemsResultMap.put(catalogItemId, itemMap);}}}query = new Query("DataLog");query.addFilter("eventType", Query.FilterOperator.EQUAL, "RESEARCH_ADD");query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);query.addFilter("date", Query.FilterOperator.LESS_THAN, toDate);pq = datastore.prepare(query);for (Entity result : pq.asIterable()) {for (Long catalogItemId : (List<Long>)result.getProperty("itemIds")) {if (itemsResultMap.containsKey(catalogItemId)) {Map<String, Long> itemMap = itemsResultMap.get(catalogItemId);if (itemMap.containsKey("AddToResearchCount")) {Long count = itemMap.get("AddToResearchCount");itemMap.put("AddToResearchCount", ++count);}else {itemMap.put("AddToResearchCount", 1l);}}else {Map<String, Long> itemMap = new HashMap<String, Long>();itemMap.put("AddToResearchCount", 1l);itemsResultMap.put(catalogItemId, itemMap);}}}query = new Query("DataLog");query.addFilter("eventType", Query.FilterOperator.EQUAL, "RESEARCH_DELETE");query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);query.addFilter("date", Query.FilterOperator.LESS_THAN, toDate);pq = datastore.prepare(query);for (Entity result : pq.asIterable()) {for (Long catalogItemId : (List<Long>)result.getProperty("itemIds")) {if (itemsResultMap.containsKey(catalogItemId)) {Map<String, Long> itemMap = itemsResultMap.get(catalogItemId);if (itemMap.containsKey("ResearchDeleteCount")) {Long count = itemMap.get("ResearchDeleteCount");itemMap.put("ResearchDeleteCount", ++count);}else {itemMap.put("ResearchDeleteCount", 1l);}}else {Map<String, Long> itemMap = new HashMap<String, Long>();itemMap.put("ResearchDeleteCount", 1l);itemsResultMap.put(catalogItemId, itemMap);}}}%><form id="frmProductActivity" name="frmProductActivity" method="post" action="/jsp/product-activity.jsp"><label>Date(YYYYMMDD) : </label> <input type="text" name="date" id="date" value="<%= dateStr %>"/><input type="submit" name="submit" id="submit" value="Submit"/><br/></form><table cellpadding="0" cellspacing="0" border="0" class="display"id="prodFunnel"><thead><tr><th>Product</th><th>View</th><th>AddToCart</th><th>DeleteFromCart</th><th>AddToResearch</th><th>DeleteFromResearch</th></tr></thead><tbody><%for (Entry<Long, Map<String, Long>> entry : itemsResultMap.entrySet()) {Long catalogItemId = (Long)entry.getKey();Map<String, Long> itemMap = (Map<String, Long>)entry.getValue();%><tr><td><%=itemsCatalogIdMap.get(catalogItemId)==null? catalogItemId : itemsCatalogIdMap.get(catalogItemId).getName()%></td><td><%=itemMap.get("ViewCount")==null? 0 : itemMap.get("ViewCount")%></td><td><%=itemMap.get("AddToCartCount")==null? 0 : itemMap.get("AddToCartCount")%></td><td><%=itemMap.get("DeleteFromCartCount")==null? 0 : itemMap.get("DeleteFromCartCount")%></td><td><%=itemMap.get("AddToResearchCount")==null? 0 : itemMap.get("AddToResearchCount")%></td><td><%=itemMap.get("DeleteFromCartCount")==null? 0 : itemMap.get("DeleteFromCartCount")%></td></tr><%}%></tbody></table><script type="text/javascript" language="javascript" src="/DataTables/media/js/jquery.js"></script><script type="text/javascript" language="javascript" src="/DataTables/media/js/jquery.dataTables.min.js"></script><script type="text/javascript" charset="utf-8" src="/DataTables/extras/TableTools/media/js/ZeroClipboard.js"></script><script type="text/javascript" charset="utf-8" src="/DataTables/extras/TableTools/media/js/TableTools.js"></script><script type="text/javascript" charset="utf-8">$(document).ready(function() {$('#prodFunnel').dataTable({"iDisplayLength": 15,"bProcessing": true,"aaSorting": [[1,'desc']],"sDom": 'T<"clear">lfrtip',"oTableTools": {"sSwfPath": "/DataTables/extras/TableTools/media/swf/copy_cvs_xls_pdf.swf"},"aLengthMenu": [[10, 15, 25, 50, 100, -1], [10, 15, 25, 50, 100, "All"]]});} );</script></body></html>