Subversion Repositories SmartDukaan

Rev

Rev 3488 | Rev 3531 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3488 Rev 3523
Line 221... Line 221...
221
        query.addFilter(DATE_FIELD, Query.FilterOperator.LESS_THAN, toDate);
221
        query.addFilter(DATE_FIELD, Query.FilterOperator.LESS_THAN, toDate);
222
        PreparedQuery pq = datastore.prepare(query);
222
        PreparedQuery pq = datastore.prepare(query);
223
        Set<String> uniqueSet = new HashSet<String>();
223
        Set<String> uniqueSet = new HashSet<String>();
224
        List<Entity> entityResults = new ArrayList<Entity>();
224
        List<Entity> entityResults = new ArrayList<Entity>();
225
        
225
        
-
 
226
        Set<String> sessionIds = new HashSet<String>();
226
        logger.warning("DailyProductWithSourceAggregator : Getting View Events in list");
227
        logger.warning("DailyProductWithSourceAggregator : Getting View Events in list");
227
        for (Entity e : pq.asList(FetchOptions.Builder.withChunkSize(500))) {
228
        for (Entity e : pq.asList(FetchOptions.Builder.withChunkSize(500))) {
228
            entityResults.add(e);
229
            entityResults.add(e);
-
 
230
            String sessionId = (String)e.getProperty(SESSION_ID_FIELD);
-
 
231
            if (sessionId != null && !sessionId.isEmpty()) {
-
 
232
                sessionIds.add(sessionId);
-
 
233
            }
229
        }
234
        }
-
 
235
        populateSessionIdSourceMap(sessionIds);
-
 
236
        sessionIds = null;
230
        logger.warning("DailyProductWithSourceAggregator : Done Getting View Events in list");
237
        logger.warning("DailyProductWithSourceAggregator : Done Getting View Events in list");
231
        for (Entity result : entityResults) {
238
        for (Entity result : entityResults) {
232
            String sessionId = (String)result.getProperty(SESSION_ID_FIELD);
239
            String sessionId = (String)result.getProperty(SESSION_ID_FIELD);
233
            String firstSource = getSource(sessionId, FIRST_SOURCE_KEY);
240
            String firstSource = getSource(sessionId, FIRST_SOURCE_KEY);
234
            String sessionSource = getSource(sessionId, SESSION_SOURCE_KEY);
241
            String sessionSource = getSource(sessionId, SESSION_SOURCE_KEY);
Line 280... Line 287...
280
                uniqueSet.add(uniqueKey);
287
                uniqueSet.add(uniqueKey);
281
            }
288
            }
282
        }
289
        }
283
    }
290
    }
284
    
291
    
-
 
292
    private void populateSessionIdSourceMap(Set<String> sessionIds) {
-
 
293
        
-
 
294
        Query sessionQuery = new Query(KIND);
-
 
295
        sessionQuery.addFilter(EVENTTYPE_FIELD, Query.FilterOperator.EQUAL,
-
 
296
                NEW_SESSION_EVENT);
-
 
297
        sessionQuery.addFilter(DATE_FIELD, Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);
-
 
298
        sessionQuery.addFilter(DATE_FIELD, Query.FilterOperator.LESS_THAN, toDate);
-
 
299
        
-
 
300
        PreparedQuery sessionPq = datastore.prepare(sessionQuery);
-
 
301
        for (Entity sessionResult : sessionPq.asIterable()) {
-
 
302
            String sessionId = (String)sessionResult.getProperty(SESSION_ID_FIELD);
-
 
303
            if (sessionIds.contains(sessionId)) {
-
 
304
                String firstSource = "";
-
 
305
                String sessionSource = "";
-
 
306
                if (sessionResult != null) {
-
 
307
                    if (sessionResult.hasProperty(FIRST_SOURCE_FIELD)) {
-
 
308
                        firstSource = sessionResult.getProperty(
-
 
309
                                FIRST_SOURCE_FIELD).toString();
-
 
310
                    }
-
 
311
                    if (sessionResult.hasProperty(SESSION_SOURCE_FIELD)) {
-
 
312
                        sessionSource = sessionResult.getProperty(
-
 
313
                                SESSION_SOURCE_FIELD).toString();
-
 
314
                    }
-
 
315
                }
-
 
316
                Map<String, String> sessionSourcesMap = new HashMap<String, String>();
-
 
317
                sessionSourcesMap.put(FIRST_SOURCE_KEY, firstSource);
-
 
318
                sessionSourcesMap.put(SESSION_SOURCE_KEY, sessionSource);
-
 
319
                sessionIdSourceMap.put(sessionId, sessionSourcesMap);
-
 
320
            }
-
 
321
        }
-
 
322
        logger.warning("DailyProductWithSourceAggregator : polpulateSessionIds : "
-
 
323
                + sessionIdSourceMap.size());
-
 
324
    }
-
 
325
 
285
    private String getSource(String sessionId, String sourceKey) {
326
    private String getSource(String sessionId, String sourceKey) {
286
        if (sessionIdSourceMap.containsKey(sessionId)) {
327
        if (sessionIdSourceMap.containsKey(sessionId)) {
287
            logger.warning("DailyProductWithSourceAggregator : sessionIdSourceMap hit : "
-
 
288
                    + sessionId);
-
 
289
            return sessionIdSourceMap.get(sessionId).get(sourceKey);
328
            return sessionIdSourceMap.get(sessionId).get(sourceKey);
290
        }
329
        }
-
 
330
        logger.warning("DailyProductWithSourceAggregator : sessionIdSourceMap miss : "
-
 
331
                + sessionId);
291
        if (sessionId != null && !sessionId.isEmpty()) {
332
        if (sessionId != null && !sessionId.isEmpty()) {
292
            Query sessionQuery = new Query(KIND);
333
            Query sessionQuery = new Query(KIND);
293
            sessionQuery.addFilter(EVENTTYPE_FIELD, Query.FilterOperator.EQUAL,
334
            sessionQuery.addFilter(EVENTTYPE_FIELD, Query.FilterOperator.EQUAL,
294
                    NEW_SESSION_EVENT);
335
                    NEW_SESSION_EVENT);
295
            sessionQuery.addFilter(SESSION_ID_FIELD,
336
            sessionQuery.addFilter(SESSION_ID_FIELD,
Line 316... Line 357...
316
            }
357
            }
317
        }
358
        }
318
        if (sessionIdSourceMap.containsKey(sessionId)) {
359
        if (sessionIdSourceMap.containsKey(sessionId)) {
319
            return sessionIdSourceMap.get(sessionId).get(sourceKey);
360
            return sessionIdSourceMap.get(sessionId).get(sourceKey);
320
        }
361
        }
-
 
362
        logger.warning("DailyProductWithSourceAggregator : sessionIdSourceMap not found : "
-
 
363
                + sessionId);
321
        return "";
364
        return "";
322
    }
365
    }
323
 
366
 
324
    private void UpdateItemIdEventCount(String event, String countKey, String uniqueCountKey, boolean isCatalogIdEvent) {
367
    private void UpdateItemIdEventCount(String event, String countKey, String uniqueCountKey, boolean isCatalogIdEvent) {
325
        Query query = new Query(KIND);
368
        Query query = new Query(KIND);