diff options
| author | Keith Packard <keithp@keithp.com> | 2013-01-03 17:31:01 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2013-01-03 17:31:01 -0800 | 
| commit | f20781010a6560b7b359af269c502d098917c446 (patch) | |
| tree | aeb9db1b1e4b9597609488b4918676551c75aad5 | |
| parent | 36e9603f74b85776ac049758021b51909161aeb1 (diff) | |
micropeak: Add command line export option
micropeak --export <foo.mpd> will create <foo.csv> full of useful data.
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | micropeak/MicroData.java | 9 | ||||
| -rw-r--r-- | micropeak/MicroExport.java | 15 | ||||
| -rw-r--r-- | micropeak/MicroFileChooser.java | 18 | ||||
| -rw-r--r-- | micropeak/MicroPeak.java | 94 | ||||
| -rw-r--r-- | micropeak/MicroSave.java | 10 | 
5 files changed, 100 insertions, 46 deletions
| diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java index 836d3c35..fdfb2dc4 100644 --- a/micropeak/MicroData.java +++ b/micropeak/MicroData.java @@ -263,6 +263,15 @@ public class MicroData {  		f.write('\n');  	} +	public void export (Writer f) throws IOException { +		PrintWriter	pw = new PrintWriter(f); +		pw.printf("  Time, Press, Height,  Speed,  Accel\n"); +		for (MicroDataPoint point : points()) { +			pw.printf("%6.3f,%6.0f,%7.1f,%7.2f,%7.2f\n", +				  point.time, point.pressure, point.height, point.speed, point.accel); +		} +	} +  	public void set_name(String name) {  		this.name = name;  	} diff --git a/micropeak/MicroExport.java b/micropeak/MicroExport.java index 219184da..4b83bb4d 100644 --- a/micropeak/MicroExport.java +++ b/micropeak/MicroExport.java @@ -31,6 +31,12 @@ public class MicroExport extends JFileChooser {  	JFrame		frame;  	MicroData	data; +	public static void export(File file, MicroData data) throws FileNotFoundException, IOException { +		FileWriter fw = new FileWriter(file); +		data.export(fw); +		fw.close(); +	} +  	public boolean runDialog() {  		int	ret; @@ -76,14 +82,7 @@ public class MicroExport extends JFileChooser {  				}  			}  			try { -				FileWriter fw = new FileWriter(file); -				PrintWriter pw = new PrintWriter(fw); -				pw.printf("  Time, Press, Height,  Speed,  Accel\n"); -				for (MicroDataPoint point : data.points()) { -					pw.printf("%6.3f,%6.0f,%7.1f,%7.2f,%7.2f\n", -						  point.time, point.pressure, point.height, point.speed, point.accel); -				} -				fw.close(); +				export(file, data);  				return true;  			} catch (FileNotFoundException fe) {  				JOptionPane.showMessageDialog(frame, diff --git a/micropeak/MicroFileChooser.java b/micropeak/MicroFileChooser.java index d2540987..21ddb0f8 100644 --- a/micropeak/MicroFileChooser.java +++ b/micropeak/MicroFileChooser.java @@ -36,24 +36,12 @@ public class MicroFileChooser extends JFileChooser {  		return file;  	} -	public InputStream runDialog() { +	public File runDialog() {  		int	ret;  		ret = showOpenDialog(frame); -		if (ret == APPROVE_OPTION) { -			file = getSelectedFile(); -			if (file == null) -				return null; -			filename = file.getName(); -			try { -				return new FileInputStream(file); -			} catch (FileNotFoundException fe) { -				JOptionPane.showMessageDialog(frame, -							      fe.getMessage(), -							      "Cannot open file", -							      JOptionPane.ERROR_MESSAGE); -			} -		} +		if (ret == APPROVE_OPTION) +			return getSelectedFile();  		return null;  	} diff --git a/micropeak/MicroPeak.java b/micropeak/MicroPeak.java index d4252fa9..185fa67e 100644 --- a/micropeak/MicroPeak.java +++ b/micropeak/MicroPeak.java @@ -56,40 +56,41 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene  		setTitle(name);  	} -	private void RunFile(InputStream input, String name) { +	private static MicroData ReadFile(File filename) throws IOException, FileNotFoundException { +		MicroData	data = null; +		FileInputStream	fis = new FileInputStream(filename);  		try { -			MicroData data = new MicroData(input, name); -			SetData(data); -		} catch (IOException ioe) { -			JOptionPane.showMessageDialog(this, -						      ioe.getMessage(), -						      "File Read Error", -						      JOptionPane.ERROR_MESSAGE); +			data = new MicroData((InputStream) fis, filename.getName());  		} catch (InterruptedException ie) { +			data = null; +		} finally { +			fis.close();  		} -		try { -			input.close(); -		} catch (IOException ioe) { -		} +		return data;  	}  	private void OpenFile(File filename) {  		try { -			RunFile (new FileInputStream(filename), filename.getName()); +			SetData(ReadFile(filename));  		} catch (FileNotFoundException fne) {  			JOptionPane.showMessageDialog(this,  						      fne.getMessage(),  						      "Cannot open file",  						      JOptionPane.ERROR_MESSAGE); +		} catch (IOException ioe) { +			JOptionPane.showMessageDialog(this, +						      ioe.getMessage(), +						      "File Read Error", +						      JOptionPane.ERROR_MESSAGE);  		}  	}  	private void SelectFile() {  		MicroFileChooser	chooser = new MicroFileChooser(this); -		InputStream		input = chooser.runDialog(); +		File			file = chooser.runDialog(); -		if (input != null) -			RunFile(input, chooser.filename); +		if (file != null) +			OpenFile(file);  	}  	private void Preferences() { @@ -109,6 +110,7 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene  						      "No data",  						      JOptionPane.INFORMATION_MESSAGE);  	} +  	private void Save() {  		if (data == null) {  			no_data(); @@ -128,6 +130,30 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene  		export.runDialog();  	} +	private static void CommandGraph(File file) { +		MicroPeak m = new MicroPeak(); +		m.OpenFile(file); +	} + +	private static void CommandExport(File file) { +		try { +			MicroData d = ReadFile(file); +			if (d != null) { +				File	csv = new File(AltosLib.replace_extension(file.getPath(), ".csv")); +				try { +					System.out.printf ("Export \"%s\" to \"%s\"\n", file.getPath(), csv.getPath()); +					MicroExport.export(csv, d); +				} catch (FileNotFoundException fe) { +					System.err.printf("Cannot create file \"%s\" (%s)\n", csv.getName(), fe.getMessage()); +				} catch (IOException ie) { +					System.err.printf("Cannot write file \"%s\" (%s)\n", csv.getName(), ie.getMessage()); +				} +			} +		} catch (IOException ie) { +			System.err.printf("Cannot read file \"%s\" (%s)\n", file.getName(), ie.getMessage()); +		} +	} +  	private void Close() {  		setVisible(false);  		dispose(); @@ -233,8 +259,17 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene  		setVisible(true);  	} +	public static void help(int code) { +		System.out.printf("Usage: micropeak [OPTION] ... [FILE]...\n"); +		System.out.printf("  Options:\n"); +		System.out.printf("    --csv\tgenerate comma separated output for spreadsheets, etc\n"); +		System.out.printf("    --graph\tgraph a flight\n"); +		System.exit(code); +	} +  	public static void main(final String[] args) {  		boolean	opened = false; +		boolean graphing = true;  		try {  			UIManager.setLookAndFeel(AltosUIPreferences.look_and_feel()); @@ -242,11 +277,30 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene  		}  		for (int i = 0; i < args.length; i++) { -			MicroPeak m = new MicroPeak(); -			m.OpenFile(new File(args[i])); -			opened = true; +			System.out.printf ("Arg %d: %s\n", i, args[i]); +			if (args[i].equals("--help")) +				help(0); +			else if (args[i].equals("--export")) +				graphing = false; +			else if (args[i].equals("--graph")) +				graphing = true; +			else if (args[i].startsWith("--")) +				help(1); +			else { +				File	file = new File(args[i]); +				try { +					if (graphing) +						CommandGraph(file); +					else +						CommandExport(file); +					opened = true; +				} catch (Exception e) { +					System.err.printf("Error processing \"%s\": %s\n", +							  file.getName(), e.getMessage()); +				} +			}  		}  		if (!opened)  			new MicroPeak();  	} -}
\ No newline at end of file +} diff --git a/micropeak/MicroSave.java b/micropeak/MicroSave.java index cb4b4221..2664f170 100644 --- a/micropeak/MicroSave.java +++ b/micropeak/MicroSave.java @@ -32,6 +32,12 @@ public class MicroSave extends JFileChooser {  	JFrame		frame;  	MicroData	data; +	public static void save(File file, MicroData data) throws FileNotFoundException, IOException { +		FileOutputStream fos = new FileOutputStream(file); +		data.save(fos); +		fos.close(); +	} +  	public boolean runDialog() {  		int	ret; @@ -76,9 +82,7 @@ public class MicroSave extends JFileChooser {  				}  			}  			try { -				FileOutputStream fos = new FileOutputStream(file); -				data.save(fos); -				fos.close(); +				save(file, data);  				data.set_name(filename);  				return true;  			} catch (FileNotFoundException fe) { | 
