From cb25e7d825b78fd0f2da674651be1523969a3337 Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Fri, 12 Nov 2010 14:37:51 +0000 Subject: [PATCH] Removed URI from fuels. It is now just remembered by the FuelResolver --- src/com/billkuker/rocketry/motorsim/Fuel.java | 4 -- .../rocketry/motorsim/fuel/FuelResolver.java | 40 ++++++++++++++++--- .../motorsim/fuel/SaintRobertFuel.java | 11 ----- .../motorsim/fuel/editable/EditableFuel.java | 3 -- .../editable/EditablePiecewiseLinearFuel.java | 14 ------- .../EditablePiecewiseSaintRobertFuel.java | 12 ------ .../rocketry/motorsim/io/MotorIO.java | 2 +- 7 files changed, 35 insertions(+), 51 deletions(-) diff --git a/src/com/billkuker/rocketry/motorsim/Fuel.java b/src/com/billkuker/rocketry/motorsim/Fuel.java index a6c30d2..0642cb3 100644 --- a/src/com/billkuker/rocketry/motorsim/Fuel.java +++ b/src/com/billkuker/rocketry/motorsim/Fuel.java @@ -1,7 +1,5 @@ package com.billkuker.rocketry.motorsim; -import java.net.URI; - import javax.measure.quantity.Pressure; import javax.measure.quantity.Temperature; import javax.measure.quantity.Velocity; @@ -14,8 +12,6 @@ import com.billkuker.rocketry.motorsim.RocketScience.MolarWeight; public interface Fuel { public String getName(); - - public URI getURI(); public Amount getIdealDensity(); diff --git a/src/com/billkuker/rocketry/motorsim/fuel/FuelResolver.java b/src/com/billkuker/rocketry/motorsim/fuel/FuelResolver.java index b80ce14..2f3518c 100644 --- a/src/com/billkuker/rocketry/motorsim/fuel/FuelResolver.java +++ b/src/com/billkuker/rocketry/motorsim/fuel/FuelResolver.java @@ -1,9 +1,12 @@ package com.billkuker.rocketry.motorsim.fuel; import java.net.URI; +import java.net.URISyntaxException; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import com.billkuker.rocketry.motorsim.Fuel; @@ -11,20 +14,42 @@ public class FuelResolver { public static class FuelNotFound extends Exception { private static final long serialVersionUID = 1L; } + + public static interface FuelsChangeListener { + public void fuelsChanged(); + } + private static Set listeners = new HashSet(); private static Map fuels = new HashMap(); + private static Map uris = new HashMap(); static { - add(new KNSB()); - add(new KNDX()); - add(new KNSU()); - add(new KNER()); + try { + add(new KNSB(), new URI("motorsim:KNSB")); + add(new KNDX(), new URI("motorsim:KNDX")); + add(new KNSU(), new URI("motorsim:KNSU")); + add(new KNER(), new URI("motorsim:KNER")); + } catch (URISyntaxException e) { + e.printStackTrace(); + } + } + + public static void addFuelsChangeListener(FuelsChangeListener l){ + listeners.add(l); + } + + public static void removeFuelsChangeListener(FuelsChangeListener l){ + listeners.remove(l); } public static Map getFuelMap(){ return Collections.unmodifiableMap(fuels); } + public static URI getURI( Fuel f ){ + return uris.get(f); + } + public static Fuel getFuel(URI u) throws FuelNotFound { if (fuels.containsKey(u)) return fuels.get(u); @@ -35,7 +60,10 @@ public class FuelResolver { throw new FuelNotFound(); } - private static void add(Fuel f) { - fuels.put(f.getURI(), f); + private static void add(Fuel f, URI uri) { + fuels.put(uri, f); + uris.put(f, uri); + for ( FuelsChangeListener l : listeners ) + l.fuelsChanged(); } } diff --git a/src/com/billkuker/rocketry/motorsim/fuel/SaintRobertFuel.java b/src/com/billkuker/rocketry/motorsim/fuel/SaintRobertFuel.java index 389d9ce..d5b9cf4 100644 --- a/src/com/billkuker/rocketry/motorsim/fuel/SaintRobertFuel.java +++ b/src/com/billkuker/rocketry/motorsim/fuel/SaintRobertFuel.java @@ -1,8 +1,5 @@ package com.billkuker.rocketry.motorsim.fuel; -import java.net.URI; -import java.net.URISyntaxException; - import javax.measure.quantity.Pressure; import javax.measure.quantity.Velocity; import javax.measure.quantity.VolumetricDensity; @@ -69,14 +66,6 @@ public abstract class SaintRobertFuel implements Fuel { } public abstract Amount getIdealDensity(); - - public URI getURI(){ - try { - return new URI("motorsim:" + this.getClass().getSimpleName()); - } catch (URISyntaxException e) { - throw new Error("Shouldn't happen", e); - } - } public String getName(){ return this.getClass().getSimpleName(); diff --git a/src/com/billkuker/rocketry/motorsim/fuel/editable/EditableFuel.java b/src/com/billkuker/rocketry/motorsim/fuel/editable/EditableFuel.java index 11e4e6a..d2f1c54 100644 --- a/src/com/billkuker/rocketry/motorsim/fuel/editable/EditableFuel.java +++ b/src/com/billkuker/rocketry/motorsim/fuel/editable/EditableFuel.java @@ -1,10 +1,7 @@ package com.billkuker.rocketry.motorsim.fuel.editable; -import java.net.URI; - import com.billkuker.rocketry.motorsim.Fuel; public interface EditableFuel extends Fuel{ public void setName(String name); - public void setURI(URI uri); } diff --git a/src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseLinearFuel.java b/src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseLinearFuel.java index ad528a1..ef5c490 100644 --- a/src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseLinearFuel.java +++ b/src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseLinearFuel.java @@ -1,6 +1,5 @@ package com.billkuker.rocketry.motorsim.fuel.editable; -import java.net.URI; import java.util.HashMap; import java.util.Map; import java.util.NoSuchElementException; @@ -16,7 +15,6 @@ import javax.measure.unit.SI; import org.apache.log4j.Logger; import org.jscience.physics.amount.Amount; -import com.billkuker.rocketry.motorsim.Fuel; import com.billkuker.rocketry.motorsim.RocketScience; import com.billkuker.rocketry.motorsim.fuel.EditableCombustionProduct; import com.billkuker.rocketry.motorsim.visual.Chart; @@ -43,7 +41,6 @@ public class EditablePiecewiseLinearFuel implements EditableFuel{ private String name = "New Linear Fuel"; - private URI uri; private double combustionEfficiency = .97; private double densityRatio = .96; private Amount density = Amount.valueOf(1889, 0, SI.KILOGRAM.divide(SI.METER.pow(3))).to(VolumetricDensity.UNIT); @@ -147,17 +144,6 @@ public class EditablePiecewiseLinearFuel implements EditableFuel{ public void setName(String name) { this.name = name; } - - @Override - public URI getURI() { - return uri; - } - - @Override - public void setURI(URI uri) { - this.uri = uri; - } - public Map, Amount> getEntries() { HashMap, Amount> ret = new HashMap, Amount>(); diff --git a/src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseSaintRobertFuel.java b/src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseSaintRobertFuel.java index 790cde4..44c218e 100644 --- a/src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseSaintRobertFuel.java +++ b/src/com/billkuker/rocketry/motorsim/fuel/editable/EditablePiecewiseSaintRobertFuel.java @@ -1,6 +1,5 @@ package com.billkuker.rocketry.motorsim.fuel.editable; -import java.net.URI; import java.util.HashMap; import java.util.Map; @@ -22,7 +21,6 @@ public class EditablePiecewiseSaintRobertFuel extends PiecewiseSaintRobertFuel i private double densityRatio = 1; private EditableCombustionProduct cp; private String name = "New Fuel"; - private URI uri; public EditablePiecewiseSaintRobertFuel() { super(Type.SI); @@ -48,16 +46,6 @@ public class EditablePiecewiseSaintRobertFuel extends PiecewiseSaintRobertFuel i aMap.put(p, _a); nMap.put(p, _n); } - - @Override - public URI getURI() { - return uri; - } - - @Override - public void setURI(URI uri) { - this.uri = uri; - } public Amount getIdealDensity() { return idealDensity; diff --git a/src/com/billkuker/rocketry/motorsim/io/MotorIO.java b/src/com/billkuker/rocketry/motorsim/io/MotorIO.java index 777fccd..7ef7a70 100644 --- a/src/com/billkuker/rocketry/motorsim/io/MotorIO.java +++ b/src/com/billkuker/rocketry/motorsim/io/MotorIO.java @@ -37,7 +37,7 @@ public class MotorIO { MarshallingContext ctx) { /*Fuel f = (Fuel)o; w.setValue(f.getURI().toString());*/ - ctx.convertAnother(((Fuel)o).getURI()); + ctx.convertAnother(FuelResolver.getURI((Fuel)o)); } @Override -- 2.47.2