diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractAcDcConverterAdder.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractAcDcConverterAdder.java index 7fac16d90b8..005cb0b8d11 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractAcDcConverterAdder.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractAcDcConverterAdder.java @@ -89,7 +89,7 @@ public T setConnectableBus1(String connectableBus1) { } protected TerminalExt checkAndGetTerminal1() { - return new TerminalBuilder(voltageLevel.getNetworkRef(), this, null, TerminalNumber.ONE) + return new TerminalBuilder(voltageLevel.getNetworkRef(), voltageLevel.getTopologyKind(), this, null, TerminalNumber.ONE) .setNode(node1) .setBus(bus1) .setConnectableBus(connectableBus1) @@ -113,7 +113,7 @@ public T setConnectableBus2(String connectableBus2) { protected Optional checkAndGetTerminal2() { if (hasTwoAcTerminals()) { - return Optional.of(new TerminalBuilder(voltageLevel.getNetworkRef(), this, null, TerminalNumber.TWO) + return Optional.of(new TerminalBuilder(voltageLevel.getNetworkRef(), voltageLevel.getTopologyKind(), this, null, TerminalNumber.TWO) .setNode(node2) .setBus(bus2) .setConnectableBus(connectableBus2) diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractBranchAdder.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractBranchAdder.java index 0380dae472e..c796bbfebdc 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractBranchAdder.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractBranchAdder.java @@ -54,7 +54,7 @@ public T setVoltageLevel1(String voltageLevelId1) { protected TerminalExt checkAndGetTerminal1() { VoltageLevelExt voltageLevel = checkAndGetVoltageLevel1(); - return new TerminalBuilder(voltageLevel.getNetworkRef(), this, ThreeSides.ONE, null) + return new TerminalBuilder(voltageLevel.getNetworkRef(), voltageLevel.getTopologyKind(), this, ThreeSides.ONE, null) .setNode(node1) .setBus(bus1) .setConnectableBus(connectableBus1) @@ -99,7 +99,7 @@ public T setVoltageLevel2(String voltageLevelId2) { protected TerminalExt checkAndGetTerminal2() { VoltageLevelExt voltageLevel = checkAndGetVoltageLevel2(); - return new TerminalBuilder(voltageLevel.getNetworkRef(), this, ThreeSides.TWO, null) + return new TerminalBuilder(voltageLevel.getNetworkRef(), voltageLevel.getTopologyKind(), this, ThreeSides.TWO, null) .setNode(node2) .setBus(bus2) .setConnectableBus(connectableBus2) diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractConnectable.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractConnectable.java index 1ba7bf77340..f0de476cf4c 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractConnectable.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractConnectable.java @@ -147,7 +147,7 @@ protected void move(TerminalExt oldTerminal, int node, String voltageLevelId) { } // create the new terminal and attach it to the given voltage level and to the connectable - TerminalExt terminalExt = new TerminalBuilder(voltageLevel.getNetworkRef(), this, oldTerminal.getSide(), oldTerminal.getTerminalNumber()) + TerminalExt terminalExt = new TerminalBuilder(voltageLevel.getNetworkRef(), voltageLevel.getTopologyKind(), this, oldTerminal.getSide(), oldTerminal.getTerminalNumber()) .setNode(node) .build(); @@ -169,7 +169,7 @@ protected void move(TerminalExt oldTerminal, String busId, boolean connected) { } // create the new terminal and attach it to the voltage level of the given bus and links it to the connectable - TerminalExt terminalExt = new TerminalBuilder(((VoltageLevelExt) bus.getVoltageLevel()).getNetworkRef(), this, oldTerminal.getSide(), oldTerminal.getTerminalNumber()) + TerminalExt terminalExt = new TerminalBuilder(((VoltageLevelExt) bus.getVoltageLevel()).getNetworkRef(), bus.getVoltageLevel().getTopologyKind(), this, oldTerminal.getSide(), oldTerminal.getTerminalNumber()) .setBus(connected ? bus.getId() : null) .setConnectableBus(bus.getId()) .build(); diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractInjectionAdder.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractInjectionAdder.java index f1aa10c3905..342be8a7908 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractInjectionAdder.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractInjectionAdder.java @@ -48,7 +48,7 @@ protected Ref getNetworkRef() { } protected TerminalExt checkAndGetTerminal() { - return new TerminalBuilder(getNetworkRef(), this, null, null) + return new TerminalBuilder(getNetworkRef(), voltageLevel.getTopologyKind(), this, null, null) .setNode(node) .setBus(bus) .setConnectableBus(connectableBus) diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TerminalBuilder.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TerminalBuilder.java index aabaf3f7dbc..069d56af306 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TerminalBuilder.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TerminalBuilder.java @@ -12,6 +12,7 @@ import com.powsybl.commons.ref.Ref; import com.powsybl.iidm.network.Validable; import com.powsybl.iidm.network.ValidationException; +import com.powsybl.iidm.network.TopologyKind; import java.util.Objects; @@ -29,15 +30,18 @@ class TerminalBuilder { private final TerminalNumber terminalNumber; + private final TopologyKind topologyKind; + private Integer node; private String bus; private String connectableBus; - TerminalBuilder(Ref network, Validable validable, ThreeSides side, TerminalNumber terminalNumber) { + TerminalBuilder(Ref network, TopologyKind topologyKind, Validable validable, ThreeSides side, TerminalNumber terminalNumber) { this.network = Objects.requireNonNull(network); this.validable = Objects.requireNonNull(validable); + this.topologyKind = Objects.requireNonNull(topologyKind); this.side = side; this.terminalNumber = terminalNumber; } @@ -64,14 +68,16 @@ TerminalExt build() { "connection node and connection bus are exclusives"); } - if (node == null) { + if (topologyKind == TopologyKind.NODE_BREAKER) { + if (node == null) { + throw new ValidationException(validable, "node is not set"); + } + return new NodeTerminal(network, side, terminalNumber, node); + } else { if (connectionBus == null) { throw new ValidationException(validable, "connectable bus is not set"); } - return new BusTerminal(network, side, terminalNumber, connectionBus, bus != null); - } else { - return new NodeTerminal(network, side, terminalNumber, node); } } diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/ThreeWindingsTransformerAdderImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/ThreeWindingsTransformerAdderImpl.java index 5cfc23f842a..81a68b2e98d 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/ThreeWindingsTransformerAdderImpl.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/ThreeWindingsTransformerAdderImpl.java @@ -121,7 +121,7 @@ protected void checkParams() { protected TerminalExt checkAndGetTerminal() { VoltageLevelExt voltageLevel = checkAndGetVoltageLevel(); - return new TerminalBuilder(voltageLevel.getNetworkRef(), this, side, null) + return new TerminalBuilder(voltageLevel.getNetworkRef(), voltageLevel.getTopologyKind(), this, side, null) .setNode(node) .setBus(bus) .setConnectableBus(connectableBus) diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/VoltageLevelImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/VoltageLevelImpl.java index dcf5dc00f08..99634e6d40b 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/VoltageLevelImpl.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/VoltageLevelImpl.java @@ -705,7 +705,7 @@ record TopologyModelInfos(TerminalExt terminal, String connectableBusId, boolean AbstractConnectable connectable = oldTerminalExt.getConnectable(); // create the new terminal with new type - TerminalExt newTerminalExt = new TerminalBuilder(networkRef, this, oldTerminalExt.getSide(), oldTerminalExt.getTerminalNumber()) + TerminalExt newTerminalExt = new TerminalBuilder(networkRef, TopologyKind.BUS_BREAKER, this, oldTerminalExt.getSide(), oldTerminalExt.getTerminalNumber()) .setBus(infos.connected ? infos.connectableBusId() : null) .setConnectableBus(infos.connectableBusId()) .build(); diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractGroundTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractGroundTest.java index 7f578b63a74..62f77d7ab16 100644 --- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractGroundTest.java +++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractGroundTest.java @@ -193,7 +193,7 @@ public void testCreationError() { .setId("Ground") .setEnsureIdUnicity(true); ValidationException exception = assertThrows(ValidationException.class, groundAdderNB::add); - assertEquals("Ground 'Ground': connectable bus is not set", exception.getMessage()); + assertEquals("Ground 'Ground': node is not set", exception.getMessage()); groundAdderNB = vl1.newGround() .setNode(6) .setEnsureIdUnicity(true);