From 890d390b4b2f6d4ade05938d70c24335206b71c7 Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Thu, 3 Dec 2015 09:45:10 -0500 Subject: [PATCH] [Refactor]ed SimpleStack class to JDK 'ArrayDeque' class --- .../file/simplesax/DelegatorHandler.java | 9 ++-- .../sf/openrocket/rocketcomponent/Rocket.java | 4 ++ .../rocketcomponent/RocketComponent.java | 4 +- .../BasicEventSimulationEngine.java | 8 +++- .../net/sf/openrocket/util/SimpleStack.java | 36 ---------------- .../sf/openrocket/util/SimpleStackTest.java | 43 ------------------- 6 files changed, 17 insertions(+), 87 deletions(-) delete mode 100644 core/src/net/sf/openrocket/util/SimpleStack.java delete mode 100644 core/test/net/sf/openrocket/util/SimpleStackTest.java diff --git a/core/src/net/sf/openrocket/file/simplesax/DelegatorHandler.java b/core/src/net/sf/openrocket/file/simplesax/DelegatorHandler.java index 169a4d707..d5c1f3731 100644 --- a/core/src/net/sf/openrocket/file/simplesax/DelegatorHandler.java +++ b/core/src/net/sf/openrocket/file/simplesax/DelegatorHandler.java @@ -1,10 +1,11 @@ package net.sf.openrocket.file.simplesax; +import java.util.ArrayDeque; +import java.util.Deque; import java.util.HashMap; import net.sf.openrocket.aerodynamics.Warning; import net.sf.openrocket.aerodynamics.WarningSet; -import net.sf.openrocket.util.SimpleStack; import org.xml.sax.Attributes; import org.xml.sax.SAXException; @@ -17,9 +18,9 @@ import org.xml.sax.helpers.DefaultHandler; class DelegatorHandler extends DefaultHandler { private final WarningSet warnings; - private final SimpleStack handlerStack = new SimpleStack(); - private final SimpleStack elementData = new SimpleStack(); - private final SimpleStack> elementAttributes = new SimpleStack>(); + private final Deque handlerStack = new ArrayDeque(); + private final Deque elementData = new ArrayDeque(); + private final Deque> elementAttributes = new ArrayDeque>(); // Ignore all elements as long as ignore > 0 diff --git a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java index 41c53a665..7f98a43ac 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java @@ -189,6 +189,10 @@ public class Rocket extends RocketComponent { return this.stageMap.values(); } + public AxialStage getTopmostStage(){ + return (AxialStage) getChild(0); + } + private int getNewStageNumber() { int guess = 0; while (stageMap.containsKey(guess)) { diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index bb424a042..88c0f997d 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -4,6 +4,7 @@ import java.util.Collection; import java.util.EventObject; import java.util.Iterator; import java.util.List; +import java.util.Stack; import java.util.NoSuchElementException; import org.slf4j.Logger; @@ -23,7 +24,6 @@ import net.sf.openrocket.util.Invalidator; import net.sf.openrocket.util.LineStyle; import net.sf.openrocket.util.MathUtil; import net.sf.openrocket.util.SafetyMutex; -import net.sf.openrocket.util.SimpleStack; import net.sf.openrocket.util.StateChangeListener; import net.sf.openrocket.util.UniqueID; @@ -2029,7 +2029,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab */ private static class RocketComponentIterator implements Iterator { // Stack holds iterators which still have some components left. - private final SimpleStack> iteratorStack = new SimpleStack>(); + private final Stack> iteratorStack = new Stack>(); private final Rocket root; private final int treeModID; diff --git a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java index 44b849ae8..5afb89a03 100644 --- a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java +++ b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java @@ -1,6 +1,8 @@ package net.sf.openrocket.simulation; +import java.util.ArrayList; import java.util.List; +import java.util.Stack; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,7 +30,6 @@ import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.MathUtil; import net.sf.openrocket.util.Pair; -import net.sf.openrocket.util.SimpleStack; public class BasicEventSimulationEngine implements SimulationEngine { @@ -55,7 +56,10 @@ public class BasicEventSimulationEngine implements SimulationEngine { private FlightConfigurationID fcid; - private SimpleStack stages = new SimpleStack(); + // was a stack, but parallel staging breaks that + protected Stack stages = new Stack(); +// protected ArrayList burningStages = new ArrayList(); +// protected ArrayList carriedStages = new ArrayList(); @Override diff --git a/core/src/net/sf/openrocket/util/SimpleStack.java b/core/src/net/sf/openrocket/util/SimpleStack.java deleted file mode 100644 index 91915c5b9..000000000 --- a/core/src/net/sf/openrocket/util/SimpleStack.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.sf.openrocket.util; - -import java.util.NoSuchElementException; -/** - * SimpleStack implementation backed by an ArrayList. - * - */ -public class SimpleStack extends ArrayList { - - public void push( T value ) { - this.add(value); - } - - public T peek() { - if ( size() <= 0 ) { - return null; - } - return this.get( size() -1 ); - } - - public T pop() { - if ( size() <= 0 ) { - throw new NoSuchElementException(); - } - T value = this.remove( size() -1 ); - return value; - } - - public String toString() { - StringBuilder sb = new StringBuilder("SimpleStack count=" + size() + "\n"); - for( T element: this ) { - sb.append(" ").append(element.toString()); - } - return sb.toString(); - } -} diff --git a/core/test/net/sf/openrocket/util/SimpleStackTest.java b/core/test/net/sf/openrocket/util/SimpleStackTest.java deleted file mode 100644 index 16cd312be..000000000 --- a/core/test/net/sf/openrocket/util/SimpleStackTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.sf.openrocket.util; - -import java.util.NoSuchElementException; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -import org.junit.Test; - -public class SimpleStackTest { - - @Test(expected=NoSuchElementException.class) - public void testEmptyStack() { - SimpleStack s = new SimpleStack(); - - assertNull(s.peek()); - - s.pop(); - } - - @Test - public void testPushAndPop() { - - SimpleStack s = new SimpleStack(); - - for( int i = 0; i< 10; i++ ) { - s.push(i); - assertEquals(i+1, s.size()); - } - - for( int i=9; i>= 0; i-- ) { - assertEquals( i, s.peek().intValue() ); - Integer val = s.pop(); - assertEquals( i, val.intValue() ); - assertEquals( i, s.size() ); - } - - assertNull( s.peek() ); - assertEquals( 0, s.size() ); - - } - -}