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
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
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