public boolean collect(Ledger ledger, Config config) {
if(!config.getStatsIntervalSmall().equals(smallInterval) || !config.getStatsIntervalBig().equals(bigInterval)) {
init(ledger,config);
return false;
}
ZonedDateTime now = ZonedDateTime.now();
Map<ItemState, Integer> lastIntervalStats = ledger.getLedgerSize(lastStatsBuildTime);
ledgerStatsHistory.addLast(lastIntervalStats);
ledgerHistoryTimestamps.addLast(lastStatsBuildTime);
smallIntervalApproved = lastIntervalStats.getOrDefault(ItemState.APPROVED,0)+lastIntervalStats.getOrDefault(ItemState.REVOKED,0);
bigIntervalApproved += smallIntervalApproved;
uptimeApproved += smallIntervalApproved;
lastIntervalStats.keySet().forEach(is -> ledgerSize.put(is, ledgerSize.getOrDefault(is,0) + lastIntervalStats.get(is)));
while (ledgerHistoryTimestamps.getFirst().plus(bigInterval).isBefore(now)) {
ledgerHistoryTimestamps.removeFirst();
bigIntervalApproved -= ledgerStatsHistory.removeFirst().get(ItemState.APPROVED) + lastIntervalStats.getOrDefault(ItemState.REVOKED,0);
}
lastStatsBuildTime = now;
Map<Integer, Integer> payments = ledger.getPayments(now.truncatedTo(ChronoUnit.DAYS).minusDays(now.getDayOfMonth()-1).minusMonths(1));
payments.keySet().forEach( day -> {
});
return true;
}