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
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
\r
private EditableCombustionProduct product = new EditableCombustionProduct();\r
private SortedMap<Amount<Pressure>, Entry> entries ;\r
- \r
+\r
public PiecewiseLinearFuel(){\r
clear();\r
}\r
}\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
}\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
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