1 package net.sf.openrocket.android.thrustcurve;
\r
3 import java.io.IOException;
\r
4 import java.io.LineNumberReader;
\r
5 import java.io.StringReader;
\r
6 import java.util.Vector;
\r
7 import java.util.regex.Matcher;
\r
8 import java.util.regex.Pattern;
\r
10 import android.util.Log;
\r
15 private final static String TAG = "RaspBurnFile";
\r
17 private final static int HEADER = 0;
\r
18 private final static int DATA = 1;
\r
19 private final static Pattern headerPattern = Pattern.compile("(\\S*)\\s+(\\S*)\\s+(\\S*)\\s+(\\S*)\\s+(\\S*)\\s+(\\S*)\\s+(\\S*)");
\r
20 private final static Pattern dataPattern = Pattern.compile("(\\S*)\\s+(\\S*)");
\r
22 static void parse( MotorBurnFile that, String filecontents ) {
\r
26 LineNumberReader reader = new LineNumberReader( new StringReader(filecontents));
\r
28 Vector<Double> datapoints = new Vector<Double>();
\r
33 while ( (line = reader.readLine()) != null ) {
\r
36 if ( line.startsWith(";")) {
\r
42 Log.d("RASP","header");
\r
43 m = headerPattern.matcher(line);
\r
44 if ( m.matches() ) {
\r
45 Log.d("RASP","header matches");
\r
47 /*motorName = m.group(1);*/
\r
48 /*diameter = Integer.decode(m.group(2));*/
\r
49 that.setLength(Float.parseFloat(m.group(3)) );
\r
50 String delays = m.group(4);
\r
51 if ( delays != null ) {
\r
52 delays = delays.replace("-", ",");
\r
53 that.setDelays(delays);
\r
55 that.setPropWeightG(Double.parseDouble(m.group(5))*1000.0);
\r
56 that.setTotWeightG(Double.parseDouble(m.group(6))*1000.0);
\r
57 /*manufacturer = m.group(7);*/
\r
64 Log.d("RASP","data");
\r
65 m = dataPattern.matcher(line);
\r
66 if ( m.matches() ) {
\r
67 Log.d("RASP","data matches");
\r
68 Double x = Double.parseDouble(m.group(1));
\r
69 Double y = Double.parseDouble(m.group(2));
\r
70 Log.d("RASP","data matches ("+x+","+y+")");
\r
76 that.setDatapoints(datapoints);
\r
78 } catch (IOException ex ) {
\r
79 Log.d(TAG,"Unable to parse Rasp file: " + ex);
\r