diff options
| author | Keith Packard <keithp@keithp.com> | 2016-05-12 23:33:53 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2016-05-12 23:41:55 -0700 | 
| commit | b1a90adac9f6e2a609ce1ccd6749462bb5c9adbe (patch) | |
| tree | 107b6491d8ffc507609f9923353d5454c0664323 /altoslib/AltosPreferences.java | |
| parent | b13037fad0905c5933d1ff579122ba1357b02eea (diff) | |
altoslib: Store saved state in version-independent format
Use AltosHashSet for AltosState so that AltosDroid doesn't lose
tracker information when the application is upgraded.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosPreferences.java')
| -rw-r--r-- | altoslib/AltosPreferences.java | 50 | 
1 files changed, 25 insertions, 25 deletions
diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index f8101ce6..3f8e7a07 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -136,16 +136,16 @@ public class AltosPreferences {  		AltosFrequency[] frequencies = null; -		try { -			AltosHashSet[]	sets = AltosHashSet.array(backend.getString(frequenciesPreference,null)); -			if (sets != null) { -				frequencies = new AltosFrequency[sets.length]; -				for (int i = 0; i < frequencies.length; i++) -					frequencies[i] = new AltosFrequency(sets[i]); +		AltosHashSet[]	sets = AltosHashSet.array(backend.getString(frequenciesPreference,null)); +		if (sets != null) { +			ArrayList<AltosFrequency>	freqs = new ArrayList<AltosFrequency>(); + +			for (int i = 0; i < sets.length; i++) { +				AltosFrequency f = AltosFrequency.fromHashSet(sets[i], null); +				if (f != null) +					freqs.add(f);  			} - -		} catch (IOException ie) { -			frequencies = null; +			frequencies = freqs.toArray(new AltosFrequency[0]);  		}  		if (frequencies == null) { @@ -153,14 +153,16 @@ public class AltosPreferences {  				AltosPreferencesBackend	node = backend.node(common_frequencies_node_name);  				int		count = node.getInt(frequency_count, 0); -				frequencies = new AltosFrequency[count]; -				for (int i = 0; i < count; i++) { -					double	frequency; -					String	description; +				if (count > 0) { +					frequencies = new AltosFrequency[count]; +					for (int i = 0; i < count; i++) { +						double	frequency; +						String	description; -					frequency = node.getDouble(String.format(frequency_format, i), 0.0); -					description = node.getString(String.format(description_format, i), null); -					frequencies[i] = new AltosFrequency(frequency, description); +						frequency = node.getDouble(String.format(frequency_format, i), 0.0); +						description = node.getString(String.format(description_format, i), null); +						frequencies[i] = new AltosFrequency(frequency, description); +					}  				}  			}  		} @@ -176,13 +178,10 @@ public class AltosPreferences {  	}  	public static void save_common_frequencies() { -		try { -			AltosHashSet[]	sets = new AltosHashSet[common_frequencies.length]; -			for (int i = 0; i < sets.length; i++) -				sets[i] = common_frequencies[i].hashSet(); -			backend.putString(frequenciesPreference, AltosHashSet.toString(sets)); -		} catch (IOException ie) { -		} +		AltosHashSet[]	sets = new AltosHashSet[common_frequencies.length]; +		for (int i = 0; i < sets.length; i++) +			sets[i] = common_frequencies[i].hashSet(); +		backend.putString(frequenciesPreference, AltosHashSet.toString(sets));  		flush_preferences();  	} @@ -374,7 +373,7 @@ public class AltosPreferences {  	public static void set_state(AltosState state) {  		synchronized(backend) { -			backend.putSerializable(String.format(statePreferenceFormat, state.serial), state); +			backend.putHashSet(String.format(statePreferenceFormat, state.serial), state.hashSet());  			backend.putInt(statePreferenceLatest, state.serial);  			flush_preferences();  		} @@ -399,6 +398,7 @@ public class AltosPreferences {  	public static void remove_state(int serial) {  		synchronized(backend) {  			backend.remove(String.format(statePreferenceFormat, serial)); +			flush_preferences();  		}  	} @@ -413,7 +413,7 @@ public class AltosPreferences {  	public static AltosState state(int serial) {  		synchronized(backend) {  			try { -				return (AltosState) backend.getSerializable(String.format(statePreferenceFormat, serial), null); +				return AltosState.fromHashSet(backend.getHashSet(String.format(statePreferenceFormat, serial)));  			} catch (Exception e) {  				return null;  			}  | 
