Bump java lib versions in preparation for 1.9.2
[fw/altos] / telegps / TeleGPS.java
index 66eaaa2bfa593bbf4ba80396ed11f1d7cee3863f..77ed0da7ae5b7b48dad0a683a9d8813ff26881bb 100644 (file)
@@ -25,12 +25,12 @@ import java.io.*;
 import java.util.concurrent.*;
 import java.util.*;
 import java.text.*;
-import org.altusmetrum.altoslib_11.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altoslib_14.*;
+import org.altusmetrum.altosuilib_14.*;
 
 public class TeleGPS
        extends AltosUIFrame
-       implements AltosFlightDisplay, AltosFontListener, AltosUnitsListener, ActionListener
+       implements AltosFlightDisplay, AltosFontListener, AltosUnitsListener, ActionListener, AltosEepromGrapher
 {
 
        static String[] telegps_icon_names = {
@@ -152,7 +152,7 @@ public class TeleGPS
                        status_update.saved_listener_state = listener_state;
 
                        if (state == null)
-                               state = new AltosState();
+                               state = new AltosState(new AltosCalData());
 
                        int i = 0;
                        for (AltosFlightDisplay display : displays) {
@@ -280,32 +280,42 @@ public class TeleGPS
        }
 
        void download(){
-               new AltosEepromManage(this, AltosLib.product_telegps);
+               new AltosEepromManage(this, this, AltosLib.product_telegps);
        }
 
        void configure() {
                new TeleGPSConfig(this);
        }
 
+       private static AltosFlightSeries make_series(AltosRecordSet set) {
+               AltosFlightSeries series = new AltosFlightSeries(set.cal_data());
+               set.capture_series(series);
+               series.finish();
+               return series;
+       }
+
        void export() {
-               AltosDataChooser chooser;
-               chooser = new AltosDataChooser(this);
-               AltosStateIterable states = chooser.runDialog();
-               if (states == null)
+               AltosDataChooser chooser = new AltosDataChooser(this);
+
+               AltosRecordSet set = chooser.runDialog();
+               if (set == null)
                        return;
-               new AltosCSVUI(this, states, chooser.file());
+               AltosFlightSeries series = make_series(set);
+               new AltosCSVUI(this, series, chooser.file());
        }
 
        void graph() {
-               AltosDataChooser chooser;
-               chooser = new AltosDataChooser(this);
-               AltosStateIterable states = chooser.runDialog();
-               if (states == null)
-                       return;
-               try {
-                       new TeleGPSGraphUI(states, chooser.file());
-               } catch (InterruptedException ie) {
-               } catch (IOException ie) {
+               AltosDataChooser chooser = new AltosDataChooser(this);
+               AltosRecordSet set = chooser.runDialog();
+               graph_file(this, set, chooser.file());
+       }
+
+       public void graph_flights(AltosEepromList list) {
+               for (AltosEepromLog log : list) {
+                       if (log.file != null) {
+                               AltosRecordSet set = record_set(log.file);
+                               graph_file(this, set, log.file);
+                       }
                }
        }
 
@@ -612,39 +622,48 @@ public class TeleGPS
                connect(device);
        }
 
-       static AltosStateIterable record_iterable(File file) {
-               FileInputStream in;
+       static AltosRecordSet record_set(File file) {
                try {
-                       in = new FileInputStream(file);
-               } catch (Exception e) {
-                       System.out.printf("Failed to open file '%s'\n", file);
-                       return null;
-               }
-               if (file.getName().endsWith("telem"))
-                       return new AltosTelemetryFile(in);
-               else
-                       return new AltosEepromFile(in);
+                       return AltosLib.record_set(file);
+               } catch (IOException ie) {
+                       System.out.printf("%s\n", ie.getMessage());
+                }
+                return null;
        }
 
        static AltosReplayReader replay_file(File file) {
-               AltosStateIterable states = record_iterable(file);
-               if (states == null)
+               AltosRecordSet set = record_set(file);
+               if (set == null)
                        return null;
-               return new AltosReplayReader(states.iterator(), file);
+               return new AltosReplayReader(set, file);
        }
 
-       static boolean process_graph(File file) {
-               AltosStateIterable states = record_iterable(file);
-               if (states == null)
+       private static boolean graph_file(TeleGPS telegps, AltosRecordSet set, File file) {
+               if (set == null)
+                       return false;
+               if (!set.valid()) {
+                       JOptionPane.showMessageDialog(telegps,
+                                                     String.format("Failed to parse file %s", file),
+                                                     "Graph Failed",
+                                                     JOptionPane.ERROR_MESSAGE);
                        return false;
+               }
                try {
-                       new TeleGPSGraphUI(states, file);
-               } catch (Exception e) {
+                       new TeleGPSGraphUI(set, file);
+               } catch (IOException e) {
+                       System.out.printf("Exception %s\n", e.toString());
+               } catch (InterruptedException e) {
+                       System.out.printf("Exception %s\n", e.toString());
                        return false;
                }
                return true;
        }
 
+       static boolean process_graph(File file) {
+               AltosRecordSet set = record_set(file);
+               return graph_file(null, set, file);
+       }
+
        static boolean process_replay(File file) {
                AltosReplayReader new_reader = replay_file(file);
                if (new_reader == null)