45 lines
1.2 KiB
Java
45 lines
1.2 KiB
Java
package de.ph87.data.point;
|
|
|
|
import de.ph87.data.series.data.Interval;
|
|
import lombok.Data;
|
|
|
|
import java.time.ZonedDateTime;
|
|
import java.util.List;
|
|
import java.util.stream.Stream;
|
|
|
|
@Data
|
|
public class PointRequestRelative implements IPointRequest {
|
|
|
|
public final List<Long> ids;
|
|
|
|
public final Interval outerInterval;
|
|
|
|
public final long offset;
|
|
|
|
public final long count;
|
|
|
|
public final Interval interval;
|
|
|
|
public final ZonedDateTime begin;
|
|
|
|
public final ZonedDateTime end;
|
|
|
|
public final long expectedCount;
|
|
|
|
public PointRequestRelative(final List<Long> ids, final Interval outerInterval, final long offset, final long count, final Interval interval) {
|
|
this.ids = ids;
|
|
this.outerInterval = outerInterval;
|
|
this.offset = offset;
|
|
this.count = count;
|
|
this.interval = interval;
|
|
this.end = outerInterval.align.apply(ZonedDateTime.now()).minus(outerInterval.amount * (offset - 1), outerInterval.unit);
|
|
this.begin = this.end.minus(outerInterval.amount * count, outerInterval.unit);
|
|
this.expectedCount = calculateExpectedCount();
|
|
}
|
|
|
|
private long calculateExpectedCount() {
|
|
return Stream.iterate(begin, d -> d.isBefore(end), d -> d.plus(interval.amount, interval.unit)).count();
|
|
}
|
|
|
|
}
|