make PLF fuel savable
authorBill Kuker <bkuker@billkuker.com>
Fri, 12 Nov 2010 01:35:33 +0000 (01:35 +0000)
committerBill Kuker <bkuker@billkuker.com>
Fri, 12 Nov 2010 01:35:33 +0000 (01:35 +0000)
fix some character issues in io

src/com/billkuker/rocketry/motorsim/fuel/PiecewiseLinearFuel.java
src/com/billkuker/rocketry/motorsim/io/MotorIO.java

index fb06c3814d4d00da190a3a11eb15d0b691303284..a4922f06c4613a66dd86473af440458008ac0a7e 100644 (file)
@@ -1,6 +1,8 @@
 package com.billkuker.rocketry.motorsim.fuel;\r
 \r
 import java.net.URI;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
 import java.util.NoSuchElementException;\r
 import java.util.SortedMap;\r
 import java.util.TreeMap;\r
@@ -22,7 +24,7 @@ public class PiecewiseLinearFuel implements Fuel{
        private static final Amount<Pressure> ZERO_PRESSURE =Amount.valueOf(0, SI.PASCAL);\r
        private static final Amount<Velocity> ZERO_VELOCITY =Amount.valueOf(0, SI.METERS_PER_SECOND);\r
 \r
-       private class Entry implements Comparable<Entry>{\r
+       private static class Entry implements Comparable<Entry>{\r
                Amount<Pressure> pressure;\r
                Amount<Velocity> burnRate;\r
                @Override\r
@@ -43,7 +45,7 @@ public class PiecewiseLinearFuel implements Fuel{
        \r
        private EditableCombustionProduct product = new EditableCombustionProduct();\r
        private SortedMap<Amount<Pressure>, Entry> entries ;\r
-       \r
+\r
        public PiecewiseLinearFuel(){\r
                clear();\r
        }\r
@@ -105,10 +107,14 @@ public class PiecewiseLinearFuel implements Fuel{
        }\r
        \r
        @Override\r
-       public CombustionProduct getCombustionProduct(){\r
+       public EditableCombustionProduct getCombustionProduct(){\r
                return product;\r
        }\r
        \r
+       public void setCombustionProduct(final EditableCombustionProduct product){\r
+               this.product = product;\r
+       }\r
+       \r
        @Override\r
        public double getDensityRatio() {\r
                return densityRatio;\r
@@ -142,7 +148,20 @@ public class PiecewiseLinearFuel implements Fuel{
        }\r
 \r
 \r
-\r
+       \r
+       public Map<Amount<Pressure>, Amount<Velocity>> getEntries() {\r
+               HashMap<Amount<Pressure>, Amount<Velocity>> ret = new HashMap<Amount<Pressure>, Amount<Velocity>>();\r
+               for ( Entry e : entries.values() )\r
+                       ret.put(e.pressure, e.burnRate);\r
+               return ret;\r
+       }\r
+       \r
+       public void setEntries(Map<Amount<Pressure>, Amount<Velocity>> in) {\r
+               clear();\r
+               for ( Map.Entry<Amount<Pressure>, Amount<Velocity>> e : in.entrySet()){\r
+                       add( e.getKey(), e.getValue());\r
+               }\r
+       }\r
 \r
 \r
        \r
index f2ce91704de53f666295a85a6405706efe919f20..777fccd2893be3178ab2dc3dd2077446c130d432 100644 (file)
@@ -85,12 +85,20 @@ public class MotorIO {
                                text = a.getExactValue() + " " + a.getUnit();\r
                        else\r
                                text = a.doubleValue(a.getUnit()) + " " + a.getUnit();\r
-                       w.setValue(text);\r
+                       w.setValue(fix(text));\r
                }\r
 \r
                public Object unmarshal(HierarchicalStreamReader r, UnmarshallingContext c) {\r
                        String text = r.getValue();\r
-                       return Amount.valueOf(text);\r
+                       return Amount.valueOf(unfix(text));\r
+               }\r
+               \r
+               private String fix(String s){\r
+                       return s.replace("\u00B3", "^3");\r
+               }\r
+               \r
+               private String unfix(String s){\r
+                       return s.replace("^3", "\u00B3");\r
                }\r
 \r
                public boolean canConvert(Class c) {\r