public ProfileMeasurement withPeriod(long whenMillis, long periodDuration, TimeUnit periodUnits) { this.withPeriod(ProfilePeriod.fromTimestamp(whenMillis, periodDuration, periodUnits)); return this; }
public static <T> List<T> visitPeriods(long startEpochMillis , long endEpochMillis , long duration , TimeUnit units , Optional<Predicate<ProfilePeriod>> inclusionPredicate , Function<ProfilePeriod,T> transformation ) { ProfilePeriod period = ProfilePeriod.fromTimestamp(startEpochMillis, duration, units); List<T> ret = new ArrayList<>(); while(period.getStartTimeMillis() <= endEpochMillis) { if(!inclusionPredicate.isPresent() || inclusionPredicate.get().test(period)) { ret.add(transformation.apply(period)); } period = period.next(); } return ret; } }
@Override public String call(MessageRoute route) { ProfilePeriod period = ProfilePeriod.fromTimestamp(route.getTimestamp(), periodDuration, periodDurationUnits); return route.getProfileDefinition().getProfile() + "-" + route.getEntity() + "-" + period.getPeriod(); } }
public Optional<ProfileMeasurement> flush() { Optional<ProfileMeasurement> result; ProfilePeriod period = ProfilePeriod.fromTimestamp(maxTimestamp, periodDurationMillis, TimeUnit.MILLISECONDS); try {