Data2025/src/main/java/de/ph87/data/point/PointRequestRelative.java
2025-11-03 11:33:58 +01:00

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();
}
}