diff --git a/core/src/main/java/info/openrocket/core/simulation/BasicEventSimulationEngine.java b/core/src/main/java/info/openrocket/core/simulation/BasicEventSimulationEngine.java index 9df170e61..4a7f88196 100644 --- a/core/src/main/java/info/openrocket/core/simulation/BasicEventSimulationEngine.java +++ b/core/src/main/java/info/openrocket/core/simulation/BasicEventSimulationEngine.java @@ -291,8 +291,8 @@ public class BasicEventSimulationEngine implements SimulationEngine { flightData.getWarningSet().addAll(currentStatus.getWarnings()); - e.setFlightData(flightData); - e.setFlightDataBranch(currentStatus.getFlightDataBranch()); + //e.setFlightData(flightData); + //e.setFlightDataBranch(currentStatus.getFlightDataBranch()); throw e; } @@ -731,7 +731,8 @@ public class BasicEventSimulationEngine implements SimulationEngine { " rocketOrientationQuaternion=" + currentStatus.getRocketOrientationQuaternion() + " rocketRotationVelocity=" + currentStatus.getRocketRotationVelocity() + " effectiveLaunchRodLength=" + currentStatus.getEffectiveLaunchRodLength()); - throw new SimulationCalculationException(trans.get("BasicEventSimulationEngine.error.NaNResult")); + throw new SimulationCalculationException(trans.get("BasicEventSimulationEngine.error.NaNResult"), + currentStatus.getFlightDataBranch()); } } diff --git a/core/src/main/java/info/openrocket/core/simulation/RK4SimulationStepper.java b/core/src/main/java/info/openrocket/core/simulation/RK4SimulationStepper.java index dde28f570..8e41a20dc 100644 --- a/core/src/main/java/info/openrocket/core/simulation/RK4SimulationStepper.java +++ b/core/src/main/java/info/openrocket/core/simulation/RK4SimulationStepper.java @@ -247,7 +247,7 @@ public class RK4SimulationStepper extends AbstractSimulationStepper { if (status.getRocketVelocity().length2() > 1e18 || status.getRocketPosition().length2() > 1e18 || status.getRocketRotationVelocity().length2() > 1e18) { - throw new SimulationCalculationException(trans.get("error.valuesTooLarge")); + throw new SimulationCalculationException(trans.get("error.valuesTooLarge"), status.getFlightDataBranch()); } } diff --git a/core/src/main/java/info/openrocket/core/simulation/exception/SimulationCalculationException.java b/core/src/main/java/info/openrocket/core/simulation/exception/SimulationCalculationException.java index 5d73fdabe..296a23b56 100644 --- a/core/src/main/java/info/openrocket/core/simulation/exception/SimulationCalculationException.java +++ b/core/src/main/java/info/openrocket/core/simulation/exception/SimulationCalculationException.java @@ -1,5 +1,7 @@ package info.openrocket.core.simulation.exception; +import info.openrocket.core.simulation.FlightDataBranch; + /** * An exception that indicates that a computation problem has occurred during * the simulation, for example that some values have exceed reasonable bounds. @@ -8,19 +10,27 @@ package info.openrocket.core.simulation.exception; */ public class SimulationCalculationException extends SimulationException { + private FlightDataBranch flightDataBranch; + public SimulationCalculationException() { } - public SimulationCalculationException(String message) { + public SimulationCalculationException(String message, FlightDataBranch dataBranch) { super(message); + flightDataBranch = dataBranch; } - public SimulationCalculationException(Throwable cause) { + public SimulationCalculationException(Throwable cause, FlightDataBranch dataBranch) { super(cause); + flightDataBranch = dataBranch; } - public SimulationCalculationException(String message, Throwable cause) { + public SimulationCalculationException(String message, Throwable cause, FlightDataBranch dataBranch) { super(message, cause); + flightDataBranch = dataBranch; } + public FlightDataBranch getFlightDataBranch() { + return flightDataBranch; + } } diff --git a/core/src/main/java/info/openrocket/core/simulation/exception/SimulationException.java b/core/src/main/java/info/openrocket/core/simulation/exception/SimulationException.java index b07ae8d42..ead701fc0 100644 --- a/core/src/main/java/info/openrocket/core/simulation/exception/SimulationException.java +++ b/core/src/main/java/info/openrocket/core/simulation/exception/SimulationException.java @@ -1,15 +1,9 @@ package info.openrocket.core.simulation.exception; -import info.openrocket.core.simulation.FlightData; -import info.openrocket.core.simulation.FlightDataBranch; - public class SimulationException extends Exception { - private FlightData flightData = null; - private FlightDataBranch flightDataBranch = null; - public SimulationException() { - + super(); } public SimulationException(String message) { @@ -23,21 +17,4 @@ public class SimulationException extends Exception { public SimulationException(String message, Throwable cause) { super(message, cause); } - - public void setFlightData(FlightData f) { - flightData = f; - } - - public FlightData getFlightData() { - return flightData; - } - - public void setFlightDataBranch(FlightDataBranch f) { - flightDataBranch = f; - } - - public FlightDataBranch getFlightDataBranch() { - return flightDataBranch; - } - } diff --git a/swing/src/main/java/info/openrocket/swing/gui/simulation/SimulationRunDialog.java b/swing/src/main/java/info/openrocket/swing/gui/simulation/SimulationRunDialog.java index 6071639ca..30f5e0220 100644 --- a/swing/src/main/java/info/openrocket/swing/gui/simulation/SimulationRunDialog.java +++ b/swing/src/main/java/info/openrocket/swing/gui/simulation/SimulationRunDialog.java @@ -36,6 +36,7 @@ import info.openrocket.core.simulation.FlightEvent; import info.openrocket.core.simulation.SimulationStatus; import info.openrocket.core.simulation.customexpression.CustomExpression; import info.openrocket.core.simulation.customexpression.CustomExpressionSimulationListener; +import info.openrocket.core.simulation.exception.SimulationCalculationException; import info.openrocket.core.simulation.exception.SimulationCancelledException; import info.openrocket.core.simulation.exception.SimulationException; import info.openrocket.core.simulation.listeners.AbstractSimulationListener; @@ -426,14 +427,16 @@ public class SimulationRunDialog extends JDialog { // Analyze the exception type if (t instanceof SimulationException) { String title = simulation.getName(); - FlightDataBranch dataBranch = ((SimulationException) t).getFlightDataBranch(); - + FlightDataBranch dataBranch = null; + if (t instanceof SimulationCalculationException) { + dataBranch = ((SimulationCalculationException) t).getFlightDataBranch(); + } String message; if (dataBranch != null) { - message = trans.get("SimuRunDlg.msg.branchErrorOccurred") + "\"" + dataBranch.getName() + "\""; + message = trans.get("SimuRunDlg.msg.branchErrorOccurred") + " \"" + dataBranch.getName() + "\""; } else { message = trans.get("SimuRunDlg.msg.errorOccurred"); - } + } DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this, new Object[] { //// A error occurred during the simulation: