Subversion Repositories SmartDukaan

Rev

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

Rev 3531 Rev 3704
Line 77... Line 77...
77
    private static final String PROCEED_TO_PAY_COUNT_KEY = "ProceedToPayCount";
77
    private static final String PROCEED_TO_PAY_COUNT_KEY = "ProceedToPayCount";
78
    private static final String UNIQUE_PROCEED_TO_PAY_COUNT_KEY = "UniqueProceedToPayCount";
78
    private static final String UNIQUE_PROCEED_TO_PAY_COUNT_KEY = "UniqueProceedToPayCount";
79
    
79
    
80
    private static final String FIRST_SOURCE_KEY = "FirstSource";
80
    private static final String FIRST_SOURCE_KEY = "FirstSource";
81
    private static final String SESSION_SOURCE_KEY = "SessionSource";
81
    private static final String SESSION_SOURCE_KEY = "SessionSource";
-
 
82
    private static final String FIRST_SOURCE_PAID_KEY = "FirstSourcePaid";
-
 
83
    private static final String SESSION_SOURCE_PAID_KEY = "SessionSourcePaid";
-
 
84
    
82
    
85
    
83
    private Map<Long, Item> itemsMap;
86
    private Map<Long, Item> itemsMap;
84
    private Map<Long, Item> itemsCatalogIdMap;
87
    private Map<Long, Item> itemsCatalogIdMap;
85
    private Map<String, Item> itemsNameMap;
88
    private Map<String, Item> itemsNameMap;
86
    private Map<String, Map<String, Long>> itemsResultMap;
89
    private Map<String, Map<String, Long>> itemsResultMap;
Line 193... Line 196...
193
                    .entrySet()) {
196
                    .entrySet()) {
194
                String key = (String) entry.getKey();
197
                String key = (String) entry.getKey();
195
                Map<String, Long> itemMap = (Map<String, Long>) entry
198
                Map<String, Long> itemMap = (Map<String, Long>) entry
196
                        .getValue();
199
                        .getValue();
197
 
200
 
198
                String[] keyItems = key.split("_");
201
                String[] keyItems = key.split("__");
199
 
202
 
200
                Boolean isPaidFirstSource = keyItems[0].equals("0") ? false
203
                Boolean isPaidFirstSource = keyItems[0].equals("0") ? false
201
                        : true;
204
                        : true;
202
                String firstSource = keyItems[1];
205
                String firstSource = keyItems[1];
203
                Boolean isPaidSessionSource = keyItems[2].equals("0") ? false
206
                Boolean isPaidSessionSource = keyItems[2].equals("0") ? false
204
                        : true;
207
                        : true;
205
                String sessionSource = keyItems[3];
208
                String sessionSource = keyItems[3];
-
 
209
                Long catalogItemId;
-
 
210
                try {
206
                Long catalogItemId = Long.parseLong(keyItems[4]);
211
                    catalogItemId = Long.parseLong(keyItems[4]);
-
 
212
                }
-
 
213
                catch (NumberFormatException e) {
-
 
214
                    logger.warning("NumberFormatException : " + keyItems[4]);
-
 
215
                    continue;
-
 
216
                }
207
 
217
 
208
                ItemActivityWithSource itemActivity = new ItemActivityWithSource();
218
                ItemActivityWithSource itemActivity = new ItemActivityWithSource();
209
                itemActivity.setIsPaidFirstSource(isPaidFirstSource);
219
                itemActivity.setIsPaidFirstSource(isPaidFirstSource);
210
                itemActivity.setFirstSource(firstSource);
220
                itemActivity.setFirstSource(firstSource);
211
                itemActivity.setIsPaidSessionSource(isPaidSessionSource);
221
                itemActivity.setIsPaidSessionSource(isPaidSessionSource);
Line 255... Line 265...
255
                itemActivities.add(itemActivity);
265
                itemActivities.add(itemActivity);
256
 
266
 
257
            }
267
            }
