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/AltosGPSSat.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/AltosGPSSat.java')
| -rw-r--r-- | altoslib/AltosGPSSat.java | 62 | 
1 files changed, 60 insertions, 2 deletions
diff --git a/altoslib/AltosGPSSat.java b/altoslib/AltosGPSSat.java index abde1c0c..ad7a8647 100644 --- a/altoslib/AltosGPSSat.java +++ b/altoslib/AltosGPSSat.java @@ -16,11 +16,13 @@   */  package org.altusmetrum.altoslib_11; + +import java.io.*;  import java.text.*; +import java.util.*;  import java.util.concurrent.*; -import java.io.*; -public class AltosGPSSat implements Serializable { +public class AltosGPSSat {  	public int	svid;  	public int	c_n0; @@ -31,5 +33,61 @@ public class AltosGPSSat implements Serializable {  	public AltosGPSSat() {  	} + +	public AltosHashSet hashSet() { +		AltosHashSet h = new AltosHashSet(); +		h.putInt("svid", svid); +		h.putInt("c_n0", c_n0); +		return h; +	} + +	private AltosGPSSat(AltosHashSet h) { +		svid = h.getInt("svid", 0); +		c_n0 = h.getInt("c_n0", 0); +	} + +	static public AltosGPSSat fromHashSet(AltosHashSet h, AltosGPSSat def) { +		if (h == null) +			return def; +		return new AltosGPSSat(h); +	} + +	static public AltosGPSSat[] array(String string) { + +		if (string == null) +			return null; + +		try { +			StringReader 		reader = new StringReader(string); +			ArrayList<AltosGPSSat>	array = new ArrayList<AltosGPSSat>(); +			String			element; + +			while ((element = AltosHashSet.get_token(reader)) != null) { +				AltosGPSSat sat = AltosGPSSat.fromHashSet(AltosHashSet.fromString(element), null); +				if (sat != null) +					array.add(sat); +			} +			return array.toArray(new AltosGPSSat[0]); +		} catch (IOException ie) { +			return null; +		} +	} + +	public static String toString(AltosGPSSat[] sats) { +		if (sats == null) +			return null; + +		try { +			StringWriter		writer = new StringWriter(); + +			for (AltosGPSSat g : sats) { +				String		element = g.hashSet().toString(); +				AltosHashSet.put_token(writer, element); +			} +			return writer.toString(); +		} catch (IOException ie) { +			return null; +		} +	}  }  | 
