diff options
Diffstat (limited to 'libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/MapUtils.java')
-rw-r--r-- | libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/MapUtils.java | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/MapUtils.java b/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/MapUtils.java new file mode 100644 index 000000000..c6e72dc5b --- /dev/null +++ b/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/MapUtils.java @@ -0,0 +1,107 @@ +package org.wordpress.android.util; + +import java.util.Date; +import java.util.Map; + +/** + * wrappers for extracting values from a Map object + */ +public class MapUtils { + /* + * returns a String value for the passed key in the passed map + * always returns "" instead of null + */ + public static String getMapStr(final Map<?, ?> map, final String key) { + if (map == null || key == null || !map.containsKey(key) || map.get(key) == null) { + return ""; + } + return map.get(key).toString(); + } + + /* + * returns an int value for the passed key in the passed map + * defaultValue is returned if key doesn't exist or isn't a number + */ + public static int getMapInt(final Map<?, ?> map, final String key) { + return getMapInt(map, key, 0); + } + public static int getMapInt(final Map<?, ?> map, final String key, int defaultValue) { + try { + return Integer.parseInt(getMapStr(map, key)); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + /* + * long version of above + */ + public static long getMapLong(final Map<?, ?> map, final String key) { + return getMapLong(map, key, 0); + } + public static long getMapLong(final Map<?, ?> map, final String key, long defaultValue) { + try { + return Long.parseLong(getMapStr(map, key)); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + /* + * float version of above + */ + public static float getMapFloat(final Map<?, ?> map, final String key) { + return getMapFloat(map, key, 0); + } + public static float getMapFloat(final Map<?, ?> map, final String key, float defaultValue) { + try { + return Float.parseFloat(getMapStr(map, key)); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + /* + * double version of above + */ + public static double getMapDouble(final Map<?, ?> map, final String key) { + return getMapDouble(map, key, 0); + } + public static double getMapDouble(final Map<?, ?> map, final String key, double defaultValue) { + try { + return Double.parseDouble(getMapStr(map, key)); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + /* + * returns a date object from the passed key in the passed map + * returns null if key doesn't exist or isn't a date + */ + public static Date getMapDate(final Map<?, ?> map, final String key) { + if (map == null || key == null || !map.containsKey(key)) + return null; + try { + return (Date) map.get(key); + } catch (ClassCastException e) { + return null; + } + } + + /* + * returns a boolean value from the passed key in the passed map + * returns true unless key doesn't exist, or the value is "0" or "false" + */ + public static boolean getMapBool(final Map<?, ?> map, final String key) { + String value = getMapStr(map, key); + if (value.isEmpty()) + return false; + if (value.startsWith("0")) // handles "0" and "0.0" + return false; + if (value.equalsIgnoreCase("false")) + return false; + // all other values are assume to be true + return true; + } +} |