1 package net.sf.openrocket.utils;
3 import java.io.FileInputStream;
4 import java.io.IOException;
5 import java.io.InputStream;
8 import net.sf.openrocket.file.GeneralMotorLoader;
9 import net.sf.openrocket.file.MotorLoader;
10 import net.sf.openrocket.rocketcomponent.Motor;
11 import net.sf.openrocket.rocketcomponent.ThrustCurveMotor;
13 public class MotorCheck {
15 // Warn if less that this many points
16 public static final int WARN_POINTS = 6;
19 public static void main(String[] args) {
20 MotorLoader loader = new GeneralMotorLoader();
23 for (String file: args) {
24 System.out.print("Checking " + file + "... ");
29 List<Motor> motors = null;
31 InputStream stream = new FileInputStream(file);
32 motors = loader.load(stream, file);
34 } catch (IOException e) {
35 System.out.println("ERROR: " + e.getMessage());
36 e.printStackTrace(System.out);
40 String base = file.split("_")[0];
41 String mfg = MotorLoader.convertManufacturer(base);
44 if (motors.size() == 0) {
45 System.out.println("ERROR: File contained no motors");
48 for (Motor m: motors) {
50 sum += m.getAverageThrust();
51 sum += m.getAverageTime();
52 sum += m.getTotalImpulse();
53 sum += m.getTotalTime();
54 sum += m.getDiameter();
57 sum += m.getMass(Double.POSITIVE_INFINITY);
59 sum += m.getCG(0).weight;
60 sum += m.getMaxThrust();
61 if (Double.isInfinite(sum) || Double.isNaN(sum)) {
62 System.out.println("ERROR: Invalid motor values");
66 if (!m.getManufacturer().equals(mfg)) {
67 System.out.println("ERROR: Inconsistent manufacturer " +
68 m.getManufacturer() + " (file name indicates " + mfg
73 int points = ((ThrustCurveMotor)m).getTimePoints().length;
74 if (points < WARN_POINTS) {
75 System.out.println("WARNING: Only " + points + " data points");
83 System.out.println("OK");