Don't jarjar anymore.
This commit is contained in:
parent
44eb9d1d9c
commit
307b3427e8
77 changed files with 6359 additions and 15 deletions
161
src/main/java/dev/zontreck/ariaslib/util/TimeNotation.java
Normal file
161
src/main/java/dev/zontreck/ariaslib/util/TimeNotation.java
Normal file
|
@ -0,0 +1,161 @@
|
|||
package dev.zontreck.ariaslib.util;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Contains useful structures and functions for dealing with, and manipulation of, time.
|
||||
*/
|
||||
public class TimeNotation
|
||||
{
|
||||
public int Years;
|
||||
public int Months;
|
||||
public int Weeks;
|
||||
public int Days;
|
||||
public int Hours;
|
||||
public int Minutes;
|
||||
public int Seconds;
|
||||
|
||||
public TimeNotation(int years, int months, int weeks, int days, int hours, int minutes, int seconds)
|
||||
{
|
||||
Years=years;
|
||||
Months=months;
|
||||
Weeks=weeks;
|
||||
Days=days;
|
||||
Hours=hours;
|
||||
Minutes=minutes;
|
||||
Seconds = seconds;
|
||||
}
|
||||
|
||||
private TimeNotation(){}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
String str =
|
||||
someOrNone(Years,Pluralize(Years, "year") + ", ") +
|
||||
someOrNone(Months, Pluralize(Months, "month") + ", ") +
|
||||
someOrNone(Weeks, Pluralize(Weeks, "week") + ", ") +
|
||||
someOrNone(Days, Pluralize(Days, "day") + ", ") +
|
||||
someOrNone(Hours, Pluralize(Hours, "hour") + ", ") +
|
||||
someOrNone(Minutes, Pluralize(Minutes, "minute") + ", ") +
|
||||
someOrNone(Seconds, Pluralize(Seconds, "second"));
|
||||
|
||||
if(str == ""){
|
||||
return "No Seconds";
|
||||
} else return str;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a plural version for a number
|
||||
* @param num The number to prefix
|
||||
* @param str The singular form of the string
|
||||
* @return Combined string, num + str in plural form if necessary
|
||||
*/
|
||||
private String Pluralize(int num, String str)
|
||||
{
|
||||
return num + " " + ((num > 1) ? str+"s" : str);
|
||||
}
|
||||
|
||||
/**
|
||||
* A simple function to test a number, return a string, or return nothing at all.
|
||||
* @param num The number to check
|
||||
* @param str The string to return if the number is greater than zero
|
||||
* @return Str if num >1, or empty string
|
||||
*/
|
||||
private String someOrNone(int num, String str)
|
||||
{
|
||||
if(num > 0) return str;
|
||||
else return "";
|
||||
}
|
||||
/**
|
||||
* A simple function to test a number, return a string, or return something else.
|
||||
* @param num The number to check
|
||||
* @param str The string to return if the number is greater than zero
|
||||
* @return Str if num >1, or other string
|
||||
*/
|
||||
private String someOrOther(int num, String str, String other)
|
||||
{
|
||||
if(num > 0) return str;
|
||||
else return other;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encodes time notation!
|
||||
* @return A program readable string that can be decoded back to a time notation
|
||||
*/
|
||||
public String toNotation()
|
||||
{
|
||||
return Years + "Y" + Months + "M" + Weeks + "W" + Days + "d" + Hours + "h" + Minutes + "m" + Seconds + "s";
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a time notation string
|
||||
* @param notation Serialized time notation
|
||||
* @return The deserialized time notation object
|
||||
*/
|
||||
public static TimeNotation fromNotation(String notation)
|
||||
{
|
||||
TimeNotation notationX = new TimeNotation();
|
||||
String[] delims = new String[]{"Y", "M", "W", "d", "h", "m", "s"};
|
||||
List<String> opts = Lists.split(notation, delims);
|
||||
|
||||
|
||||
int index = 0;
|
||||
for(String dlim : delims)
|
||||
{
|
||||
if(notation.contains(dlim))
|
||||
{
|
||||
switch (dlim)
|
||||
{
|
||||
case "Y":
|
||||
{
|
||||
notationX.Years = Integer.parseInt(opts.get(index));
|
||||
|
||||
break;
|
||||
}
|
||||
case "M":
|
||||
{
|
||||
notationX.Months = Integer.parseInt(opts.get(index));
|
||||
|
||||
break;
|
||||
}
|
||||
case "W":
|
||||
{
|
||||
notationX.Weeks = Integer.parseInt(opts.get(index));
|
||||
|
||||
break;
|
||||
}
|
||||
case "d":
|
||||
{
|
||||
notationX.Days = Integer.parseInt(opts.get(index));
|
||||
|
||||
break;
|
||||
}
|
||||
case "h":
|
||||
{
|
||||
notationX.Hours = Integer.parseInt(opts.get(index));
|
||||
|
||||
break;
|
||||
}
|
||||
case "m":
|
||||
{
|
||||
notationX.Minutes = Integer.parseInt(opts.get(index));
|
||||
|
||||
break;
|
||||
}
|
||||
case "s":
|
||||
{
|
||||
notationX.Seconds = Integer.parseInt(opts.get(index));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
return notationX;
|
||||
|
||||
}
|
||||
}
|
Reference in a new issue