package net.dev123.commons.util;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
import org.json.JSONException;
import org.json.JSONObject;
public final class ParseUtil {
private ParseUtil() {
// should never be instantiated
throw new AssertionError();
}
private static ThreadLocal<Map<String, SimpleDateFormat>> formatMap = new ThreadLocal<Map<String, SimpleDateFormat>>() {
@Override
protected Map<String, SimpleDateFormat> initialValue() {
return new HashMap<String, SimpleDateFormat>();
}
};
public static String getUnescapedString(String str, JSONObject json) {
return HTMLUtil.unescape(getRawString(str, json));
}
public static String getRawString(String name, JSONObject json) {
try {
if (json.isNull(name)) {
return null;
} else {
return json.getString(name);
}
} catch (JSONException jsone) {
return null;
}
}
public static String getURLDecodedString(String name, JSONObject json) {
String returnValue = getRawString(name, json);
if (null != returnValue) {
try {
returnValue = URLDecoder.decode(returnValue, "UTF-8");
} catch (UnsupportedEncodingException ignore) {
}
}
return returnValue;
}
public static Date getDate(String name, JSONObject json) throws ParseException {
return getDate(name, json, "EEE MMM d HH:mm:ss z yyyy");
}
public static Date getDate(String name, JSONObject json, String format) throws ParseException {
String dateStr = getUnescapedString(name, json);
if (null == dateStr || dateStr.trim().length() == 0 || "null".equals(dateStr)) {
return null;
} else {
return getDate(dateStr, format);
}
}
public static Date getDate(String dateString, String format) throws ParseException {
SimpleDateFormat sdf = formatMap.get().get(format);
if (null == sdf) {
sdf = new SimpleDateFormat(format, Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
formatMap.get().put(format, sdf);
}
return sdf.parse(dateString);
}
public static int getInt(String name, JSONObject elem) {
String str = getRawString(name, elem);
if (null == str || "".equals(str) || "null".equals(str)) {
return -1;
} else {
if (str.endsWith("+")) {
//some count over 100 will be expressed as "100+" in twitter
str = str.substring(0, str.length() - 1);
return Integer.valueOf(str) + 1;
}
return Integer.valueOf(str);
}
}
public static long getLong(String name, JSONObject json) {
String str = getRawString(name, json);
if (null == str || "".equals(str) || "null".equals(str)) {
return -1;
} else {
if (str.endsWith("+")) {
//some count over 100 will be expressed as "100+" in twitter
str = str.substring(0, str.length() - 1);
return Long.valueOf(str) + 1;
}
return Long.valueOf(str);
}
}
public static double getDouble(String name, JSONObject json) {
String str2 = getRawString(name, json);
if (null == str2 || "".equals(str2) || "null".equals(str2)) {
return -1;
} else {
return Double.valueOf(str2);
}
}
public static boolean getBoolean(String name, JSONObject json) {
String str = getRawString(name, json);
if (null == str || "null".equals(str)) {
return false;
}
return Boolean.valueOf(str);
}
public static String escapeAngleBrackets(String text){
if (text == null) {
return text;
}
return text.replaceAll("<", "<").replaceAll(">", ">");
}
}