package io.github.lucaseasedup.logit.config;
public enum TimeUnit
{
/*
* 1 ms = 1 ms
*/
MILLISECONDS(1),
/*
* 1000 ms = 20 ticks
* 1 tick = 1000 / 20 ms = 50 ms
*/
TICKS(50),
/*
* 1 s = 1000 ms
*/
SECONDS(1000),
/*
* 1 min = 60 * 1000 ms
*/
MINUTES(60000),
/*
* 1 hour = 60 * 60 * 1000 ms
*/
HOURS(3600000),
/*
* 1 day = 24 * 60 * 60 * 1000 ms
*/
DAYS(86400000),
/*
* 1 week = 7 * 24 * 60 * 60 * 1000 ms
*/
WEEKS(604800000);
private TimeUnit(long milliseconds)
{
if (milliseconds < 0)
throw new IllegalArgumentException();
this.milliseconds = milliseconds;
}
public long getMilliseconds()
{
return milliseconds;
}
public long convertTo(long value, TimeUnit to)
{
if (value < 0 || to == null)
throw new IllegalArgumentException();
if (value == 0)
return 0;
return value * milliseconds / to.milliseconds;
}
/**
* Decodes a string into {@code TimeUnit}.
*
* @param s the string to be decoded.
*
* @return the decoded {@code TimeUnit} or {@code null} if the string
* could not be decoded.
*/
public static TimeUnit decode(String s)
{
if (s == null)
throw new IllegalArgumentException();
switch (s.toLowerCase())
{
case "ms":
case "millis":
case "millisecond":
case "milliseconds":
return MILLISECONDS;
case "tick":
case "ticks":
return TICKS;
case "s":
case "sec":
case "secs":
case "second":
case "seconds":
return SECONDS;
case "min":
case "mins":
case "minute":
case "minutes":
return MINUTES;
case "h":
case "hr":
case "hrs":
case "hour":
case "hours":
return HOURS;
case "d":
case "day":
case "days":
return DAYS;
case "w":
case "wk":
case "week":
case "weeks":
return WEEKS;
}
return null;
}
private final long milliseconds;
}