protected StatDetails createDetails(String detailsId, List<GroupEntity> groups, List<StatEntity> stats) { StatDetails result = new StatDetails(detailsId, null); result.setInfo(storageInfo(null)); groups.forEach( group -> { List<StatEntity> groupStats = stats.stream() .filter( s -> group.getId().equals(s.getGroupId()) ) .collect(toList()); restoreGroupStats(group, groupStats); Stat details = group.getMap().get(detailsId); result.add(details); }); if( result.getMerged() == null ){ result.setMerged(Stat.emptyStat()); } return result; }
private StatDetails detailsForRange(String id, TimeRange range) { StatDetails result; if( canSearch(range) ){ result = getStorage().loadDetails(id, range.getFromDate(), range.getToDate(), range.getInstance(), range.getType()); if( inMemoryInRange(range) ){ StatDetails current = detailsInMemory(id); if( current != null ){ //we don't want to merge not set stats as it would reset min value to 0 result.getMerged().merge(current.getMerged(), true); } result.setInfo("Added in-memory data. Original info: " + result.getInfo()); } } else { result = detailsInMemory(id); result.setInfo("in-memory data only. Original info: " + result.getInfo()); } return (result != null) ? result : new StatDetails(id, Stat.emptyStat()); }