package sk.stuba.fiit.perconik.utilities.concurrent;
import java.util.concurrent.TimeUnit;
import static java.util.concurrent.TimeUnit.DAYS;
import static java.util.concurrent.TimeUnit.HOURS;
import static java.util.concurrent.TimeUnit.MICROSECONDS;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import static java.util.concurrent.TimeUnit.SECONDS;
public final class TimeUnits {
private TimeUnits() {}
public static TimeUnit lesser(final TimeUnit a, final TimeUnit b) {
return a.compareTo(b) < 0 ? a : b;
}
public static TimeUnit greater(final TimeUnit a, final TimeUnit b) {
return a.compareTo(b) > 0 ? a : b;
}
public static TimeUnit fromString(final String unit) {
switch (unit) {
case "ns":
return NANOSECONDS;
case "\u00b5s":
return MICROSECONDS;
case "ms":
return MILLISECONDS;
case "s":
return SECONDS;
case "m":
return MINUTES;
case "h":
return HOURS;
case "d":
return DAYS;
default:
throw new IllegalArgumentException();
}
}
public static String toString(final TimeUnit unit) {
switch (unit) {
case NANOSECONDS:
return "ns";
case MICROSECONDS:
return "\u00b5s";
case MILLISECONDS:
return "ms";
case SECONDS:
return "s";
case MINUTES:
return "m";
case HOURS:
return "h";
case DAYS:
return "d";
default:
throw new AssertionError();
}
}
public static long toNanos(final long duration, final TimeUnit unit) {
return unit.toNanos(duration);
}
public static long toMicros(final long duration, final TimeUnit unit) {
return unit.toMicros(duration);
}
public static long toMillis(final long duration, final TimeUnit unit) {
return unit.toMillis(duration);
}
public static long toSeconds(final long duration, final TimeUnit unit) {
return unit.toSeconds(duration);
}
public static long toMinutes(final long duration, final TimeUnit unit) {
return unit.toMinutes(duration);
}
public static long toHours(final long duration, final TimeUnit unit) {
return unit.toHours(duration);
}
public static long toDays(final long duration, final TimeUnit unit) {
return unit.toDays(duration);
}
}