258
            logger.warning("DailyProductWithSourceAggregator : persisting itemactivities : "
268
            logger.warning("DailyProductWithSourceAggregator : persisting itemactivities : "
259
                    + itemActivities.size());
269
                    + itemActivities.size());
260
            logger.warning("DailyProductWithSourceAggregator : itemactivities : "
-
 
261
                    + itemActivities);
-
 
262
            itemActivityRepository.createAll(itemActivities);
270
            itemActivityRepository.createAll(itemActivities);
263
        }
271
        }
264
    }
272
    }
265
 
273
 
266
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
274
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
Line 292... Line 300...
292
        logger.warning("DailyProductWithSourceAggregator : Done Getting View Events in list");
300
        logger.warning("DailyProductWithSourceAggregator : Done Getting View Events in list");
293
        for (Entity result : entityResults) {
301
        for (Entity result : entityResults) {
294
            String sessionId = (String)result.getProperty(SESSION_ID_FIELD);
302
            String sessionId = (String)result.getProperty(SESSION_ID_FIELD);
295
            String firstSource = getSource(sessionId, FIRST_SOURCE_KEY);
303
            String firstSource = getSource(sessionId, FIRST_SOURCE_KEY);
296
            String sessionSource = getSource(sessionId, SESSION_SOURCE_KEY);
304
            String sessionSource = getSource(sessionId, SESSION_SOURCE_KEY);
297
            String paidFirstSource = "0";
305
            String paidFirstSource = getSource(sessionId, FIRST_SOURCE_PAID_KEY);
298
            String paidSessionSource = "0";
306
            String paidSessionSource = getSource(sessionId, SESSION_SOURCE_PAID_KEY);
299
            if (firstSource.startsWith("PAID :")) {
-
 
300
                paidFirstSource = "1";
-
 
301
            }
-
 
302
            if (sessionSource.startsWith("PAID :")) {
-
 
303
                paidSessionSource = "1";
-
 
304
            }
-
 
305
            firstSource = firstSource.replaceAll(".*http[s]?://", "").replaceAll("/.*", "").replaceAll("www.", "");
-
 
306
            sessionSource = sessionSource.replaceAll(".*http[s]?://", "").replaceAll("/.*", "").replaceAll("www.", "");
-
 
307
            Long catalogItemId = (Long)result.getProperty(ITEMID_FIELD);
307
            Long catalogItemId = (Long)result.getProperty(ITEMID_FIELD);
308
            if(catalogItemId == null) {
308
            if(catalogItemId == null) {
309
                String name = (String)result.getProperty(PRODUCTNAME_FIELD);
309
                String name = (String)result.getProperty(PRODUCTNAME_FIELD);
310
                if (itemsNameMap.containsKey(name.trim())) {
310
                if (itemsNameMap.containsKey(name.trim())) {
311
                    catalogItemId = itemsNameMap.get(name.trim()).getCatalogId();
311
                    catalogItemId = itemsNameMap.get(name.trim()).getCatalogId();
312
                }
312
                }
313
            }
313
            }
314
            String key = paidFirstSource + "_" + firstSource + "_"
314
            String key = paidFirstSource + "__" + firstSource + "__"
315
                    + paidSessionSource + "_" + sessionSource + "_"
315
                    + paidSessionSource + "__" + sessionSource + "__"
316
                    + catalogItemId;
316
                    + catalogItemId;
317
            if (itemsResultMap.containsKey(key)) {
317
            if (itemsResultMap.containsKey(key)) {
318
                Map<String, Long> itemMap = itemsResultMap.get(key);
318
                Map<String, Long> itemMap = itemsResultMap.get(key);
319
                if (itemMap.containsKey(VIEW_COUNT_KEY)) {
319
                if (itemMap.containsKey(VIEW_COUNT_KEY)) {
320
                    Long count = itemMap.get(VIEW_COUNT_KEY);
320
                    Long count = itemMap.get(VIEW_COUNT_KEY);
Line 362... Line 362...
362
        for (Entity sessionResult : entityResults) {
362
        for (Entity sessionResult : entityResults) {
363
            String sessionId = (String)sessionResult.getProperty(SESSION_ID_FIELD);
363
            String sessionId = (String)sessionResult.getProperty(SESSION_ID_FIELD);
364
            if (sessionIds.contains(sessionId)) {
364
            if (sessionIds.contains(sessionId)) {
365
                String firstSource = "";
365
                String firstSource = "";
366
                String sessionSource = "";
366
                String sessionSource = "";
-
 
367
                String isPaidFirstSource = "0";
-
 
368
                String isPaidSessionSource = "0";
367
                if (sessionResult != null) {
369
                if (sessionResult != null) {
368
                    if (sessionResult.hasProperty(FIRST_SOURCE_FIELD)) {
370
                    if (sessionResult.hasProperty(FIRST_SOURCE_FIELD)) {
369
                        firstSource = sessionResult.getProperty(
371
                        firstSource = sessionResult.getProperty(FIRST_SOURCE_FIELD).toString();
-
 
372
                        isPaidFirstSource = firstSource.startsWith("PAID :") ? "1" : "0";
-
 
373
                        firstSource = firstSource.toLowerCase().replaceFirst(".*?http[s]?://", "").replaceAll("/.*", "").replaceAll("www.", "");
-
 
374
                        if (firstSource.length() > 20) {
370
                                FIRST_SOURCE_FIELD).toString();
375
                            firstSource = firstSource.substring(0, 20);
-
 
376
                        }
371
                    }
377
                    }
372
                    if (sessionResult.hasProperty(SESSION_SOURCE_FIELD)) {
378
                    if (sessionResult.hasProperty(SESSION_SOURCE_FIELD)) {
373
                        sessionSource = sessionResult.getProperty(
379
                        sessionSource = sessionResult.getProperty(
374
                                SESSION_SOURCE_FIELD).toString();
380
                                SESSION_SOURCE_FIELD).toString();
-
 
381
                        isPaidSessionSource = sessionSource.startsWith("PAID :") ? "1" : "0";
-
 
382
                        sessionSource = sessionSource.toLowerCase().replaceFirst(".*?http[s]?://", "").replaceAll("/.*", "").replaceAll("www.", "");
-
 
383
                        if (sessionSource.length() > 20) {
-
 
384
                            sessionSource = sessionSource.substring(0, 20);
-
 
385
                        }
375
                    }
386
                    }
376
                }
387
                }
377
                Map<String, String> sessionSourcesMap = new HashMap<String, String>();
388
                Map<String, String> sessionSourcesMap = new HashMap<String, String>();
378
                sessionSourcesMap.put(FIRST_SOURCE_KEY, firstSource);
389
                sessionSourcesMap.put(FIRST_SOURCE_KEY, firstSource);
379
                sessionSourcesMap.put(SESSION_SOURCE_KEY, sessionSource);
390
                sessionSourcesMap.put(SESSION_SOURCE_KEY, sessionSource);
-
 
391
                sessionSourcesMap.put(FIRST_SOURCE_PAID_KEY, isPaidFirstSource);
-
 
392
                sessionSourcesMap.put(SESSION_SOURCE_PAID_KEY, isPaidSessionSource);
380
                sessionIdSourceMap.put(sessionId, sessionSourcesMap);
393
                sessionIdSourceMap.put(sessionId, sessionSourcesMap);
381
            }
394
            }
382
        }
395
        }
383
        logger.warning("DailyProductWithSourceAggregator : polpulateSessionIds : "
396
        logger.warning("DailyProductWithSourceAggregator : polpulateSessionIds : "
384
                + sessionIdSourceMap.size());
397
                + sessionIdSourceMap.size());
Line 386... Line 399...
386
 
399
 
387
    private String getSource(String sessionId, String sourceKey) {
400
    private String getSource(String sessionId, String sourceKey) {
388
        if (sessionIdSourceMap.containsKey(sessionId)) {
401
        if (sessionIdSourceMap.containsKey(sessionId)) {
389
            return sessionIdSourceMap.get(sessionId).get(sourceKey);
402
            return sessionIdSourceMap.get(sessionId).get(sourceKey);
390
        }
403
        }
391
        logger.warning("DailyProductWithSourceAggregator : sessionIdSourceMap miss : "
-
 
392
                + sessionId);
-
 
393
        if (sessionId != null && !sessionId.isEmpty()) {
404
        if (sessionId != null && !sessionId.isEmpty()) {
394
            Query sessionQuery = new Query(KIND);
405
            Query sessionQuery = new Query(KIND);
395
            sessionQuery.addFilter(EVENTTYPE_FIELD, Query.FilterOperator.EQUAL,
406
            sessionQuery.addFilter(EVENTTYPE_FIELD, Query.FilterOperator.EQUAL,
396
                    NEW_SESSION_EVENT);
407
                    NEW_SESSION_EVENT);
397
            sessionQuery.addFilter(SESSION_ID_FIELD,
408
            sessionQuery.addFilter(SESSION_ID_FIELD,
Line 399... Line 410...
399
 
410
 
400
            PreparedQuery sessionPq = datastore.prepare(sessionQuery);
411
            PreparedQuery sessionPq = datastore.prepare(sessionQuery);
401
            for (Entity sessionResult : sessionPq.asIterable()) {
412
            for (Entity sessionResult : sessionPq.asIterable()) {
402
                String firstSource = "";
413
                String firstSource = "";
403
                String sessionSource = "";
414
                String sessionSource = "";
-
 
415
                String isPaidFirstSource = "0";
-
 
416
                String isPaidSessionSource = "0";
404
                if (sessionResult != null) {
417
                if (sessionResult != null) {
405
                    if (sessionResult.hasProperty(FIRST_SOURCE_FIELD)) {
418
                    if (sessionResult.hasProperty(FIRST_SOURCE_FIELD)) {
406
                        firstSource = sessionResult.getProperty(
419
                        firstSource = sessionResult.getProperty(
407
                                FIRST_SOURCE_FIELD).toString();
420
                                FIRST_SOURCE_FIELD).toString();
-
 
421
                        isPaidFirstSource = firstSource.startsWith("PAID :") ? "1" : "0";
-
 
422
                        firstSource = firstSource.toLowerCase().replaceFirst(".*?http[s]?://", "").replaceAll("/.*", "").replaceAll("www.", "");
-
 
423
                        if (firstSource.length() > 20) {
-
 
424
                            firstSource = firstSource.substring(0, 20);
-
 
425
                        }
408
                    }
426
                    }
409
                    if (sessionResult.hasProperty(SESSION_SOURCE_FIELD)) {
427
                    if (sessionResult.hasProperty(SESSION_SOURCE_FIELD)) {
410
                        sessionSource = sessionResult.getProperty(
428
                        sessionSource = sessionResult.getProperty(SESSION_SOURCE_FIELD).toString();
-
 
429
                        isPaidSessionSource = sessionSource.startsWith("PAID :") ? "1" : "0";
-
 
430
                        sessionSource = sessionSource.toLowerCase().replaceFirst(".*?http[s]?://", "").replaceAll("/.*", "").replaceAll("www.", "");
-
 
431
                        if (sessionSource.length() > 20) {
411
                                SESSION_SOURCE_FIELD).toString();
432
                            sessionSource = sessionSource.substring(0, 20);
-
 
433
                        }
412
                    }
434
                    }
413
                }
435
                }
414
                Map<String, String> sessionSourcesMap = new HashMap<String, String>();
436
                Map<String, String> sessionSourcesMap = new HashMap<String, String>();
415
                sessionSourcesMap.put(FIRST_SOURCE_KEY, firstSource);
437
                sessionSourcesMap.put(FIRST_SOURCE_KEY, firstSource);
416
                sessionSourcesMap.put(SESSION_SOURCE_KEY, sessionSource);
438
                sessionSourcesMap.put(SESSION_SOURCE_KEY, sessionSource);
-
 
439
                sessionSourcesMap.put(FIRST_SOURCE_PAID_KEY, isPaidFirstSource);
-
 
440
                sessionSourcesMap.put(SESSION_SOURCE_PAID_KEY, isPaidSessionSource);
417
                sessionIdSourceMap.put(sessionId, sessionSourcesMap);
441
                sessionIdSourceMap.put(sessionId, sessionSourcesMap);
418
            }
442
            }
419
        }
443
        }
420
        if (sessionIdSourceMap.containsKey(sessionId)) {
444
        if (sessionIdSourceMap.containsKey(sessionId)) {
421
            return sessionIdSourceMap.get(sessionId).get(sourceKey);
445
            return sessionIdSourceMap.get(sessionId).get(sourceKey);
Line 438... Line 462...
438
        }
462
        }
439
        for (Entity result : results) {
463
        for (Entity result : results) {
440
            String sessionId = (String)result.getProperty(SESSION_ID_FIELD);
464
            String sessionId = (String)result.getProperty(SESSION_ID_FIELD);
441
            String firstSource = getSource(sessionId, FIRST_SOURCE_KEY);
465
            String firstSource = getSource(sessionId, FIRST_SOURCE_KEY);
442
            String sessionSource = getSource(sessionId, SESSION_SOURCE_KEY);
466
            String sessionSource = getSource(sessionId, SESSION_SOURCE_KEY);
443
            String paidFirstSource = "0";
467
            String paidFirstSource = getSource(sessionId, FIRST_SOURCE_PAID_KEY);
444
            String paidSessionSource = "0";
468
            String paidSessionSource = getSource(sessionId, SESSION_SOURCE_PAID_KEY);
445
            if (firstSource.startsWith("PAID :")) {
-
 
446
                paidFirstSource = "1";
-
 
447
            }
-
 
448
            if (sessionSource.startsWith("PAID :")) {
-
 
449
                paidSessionSource = "1";
-
 
450
            }
-
 
451
            firstSource = firstSource.replaceAll(".*http[s]?://", "").replaceAll("/.*", "").replaceAll("www.", "");
-
 
452
            sessionSource = sessionSource.replaceAll(".*http[s]?://", "").replaceAll("/.*", "").replaceAll("www.", "");
-
 
453
            List<Long> itemIds = null;
469
            List<Long> itemIds = null;
454
            if (!result.hasProperty(ITEMIDS_FIELD)) {
470
            if (!result.hasProperty(ITEMIDS_FIELD)) {
455
                continue;
471
                continue;
456
            }
472
            }
457
            try {
473
            try {
Line 476... Line 492...
476
                if (!isCatalogIdEvent) {
492
                if (!isCatalogIdEvent) {
477
                    if (itemsMap.containsKey(itemId)) {
493
                    if (itemsMap.containsKey(itemId)) {
478
                        itemId = itemsMap.get(itemId).getCatalogId();
494
                        itemId = itemsMap.get(itemId).getCatalogId();
479
                    }
495
                    }
480
                }
496
                }
481
                String key = paidFirstSource + "_" + firstSource + "_"
497
                String key = paidFirstSource + "__" + firstSource + "__"
482
                    + paidSessionSource + "_" + sessionSource + "_"
498
                    + paidSessionSource + "__" + sessionSource + "__"
483
                    + itemId;
499
                    + itemId;
484
                if (itemsResultMap.containsKey(key)) {
500
                if (itemsResultMap.containsKey(key)) {
485
                    Map<String, Long> itemMap = itemsResultMap.get(key);
501
                    Map<String, Long> itemMap = itemsResultMap.get(key);
486
                    if (itemMap.containsKey(countKey)) {
502
                    if (itemMap.containsKey(countKey)) {
487
                        Long count = itemMap.get(countKey);
503
                        Long count = itemMap.get(countKey);