From: kruland2607 Date: Sun, 5 Feb 2012 01:40:57 +0000 (+0000) Subject: Changed DatabaseMotorFinder to have a little template pattern in it to make implement... X-Git-Tag: upstream/12.03~1^2~81 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=3fa09bb96cf1901821b09bf7ff139f8702e43a48;p=debian%2Fopenrocket Changed DatabaseMotorFinder to have a little template pattern in it to make implementing DatabaseMotorFinderWithMissingMotors much easier. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@390 180e2498-e6e9-4542-8430-84ac67f01cd8 --- diff --git a/core/src/net/sf/openrocket/file/DatabaseMotorFinder.java b/core/src/net/sf/openrocket/file/DatabaseMotorFinder.java index 9af7a739..0232bbd1 100644 --- a/core/src/net/sf/openrocket/file/DatabaseMotorFinder.java +++ b/core/src/net/sf/openrocket/file/DatabaseMotorFinder.java @@ -16,6 +16,27 @@ import net.sf.openrocket.startup.Application; */ public class DatabaseMotorFinder implements MotorFinder { + /** + * Do something when a missing motor is found. + * + * This implementation adds a Warning.MissingMotor to the warning set and returns null. + * + * Override this function to change the behavior. + * + * @return The Motor which will be put in the Rocket. + */ + protected Motor handleMissingMotor(Type type, String manufacturer, String designation, double diameter, double length, String digest, WarningSet warnings) { + Warning.MissingMotor mmw = new Warning.MissingMotor(); + mmw.setDesignation(designation); + mmw.setDigest(digest); + mmw.setDiameter(diameter); + mmw.setLength(length); + mmw.setManufacturer(manufacturer); + mmw.setType(type); + warnings.add(mmw); + return null; + } + @Override public Motor findMotor(Type type, String manufacturer, String designation, double diameter, double length, String digest, WarningSet warnings) { @@ -28,16 +49,8 @@ public class DatabaseMotorFinder implements MotorFinder { // No motors if (motors.size() == 0) { - Warning.MissingMotor mmw = new Warning.MissingMotor(); - mmw.setDesignation(designation); - mmw.setDigest(digest); - mmw.setDiameter(diameter); - mmw.setLength(length); - mmw.setManufacturer(manufacturer); - mmw.setType(type); - warnings.add(mmw); - return null; - } + return handleMissingMotor(type, manufacturer, designation, diameter, length, digest, warnings); + } // One motor if (motors.size() == 1) { diff --git a/core/src/net/sf/openrocket/file/DatabaseMotorFinderWithMissingMotors.java b/core/src/net/sf/openrocket/file/DatabaseMotorFinderWithMissingMotors.java new file mode 100644 index 00000000..5270151b --- /dev/null +++ b/core/src/net/sf/openrocket/file/DatabaseMotorFinderWithMissingMotors.java @@ -0,0 +1,27 @@ +package net.sf.openrocket.file; + +import net.sf.openrocket.aerodynamics.WarningSet; +import net.sf.openrocket.motor.Motor; +import net.sf.openrocket.motor.Motor.Type; +import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder; + +public class DatabaseMotorFinderWithMissingMotors extends DatabaseMotorFinder +implements MotorFinder { + + /** + * This implementation returns a ThrustCurveMotorPlaceholder. + */ + @Override + protected Motor handleMissingMotor(Type type, String manufacturer, String designation, double diameter, double length, String digest, WarningSet warnings) { + Motor motor = new ThrustCurveMotorPlaceholder(type, + manufacturer, + designation, + diameter, + length, + digest, + /* delay */ Double.NaN, + /*launchMass*/ Double.NaN, + /*emptyMass*/ Double.NaN); + return motor; + } +}