aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java')
-rw-r--r--app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java90
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>());
+ }
+
+}