From 74868b10728aee0e85e4ff8af4073516b7590268 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Tue, 25 Jun 2019 11:23:43 +0200 Subject: [PATCH] Removed visitor pattern used for one test only --- .../logic/ui/am2900/TestableAm2901Impl.java | 82 ++++--------------- .../mograsim/logic/ui/model/ModelVisitor.java | 28 ------- .../mograsim/logic/ui/model/ViewModel.java | 8 +- .../mograsim/logic/ui/model/Visitable.java | 6 -- .../ui/model/components/GUIBitDisplay.java | 7 -- .../ui/model/components/GUIComponent.java | 3 +- .../ui/model/components/GUIManualSwitch.java | 7 -- .../components/SimpleRectangularGUIGate.java | 7 -- .../SimpleRectangularSubmodelComponent.java | 7 -- .../model/components/SubmodelInterface.java | 7 -- .../logic/ui/model/wires/GUIWire.java | 10 +-- .../logic/ui/model/wires/WireCrossPoint.java | 7 -- 12 files changed, 18 insertions(+), 161 deletions(-) delete mode 100644 net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ModelVisitor.java delete mode 100644 net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/Visitable.java diff --git a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java index a91ee18f..a6eb7910 100644 --- a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java +++ b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java @@ -5,7 +5,9 @@ import static org.junit.jupiter.api.Assertions.fail; import java.lang.reflect.Field; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedList; import java.util.Objects; +import java.util.Queue; import java.util.Set; import java.util.TreeSet; @@ -15,18 +17,14 @@ import net.mograsim.logic.core.timeline.Timeline; import net.mograsim.logic.core.types.Bit; import net.mograsim.logic.core.types.BitVector; import net.mograsim.logic.core.types.BitVector.BitVectorMutator; -import net.mograsim.logic.ui.model.ModelVisitor; import net.mograsim.logic.ui.model.ViewModel; import net.mograsim.logic.ui.model.ViewModelModifiable; import net.mograsim.logic.ui.model.components.GUIBitDisplay; import net.mograsim.logic.ui.model.components.GUIComponent; import net.mograsim.logic.ui.model.components.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.SimpleRectangularGUIGate; -import net.mograsim.logic.ui.model.components.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.components.SubmodelInterface; +import net.mograsim.logic.ui.model.components.SubmodelComponent; import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901; import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; import net.mograsim.logic.ui.modeladapter.LogicModelParameters; import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; @@ -45,9 +43,6 @@ public class TestableAm2901Impl implements TestableAm2901 private BitDisplay F_0, Cn_4, OVR, F3; private BitDisplay ORAMn, ORAMn_3, OQn, OQn_3; - private Set allWires; - private Set allComponents; - private Set wireDebugChangeSet; private boolean debugWires = false; public int debugEventThreshold = 10_000; @@ -136,11 +131,18 @@ public class TestableAm2901Impl implements TestableAm2901 C.switchOff(); // Debug code - allWires = new HashSet<>(); - allComponents = new HashSet<>(); - ModelAccumulator accumulator = new ModelAccumulator(); - accumulator.visit(viewModel); - allWires.forEach(w -> w.addRedrawListener(() -> + HashSet wiresIncludingSubmodels = new HashSet<>(); + Queue modelsToIterate = new LinkedList<>(); + modelsToIterate.add(viewModel); + while (modelsToIterate.size() > 0) + { + ViewModel model = modelsToIterate.poll(); + wiresIncludingSubmodels.addAll(model.getWires()); + for (GUIComponent comp : model.getComponents()) + if (comp instanceof SubmodelComponent) + modelsToIterate.offer(((SubmodelComponent) comp).submodel); + } + wiresIncludingSubmodels.forEach(w -> w.addRedrawListener(() -> { if (debugWires) { @@ -345,58 +347,4 @@ public class TestableAm2901Impl implements TestableAm2901 } return mutator.toBitVector(); } - - class ModelAccumulator implements ModelVisitor - { - @Override - public void visit(GUIWire w) - { - allWires.add(w); - } - - @Override - public void visit(SimpleRectangularGUIGate simpleRectangularGUIGate) - { - allComponents.add(simpleRectangularGUIGate); - } - - @Override - public void visit(SimpleRectangularSubmodelComponent simpleRectangularSubmodelComponent) - { - allComponents.add(simpleRectangularSubmodelComponent); - simpleRectangularSubmodelComponent.getWires().forEach(w -> w.accept(this)); - simpleRectangularSubmodelComponent.getComponents().forEach(w -> w.accept(this)); - } - - @Override - public void visit(WireCrossPoint wireCrossPoint) - { - // nothing - } - - @Override - public void visit(GUIBitDisplay guiBitDisplay) - { - allComponents.add(guiBitDisplay); - } - - @Override - public void visit(GUIManualSwitch guiManualSwitch) - { - allComponents.add(guiManualSwitch); - } - - @Override - public void visit(SubmodelInterface submodelInterface) - { - // nothing - } - - @Override - public void visit(ViewModel viewModel) - { - viewModel.getWires().forEach(w -> w.accept(this)); - viewModel.getComponents().forEach(w -> w.accept(this)); - } - } } diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ModelVisitor.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ModelVisitor.java deleted file mode 100644 index 668d724a..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ModelVisitor.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.mograsim.logic.ui.model; - -import net.mograsim.logic.ui.model.components.GUIBitDisplay; -import net.mograsim.logic.ui.model.components.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.SimpleRectangularGUIGate; -import net.mograsim.logic.ui.model.components.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.components.SubmodelInterface; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; - -public interface ModelVisitor -{ - void visit(GUIWire w); - - void visit(SimpleRectangularGUIGate simpleRectangularGUIGate); - - void visit(SimpleRectangularSubmodelComponent simpleRectangularSubmodelComponent); - - void visit(WireCrossPoint wireCrossPoint); - - void visit(GUIBitDisplay guiBitDisplay); - - void visit(GUIManualSwitch guiManualSwitch); - - void visit(SubmodelInterface submodelInterface); - - void visit(ViewModel viewModel); -} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModel.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModel.java index 445810a0..1f69acf3 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModel.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModel.java @@ -8,7 +8,7 @@ import java.util.function.Consumer; import net.mograsim.logic.ui.model.components.GUIComponent; import net.mograsim.logic.ui.model.wires.GUIWire; -public class ViewModel implements Visitable +public class ViewModel { private final List components; private final List componentsUnmodifiable; @@ -105,12 +105,6 @@ public class ViewModel implements Visitable return wiresUnmodifiable; } - @Override - public void accept(ModelVisitor mv) - { - mv.visit(this); - } - // @formatter:off public void addComponentAddedListener (Consumer listener) {componentAddedListeners .add (listener);} public void addComponentRemovedListener (Consumer listener) {componentRemovedListeners.add (listener);} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/Visitable.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/Visitable.java deleted file mode 100644 index b9d457cd..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/Visitable.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.mograsim.logic.ui.model; - -public interface Visitable -{ - void accept(ModelVisitor mv); -} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIBitDisplay.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIBitDisplay.java index c4d8df38..82b3bbba 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIBitDisplay.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIBitDisplay.java @@ -8,7 +8,6 @@ import net.mograsim.logic.core.LogicObservable; import net.mograsim.logic.core.LogicObserver; import net.mograsim.logic.core.components.BitDisplay; import net.mograsim.logic.core.types.BitVectorFormatter; -import net.mograsim.logic.ui.model.ModelVisitor; import net.mograsim.logic.ui.model.ViewModelModifiable; import net.mograsim.logic.ui.model.wires.Pin; import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; @@ -77,12 +76,6 @@ public class GUIBitDisplay extends GUIComponent return inputPin; } - @Override - public void accept(ModelVisitor mv) - { - mv.visit(this); - } - static { ViewLogicModelAdapter.addComponentAdapter(new BitDisplayAdapter()); diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java index 2c8324af..6e566c48 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java @@ -12,7 +12,6 @@ import java.util.function.Supplier; import net.haspamelodica.swt.helper.gcs.GeneralGC; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.Visitable; import net.mograsim.logic.ui.model.wires.Pin; /** @@ -21,7 +20,7 @@ import net.mograsim.logic.ui.model.wires.Pin; * * @author Daniel Kirschten */ -public abstract class GUIComponent implements Visitable +public abstract class GUIComponent { /** * The model this component is a part of. diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIManualSwitch.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIManualSwitch.java index 563f9284..43c71990 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIManualSwitch.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIManualSwitch.java @@ -9,7 +9,6 @@ import net.mograsim.logic.core.LogicObserver; import net.mograsim.logic.core.components.ManualSwitch; import net.mograsim.logic.core.types.BitVectorFormatter; import net.mograsim.logic.core.wires.Wire.ReadEnd; -import net.mograsim.logic.ui.model.ModelVisitor; import net.mograsim.logic.ui.model.ViewModelModifiable; import net.mograsim.logic.ui.model.wires.Pin; import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; @@ -90,12 +89,6 @@ public class GUIManualSwitch extends GUIComponent return outputPin; } - @Override - public void accept(ModelVisitor mv) - { - mv.visit(this); - } - static { ViewLogicModelAdapter.addComponentAdapter(new ManualSwitchAdapter()); diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularGUIGate.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularGUIGate.java index 7beafe12..d263f6de 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularGUIGate.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularGUIGate.java @@ -8,7 +8,6 @@ import net.haspamelodica.swt.helper.gcs.GeneralGC; import net.haspamelodica.swt.helper.swtobjectwrappers.Font; import net.haspamelodica.swt.helper.swtobjectwrappers.Point; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ModelVisitor; import net.mograsim.logic.ui.model.ViewModelModifiable; import net.mograsim.logic.ui.model.wires.MovablePin; import net.mograsim.logic.ui.model.wires.Pin; @@ -83,10 +82,4 @@ public class SimpleRectangularGUIGate extends GUIComponent m.put(kLogicWidth, logicWidth); return m; } - - @Override - public void accept(ModelVisitor mv) - { - mv.visit(this); - } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java index 2fd94c6a..59d800a4 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java @@ -12,7 +12,6 @@ import net.haspamelodica.swt.helper.gcs.GeneralGC; import net.haspamelodica.swt.helper.swtobjectwrappers.Font; import net.haspamelodica.swt.helper.swtobjectwrappers.Point; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ModelVisitor; import net.mograsim.logic.ui.model.ViewModelModifiable; import net.mograsim.logic.ui.model.wires.MovablePin; import net.mograsim.logic.ui.model.wires.Pin; @@ -156,10 +155,4 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent throw new UnsupportedOperationException( "Can't set the size of a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead"); } - - @Override - public void accept(ModelVisitor mv) - { - mv.visit(this); - } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelInterface.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelInterface.java index d08c937f..8f448a80 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelInterface.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelInterface.java @@ -2,7 +2,6 @@ package net.mograsim.logic.ui.model.components; import net.haspamelodica.swt.helper.gcs.GeneralGC; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ModelVisitor; import net.mograsim.logic.ui.model.ViewModelModifiable; public class SubmodelInterface extends GUIComponent @@ -16,10 +15,4 @@ public class SubmodelInterface extends GUIComponent public void render(GeneralGC gc, Rectangle visibleRegion) {// nothing to do here } - - @Override - public void accept(ModelVisitor mv) - { - mv.visit(this); - } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java index e9204444..08b1d42e 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java @@ -13,16 +13,14 @@ import net.mograsim.logic.core.LogicObserver; import net.mograsim.logic.core.types.BitVectorFormatter; import net.mograsim.logic.core.wires.Wire.ReadEnd; import net.mograsim.logic.ui.ColorHelper; -import net.mograsim.logic.ui.model.ModelVisitor; import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.Visitable; /** * A wire connecting exactly two {@link Pin}s. * * @author Daniel Kirschten */ -public class GUIWire implements Visitable +public class GUIWire { /** * The model this wire is a part of. @@ -325,10 +323,4 @@ public class GUIWire implements Visitable { return "GUIWire [" + pin1 + "---" + pin2 + ", value=" + (end == null ? "null" : end.getValues()) + "]"; } - - @Override - public void accept(ModelVisitor mv) - { - mv.visit(this); - } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java index 22868ccf..f79cf9aa 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java @@ -9,7 +9,6 @@ import net.mograsim.logic.core.LogicObserver; import net.mograsim.logic.core.types.BitVectorFormatter; import net.mograsim.logic.core.wires.Wire.ReadEnd; import net.mograsim.logic.ui.ColorHelper; -import net.mograsim.logic.ui.model.ModelVisitor; import net.mograsim.logic.ui.model.ViewModelModifiable; import net.mograsim.logic.ui.model.components.GUIComponent; import net.mograsim.logic.ui.model.components.SimpleRectangularGUIGate; @@ -83,10 +82,4 @@ public class WireCrossPoint extends GUIComponent m.put(SimpleRectangularGUIGate.kLogicWidth, logicWidth); return m; } - - @Override - public void accept(ModelVisitor mv) - { - mv.visit(this); - } } \ No newline at end of file -- 2.17.1