Removed URI from fuels.
[sw/motorsim] / src / com / billkuker / rocketry / motorsim / io / MotorIO.java
index c784f0ea9f2c9fc24cf0da228efb8f9d367420ec..7ef7a70f31fe556cc1507cfd38a3815712ea0c34 100644 (file)
@@ -37,7 +37,7 @@ public class MotorIO {
                                MarshallingContext ctx) {\r
                        /*Fuel f = (Fuel)o;\r
                        w.setValue(f.getURI().toString());*/\r
-                       ctx.convertAnother(((Fuel)o).getURI());\r
+                       ctx.convertAnother(FuelResolver.getURI((Fuel)o));\r
                }\r
 \r
                @Override\r
@@ -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
@@ -99,7 +107,6 @@ public class MotorIO {
                \r
        \r
        }\r
-\r
        \r
        @SuppressWarnings("deprecation")\r
        private static XStream getXStream(){\r
@@ -111,6 +118,33 @@ public class MotorIO {
                return xstream;\r
        }\r
        \r
+       @SuppressWarnings("deprecation")\r
+       private static XStream getFuelXStream(){\r
+               XStream xstream = new XStream();\r
+               xstream.setMode(XStream.XPATH_ABSOLUTE_REFERENCES);\r
+               xstream.registerConverter(new AmountConverter());\r
+               xstream.registerConverter(new JavaBeanConverter(xstream.getClassMapper(), "class"), -20); \r
+               return xstream;\r
+       }\r
+       \r
+       public static void writeFuel(Fuel f, OutputStream os) throws IOException{\r
+               ObjectOutputStream out = getFuelXStream().createObjectOutputStream(os);\r
+               out.writeObject(f);\r
+               out.close();\r
+               os.flush();\r
+       }\r
+       \r
+       public static Fuel readFuel(InputStream is) throws IOException{\r
+               ObjectInputStream in = getFuelXStream().createObjectInputStream(is);\r
+               Fuel f;\r
+               try {\r
+                       f = (Fuel)in.readObject();\r
+               } catch (ClassNotFoundException e) {\r
+                       throw new IOException("Class not found", e);\r
+               }\r
+               return f;\r
+       }\r
+       \r
        public static void writeMotor(Motor m, OutputStream os) throws IOException{\r
                ObjectOutputStream out = getXStream().createObjectOutputStream(os);\r
                out.writeObject(m);\r