package com.nbs.client.assassins.utils; import java.util.HashSet; import java.util.Set; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import com.google.android.gms.maps.model.LatLng; public class KeyValueStore { private static final String LATITUDE_TRAILER = "_lat"; private static final String LONGITUDE_TRAILER = "_lng"; public static String getString(Context c, String key) { return PreferenceManager.getDefaultSharedPreferences(c) .getString(key, null); } public static long getLong(Context context, String key, int defaultValue) { return PreferenceManager.getDefaultSharedPreferences(context) .getLong(key, defaultValue); } public static float getFloat(Context context, String key, float defaultValue) { return PreferenceManager.getDefaultSharedPreferences(context) .getFloat(key, defaultValue); } public static int getInt(Context context, String key, int defaultValue) { return PreferenceManager.getDefaultSharedPreferences(context) .getInt(key, defaultValue); } public static Set<String> getStringSet(Context context, String key) { return PreferenceManager.getDefaultSharedPreferences(context) .getStringSet(key, new HashSet<String>()); } public static LatLng getLatLng(Context context, String key) { SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); if(pref.contains(key+LATITUDE_TRAILER)) { double lat = pref.getFloat(key+LATITUDE_TRAILER, 181.0f); double lng = pref.getFloat(key+LONGITUDE_TRAILER, 181.0f); if(lat < 180 && lng < 180) return new LatLng(lat, lng); } return null; } public static void putStringSet(Context c, String k, Set<String> v) { if(v == null) { PreferenceManager.getDefaultSharedPreferences(c) .edit() .remove(k) .commit(); } else { PreferenceManager.getDefaultSharedPreferences(c) .edit() .putStringSet(k, v) .commit(); } } public static void putLatLng(Context c, String k, LatLng v) { if(v == null) { PreferenceManager.getDefaultSharedPreferences(c) .edit() .remove(k+LATITUDE_TRAILER) .remove(k+LONGITUDE_TRAILER) .commit(); } else { putDouble(c, k+LATITUDE_TRAILER, v.latitude); putDouble(c, k+LONGITUDE_TRAILER, v.longitude); } } public static void putLong(Context c, String k, Long v) { if(v == null) { PreferenceManager.getDefaultSharedPreferences(c) .edit() .remove(k) .commit(); } else { long rawValue = v; PreferenceManager.getDefaultSharedPreferences(c) .edit() .putLong(k, rawValue) .commit(); } } public static void putInt(Context c, String k, Integer v) { if(v == null) { PreferenceManager.getDefaultSharedPreferences(c) .edit() .remove(k) .commit(); } else { int rawValue = v; PreferenceManager.getDefaultSharedPreferences(c) .edit() .putInt(k, rawValue) .commit(); } } public static void putDouble(Context c, String k, Double v) { if(v == null) { putFloat(c,k,null); } else { double rawValue = v; putFloat(c,k,(float)rawValue); } } public static void putFloat(Context c, String k, Float v) { if(v == null) { PreferenceManager.getDefaultSharedPreferences(c) .edit() .remove(k) .commit(); } else { Float rawValue = v; PreferenceManager.getDefaultSharedPreferences(c) .edit() .putFloat(k, rawValue) .commit(); } } public static void putString(Context c, String k, String v) { if(v == null) { PreferenceManager.getDefaultSharedPreferences(c) .edit() .remove(k) .commit(); } else { PreferenceManager.getDefaultSharedPreferences(c) .edit() .putString(k, v) .commit(); } } public static void addStringToSet(Context c, String key, String toAdd) { Set<String> setMembers = getStringSet(c, key); setMembers.add(toAdd); putStringSet(c, key, setMembers); } public static void removeStringFromSet(Context c, String key, String toRemove) { Set<String> setMembers = getStringSet(c, key); setMembers.remove(toRemove); putStringSet(c, key, setMembers); } public static void remove(Context c, String k) { PreferenceManager.getDefaultSharedPreferences(c) .edit() .remove(k) .commit(); } }