Removed URI from fuels.
authorBill Kuker <bkuker@billkuker.com>
Fri, 12 Nov 2010 14:37:51 +0000 (14:37 +0000)
committerBill Kuker <bkuker@billkuker.com>
Fri, 12 Nov 2010 14:37:51 +0000 (14:37 +0000)
It is now just remembered by the FuelResolver

src/com/billkuker/rocketry/motorsim/Fuel.java
src/com/billkuker/rocketry/motorsim/fuel/FuelResolver.java
src/com/billkuker/rocketry/motorsim/fuel/SaintRobertFuel.java
src/com/billkuker/rocketry/motorsim/fuel/editable/EditableFuel.java
src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseLinearFuel.java
src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseSaintRobertFuel.java
src/com/billkuker/rocketry/motorsim/io/MotorIO.java

index a6c30d229039d8c43288fded1c9fcc7297ec75ad..0642cb34db0df4ce4a421a745245ef407fe169ab 100644 (file)
@@ -1,7 +1,5 @@
 package com.billkuker.rocketry.motorsim;\r
 \r
-import java.net.URI;\r
-\r
 import javax.measure.quantity.Pressure;\r
 import javax.measure.quantity.Temperature;\r
 import javax.measure.quantity.Velocity;\r
@@ -14,8 +12,6 @@ import com.billkuker.rocketry.motorsim.RocketScience.MolarWeight;
 public interface Fuel {\r
        \r
        public String getName();\r
-       \r
-       public URI getURI();\r
 \r
        public Amount<VolumetricDensity> getIdealDensity();\r
 \r
index b80ce14d054e51042740e1e0daad8c15cfeef79e..2f3518c6b4d926d2b911283db1c7c674eafac53f 100644 (file)
@@ -1,9 +1,12 @@
 package com.billkuker.rocketry.motorsim.fuel;\r
 \r
 import java.net.URI;\r
+import java.net.URISyntaxException;\r
 import java.util.Collections;\r
 import java.util.HashMap;\r
+import java.util.HashSet;\r
 import java.util.Map;\r
+import java.util.Set;\r
 \r
 import com.billkuker.rocketry.motorsim.Fuel;\r
 \r
@@ -11,20 +14,42 @@ public class FuelResolver {
        public static class FuelNotFound extends Exception {\r
                private static final long serialVersionUID = 1L;\r
        }\r
+       \r
+       public static interface FuelsChangeListener {\r
+               public void fuelsChanged();\r
+       }\r
 \r
+       private static Set<FuelsChangeListener> listeners = new HashSet<FuelResolver.FuelsChangeListener>();\r
        private static Map<URI, Fuel> fuels = new HashMap<URI, Fuel>();\r
+       private static Map<Fuel, URI> uris = new HashMap<Fuel, URI>();\r
 \r
        static {\r
-               add(new KNSB());\r
-               add(new KNDX());\r
-               add(new KNSU());\r
-               add(new KNER());\r
+               try {\r
+                       add(new KNSB(), new URI("motorsim:KNSB"));\r
+                       add(new KNDX(), new URI("motorsim:KNDX"));\r
+                       add(new KNSU(), new URI("motorsim:KNSU"));\r
+                       add(new KNER(), new URI("motorsim:KNER"));\r
+               } catch (URISyntaxException e) {\r
+                       e.printStackTrace();\r
+               }\r
+       }\r
+       \r
+       public static void addFuelsChangeListener(FuelsChangeListener l){\r
+               listeners.add(l);\r
+       }\r
+       \r
+       public static void removeFuelsChangeListener(FuelsChangeListener l){\r
+               listeners.remove(l);\r
        }\r
        \r
        public static Map<URI, Fuel> getFuelMap(){\r
                return Collections.unmodifiableMap(fuels);\r
        }\r
 \r
+       public static URI getURI( Fuel f ){\r
+               return uris.get(f);\r
+       }\r
+       \r
        public static Fuel getFuel(URI u) throws FuelNotFound {\r
                if (fuels.containsKey(u))\r
                        return fuels.get(u);\r
@@ -35,7 +60,10 @@ public class FuelResolver {
                throw new FuelNotFound();\r
        }\r
 \r
-       private static void add(Fuel f) {\r
-               fuels.put(f.getURI(), f);\r
+       private static void add(Fuel f, URI uri) {\r
+               fuels.put(uri, f);\r
+               uris.put(f, uri);\r
+               for ( FuelsChangeListener l : listeners )\r
+                       l.fuelsChanged();\r
        }\r
 }\r
index 389d9ce097eea35ada9c907048c1b1935d4bd87e..d5b9cf4600f59cb847b1778f97ac38da6cc0725e 100644 (file)
@@ -1,8 +1,5 @@
 package com.billkuker.rocketry.motorsim.fuel;\r
 \r
-import java.net.URI;\r
-import java.net.URISyntaxException;\r
-\r
 import javax.measure.quantity.Pressure;\r
 import javax.measure.quantity.Velocity;\r
 import javax.measure.quantity.VolumetricDensity;\r
@@ -69,14 +66,6 @@ public abstract class SaintRobertFuel implements Fuel {
        }\r
 \r
        public abstract Amount<VolumetricDensity> getIdealDensity();\r
-\r
-       public URI getURI(){\r
-               try {\r
-                       return new URI("motorsim:" + this.getClass().getSimpleName());\r
-               } catch (URISyntaxException e) {\r
-                       throw new Error("Shouldn't happen", e);\r
-               }\r
-       }\r
        \r
        public String getName(){\r
                return this.getClass().getSimpleName();\r
index 11e4e6a5c995d2e9f5434d03ddb3f44172f4f362..d2f1c54471a3ec60d5f28b6c91d343e0ad6467ee 100644 (file)
@@ -1,10 +1,7 @@
 package com.billkuker.rocketry.motorsim.fuel.editable;\r
 \r
-import java.net.URI;\r
-\r
 import com.billkuker.rocketry.motorsim.Fuel;\r
 \r
 public interface EditableFuel extends Fuel{\r
        public void setName(String name);\r
-       public void setURI(URI uri);\r
 }\r
index ad528a1dd7e68551ccc4bfb05d344610d3a7d89a..ef5c49066445d1f70f877312698eff8fb198e7f1 100644 (file)
@@ -1,6 +1,5 @@
 package com.billkuker.rocketry.motorsim.fuel.editable;\r
 \r
-import java.net.URI;\r
 import java.util.HashMap;\r
 import java.util.Map;\r
 import java.util.NoSuchElementException;\r
@@ -16,7 +15,6 @@ import javax.measure.unit.SI;
 import org.apache.log4j.Logger;\r
 import org.jscience.physics.amount.Amount;\r
 \r
-import com.billkuker.rocketry.motorsim.Fuel;\r
 import com.billkuker.rocketry.motorsim.RocketScience;\r
 import com.billkuker.rocketry.motorsim.fuel.EditableCombustionProduct;\r
 import com.billkuker.rocketry.motorsim.visual.Chart;\r
@@ -43,7 +41,6 @@ public class EditablePiecewiseLinearFuel implements EditableFuel{
 \r
        \r
        private String name = "New Linear Fuel";\r
-       private URI uri;\r
        private double combustionEfficiency = .97;\r
        private double densityRatio = .96;\r
        private Amount<VolumetricDensity> density = Amount.valueOf(1889, 0, SI.KILOGRAM.divide(SI.METER.pow(3))).to(VolumetricDensity.UNIT);\r
@@ -147,17 +144,6 @@ public class EditablePiecewiseLinearFuel implements EditableFuel{
        public void setName(String name) {\r
                this.name = name;\r
        }\r
-\r
-       @Override\r
-       public URI getURI() {\r
-               return uri;\r
-       }\r
-\r
-       @Override\r
-       public void setURI(URI uri) {\r
-               this.uri = uri;\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
index 790cde45bcd115ba1fd11452354ca14fb7ab80e6..44c218e6c968c03b046b0e11611cb492b92a6b52 100644 (file)
@@ -1,6 +1,5 @@
 package com.billkuker.rocketry.motorsim.fuel.editable;\r
 \r
-import java.net.URI;\r
 import java.util.HashMap;\r
 import java.util.Map;\r
 \r
@@ -22,7 +21,6 @@ public class EditablePiecewiseSaintRobertFuel extends PiecewiseSaintRobertFuel i
        private double densityRatio = 1;\r
        private EditableCombustionProduct cp;\r
        private String name = "New Fuel";\r
-       private URI uri;\r
 \r
        public EditablePiecewiseSaintRobertFuel() {\r
                super(Type.SI);\r
@@ -48,16 +46,6 @@ public class EditablePiecewiseSaintRobertFuel extends PiecewiseSaintRobertFuel i
                aMap.put(p, _a);\r
                nMap.put(p, _n);\r
        }\r
-\r
-       @Override\r
-       public URI getURI() {\r
-               return uri;\r
-       }\r
-\r
-       @Override\r
-       public void setURI(URI uri) {\r
-               this.uri = uri;\r
-       }\r
        \r
        public Amount<VolumetricDensity> getIdealDensity() {\r
                return idealDensity;\r
index 777fccd2893be3178ab2dc3dd2077446c130d432..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