altoslib: Get rid of manual JSON encoding stuff
[fw/altos] / altoslib / AltosPreferences.java
index 8e625674840c964ecf6335b1918d58a2e3347807..569aaa5481f863f9e8558fe8207aaff0f8ef89f1 100644 (file)
@@ -135,23 +135,11 @@ public class AltosPreferences {
        public static AltosFrequency[] load_common_frequencies() {
                AltosFrequency[] frequencies = null;
 
-               AltosJson sets;
-
                try {
-                       sets = AltosJson.fromString(backend.getString(frequenciesPreference,null));
-
-                       if (sets != null) {
-                               ArrayList<AltosFrequency>       freqs = new ArrayList<AltosFrequency>();
-
-                               for (int i = 0; i < sets.size(); i++) {
-                                       AltosFrequency f = AltosFrequency.fromJson(sets.get(i), null);
-                                       if (f != null)
-                                               freqs.add(f);
-                               }
-                               frequencies = freqs.toArray(new AltosFrequency[0]);
-                       }
+                       AltosJson json = AltosJson.fromString(backend.getString(frequenciesPreference,
+                                                                               null));
+                       frequencies = (AltosFrequency[]) json.make(frequencies.getClass());
                } catch (Exception e) {
-                       sets = null;
                }
 
                if (frequencies == null) {
@@ -377,7 +365,7 @@ public class AltosPreferences {
        public static void set_state(AltosState state) {
 
                synchronized(backend) {
-                       backend.putJson(String.format(statePreferenceFormat, state.serial), state.json());
+                       backend.putJson(String.format(statePreferenceFormat, state.serial), new AltosJson(state));
                        backend.putInt(statePreferenceLatest, state.serial);
                        flush_preferences();
                }
@@ -417,10 +405,12 @@ public class AltosPreferences {
        public static AltosState state(int serial) {
                synchronized(backend) {
                        try {
-                               return AltosState.fromJson(backend.getJson(String.format(statePreferenceFormat, serial)));
+                               AltosJson json = backend.getJson(String.format(statePreferenceFormat, serial));
+                               if (json != null)
+                                       return (AltosState) (json.make(AltosState.class));
                        } catch (Exception e) {
-                               return null;
                        }
+                       return null;
                }
        }