| 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);
|