X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Ffile%2Fopenrocket%2FOpenRocketSaver.java;h=0a5e04790caa407459640e5ef3d95ddd0abf59a7;hb=42b2e5ca519766e37ce6941ba4faecc9691cc403;hp=e7e42c85b5b3f3c0ccfe34edca88ebc18d035d14;hpb=4da92a4e994992a78d62a7ca21c88d6c41292d6f;p=debian%2Fopenrocket diff --git a/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java b/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java index e7e42c85..0a5e0479 100644 --- a/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java @@ -24,12 +24,12 @@ import net.sf.openrocket.rocketcomponent.RecoveryDevice.DeployEvent; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.TubeCoupler; -import net.sf.openrocket.simulation.CustomExpression; import net.sf.openrocket.simulation.FlightData; import net.sf.openrocket.simulation.FlightDataBranch; import net.sf.openrocket.simulation.FlightDataType; import net.sf.openrocket.simulation.FlightEvent; import net.sf.openrocket.simulation.SimulationOptions; +import net.sf.openrocket.simulation.customexpression.CustomExpression; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.BuildProperties; @@ -101,6 +101,9 @@ public class OpenRocketSaver extends RocketSaver { writeln(""); + // Save custom expressions; + saveCustomDatatypes(document); + // Save all simulations writeln(""); indent++; @@ -124,7 +127,41 @@ public class OpenRocketSaver extends RocketSaver { } } + /* + * Save all the custom expressions + */ + private void saveCustomDatatypes(OpenRocketDocument doc) throws IOException { + + if (doc.getCustomExpressions().isEmpty()) + return; + + writeln(""); + indent++; + + for (CustomExpression exp : doc.getCustomExpressions()) { + saveCustomExpressionDatatype(exp); + } + + indent--; + writeln(""); + writeln(""); + } + /* + * Save one custom expression datatype + */ + private void saveCustomExpressionDatatype(CustomExpression exp) throws IOException { + // Write out custom expression + + writeln(""); + indent++; + writeln("" + exp.getName() + ""); + writeln("" + exp.getSymbol() + ""); + writeln("" + exp.getUnit() + ""); // auto unit type means it will be determined from string + writeln("" + exp.getExpressionString() + ""); + indent--; + writeln(""); + } @Override public long estimateFileSize(OpenRocketDocument doc, StorageOptions options) { @@ -190,6 +227,7 @@ public class OpenRocketSaver extends RocketSaver { * File version 1.5 is requires for: * - saving designs using ComponentPrests * - recovery device deployment on lower stage separation + * - custom expressions * * File version 1.4 is required for: * - saving simulation data @@ -218,6 +256,11 @@ public class OpenRocketSaver extends RocketSaver { } } + // Check for custom expressions + if (!document.getCustomExpressions().isEmpty()) { + return FILE_VERSION_DIVISOR + 5; + } + // Check if design has simulations defined (version 1.4) if (document.getSimulationCount() > 0) { return FILE_VERSION_DIVISOR + 4; @@ -327,21 +370,8 @@ public class OpenRocketSaver extends RocketSaver { writeln("RK4Simulator"); writeln("BarrowmanCalculator"); - // Write out custom expressions - if (!simulation.getCustomExpressions().isEmpty()){ - writeln(""); indent++; - for (CustomExpression expression : simulation.getCustomExpressions()){ - writeln(""); indent++; - writeElement("name", expression.getName()); - writeElement("symbol", expression.getSymbol()); - writeElement("unit", expression.getUnit()); - writeElement("expressionstring", expression.getExpressionString()); - indent--; writeln(""); - } - indent--; writeln(""); - } - - writeln(""); indent++; + writeln(""); + indent++; writeElement("configid", cond.getMotorConfigurationID()); writeElement("launchrodlength", cond.getLaunchRodLength()); @@ -453,13 +483,16 @@ public class OpenRocketSaver extends RocketSaver { sb.append(" 0) sb.append(","); - sb.append(types[i].getKey()); + sb.append(escapeXML(types[i].getKey())); } + */ + sb.append("\" types=\""); for (int i = 0; i < types.length; i++) { if (i > 0)