From f0621e5790a33a85a0083e10a5d556a2428af8fe Mon Sep 17 00:00:00 2001 From: JoePfeiffer Date: Thu, 23 Feb 2023 15:15:54 -0700 Subject: [PATCH] Change simulation file loader so it always marks a simulation as LOADED if it has data, and NOT_SIMULATED if it doesn't. This is more reliable than the status attributed, as that gets saved as notsimulated when only summary data is saved. Also clean up logic in Simulation constructor a bit, --- .../sf/openrocket/document/Simulation.java | 40 +++++-------------- .../importt/SingleSimulationHandler.java | 20 +++++----- 2 files changed, 21 insertions(+), 39 deletions(-) diff --git a/core/src/net/sf/openrocket/document/Simulation.java b/core/src/net/sf/openrocket/document/Simulation.java index a695a1165..75f6cf0b2 100644 --- a/core/src/net/sf/openrocket/document/Simulation.java +++ b/core/src/net/sf/openrocket/document/Simulation.java @@ -146,40 +146,22 @@ public class Simulation implements ChangeSource, Cloneable { if (options == null) throw new IllegalArgumentException("options cannot be null"); - this.document = document; this.rocket = rocket; - - if (status == Status.UPTODATE) { - this.status = Status.LOADED; - } else if (data == null) { - this.status = Status.NOT_SIMULATED; - } else { - this.status = status; - } - this.name = name; - + this.status = status; + this.simulatedConditions = options.clone(); + this.simulatedData = data; + this.document = document; + addChangeListener(this.document); + this.options = options; - + this.options.addChangeListener(new ConditionListener()); + final FlightConfiguration config = rocket.getSelectedConfiguration(); this.setFlightConfigurationId(config.getFlightConfigurationID()); - - options.addChangeListener(new ConditionListener()); - addChangeListener(document); - - if (extensions != null) { - this.simulationExtensions.addAll(extensions); - } - - - if (data != null && this.status != Status.NOT_SIMULATED) { - simulatedData = data; - if (this.status == Status.LOADED) { - simulatedConditions = options.clone(); - simulatedConfigurationID = config.getModID(); - } - } - + this.simulatedConfigurationID = config.getModID(); + + this.simulationExtensions.addAll(extensions); } public FlightConfiguration getActiveConfiguration() { diff --git a/core/src/net/sf/openrocket/file/openrocket/importt/SingleSimulationHandler.java b/core/src/net/sf/openrocket/file/openrocket/importt/SingleSimulationHandler.java index 6483e09bc..629d3be25 100644 --- a/core/src/net/sf/openrocket/file/openrocket/importt/SingleSimulationHandler.java +++ b/core/src/net/sf/openrocket/file/openrocket/importt/SingleSimulationHandler.java @@ -109,13 +109,6 @@ class SingleSimulationHandler extends AbstractElementHandler { public void endHandler(String element, HashMap attributes, String content, WarningSet warnings) { - String s = attributes.get("status"); - Simulation.Status status = (Status) DocumentConfig.findEnum(s, Simulation.Status.class); - if (status == null) { - warnings.add("Simulation status unknown, assuming outdated."); - status = Simulation.Status.OUTDATED; - } - SimulationOptions options; FlightConfigurationId idToSet= FlightConfigurationId.ERROR_FCID; if (conditionHandler != null) { @@ -126,16 +119,23 @@ class SingleSimulationHandler extends AbstractElementHandler { options = new SimulationOptions(); } - if (name == null) + if (name == null) name = "Simulation"; + // If the simulation was saved with flight data (which may just be a summary) + // mark it as loaded from the file else as not simulated. We're ignoring the + // simulation status attribute, since (1) it really isn't relevant now, and (2) + // sim summaries are getting marked as not simulated when they're saved FlightData data; if (dataHandler == null) data = null; else data = dataHandler.getFlightData(); - if (data == null) { + Simulation.Status status; + if (data != null) { + status = Status.LOADED; + } else { status = Status.NOT_SIMULATED; } @@ -153,4 +153,4 @@ class SingleSimulationHandler extends AbstractElementHandler { return extension; } -} \ No newline at end of file +}