1 package net.sf.openrocket.android.rocket;
\r
3 import java.util.HashSet;
\r
4 import java.util.Iterator;
\r
5 import java.util.Set;
\r
7 import net.sf.openrocket.aerodynamics.WarningSet;
\r
8 import net.sf.openrocket.android.util.AndroidLogWrapper;
\r
9 import net.sf.openrocket.file.DatabaseMotorFinder;
\r
10 import net.sf.openrocket.motor.Motor;
\r
11 import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;
\r
12 import net.sf.openrocket.rocketcomponent.Configuration;
\r
13 import net.sf.openrocket.rocketcomponent.MotorMount;
\r
14 import net.sf.openrocket.rocketcomponent.Rocket;
\r
16 public abstract class MissingMotorHelpers {
\r
18 public static Set<ThrustCurveMotorPlaceholder> findMissingMotors( Rocket rocket ) {
\r
20 Set<ThrustCurveMotorPlaceholder> missingMotors = new HashSet<ThrustCurveMotorPlaceholder>();
\r
21 Configuration config = rocket.getDefaultConfiguration();
\r
22 for( String configID : rocket.getMotorConfigurationIDs() ) {
\r
23 config.setMotorConfigurationID(configID);
\r
24 Iterator<MotorMount> mmts = config.motorIterator();
\r
25 while ( mmts.hasNext() ) {
\r
26 MotorMount mmt = mmts.next();
\r
27 Motor m = mmt.getMotor(configID);
\r
28 if ( m instanceof ThrustCurveMotorPlaceholder ) {
\r
29 missingMotors.add( (ThrustCurveMotorPlaceholder) m );
\r
35 for ( ThrustCurveMotorPlaceholder m : missingMotors ) {
\r
36 AndroidLogWrapper.d(MissingMotorHelpers.class, "Missing Motor: {}", m);
\r
39 return missingMotors;
\r
42 public static void updateMissingMotors( Rocket rocket, WarningSet warnings ) {
\r
44 DatabaseMotorFinder finder = new DatabaseMotorFinder();
\r
46 Configuration config = rocket.getDefaultConfiguration();
\r
47 for( String configID : rocket.getMotorConfigurationIDs() ) {
\r
48 config.setMotorConfigurationID(configID);
\r
49 Iterator<MotorMount> mmts = config.motorIterator();
\r
50 while ( mmts.hasNext() ) {
\r
51 MotorMount mmt = mmts.next();
\r
52 Motor m = mmt.getMotor(configID);
\r
53 if ( m instanceof ThrustCurveMotorPlaceholder ) {
\r
55 ThrustCurveMotorPlaceholder placeholder = (ThrustCurveMotorPlaceholder)m;
\r
56 Motor newMotor = finder.findMotor(placeholder.getMotorType(),
\r
57 placeholder.getManufacturer(),
\r
58 placeholder.getDesignation(),
\r
59 placeholder.getDiameter(),
\r
60 placeholder.getLength(),
\r
61 placeholder.getDigest(),
\r
64 if ( newMotor != null ) {
\r
65 // one is now here so replace it
\r
66 mmt.setMotor(configID, newMotor);
\r