package openmods.utils;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.Scanner;
import openmods.Log;
import openmods.api.IValueReceiver;
public class MiscUtils {
private static final String[] EMPTY = new String[] {};
public static int getHoliday() {
Calendar today = Calendar.getInstance();
int month = today.get(2);
int day = today.get(5);
if ((month == 1) && (day == 14)) { return 1; }
if ((month == 9) && (day == 31)) { return 2; }
if ((month == 11) && (day >= 24) && (day <= 30)) { return 3; }
return 0;
}
public static String[] loadTextFromURL(URL url) {
return loadTextFromURL(url, EMPTY, 0);
}
public static String[] loadTextFromURL(URL url, int timeoutMS) {
return loadTextFromURL(url, EMPTY, timeoutMS);
}
public static String[] loadTextFromURL(URL url, String defaultValue) {
return loadTextFromURL(url, new String[] { defaultValue }, 0);
}
public static String[] loadTextFromURL(URL url, String defaultValue, int timeoutMS) {
return loadTextFromURL(url, new String[] { defaultValue }, timeoutMS);
}
public static String[] loadTextFromURL(URL url, String[] defaultValue) {
return loadTextFromURL(url, defaultValue, 0);
}
public static String[] loadTextFromURL(URL url, String[] defaultValue, int timeoutMS) {
List<String> arraylist = new ArrayList<String>();
Scanner scanner = null;
try {
URLConnection uc = url.openConnection();
uc.setReadTimeout(timeoutMS);
uc.setConnectTimeout(timeoutMS);
scanner = new Scanner(uc.getInputStream(), "UTF-8");
} catch (Throwable e) {
Log.warn(e, "Error retrieving remote string value! Defaulting to %s", Arrays.toString(defaultValue));
return defaultValue;
}
while (scanner.hasNextLine()) {
arraylist.add(scanner.nextLine());
}
scanner.close();
return arraylist.toArray(new String[arraylist.size()]);
}
public static RuntimeException unhandledEnum(Enum<?> e) {
throw new IllegalArgumentException(e.toString());
}
public static <T> IValueReceiver<T> createTextValueReceiver(final IValueReceiver<String> target) {
return new IValueReceiver<T>() {
@Override
public void setValue(T value) {
target.setValue(value != null? value.toString() : null);
}
};
}
}