diff --git a/src/main/java/de/ph87/electro/circuit/Circuit.java b/src/main/java/de/ph87/electro/circuit/Circuit.java index 54f6825..bad4971 100644 --- a/src/main/java/de/ph87/electro/circuit/Circuit.java +++ b/src/main/java/de/ph87/electro/circuit/Circuit.java @@ -1,11 +1,12 @@ package de.ph87.electro.circuit; -import de.ph87.electro.circuit.part.PartDto; import de.ph87.electro.circuit.part.Junction; import de.ph87.electro.circuit.part.Orientation; import de.ph87.electro.circuit.part.Part; -import de.ph87.electro.circuit.part.impl.*; +import de.ph87.electro.circuit.part.PartDto; +import de.ph87.electro.circuit.part.parts.*; import lombok.NoArgsConstructor; +import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import java.awt.*; @@ -23,14 +24,21 @@ public class Circuit { private final List parts = new ArrayList<>(); + private final List wires = new ArrayList<>(); + public Circuit(final CircuitDto dto) { - final List junctions = new ArrayList<>(); for (PartDto partDto : dto.getParts()) { final Part part = Part.of(partDto); - partAdd(part); - junctions.addAll(part.getJunctions()); + if (!isFree(part.getPosition())) { + throw new RuntimeException(); + } + parts.add(part); + } + for (final WireDto wire : dto.getWires()) { + final Junction a = findJunctionByUuid(wire.getA()).orElseThrow(); + final Junction b = findJunctionByUuid(wire.getB()).orElseThrow(); + wires.add(new Wire(a, b)); } - parts.forEach(part -> part.link(junctions)); } public PartBattery addBattery(final String name, final int x, final int y, final Orientation orientation, final double voltage) { @@ -64,8 +72,7 @@ public class Circuit { } public void connect(final Junction a, final Junction b) { - a.getDestinations().add(b); - b.getDestinations().add(a); + wires.add(new Wire(a, b)); evaluateAndRender(); } @@ -79,18 +86,8 @@ public class Circuit { return parts.stream().filter(part -> part instanceof PartBattery).map(part -> (PartBattery) part); } - public List getWires() { - final List wires = new ArrayList<>(); - for (final Part part : parts) { - for (final Junction junction : part.getJunctions()) { - for (final Junction destination : junction.getDestinations()) { - if (wires.stream().noneMatch(wire -> wire.matches(junction, destination))) { - wires.add(new Wire(junction, destination)); - } - } - } - } - return wires; + public Stream streamWires() { + return wires.stream(); } public void partAdd(final Part part) { @@ -133,8 +130,22 @@ public class Circuit { return findPart(point).flatMap(part -> part.findJunction(point)); } + public Optional findJunctionByUuid(@NonNull final String junctionUuid) { + return parts.stream().map(part -> part.findJunctionByUuid(junctionUuid)).filter(Optional::isPresent).map(Optional::get).findFirst(); + } + public Optional findWireByPoint(final Point point) { - return getWires().stream().filter(wire -> wire.intersects(point)).findFirst(); + return wires.stream().filter(wire -> wire.intersects(point)).findFirst(); + } + + public void removeWire(final Wire wire) { + if (!wires.contains(wire)) { + throw new RuntimeException(); + } + wires.remove(wire); + wire.getA().getWires().remove(wire); + wire.getB().getWires().remove(wire); + evaluateAndRender(); } } diff --git a/src/main/java/de/ph87/electro/circuit/CircuitDto.java b/src/main/java/de/ph87/electro/circuit/CircuitDto.java index ad4915f..a48cf24 100644 --- a/src/main/java/de/ph87/electro/circuit/CircuitDto.java +++ b/src/main/java/de/ph87/electro/circuit/CircuitDto.java @@ -14,8 +14,11 @@ public class CircuitDto { private List parts; + private List wires; + public CircuitDto(final Circuit circuit) { this.parts = circuit.streamParts().map(PartDto::of).toList(); + this.wires = circuit.streamWires().map(WireDto::new).toList(); } } diff --git a/src/main/java/de/ph87/electro/circuit/CircuitPanel.java b/src/main/java/de/ph87/electro/circuit/CircuitPanel.java index 948c31d..9fdf436 100644 --- a/src/main/java/de/ph87/electro/circuit/CircuitPanel.java +++ b/src/main/java/de/ph87/electro/circuit/CircuitPanel.java @@ -51,14 +51,14 @@ public class CircuitPanel extends JPanel { } private void drawWires(final Graphics2D g) { - for (final Wire wire : circuit.getWires()) { + circuit.streamWires().forEach(wire -> { final Point a = wire.getA().getAbsolute(); final Point b = wire.getB().getAbsolute(); g.setColor(wire.getA().getColor()); g.setStroke(WIRE_STROKE); g.drawLine(a.x, a.y, b.x, b.y); - } + }); } } diff --git a/src/main/java/de/ph87/electro/circuit/CircuitPanelDropTarget.java b/src/main/java/de/ph87/electro/circuit/CircuitPanelDropTarget.java index d89e59c..32cfc38 100644 --- a/src/main/java/de/ph87/electro/circuit/CircuitPanelDropTarget.java +++ b/src/main/java/de/ph87/electro/circuit/CircuitPanelDropTarget.java @@ -1,7 +1,7 @@ package de.ph87.electro.circuit; import de.ph87.electro.circuit.part.Part; -import de.ph87.electro.circuit.part.impl.*; +import de.ph87.electro.circuit.part.parts.*; import de.ph87.electro.common.AbstractDropTarget; import java.awt.*; diff --git a/src/main/java/de/ph87/electro/circuit/CircuitPanelMouseAdapter.java b/src/main/java/de/ph87/electro/circuit/CircuitPanelMouseAdapter.java index 820fd1e..4992556 100644 --- a/src/main/java/de/ph87/electro/circuit/CircuitPanelMouseAdapter.java +++ b/src/main/java/de/ph87/electro/circuit/CircuitPanelMouseAdapter.java @@ -45,10 +45,7 @@ class CircuitPanelMouseAdapter extends MouseAdapter { if (e.getButton() == BUTTON3) { final Optional wireOptional = circuit.findWireByPoint(e.getPoint()); if (wireOptional.isPresent()) { - final Wire wire = wireOptional.get(); - wire.getA().getDestinations().remove(wire.getB()); - wire.getB().getDestinations().remove(wire.getA()); - circuit.evaluateAndRender(); + circuit.removeWire(wireOptional.get()); circuitPanel.repaint(); return; } diff --git a/src/main/java/de/ph87/electro/circuit/Wire.java b/src/main/java/de/ph87/electro/circuit/Wire.java index 1f39149..43ca26a 100644 --- a/src/main/java/de/ph87/electro/circuit/Wire.java +++ b/src/main/java/de/ph87/electro/circuit/Wire.java @@ -2,6 +2,7 @@ package de.ph87.electro.circuit; import de.ph87.electro.circuit.part.Junction; import lombok.Data; +import lombok.NonNull; import java.awt.*; @@ -10,17 +11,17 @@ import static de.ph87.electro.CONFIG.WIRE_STROKE_BACK2; @Data public class Wire { + @NonNull private final Junction a; + @NonNull private final Junction b; - public Wire(final Junction a, final Junction b) { + public Wire(@NonNull final Junction a, @NonNull final Junction b) { this.a = a; this.b = b; - } - - public boolean matches(final Junction x, final Junction y) { - return (a == x && b == y) || (a == y && b == x); + a.getWires().add(this); + b.getWires().add(this); } public boolean intersects(final Point p) { @@ -40,4 +41,13 @@ public class Wire { return p.distance(closestX, closestY) <= WIRE_STROKE_BACK2.getLineWidth(); } + public Junction getOpposite(final Junction junction) { + if (a == junction) { + return b; + } else if (b == junction) { + return a; + } + throw new RuntimeException(); + } + } diff --git a/src/main/java/de/ph87/electro/circuit/WireDto.java b/src/main/java/de/ph87/electro/circuit/WireDto.java new file mode 100644 index 0000000..6ad00db --- /dev/null +++ b/src/main/java/de/ph87/electro/circuit/WireDto.java @@ -0,0 +1,22 @@ +package de.ph87.electro.circuit; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.NonNull; +import lombok.ToString; + +@Getter +@ToString +@NoArgsConstructor +public class WireDto { + + private String a; + + private String b; + + public WireDto(@NonNull final Wire wire) { + this.a = wire.getA().getUuid(); + this.b = wire.getB().getUuid(); + } + +} diff --git a/src/main/java/de/ph87/electro/circuit/part/Junction.java b/src/main/java/de/ph87/electro/circuit/part/Junction.java index 40c7a27..77560c1 100644 --- a/src/main/java/de/ph87/electro/circuit/part/Junction.java +++ b/src/main/java/de/ph87/electro/circuit/part/Junction.java @@ -1,6 +1,7 @@ package de.ph87.electro.circuit.part; import de.ph87.electro.circuit.ShortCircuit; +import de.ph87.electro.circuit.Wire; import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -17,8 +18,6 @@ import static de.ph87.electro.CONFIG.*; @ToString(onlyExplicitlyIncluded = true) public class Junction { - private final JunctionDto _dto; - @ToString.Include private final String uuid; @@ -29,7 +28,7 @@ public class Junction { private final Point position; - private final Set destinations = new HashSet<>(); + private final Set wires = new HashSet<>(); @Setter @ToString.Include @@ -40,7 +39,7 @@ public class Junction { @ToString.Include @SuppressWarnings("unused") // lombok toString public List destinations() { - return destinations.stream().map(Junction::getUuid).toList(); + return wires.stream().map(wire -> wire.getOpposite(this)).map(Junction::getUuid).toList(); } public Junction(final Part owner, final String name, final Point position) { @@ -48,7 +47,6 @@ public class Junction { this.uuid = UUID.randomUUID().toString(); this.name = name; this.position = position; - this._dto = null; } public Junction(final Part owner, final JunctionDto dto, final Point position) { @@ -56,15 +54,6 @@ public class Junction { this.uuid = dto.getUuid(); this.name = dto.getName(); this.position = position; - this._dto = dto; - } - - public void link(final List junctions) { - for (final String otherUuid : _dto.getDestinations()) { - final Junction other = junctions.stream().filter(junction -> junction.getUuid().equals(otherUuid)).findFirst().orElseThrow(); - destinations.add(other); - other.destinations.add(this); - } } public void reset() { @@ -86,8 +75,8 @@ public class Junction { color = VOLTAGE_LOW_COLOR; } owner.propagate(this); - for (Junction junction : destinations) { - junction.propagate(newVoltage); + for (Wire wire : wires) { + wire.getOpposite(this).propagate(newVoltage); } return; } diff --git a/src/main/java/de/ph87/electro/circuit/part/JunctionDto.java b/src/main/java/de/ph87/electro/circuit/part/JunctionDto.java index 90db95d..310996d 100644 --- a/src/main/java/de/ph87/electro/circuit/part/JunctionDto.java +++ b/src/main/java/de/ph87/electro/circuit/part/JunctionDto.java @@ -4,8 +4,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.ToString; -import java.util.List; - @Getter @ToString @NoArgsConstructor @@ -15,12 +13,9 @@ public class JunctionDto { private String name; - private List destinations; - public JunctionDto(final Junction junction) { this.uuid = junction.getUuid(); this.name = junction.getName(); - this.destinations = junction.getDestinations().stream().map(Junction::getUuid).toList(); } } diff --git a/src/main/java/de/ph87/electro/circuit/part/Part.java b/src/main/java/de/ph87/electro/circuit/part/Part.java index bea25c1..8f873cb 100644 --- a/src/main/java/de/ph87/electro/circuit/part/Part.java +++ b/src/main/java/de/ph87/electro/circuit/part/Part.java @@ -1,7 +1,7 @@ package de.ph87.electro.circuit.part; import de.ph87.electro.circuit.ShortCircuit; -import de.ph87.electro.circuit.part.impl.*; +import de.ph87.electro.circuit.part.parts.*; import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -51,10 +51,6 @@ public abstract class Part { this.orientation = dto.getOrientation(); } - public void link(final List junctions) { - junctions.forEach(junction -> junction.link(junctions)); - } - protected Junction newJunction(final Part owner, final String name, final int x, final int y) { return addJunction(new Junction(owner, name, new Point(x, y))); } @@ -201,4 +197,8 @@ public abstract class Part { }; } + public Optional findJunctionByUuid(final String junctionUuid) { + return junctions.stream().filter(junction -> junction.getUuid().equals(junctionUuid)).findFirst(); + } + } diff --git a/src/main/java/de/ph87/electro/circuit/part/PartDto.java b/src/main/java/de/ph87/electro/circuit/part/PartDto.java index fa83dc7..f5b095e 100644 --- a/src/main/java/de/ph87/electro/circuit/part/PartDto.java +++ b/src/main/java/de/ph87/electro/circuit/part/PartDto.java @@ -1,7 +1,7 @@ package de.ph87.electro.circuit.part; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import de.ph87.electro.circuit.part.impl.*; +import de.ph87.electro.circuit.part.parts.*; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.ToString; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartBattery.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartBattery.java similarity index 98% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartBattery.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartBattery.java index 29a1ffd..adbed24 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartBattery.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartBattery.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.ShortCircuit; import de.ph87.electro.circuit.part.Junction; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartBatteryDto.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartBatteryDto.java similarity index 93% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartBatteryDto.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartBatteryDto.java index f91ab09..9a99d9a 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartBatteryDto.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartBatteryDto.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.JunctionDto; import de.ph87.electro.circuit.part.PartDto; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionCorner.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionCorner.java similarity index 95% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionCorner.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionCorner.java index 0b78329..6686cec 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionCorner.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionCorner.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.Junction; import de.ph87.electro.circuit.part.Orientation; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionCornerDto.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionCornerDto.java similarity index 91% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionCornerDto.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionCornerDto.java index 12573ca..aa1f3d7 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionCornerDto.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionCornerDto.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.JunctionDto; import de.ph87.electro.circuit.part.PartDto; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionEdge.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionEdge.java similarity index 95% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionEdge.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionEdge.java index f9c1a06..2eea51e 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionEdge.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionEdge.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.Junction; import de.ph87.electro.circuit.part.Orientation; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionEdgeDto.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionEdgeDto.java similarity index 91% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionEdgeDto.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionEdgeDto.java index 25d9c87..cba538e 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionEdgeDto.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionEdgeDto.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.JunctionDto; import de.ph87.electro.circuit.part.PartDto; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionMiddle.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionMiddle.java similarity index 94% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionMiddle.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionMiddle.java index 74cac50..319b301 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionMiddle.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionMiddle.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.Junction; import de.ph87.electro.circuit.part.Orientation; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionMiddleDto.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionMiddleDto.java similarity index 90% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionMiddleDto.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionMiddleDto.java index 7ac77f3..1d70a58 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionMiddleDto.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartJunctionMiddleDto.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.JunctionDto; import de.ph87.electro.circuit.part.PartDto; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartLight.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartLight.java similarity index 98% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartLight.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartLight.java index 0496d8e..8dad604 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartLight.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartLight.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.Junction; import de.ph87.electro.circuit.part.Orientation; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartLightDto.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartLightDto.java similarity index 94% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartLightDto.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartLightDto.java index b90cc6e..347acd9 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartLightDto.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartLightDto.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.JunctionDto; import de.ph87.electro.circuit.part.PartDto; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x1.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x1.java similarity index 97% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x1.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x1.java index ccd2393..4461f35 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x1.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x1.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.ShortCircuit; import de.ph87.electro.circuit.part.Junction; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x1Dto.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x1Dto.java similarity index 93% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x1Dto.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x1Dto.java index 81a9ef9..bce4064 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x1Dto.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x1Dto.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.JunctionDto; import de.ph87.electro.circuit.part.PartDto; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x2.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x2.java similarity index 97% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x2.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x2.java index 59b9bba..ba548d2 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x2.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x2.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.ShortCircuit; import de.ph87.electro.circuit.part.Junction; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x2Dto.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x2Dto.java similarity index 94% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x2Dto.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x2Dto.java index 31131be..1b7880b 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitch1x2Dto.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitch1x2Dto.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.JunctionDto; import de.ph87.electro.circuit.part.PartDto; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitchCross.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitchCross.java similarity index 98% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartSwitchCross.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartSwitchCross.java index 577e4ae..9c50842 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitchCross.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitchCross.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.ShortCircuit; import de.ph87.electro.circuit.part.Junction; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitchCrossDto.java b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitchCrossDto.java similarity index 94% rename from src/main/java/de/ph87/electro/circuit/part/impl/PartSwitchCrossDto.java rename to src/main/java/de/ph87/electro/circuit/part/parts/PartSwitchCrossDto.java index b7254b8..2f3bd71 100644 --- a/src/main/java/de/ph87/electro/circuit/part/impl/PartSwitchCrossDto.java +++ b/src/main/java/de/ph87/electro/circuit/part/parts/PartSwitchCrossDto.java @@ -1,4 +1,4 @@ -package de.ph87.electro.circuit.part.impl; +package de.ph87.electro.circuit.part.parts; import de.ph87.electro.circuit.part.JunctionDto; import de.ph87.electro.circuit.part.PartDto; diff --git a/src/main/java/de/ph87/electro/demo/DemoAll.java b/src/main/java/de/ph87/electro/demo/DemoAll.java index 8f54d27..4ed45bd 100644 --- a/src/main/java/de/ph87/electro/demo/DemoAll.java +++ b/src/main/java/de/ph87/electro/demo/DemoAll.java @@ -2,7 +2,7 @@ package de.ph87.electro.demo; import de.ph87.electro.circuit.Circuit; import de.ph87.electro.circuit.part.Orientation; -import de.ph87.electro.circuit.part.impl.*; +import de.ph87.electro.circuit.part.parts.*; import static de.ph87.electro.CONFIG.BULB_VOLTAGE_MIN; import static de.ph87.electro.CONFIG.VOLTAGE; diff --git a/src/main/java/de/ph87/electro/sidebar/Sidebar.java b/src/main/java/de/ph87/electro/sidebar/Sidebar.java index 9fea635..d4e68a0 100644 --- a/src/main/java/de/ph87/electro/sidebar/Sidebar.java +++ b/src/main/java/de/ph87/electro/sidebar/Sidebar.java @@ -1,7 +1,7 @@ package de.ph87.electro.sidebar; import de.ph87.electro.circuit.part.Part; -import de.ph87.electro.circuit.part.impl.*; +import de.ph87.electro.circuit.part.parts.*; import javax.swing.*; import java.awt.*; diff --git a/src/test/java/de/ph87/electro/circuit/BatteryLightTest.java b/src/test/java/de/ph87/electro/circuit/BatteryLightTest.java index e3ffa39..d768207 100644 --- a/src/test/java/de/ph87/electro/circuit/BatteryLightTest.java +++ b/src/test/java/de/ph87/electro/circuit/BatteryLightTest.java @@ -1,8 +1,8 @@ package de.ph87.electro.circuit; import de.ph87.electro.circuit.part.Orientation; -import de.ph87.electro.circuit.part.impl.PartBattery; -import de.ph87.electro.circuit.part.impl.PartLight; +import de.ph87.electro.circuit.part.parts.PartBattery; +import de.ph87.electro.circuit.part.parts.PartLight; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/src/test/java/de/ph87/electro/circuit/BatterySwitcher1x1Test.java b/src/test/java/de/ph87/electro/circuit/BatterySwitcher1x1Test.java index 081a1bf..f4fadca 100644 --- a/src/test/java/de/ph87/electro/circuit/BatterySwitcher1x1Test.java +++ b/src/test/java/de/ph87/electro/circuit/BatterySwitcher1x1Test.java @@ -1,9 +1,9 @@ package de.ph87.electro.circuit; import de.ph87.electro.circuit.part.Orientation; -import de.ph87.electro.circuit.part.impl.PartBattery; -import de.ph87.electro.circuit.part.impl.PartLight; -import de.ph87.electro.circuit.part.impl.PartSwitch1x1; +import de.ph87.electro.circuit.part.parts.PartBattery; +import de.ph87.electro.circuit.part.parts.PartLight; +import de.ph87.electro.circuit.part.parts.PartSwitch1x1; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/src/test/java/de/ph87/electro/circuit/BatterySwitcher1x2Test.java b/src/test/java/de/ph87/electro/circuit/BatterySwitcher1x2Test.java index 290461d..4831a60 100644 --- a/src/test/java/de/ph87/electro/circuit/BatterySwitcher1x2Test.java +++ b/src/test/java/de/ph87/electro/circuit/BatterySwitcher1x2Test.java @@ -1,9 +1,9 @@ package de.ph87.electro.circuit; import de.ph87.electro.circuit.part.Orientation; -import de.ph87.electro.circuit.part.impl.PartBattery; -import de.ph87.electro.circuit.part.impl.PartLight; -import de.ph87.electro.circuit.part.impl.PartSwitch1x2; +import de.ph87.electro.circuit.part.parts.PartBattery; +import de.ph87.electro.circuit.part.parts.PartLight; +import de.ph87.electro.circuit.part.parts.PartSwitch1x2; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/src/test/java/de/ph87/electro/circuit/BatterySwitcher2x2Test.java b/src/test/java/de/ph87/electro/circuit/BatterySwitcher2x2Test.java index 9467bb8..ccb1d70 100644 --- a/src/test/java/de/ph87/electro/circuit/BatterySwitcher2x2Test.java +++ b/src/test/java/de/ph87/electro/circuit/BatterySwitcher2x2Test.java @@ -1,9 +1,9 @@ package de.ph87.electro.circuit; import de.ph87.electro.circuit.part.Orientation; -import de.ph87.electro.circuit.part.impl.PartBattery; -import de.ph87.electro.circuit.part.impl.PartLight; -import de.ph87.electro.circuit.part.impl.PartSwitch1x2; +import de.ph87.electro.circuit.part.parts.PartBattery; +import de.ph87.electro.circuit.part.parts.PartLight; +import de.ph87.electro.circuit.part.parts.PartSwitch1x2; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/src/test/java/de/ph87/electro/circuit/BatterySwitcherCrossTest.java b/src/test/java/de/ph87/electro/circuit/BatterySwitcherCrossTest.java index 3b720a6..7fb731f 100644 --- a/src/test/java/de/ph87/electro/circuit/BatterySwitcherCrossTest.java +++ b/src/test/java/de/ph87/electro/circuit/BatterySwitcherCrossTest.java @@ -1,10 +1,10 @@ package de.ph87.electro.circuit; import de.ph87.electro.circuit.part.Orientation; -import de.ph87.electro.circuit.part.impl.PartBattery; -import de.ph87.electro.circuit.part.impl.PartLight; -import de.ph87.electro.circuit.part.impl.PartSwitch1x2; -import de.ph87.electro.circuit.part.impl.PartSwitchCross; +import de.ph87.electro.circuit.part.parts.PartBattery; +import de.ph87.electro.circuit.part.parts.PartLight; +import de.ph87.electro.circuit.part.parts.PartSwitch1x2; +import de.ph87.electro.circuit.part.parts.PartSwitchCross; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/src/test/java/de/ph87/electro/circuit/CircuitServiceTest.java b/src/test/java/de/ph87/electro/circuit/CircuitServiceTest.java index 3ceb9a3..1d953a5 100644 --- a/src/test/java/de/ph87/electro/circuit/CircuitServiceTest.java +++ b/src/test/java/de/ph87/electro/circuit/CircuitServiceTest.java @@ -3,8 +3,8 @@ package de.ph87.electro.circuit; import de.ph87.electro.circuit.part.Junction; import de.ph87.electro.circuit.part.Orientation; import de.ph87.electro.circuit.part.Part; -import de.ph87.electro.circuit.part.impl.PartBattery; -import de.ph87.electro.circuit.part.impl.PartLight; +import de.ph87.electro.circuit.part.parts.PartBattery; +import de.ph87.electro.circuit.part.parts.PartLight; import org.junit.jupiter.api.Test; import java.io.ByteArrayInputStream; @@ -54,13 +54,16 @@ class CircuitServiceTest { assertEquals(originalJunction.getUuid(), reloadedJunction.getUuid()); assertEquals(originalJunction.getName(), reloadedJunction.getName()); assertEquals(originalJunction.getPosition(), reloadedJunction.getPosition()); - assertEquals(originalJunction.getDestinations().size(), reloadedJunction.getDestinations().size()); - for (final Junction originalDestination : originalJunction.getDestinations()) { - System.out.printf(" - Destination: %s\n", originalDestination.getUuid()); - final Junction reloadedDestination = reloadedJunction.getDestinations().stream().filter(destination -> destination.getUuid().equals(originalDestination.getUuid())).findFirst().orElseThrow(); - assertEquals(originalDestination.getUuid(), reloadedDestination.getUuid()); - assertEquals(originalDestination.getOwner().getUuid(), reloadedDestination.getOwner().getUuid()); - } + assertEquals(originalJunction.getWires().size(), reloadedJunction.getWires().size()); + originalJunction.getWires().stream() + .map(originalWire -> originalWire.getOpposite(originalJunction)) + .forEach(originalDestination -> { + System.out.printf(" - Destinations: %s\n", originalDestination.getUuid()); + final Junction reloadedDestination = reloadedJunction.getWires().stream().map(wire -> wire.getOpposite(reloadedJunction)).filter(destination -> destination.getUuid().equals(originalDestination.getUuid())).findFirst().orElseThrow(); + assertEquals(originalDestination.getUuid(), reloadedDestination.getUuid()); + assertEquals(originalDestination.getOwner().getUuid(), reloadedDestination.getOwner().getUuid()); + } + ); } }); }