Nextrek
@ 792
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
package nextrek.minstrek.core; import java.util.HashMap; import java.util.Locale; import nextrek.minstrek.utils.BookUtils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; import android.content.Context; import android.content.SharedPreferences; import android.util.Log; public class FlagList { private static final String TAG = "FlagList"; private HashMap<String, Boolean> map = new HashMap<String, Boolean>(); private boolean hasChanged = false; public boolean hasChanged() { return this.hasChanged; } private FlagList() { } public static FlagList CreateFromJavascript(String jsonKeyToGrab, String eventJavascript) { if (eventJavascript == null) { return null; } FlagList result = new FlagList(); String jsonString = cleanJavascript(eventJavascript); JSONTokener jsonTok = new JSONTokener(jsonString); try { JSONObject json = new JSONObject(jsonTok); JSONArray names = json.names(); for (int scan = 0; scan < names.length(); scan++) { String eventName = names.getString(scan); JSONObject eventJson = json.getJSONObject(eventName); eventName = eventName.toLowerCase(Locale.ITALIAN); result.map.put(eventName, eventJson.optBoolean(jsonKeyToGrab)); } } catch (JSONException e) { e.printStackTrace(); } return result; } public static FlagList CreateFromSharedPrefs(String jsonString) { if (jsonString == null) { return null; } FlagList result = new FlagList(); JSONTokener jsonTok = new JSONTokener(jsonString); try { JSONObject json = new JSONObject(jsonTok); JSONArray names = json.names(); for (int scan = 0; scan < names.length(); scan++) { String eventName = names.getString(scan); boolean value = json.getBoolean(eventName); result.map.put(eventName, value); } } catch (JSONException e) { e.printStackTrace(); } return result; } private static String cleanJavascript(String js) { int start = js.indexOf("{"); int end = js.indexOf("};"); return js.substring(start, end + 1); } public String saveAsJsonString() throws JSONException { JSONObject root = new JSONObject(map); return root.toString(); } public Boolean change(String eventName, boolean newValue) { Boolean oldValue = this.map.get(eventName); if ((oldValue == null) || (newValue != oldValue)) { this.map.put(eventName, newValue); hasChanged |= true; } return oldValue; } public boolean isTrue(String eventName) { return this.map.get(eventName); } public void clearChanged() { this.hasChanged = false; } public static FlagList createFromAssetsOrSharedPrefs(Context context, SharedPreferences prefs, String sharedPrefsKey, String javascriptFilename, String javascriptKey) { FlagList eventsList = null; String eventsData = prefs.getString(sharedPrefsKey, null); if (eventsData != null) { eventsList = FlagList.CreateFromSharedPrefs(eventsData); Log.d(TAG, sharedPrefsKey + "(SP): " + eventsData); } else { Log.d(TAG, sharedPrefsKey + "(SP): *no savegame*"); eventsData = BookUtils.readStringFile(context, javascriptFilename); if (eventsData != null) { eventsList = FlagList.CreateFromJavascript(javascriptKey, eventsData); Log.d(TAG, sharedPrefsKey + "(JS): " + eventsData); } else { Log.w(TAG, sharedPrefsKey + "(JS): *missing data file*"); } } return eventsList; } public void clear() { if (map != null) { map.clear(); map = null; } } } |
Commits for Nextrek/Android/Minstrek/MinstrekLib/app/src/main/java/nextrek/minstrek/core/FlagList.java
Revision | Author | Commited | Message |
---|---|---|---|
792 | MStefanelli | Fri 02 Oct, 2015 12:03:54 +0000 | New gradle version with ad |