Subversion Repositories SmartDukaan

Rev

Rev 3100 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@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");
    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);
    Map<String, Long> prodViewCountMap = new HashMap<String, Long>();
    for (Entity result : pq.asIterable()) {
        if (prodViewCountMap.containsKey((String)result.getProperty("productName"))) {
            Long count = prodViewCountMap.get((String)result.getProperty("productName"));
            prodViewCountMap.put((String)result.getProperty("productName"), ++count);
        }
        else {
            prodViewCountMap.put((String)result.getProperty("productName"), 1L);
        }
    }
    
    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);
    Map<Long, Long> prodAddToCartCountMap = new HashMap<Long, Long>();
    for (Entity result : pq.asIterable()) {
        for (Long itemId : (List<Long>)result.getProperty("itemIds")) {
            if (prodAddToCartCountMap.containsKey(itemId)) {
                Long count = prodAddToCartCountMap.get(itemId);
                prodAddToCartCountMap.put(itemId, ++count);
            }
            else {
                prodAddToCartCountMap.put(itemId, 1L);
            }
        }
    }
    
    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);
    Map<Long, Long> prodDeleteFromCartCountMap = new HashMap<Long, Long>();
    for (Entity result : pq.asIterable()) {
        for (Long itemId : (List<Long>)result.getProperty("itemIds")) {
            if (prodDeleteFromCartCountMap.containsKey(itemId)) {
                Long count = prodDeleteFromCartCountMap.get(itemId);
                prodDeleteFromCartCountMap.put(itemId, ++count);
            }
            else {
                prodDeleteFromCartCountMap.put(itemId, 1L);
            }
        }
    }
    
    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);
    Map<Long, Long> prodResearchAddCountMap = new HashMap<Long, Long>();
    for (Entity result : pq.asIterable()) {
        for (Long itemId : (List<Long>)result.getProperty("itemIds")) {
            if (prodResearchAddCountMap.containsKey(itemId)) {
                Long count = prodResearchAddCountMap.get(itemId);
                prodResearchAddCountMap.put(itemId, ++count);
            }
            else {
                prodResearchAddCountMap.put(itemId, 1l);
            }
        }
    }
    
    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);
    Map<Long, Long> prodResearchDeleteCountMap = new HashMap<Long, Long>();
    for (Entity result : pq.asIterable()) {
        for (Long itemId : (List<Long>)result.getProperty("itemIds")) {
            if (prodResearchDeleteCountMap.containsKey(itemId)) {
                Long count = prodResearchDeleteCountMap.get(itemId);
                prodResearchDeleteCountMap.put(itemId, ++count);
            }
            else {
                prodResearchDeleteCountMap.put(itemId, 1L);
            }
        }
    }
%>
    <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="parent">
    <tr>
    <td colspan="2">
        <table cellpadding="0" cellspacing="0" border="0" class="display"
                id="prodView">
                <thead>
                        <tr>
                                <th>Product</th>
                                <th>ViewCount</th>
                        </tr>
                </thead>
                <tbody>

<%
    for (Entry entry : prodViewCountMap.entrySet()) {
%>
                        <tr>
                                <td><%= entry.getKey()%></td>
                                <td><%=entry.getValue()%></td>
                        </tr>
<%
    }
%>
                </tbody>
        </table>
        </td>
        <td>
        <table cellpadding="0" cellspacing="0" border="0" class="display"
        id="prodCartAdd">
        <thead>
            <tr>
                <th>Product</th>
                <th>Cart Add</th>
            </tr>
        </thead>
        <tbody>

<%
    for (Entry entry : prodAddToCartCountMap.entrySet()) {
%>
            <tr>
                <td><%= entry.getKey()%></td>
                <td><%=entry.getValue()%></td>
            </tr>
<%
    }
%>
        </tbody>
    </table>
    </td>
    </tr>
    <tr>
    <td>
    <table cellpadding="0" cellspacing="0" border="0" class="display"
        id="prodDeletedFromCart">
        <thead>
            <tr>
                <th>Product</th>
                <th>Cart Delete</th>
            </tr>
        </thead>
        <tbody>

<%
    for (Entry entry : prodDeleteFromCartCountMap.entrySet()) {
%>
            <tr>
                <td><%= entry.getKey()%></td>
                <td><%=entry.getValue()%></td>
            </tr>
<%
    }
%>
        </tbody>
    </table>
    </td>
    <td>
    <table cellpadding="0" cellspacing="0" border="0" class="display"
        id="prodResearchAdd">
        <thead>
            <tr>
                <th>Product</th>
                <th>Research Add</th>
            </tr>
        </thead>
        <tbody>

<%
    for (Entry entry : prodResearchAddCountMap.entrySet()) {
%>
            <tr>
                <td><%= entry.getKey()%></td>
                <td><%=entry.getValue()%></td>
            </tr>
<%
    }
%>
        </tbody>
    </table>
    </td>
    <td>
    <table cellpadding="0" cellspacing="0" border="0" class="display"
        id="prodResearchDelete">
        <thead>
            <tr>
                <th>Product</th>
                <th>Research Delete</th>
            </tr>
        </thead>
        <tbody>

<%
    for (Entry entry : prodResearchDeleteCountMap.entrySet()) {
%>
            <tr>
                <td><%= entry.getKey()%></td>
                <td><%=entry.getValue()%></td>
            </tr>
<%
    }
%>
        </tbody>
    </table>
    </td>
    </tr>
    </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() {
            $('#prodView').dataTable({
                "iDisplayLength": 10,
                "bProcessing": true,
                "aaSorting": [[1,'desc']],
                "aLengthMenu": [[5, 10, 25,-1], [5, 10, 25, "All"]]
            });
        } );
        $(document).ready(function() {
            $('#prodCartAdd').dataTable({
                "iDisplayLength": 10,
                "bProcessing": true,
                "aaSorting": [[1,'desc']],
                "aLengthMenu": [[5, 10, 25,-1], [5, 10, 25, "All"]]
            });
        } );
        $(document).ready(function() {
            $('#prodDeletedFromCart').dataTable({
                "iDisplayLength": 10,
                "bProcessing": true,
                "aaSorting": [[1,'desc']],
                "aLengthMenu": [[5, 10, 25,-1], [5, 10, 25, "All"]]
            });
        } );
        $(document).ready(function() {
            $('#prodResearchAdd').dataTable({
                "iDisplayLength": 10,
                "bProcessing": true,
                "aaSorting": [[1,'desc']],
                "aLengthMenu": [[5, 10, 25,-1], [5, 10, 25, "All"]]
            });
        } );
        $(document).ready(function() {
            $('#prodResearchDelete').dataTable({
                "iDisplayLength": 10,
                "bProcessing": true,
                "aaSorting": [[1,'desc']],
                "aLengthMenu": [[5, 10, 25,-1], [5, 10, 25, "All"]]
            });
        } );
    </script>
  </body>
</html>