All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.intelie.pipes.time.PeriodIterator Maven / Gradle / Ivy

There is a newer version: 0.25.5
Show newest version
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);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy