Removed URI from fuels.
[sw/motorsim] / src / com / billkuker / rocketry / motorsim / fuel / FuelResolver.java
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