altoslib: Switch preserved state format to JSON
[fw/altos] / altoslib / AltosGPSSat.java
index 605c592a29381e4681b66775624430df251db5b7..319fe7f17f93e4cb98f64b06afcbc798083b0845 100644 (file)
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altoslib;
+package org.altusmetrum.altoslib_11;
 
-public class AltosGPSSat {
+import java.io.*;
+import java.text.*;
+import java.util.*;
+import java.util.concurrent.*;
+
+public class AltosGPSSat implements AltosJsonable {
        public int      svid;
        public int      c_n0;
 
@@ -28,5 +33,84 @@ public class AltosGPSSat {
 
        public AltosGPSSat() {
        }
+
+       public AltosHashSet hashSet() {
+               AltosHashSet h = new AltosHashSet();
+               h.putInt("svid", svid);
+               h.putInt("c_n0", c_n0);
+               return h;
+       }
+
+       public AltosJson json() {
+               AltosJson j = new AltosJson();
+               j.put("svid", svid);
+               j.put("c_n0", c_n0);
+               return j;
+       }
+
+       private AltosGPSSat(AltosHashSet h) {
+               svid = h.getInt("svid", 0);
+               c_n0 = h.getInt("c_n0", 0);
+       }
+
+       private AltosGPSSat(AltosJson j) {
+               svid = j.get_int("svid", 0);
+               c_n0 = j.get_int("c_n0", 0);
+       }
+
+       static public AltosGPSSat fromHashSet(AltosHashSet h, AltosGPSSat def) {
+               if (h == null)
+                       return def;
+               return new AltosGPSSat(h);
+       }
+
+       static public AltosGPSSat[] json_array(AltosJson j) {
+               if (j == null)
+                       return null;
+
+               int size = j.size();
+               AltosGPSSat[] sats = new AltosGPSSat[size];
+               for (int i = 0; i < size; i++)
+                       sats[i] = new AltosGPSSat(j.get(i));
+               return sats;
+       }
+
+       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;
+               }
+       }
 }