altoslib: Switch preserved state format to JSON
[fw/altos] / altoslib / AltosGPSSat.java
1 /*
2  * Copyright © 2011 Keith Packard <keithp@keithp.com>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 2 of the License.
7  *
8  * This program is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11  * General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License along
14  * with this program; if not, write to the Free Software Foundation, Inc.,
15  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
16  */
17
18 package org.altusmetrum.altoslib_11;
19
20 import java.io.*;
21 import java.text.*;
22 import java.util.*;
23 import java.util.concurrent.*;
24
25 public class AltosGPSSat implements AltosJsonable {
26         public int      svid;
27         public int      c_n0;
28
29         public AltosGPSSat(int s, int c) {
30                 svid = s;
31                 c_n0= c;
32         }
33
34         public AltosGPSSat() {
35         }
36
37         public AltosHashSet hashSet() {
38                 AltosHashSet h = new AltosHashSet();
39                 h.putInt("svid", svid);
40                 h.putInt("c_n0", c_n0);
41                 return h;
42         }
43
44         public AltosJson json() {
45                 AltosJson j = new AltosJson();
46                 j.put("svid", svid);
47                 j.put("c_n0", c_n0);
48                 return j;
49         }
50
51         private AltosGPSSat(AltosHashSet h) {
52                 svid = h.getInt("svid", 0);
53                 c_n0 = h.getInt("c_n0", 0);
54         }
55
56         private AltosGPSSat(AltosJson j) {
57                 svid = j.get_int("svid", 0);
58                 c_n0 = j.get_int("c_n0", 0);
59         }
60
61         static public AltosGPSSat fromHashSet(AltosHashSet h, AltosGPSSat def) {
62                 if (h == null)
63                         return def;
64                 return new AltosGPSSat(h);
65         }
66
67         static public AltosGPSSat[] json_array(AltosJson j) {
68                 if (j == null)
69                         return null;
70
71                 int size = j.size();
72                 AltosGPSSat[] sats = new AltosGPSSat[size];
73                 for (int i = 0; i < size; i++)
74                         sats[i] = new AltosGPSSat(j.get(i));
75                 return sats;
76         }
77
78         static public AltosGPSSat[] array(String string) {
79
80                 if (string == null)
81                         return null;
82
83                 try {
84                         StringReader            reader = new StringReader(string);
85                         ArrayList<AltosGPSSat>  array = new ArrayList<AltosGPSSat>();
86                         String                  element;
87
88                         while ((element = AltosHashSet.get_token(reader)) != null) {
89                                 AltosGPSSat sat = AltosGPSSat.fromHashSet(AltosHashSet.fromString(element), null);
90                                 if (sat != null)
91                                         array.add(sat);
92                         }
93                         return array.toArray(new AltosGPSSat[0]);
94                 } catch (IOException ie) {
95                         return null;
96                 }
97         }
98
99         public static String toString(AltosGPSSat[] sats) {
100                 if (sats == null)
101                         return null;
102
103                 try {
104                         StringWriter            writer = new StringWriter();
105
106                         for (AltosGPSSat g : sats) {
107                                 String          element = g.hashSet().toString();
108                                 AltosHashSet.put_token(writer, element);
109                         }
110                         return writer.toString();
111                 } catch (IOException ie) {
112                         return null;
113                 }
114         }
115 }
116