54 lines
1.3 KiB
Java
54 lines
1.3 KiB
Java
package org.lucares.utils;
|
|
|
|
import java.time.temporal.ChronoUnit;
|
|
import java.time.temporal.Temporal;
|
|
import java.time.temporal.TemporalAdjuster;
|
|
|
|
public class BeginningOfNextInterval implements TemporalAdjuster {
|
|
|
|
private final ChronoUnit unit;
|
|
|
|
public BeginningOfNextInterval(final ChronoUnit unit) {
|
|
this.unit = unit;
|
|
}
|
|
|
|
@Override
|
|
public Temporal adjustInto(final Temporal temporal) {
|
|
Temporal result = temporal;
|
|
final StartOfInterval startOfInterval = new StartOfInterval(unit);
|
|
result = result.with(startOfInterval);
|
|
|
|
switch (unit) {
|
|
case MINUTES: {
|
|
result = result.plus(1, ChronoUnit.MINUTES);
|
|
break;
|
|
}
|
|
case HOURS: {
|
|
result = result.plus(1, ChronoUnit.HOURS);
|
|
break;
|
|
}
|
|
case DAYS: {
|
|
result = result.plus(1, ChronoUnit.DAYS);
|
|
break;
|
|
}
|
|
case WEEKS: {
|
|
result = result.plus(1, ChronoUnit.WEEKS);
|
|
break;
|
|
}
|
|
case MONTHS: {
|
|
result = result.plus(1, ChronoUnit.MONTHS);
|
|
break;
|
|
}
|
|
case YEARS: {
|
|
result = result.plus(1, ChronoUnit.YEARS);
|
|
break;
|
|
}
|
|
default:
|
|
throw new IllegalArgumentException("Unexpected value: " + unit);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
}
|