net.intelie.pipes.time.PeriodIterator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pipes-api Show documentation
Show all versions of pipes-api Show documentation
Intelie Pipes' API classes and interfaces
package net.intelie.pipes.time;
import net.intelie.pipes.util.Preconditions;
import java.io.Serializable;
public class PeriodIterator implements Serializable {
private static final long serialVersionUID = 1L;
private final Period adder;
private final boolean aligned;
private volatile long begin;
private volatile long end;
public PeriodIterator(long now, boolean aligned, Period adder) {
Preconditions.checkArgument(!aligned || adder.supportsFloor(),
"PeriodList with multiple periods doesn't support aligned iteration");
this.adder = adder;
this.aligned = aligned;
if (aligned)
this.begin = adder.floor(now);
else
this.begin = now;
this.end = adder.add(this.begin);
}
public long begin() {
return begin;
}
public long end() {
return end;
}
public void moveNext() {
begin = end;
end = adder.add(end);
if (aligned)
end = adder.floor(end);
}
public void movePrev() {
end = begin;
begin = adder.sub(begin);
if (aligned)
begin = adder.floor(begin);
}
}