@Override public StatDetails loadDetails(String detailsId, List<String> statsIds){ StatDetails result = new StatDetails(detailsId, null); processStats(statsIds, stats -> { Stat stat = getDetailsOrEmpty(detailsId, stats); result.add(stat); }); return result; }
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; }
@Override public StatDetails stat(String id, Date from, Date to, String appGroup, String appType) { log.debug("Searching for stat {} from {} to {}", id, getDateFormat().format(from), getDateFormat().format(to)); StatDetails result = new StatDetails(id, null); listParts().stream() .peek( fileInfo -> log.debug("Checking {}", fileInfo.getName())) .filter(fileInfo -> fileInfo.inRange(from, to)) .peek( fileInfo -> log.debug("Matches: {}", fileInfo.getName())) .forEach( fileInfo -> { Stats stats = load(fileInfo.getName()); Stat details = stats.getMap().get(id); result.add(details, stats.getStartDate(), stats.getEndDate()); }); if( result.getMerged() == null ){ result.setMerged(Stat.emptyStat()); } return result; }
@Override public StatDetails stat(String rootName, Date from, Date to, String appGroup, String appType) { StatDetails result = new StatDetails(rootName, null); List<GroupEntity> groups = findGroupsInRange(from, to, appGroup, appType); loadTree(groups, rootName, from, to, appGroup, appType); groups.forEach(g -> { Stat details = g.getMap().get(rootName); result.add(details, g.getStartDate(),g.getEndDate()); }); if( result.getMerged() == null ){ result.setMerged(Stat.emptyStat()); } return result; }