From 7d7a02ef8c52be8637ac42c8e5525ad990c0e04b Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Fri, 12 Nov 2010 01:35:33 +0000 Subject: [PATCH] make PLF fuel savable fix some character issues in io --- .../motorsim/fuel/PiecewiseLinearFuel.java | 27 ++++++++++++++++--- .../rocketry/motorsim/io/MotorIO.java | 12 +++++++-- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/com/billkuker/rocketry/motorsim/fuel/PiecewiseLinearFuel.java b/src/com/billkuker/rocketry/motorsim/fuel/PiecewiseLinearFuel.java index fb06c38..a4922f0 100644 --- a/src/com/billkuker/rocketry/motorsim/fuel/PiecewiseLinearFuel.java +++ b/src/com/billkuker/rocketry/motorsim/fuel/PiecewiseLinearFuel.java @@ -1,6 +1,8 @@ package com.billkuker.rocketry.motorsim.fuel; import java.net.URI; +import java.util.HashMap; +import java.util.Map; import java.util.NoSuchElementException; import java.util.SortedMap; import java.util.TreeMap; @@ -22,7 +24,7 @@ public class PiecewiseLinearFuel implements Fuel{ private static final Amount ZERO_PRESSURE =Amount.valueOf(0, SI.PASCAL); private static final Amount ZERO_VELOCITY =Amount.valueOf(0, SI.METERS_PER_SECOND); - private class Entry implements Comparable{ + private static class Entry implements Comparable{ Amount pressure; Amount burnRate; @Override @@ -43,7 +45,7 @@ public class PiecewiseLinearFuel implements Fuel{ private EditableCombustionProduct product = new EditableCombustionProduct(); private SortedMap, Entry> entries ; - + public PiecewiseLinearFuel(){ clear(); } @@ -105,10 +107,14 @@ public class PiecewiseLinearFuel implements Fuel{ } @Override - public CombustionProduct getCombustionProduct(){ + public EditableCombustionProduct getCombustionProduct(){ return product; } + public void setCombustionProduct(final EditableCombustionProduct product){ + this.product = product; + } + @Override public double getDensityRatio() { return densityRatio; @@ -142,7 +148,20 @@ public class PiecewiseLinearFuel implements Fuel{ } - + + public Map, Amount> getEntries() { + HashMap, Amount> ret = new HashMap, Amount>(); + for ( Entry e : entries.values() ) + ret.put(e.pressure, e.burnRate); + return ret; + } + + public void setEntries(Map, Amount> in) { + clear(); + for ( Map.Entry, Amount> e : in.entrySet()){ + add( e.getKey(), e.getValue()); + } + } diff --git a/src/com/billkuker/rocketry/motorsim/io/MotorIO.java b/src/com/billkuker/rocketry/motorsim/io/MotorIO.java index f2ce917..777fccd 100644 --- a/src/com/billkuker/rocketry/motorsim/io/MotorIO.java +++ b/src/com/billkuker/rocketry/motorsim/io/MotorIO.java @@ -85,12 +85,20 @@ public class MotorIO { text = a.getExactValue() + " " + a.getUnit(); else text = a.doubleValue(a.getUnit()) + " " + a.getUnit(); - w.setValue(text); + w.setValue(fix(text)); } public Object unmarshal(HierarchicalStreamReader r, UnmarshallingContext c) { String text = r.getValue(); - return Amount.valueOf(text); + return Amount.valueOf(unfix(text)); + } + + private String fix(String s){ + return s.replace("\u00B3", "^3"); + } + + private String unfix(String s){ + return s.replace("^3", "\u00B3"); } public boolean canConvert(Class c) { -- 2.30.2