diff options
Diffstat (limited to 'app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java')
-rw-r--r-- | app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java b/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java new file mode 100644 index 0000000..d61ba37 --- /dev/null +++ b/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java @@ -0,0 +1,90 @@ +package com.camilstaps.common; + +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; + +import com.camilstaps.taize.DailyReading; + +import org.json.JSONException; + +import java.text.ParseException; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +/** + * Created by camilstaps on 11-4-15. + */ +public class DatedStringPreferenceSet { + + public static Set<Object> get(Context context, String key, Class type) { + Set<Object> set = new HashSet<>(); + for (String s : PreferenceManager.getDefaultSharedPreferences(context).getStringSet(key, new HashSet<String>())) { + try { + set.add(type.cast(DatedString.fromString(s, type))); + } catch (JSONException e) { + e.printStackTrace(); + } catch (ParseException e) { + e.printStackTrace(); + } + } + return set; + } + + public static void put(Context context, String key, Set<DatedString> set) { + SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit(); + Set<String> putSet = new HashSet<>(); + for (DatedString item : set) { + putSet.add(item.toString()); + } + editor.putStringSet(key, putSet); + editor.apply(); + } + + public static void add(Context context, String key, DatedString object) { + Set<DatedString> set = (Set) DatedStringPreferenceSet.get(context, key, DatedString.class); + set.add(object); + DatedStringPreferenceSet.put(context, key, (Set) set); + } + + public static void update(Context context, String key, DatedString object) { + Set<DatedString> set = (Set) get(context, key, object.getClass()); + Iterator<DatedString> iterator = set.iterator(); + boolean add = false; + while (iterator.hasNext()) { + DatedString this_object = iterator.next(); + if (this_object.getDate().equals(object.getDate())) { + iterator.remove(); + add = true; + } + } + if (add) { + set.add(object); + } + put(context, key, set); + } + + public static boolean has(Context context, String key, Date date) { + Set<DatedString> set = (Set) get(context, key, DatedString.class); + for (DatedString item : set) { + if (item.getDate().equals(date)) { + return true; + } + } + return false; + } + + public static void updateOrAdd(Context context, String key, DatedString object) { + if (has(context, key, object.getDate())) { + update(context, key, object); + } else { + add(context, key, object); + } + } + + public static void clear(Context context, String key) { + put(context, key, new HashSet<DatedString>()); + } + +} |