Changed BurnProgressListeners into a set
authorBill Kuker <bkuker@billkuker.com>
Sun, 7 Nov 2010 15:59:24 +0000 (15:59 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sun, 7 Nov 2010 15:59:24 +0000 (15:59 +0000)
src/com/billkuker/rocketry/motorsim/Burn.java

index 1c70cb69eebfb4929e2e46b0b549f290514ce2f3..d863cd9db5a207a2be1995ecfd76e8f3ccb2eb21 100644 (file)
@@ -3,6 +3,8 @@ package com.billkuker.rocketry.motorsim;
 \r
 \r
 import java.util.Date;\r
+import java.util.HashSet;\r
+import java.util.Set;\r
 import java.util.SortedMap;\r
 import java.util.TreeMap;\r
 \r
@@ -42,7 +44,7 @@ public class Burn {
                public void setProgress(float p);\r
        }\r
        \r
-       private BurnProgressListener bpl = null;\r
+       private Set<BurnProgressListener> bpls = new HashSet<Burn.BurnProgressListener>();\r
        \r
        private static final Amount<Pressure> atmosphereicPressure = Amount.valueOf(101000, SI.PASCAL);\r
        \r
@@ -90,7 +92,7 @@ public class Burn {
                        throw new IllegalArgumentException("Invalid Motor: " + e.getMessage());\r
                }\r
                motor = m;\r
-               this.bpl = bpl;\r
+               bpls.add(bpl);\r
                burn();\r
        }\r
        \r
@@ -139,10 +141,12 @@ public class Burn {
                        \r
                        log.debug("Regression: " + next.regression);\r
                        \r
-                       if ( bpl != null ){\r
-                               Amount<Dimensionless> a = next.regression.divide(motor.getGrain().webThickness()).to(Dimensionless.UNIT);\r
+                       //Update BurnProgressListeners\r
+                       Amount<Dimensionless> a = next.regression.divide(motor.getGrain().webThickness()).to(Dimensionless.UNIT);\r
+                       for (BurnProgressListener bpl : bpls ){\r
                                bpl.setProgress((float)a.doubleValue(Dimensionless.UNIT));\r
                        }\r
+\r
                        \r
                        next.time = prev.time.plus(dt);\r
                        \r