2 // Copyright (c) 2010 Anthony Towns
7 import java.lang.UnsupportedOperationException;
8 import java.util.HashMap;
9 import java.util.NoSuchElementException;
10 import java.util.Iterator;
12 import com.csvreader.CsvReader;
14 import altosui.AltosDataPoint;
16 class AltosCsvReader implements Iterable<AltosDataPoint>
19 public AltosDataPoint next = null;
21 static protected String [] headers = "version serial flight call time rssi state state_name acceleration pressure altitude height accel_speed baro_speed temperature battery_voltage drogue_voltage main_voltage connected locked nsat latitude longitude altitude year month day hour minute second pad_dist pad_range pad_az pad_el".split(" ");
23 AltosCsvReader(Reader stream) {
24 csv = new CsvReader(stream);
26 csv.setUseComments(true);
27 csv.setHeaders(headers);
29 AltosCsvReader(String filename) throws FileNotFoundException {
30 csv = new CsvReader(filename);
32 csv.setUseComments(true);
33 csv.setHeaders(headers);
36 public Iterator<AltosDataPoint> iterator() {
37 return new Iterator<AltosDataPoint>() {
38 public void remove() {
39 throw new UnsupportedOperationException();
41 public boolean hasNext() {
44 if (csv.readRecord()) {
50 } catch (IOException e) {
57 public AltosDataPoint next() {
59 throw new NoSuchElementException();
60 AltosDataPoint res = next;
71 private class CsvRow extends HashMap<String,String>
72 implements AltosDataPoint
74 CsvRow() throws IOException {
75 for (int i = 0; i < headers.length; i++) {
76 this.put(headers[i], csv.get(headers[i]).trim());
80 private int intField(String name) {
81 return Integer.parseInt(get(name).trim());
83 private double doubleField(String name) {
84 return Double.valueOf(get(name)).doubleValue();
86 private String stringField(String name) {
90 public int version() { return intField("version"); }
91 public int serial() { return intField("serial"); }
92 public int flight() { return intField("flight"); }
93 public String callsign() { return stringField("call"); }
94 public double time() { return doubleField("time"); }
95 public double rssi() { return doubleField("rssi"); }
97 public int state() { return intField("state"); }
98 public String state_name() { return stringField("state_name"); }
100 public double acceleration() { return doubleField("acceleration"); }
101 public double pressure() { return doubleField("pressure"); }
102 public double altitude() { return doubleField("altitude"); }
103 public double height() { return doubleField("height"); }
104 public double accel_speed() { return doubleField("accel_speed"); }
105 public double baro_speed() { return doubleField("baro_speed"); }
106 public double temperature() { return doubleField("temperature"); }
107 public double battery_voltage() {
108 return doubleField("battery_voltage");
110 public double drogue_voltage() { return doubleField("drogue_voltage"); }
111 public double main_voltage() { return doubleField("main_voltage"); }