From d2521df261016ddf86d8baee3aae3911964177e8 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Fri, 12 Sep 2025 15:01:25 +0200 Subject: [PATCH 1/5] Modification application with naming strategy Signed-off-by: Etienne Homer --- .../modifications/CreateCouplingDevice.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java b/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java index 6c12a44e..1339815b 100644 --- a/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java +++ b/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java @@ -8,6 +8,8 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.iidm.modification.topology.CreateCouplingDeviceBuilder; +import com.powsybl.iidm.modification.topology.DefaultNamingStrategy; +import com.powsybl.iidm.modification.topology.NamingStrategy; import com.powsybl.iidm.network.Network; import org.gridsuite.modification.ModificationType; import org.gridsuite.modification.dto.CreateCouplingDeviceInfos; @@ -28,11 +30,16 @@ public CreateCouplingDevice(CreateCouplingDeviceInfos createCouplingDeviceInfos) * @param subReportNode */ @Override - public void apply(Network network, ReportNode subReportNode) { + public void apply(Network network, NamingStrategy namingStrategy, ReportNode subReportNode) { new CreateCouplingDeviceBuilder() .withBusOrBusbarSectionId1(createCouplingDeviceInfos.getCouplingDeviceInfos().getBusbarSectionId1()) .withBusOrBusbarSectionId2(createCouplingDeviceInfos.getCouplingDeviceInfos().getBusbarSectionId2()) - .build().apply(network, false, subReportNode); + .build().apply(network, namingStrategy, false, subReportNode); + } + + @Override + public void apply(Network network, ReportNode subReportNode) { + apply(network, new DefaultNamingStrategy(), subReportNode); } @Override From 6a7f9d5160afbe361ca10797e48d43b427657343 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Mon, 15 Sep 2025 13:13:23 +0200 Subject: [PATCH 2/5] use naming strategy for CreateVoltageLevelSection and CreateVoltageTopology + tests Signed-off-by: Etienne Homer --- .../modifications/CreateCouplingDevice.java | 2 +- .../CreateVoltageLevelSection.java | 9 +- .../CreateVoltageLevelTopology.java | 13 ++- .../AbstractNetworkModificationTest.java | 9 +- .../CreateCouplingDeviceTest.java | 3 +- .../CreateVoltageLevelSectionTest.java | 2 +- .../CreateVoltageLevelTopologyTest.java | 6 +- .../utils/DummyNamingStrategy.java | 96 +++++++++++++++++++ 8 files changed, 128 insertions(+), 12 deletions(-) create mode 100644 src/test/java/org/gridsuite/modification/utils/DummyNamingStrategy.java diff --git a/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java b/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java index 1339815b..d91a85a3 100644 --- a/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java +++ b/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java @@ -34,7 +34,7 @@ public void apply(Network network, NamingStrategy namingStrategy, ReportNode sub new CreateCouplingDeviceBuilder() .withBusOrBusbarSectionId1(createCouplingDeviceInfos.getCouplingDeviceInfos().getBusbarSectionId1()) .withBusOrBusbarSectionId2(createCouplingDeviceInfos.getCouplingDeviceInfos().getBusbarSectionId2()) - .build().apply(network, namingStrategy, false, subReportNode); + .build().apply(network, namingStrategy, subReportNode); } @Override diff --git a/src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelSection.java b/src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelSection.java index 9cdc9d5f..059032a3 100644 --- a/src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelSection.java +++ b/src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelSection.java @@ -11,6 +11,8 @@ import com.powsybl.commons.report.TypedValue; import com.powsybl.iidm.modification.topology.CreateVoltageLevelSections; import com.powsybl.iidm.modification.topology.CreateVoltageLevelSectionsBuilder; +import com.powsybl.iidm.modification.topology.DefaultNamingStrategy; +import com.powsybl.iidm.modification.topology.NamingStrategy; import com.powsybl.iidm.network.BusbarSection; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.SwitchKind; @@ -66,6 +68,11 @@ public void check(Network network) throws NetworkModificationException { @Override public void apply(Network network, ReportNode subReportNode) { + apply(network, new DefaultNamingStrategy(), subReportNode); + } + + @Override + public void apply(Network network, NamingStrategy namingStrategy, ReportNode subReportNode) { VoltageLevel voltageLevel = network.getVoltageLevel(modificationInfos.getVoltageLevelId()); BusbarSection busbarSection = network.getBusbarSection(modificationInfos.getBusbarSectionId()); List busBarIds = new ArrayList<>(); @@ -80,7 +87,7 @@ public void apply(Network network, ReportNode subReportNode) { .withSwitchPrefixId(voltageLevel.getId()) .withBusbarSectionPrefixId(voltageLevel.getId()) .build(); - modification.apply(network, true, subReportNode); + modification.apply(network, namingStrategy, true, subReportNode); if (modificationInfos.isAllBusbars()) { List newBusbarSections = new ArrayList<>(); diff --git a/src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopology.java b/src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopology.java index 7f171d3f..d005af3f 100644 --- a/src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopology.java +++ b/src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopology.java @@ -8,7 +8,9 @@ import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; +import com.powsybl.iidm.modification.topology.DefaultNamingStrategy; import com.powsybl.iidm.modification.topology.MoveFeederBayBuilder; +import com.powsybl.iidm.modification.topology.NamingStrategy; import com.powsybl.iidm.network.*; import com.powsybl.iidm.network.extensions.BusbarSectionPosition; import org.gridsuite.modification.ModificationType; @@ -53,12 +55,17 @@ public void check(Network network) { @Override public void apply(Network network, ReportNode subReportNode) { + apply(network, new DefaultNamingStrategy(), subReportNode); + } + + @Override + public void apply(Network network, NamingStrategy namingStrategy, ReportNode subReportNode) { VoltageLevel voltageLevel = network.getVoltageLevel(createVoltageLevelTopologyInfos.getVoltageLevelId()); - createVoltageLevelBusBarSection(network, subReportNode, voltageLevel); + createVoltageLevelBusBarSection(network, namingStrategy, subReportNode, voltageLevel); moveConnectableToAddSwitchesOnTheNewBar(network, voltageLevel); } - private void createVoltageLevelBusBarSection(Network network, ReportNode subReportNode, VoltageLevel voltageLevel) { + private void createVoltageLevelBusBarSection(Network network, NamingStrategy namingStrategy, ReportNode subReportNode, VoltageLevel voltageLevel) { int lowBusOrBusbarIndex = findLowBusOrBusbarIndex(voltageLevel); new com.powsybl.iidm.modification.topology.CreateVoltageLevelTopologyBuilder() .withVoltageLevelId(createVoltageLevelTopologyInfos.getVoltageLevelId()) @@ -66,7 +73,7 @@ private void createVoltageLevelBusBarSection(Network network, ReportNode subRepo .withAlignedBusesOrBusbarCount(1) .withLowBusOrBusbarIndex(lowBusOrBusbarIndex) .withSwitchKinds(createVoltageLevelTopologyInfos.getSwitchKinds()) - .build().apply(network, true, subReportNode); + .build().apply(network, namingStrategy, true, subReportNode); } private void moveConnectableToAddSwitchesOnTheNewBar(Network network, VoltageLevel voltageLevel) { diff --git a/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java b/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java index 9baad590..2fa0daf0 100644 --- a/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java @@ -7,10 +7,13 @@ package org.gridsuite.modification.modifications; import com.fasterxml.jackson.databind.ObjectMapper; +import com.powsybl.commons.report.ReportNode; +import com.powsybl.iidm.modification.topology.NamingStrategy; import com.powsybl.iidm.network.Network; import com.powsybl.network.store.iidm.impl.NetworkImpl; import org.gridsuite.modification.dto.ModificationInfos; +import org.gridsuite.modification.utils.DummyNamingStrategy; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -36,6 +39,10 @@ public abstract class AbstractNetworkModificationTest { private Network network; + private NamingStrategy namingStrategy = new DummyNamingStrategy(); + + private ReportNode rootReportNode = ReportNode.newRootReportNode().withMessageTemplate("apply").build(); + @Autowired protected ObjectMapper mapper; @@ -46,7 +53,7 @@ public void setUp() { @Test public void testApply() throws Exception { - buildModification().toModification().apply(network); + buildModification().toModification().apply(network, namingStrategy, rootReportNode); assertAfterNetworkModificationApplication(); } diff --git a/src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java b/src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java index d948000f..41d4460f 100644 --- a/src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java @@ -54,7 +54,7 @@ protected ModificationInfos buildModification() { @Override protected void assertAfterNetworkModificationApplication() { - Switch switch1 = getNetwork().getSwitch("v1_BREAKER"); + Switch switch1 = getNetwork().getSwitch("SWITCH_bbs1_bbs5"); Assertions.assertNotNull(switch1); Assertions.assertEquals(SwitchKind.BREAKER, switch1.getKind()); Assertions.assertEquals("v1", switch1.getVoltageLevel().getId()); @@ -91,5 +91,4 @@ void testCreateCouplingDeviceFail() { Assertions.assertEquals(1, report.getChildren().size()); Assertions.assertEquals("core.iidm.modification.unexpectedDifferentVoltageLevels", report.getChildren().getFirst().getMessageKey()); } - } diff --git a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelSectionTest.java b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelSectionTest.java index d4843c96..e88f2377 100644 --- a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelSectionTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelSectionTest.java @@ -81,7 +81,7 @@ protected void assertAfterNetworkModificationApplication() { List busBarIds = new ArrayList<>(); getNetwork().getBusbarSections().forEach(busbarSection -> busBarIds.add(busbarSection.getId())); assertEquals(5, busBarIds.size()); - assertTrue(busBarIds.containsAll(List.of("bbs1", "bbs2", "bbs3", "bbs4", "v1_0_1"))); + assertTrue(busBarIds.containsAll(List.of("bbs1", "bbs2", "bbs3", "bbs4", "BUSBAR_0_1"))); Set switchIds = getNetwork().getSwitchStream() .map(Switch::getId) .collect(Collectors.toSet()); diff --git a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java index bfd84c34..d54d193a 100644 --- a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java @@ -67,10 +67,10 @@ protected void assertAfterNetworkModificationApplication() { List busBarIds = new ArrayList<>(); getNetwork().getBusbarSections().forEach(busbarSection -> busBarIds.add(busbarSection.getId())); Assertions.assertEquals(7, busBarIds.size()); - Assertions.assertTrue(busBarIds.containsAll(List.of("v1_1_1", "v1_1_2", "v1_1_3", "bbs1", "bbs2", "bbs3", "bbs4"))); + Assertions.assertTrue(busBarIds.containsAll(List.of("BUSBAR_1_1", "BUSBAR_1_2", "BUSBAR_1_3", "bbs1", "bbs2", "bbs3", "bbs4"))); assertTrue(getNetwork().getSwitchStream().map(Switch::getId).collect(Collectors.toSet()) - .containsAll(Set.of("l11_DISCONNECTOR_13_0", "v1_DISCONNECTOR_10_7", "ld1_BREAKER", "ld1_DISCONNECTOR_11_0", - "v1_DISCONNECTOR_6_9", "v1_DISCONNECTOR_7_8", "v1_BREAKER_1_1", "l11_BREAKER"))); + .containsAll(Set.of("l11_DISCONNECTOR_13_0", "DISCONNECTOR_10_7", "ld1_BREAKER", "ld1_DISCONNECTOR_11_0", + "DISCONNECTOR_6_9", "DISCONNECTOR_7_8", "BREAKER_1_1", "l11_BREAKER"))); } @Override diff --git a/src/test/java/org/gridsuite/modification/utils/DummyNamingStrategy.java b/src/test/java/org/gridsuite/modification/utils/DummyNamingStrategy.java new file mode 100644 index 00000000..a851f96b --- /dev/null +++ b/src/test/java/org/gridsuite/modification/utils/DummyNamingStrategy.java @@ -0,0 +1,96 @@ +package org.gridsuite.modification.utils; + +import com.google.auto.service.AutoService; +import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.network.*; + +import java.util.List; + +/** + * @author Etienne Homer {@literal } + */ +@AutoService(NamingStrategy.class) +public class DummyNamingStrategy implements NamingStrategy { + + private int counter = 0; + + @Override + public final String getName() { + return "Fake naming strategy"; + } + + @Override + public String getSectioningPrefix(String baseId, BusbarSection bbs, int busBarNum, int section1Num, int section2Num) { + return "SECTION_" + busBarNum + "_" + section1Num + "_" + section2Num; + } + + @Override + public String getChunkPrefix(String baseId, List switchKindList, int busBarNum, int section1Num, int section2Num) { + return "PREFIX_" + busBarNum + "_" + section1Num + "_" + section2Num; + } + + @Override + public final String getDisconnectorId(String baseId, int id1Num, int id2Num) { + return "DISCONNECTOR_" + id1Num + "_" + id2Num; + } + + @Override + public String getDisconnectorId(BusbarSection bbs, String baseId, int id1Num, int id2Num, int side) { + return "DISCONNECTOR_" + id1Num + "_" + id2Num + "_" + side; + } + + @Override + public String getDisconnectorBetweenChunksId(BusbarSection bbs, String baseId, int id1Num, int id2Num) { + return "DISCONNECTOR_" + id1Num + "_" + id2Num; + } + + @Override + public final String getBreakerId(String baseId) { + return baseId; + } + + @Override + public final String getBreakerId(String baseId, int id1Num, int id2Num) { + return "BREAKER_" + id1Num + "_" + id1Num; + } + + @Override + public final String getSwitchId(String baseId) { + return baseId; + } + + @Override + public final String getSwitchId(String baseId, int idNum) { + return "SWITCH_" + idNum; + } + + @Override + public final String getSwitchId(String baseId, int id1Num, int id2Num) { + return "SWITCH_" + id1Num + "_" + id2Num; + } + + @Override + public final String getBusbarId(String baseId, int id1Num, int id2Num) { + return "BUSBAR_" + id1Num + "_" + id2Num; + } + + @Override + public final String getBusbarId(String baseId, List switchKindList, int id1Num, int id2Num) { + return "BUSBAR_" + id1Num + "_" + id2Num; + } + + @Override + public final String getBusId(String baseId) { + return baseId; + } + + @Override + public final String getSwitchBaseId(Connectable connectable, int side) { + return "SWITCH_" + connectable.getId() + "_" + side; + } + + @Override + public String getSwitchBaseId(VoltageLevel voltageLevel, BusbarSection bbs1, BusbarSection bbs2) { + return "SWITCH_" + bbs1.getId() + "_" + bbs2.getId(); + } +} From d03ec15d91e95a5c558a8cb39236cee7ff28d2aa Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Mon, 15 Sep 2025 13:15:45 +0200 Subject: [PATCH 3/5] Fix DummyNamingStrategy Signed-off-by: Etienne Homer --- .../org/gridsuite/modification/utils/DummyNamingStrategy.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/org/gridsuite/modification/utils/DummyNamingStrategy.java b/src/test/java/org/gridsuite/modification/utils/DummyNamingStrategy.java index a851f96b..0d9c89e3 100644 --- a/src/test/java/org/gridsuite/modification/utils/DummyNamingStrategy.java +++ b/src/test/java/org/gridsuite/modification/utils/DummyNamingStrategy.java @@ -12,11 +12,9 @@ @AutoService(NamingStrategy.class) public class DummyNamingStrategy implements NamingStrategy { - private int counter = 0; - @Override public final String getName() { - return "Fake naming strategy"; + return "Dummy naming strategy"; } @Override From a49b8a29d641a0f37a4045bde7533fe6662ad3d7 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 16 Sep 2025 14:46:15 +0200 Subject: [PATCH 4/5] Fix test Signed-off-by: Etienne Homer --- .../AbstractNetworkModificationTest.java | 9 +----- .../CreateCouplingDeviceTest.java | 22 ++++++++++++- .../CreateVoltageLevelSectionTest.java | 31 ++++++++++++++++++- .../CreateVoltageLevelTopologyTest.java | 24 ++++++++++++-- 4 files changed, 73 insertions(+), 13 deletions(-) diff --git a/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java b/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java index 2fa0daf0..9baad590 100644 --- a/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java @@ -7,13 +7,10 @@ package org.gridsuite.modification.modifications; import com.fasterxml.jackson.databind.ObjectMapper; -import com.powsybl.commons.report.ReportNode; -import com.powsybl.iidm.modification.topology.NamingStrategy; import com.powsybl.iidm.network.Network; import com.powsybl.network.store.iidm.impl.NetworkImpl; import org.gridsuite.modification.dto.ModificationInfos; -import org.gridsuite.modification.utils.DummyNamingStrategy; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -39,10 +36,6 @@ public abstract class AbstractNetworkModificationTest { private Network network; - private NamingStrategy namingStrategy = new DummyNamingStrategy(); - - private ReportNode rootReportNode = ReportNode.newRootReportNode().withMessageTemplate("apply").build(); - @Autowired protected ObjectMapper mapper; @@ -53,7 +46,7 @@ public void setUp() { @Test public void testApply() throws Exception { - buildModification().toModification().apply(network, namingStrategy, rootReportNode); + buildModification().toModification().apply(network); assertAfterNetworkModificationApplication(); } diff --git a/src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java b/src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java index 41d4460f..012cefa0 100644 --- a/src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java @@ -14,6 +14,7 @@ import org.gridsuite.modification.dto.CouplingDeviceInfos; import org.gridsuite.modification.dto.CreateCouplingDeviceInfos; import org.gridsuite.modification.dto.ModificationInfos; +import org.gridsuite.modification.utils.DummyNamingStrategy; import org.gridsuite.modification.utils.NetworkWithTeePoint; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -54,7 +55,7 @@ protected ModificationInfos buildModification() { @Override protected void assertAfterNetworkModificationApplication() { - Switch switch1 = getNetwork().getSwitch("SWITCH_bbs1_bbs5"); + Switch switch1 = getNetwork().getSwitch("v1_BREAKER"); Assertions.assertNotNull(switch1); Assertions.assertEquals(SwitchKind.BREAKER, switch1.getKind()); Assertions.assertEquals("v1", switch1.getVoltageLevel().getId()); @@ -91,4 +92,23 @@ void testCreateCouplingDeviceFail() { Assertions.assertEquals(1, report.getChildren().size()); Assertions.assertEquals("core.iidm.modification.unexpectedDifferentVoltageLevels", report.getChildren().getFirst().getMessageKey()); } + + @Test + void testApplyWithNamingStrategy() { + CreateCouplingDeviceInfos createCouplingDeviceInfos = CreateCouplingDeviceInfos.builder() + .stashed(false) + .voltageLevelId("v1") + .couplingDeviceInfos(CouplingDeviceInfos.builder() + .busbarSectionId1("bbs1") + .busbarSectionId2("bbs5") + .build()) + .build(); + Network network = getNetwork(); + AbstractModification modification = createCouplingDeviceInfos.toModification(); + ReportNode report = ReportNode.newRootReportNode() + .withMessageTemplate("test") + .build(); + Assertions.assertDoesNotThrow(() -> modification.apply(network, new DummyNamingStrategy(), report)); + Assertions.assertNotNull(network.getSwitch("SWITCH_bbs1_bbs5")); + } } diff --git a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelSectionTest.java b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelSectionTest.java index e88f2377..ee6aeb39 100644 --- a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelSectionTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelSectionTest.java @@ -15,7 +15,9 @@ import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.CreateVoltageLevelSectionInfos; import org.gridsuite.modification.dto.ModificationInfos; +import org.gridsuite.modification.utils.DummyNamingStrategy; import org.gridsuite.modification.utils.NetworkWithTeePoint; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.util.*; @@ -81,7 +83,7 @@ protected void assertAfterNetworkModificationApplication() { List busBarIds = new ArrayList<>(); getNetwork().getBusbarSections().forEach(busbarSection -> busBarIds.add(busbarSection.getId())); assertEquals(5, busBarIds.size()); - assertTrue(busBarIds.containsAll(List.of("bbs1", "bbs2", "bbs3", "bbs4", "BUSBAR_0_1"))); + assertTrue(busBarIds.containsAll(List.of("bbs1", "bbs2", "bbs3", "bbs4", "v1_0_1"))); Set switchIds = getNetwork().getSwitchStream() .map(Switch::getId) .collect(Collectors.toSet()); @@ -133,4 +135,31 @@ void testCreateModificationWithAllBusbars() { assertEquals(7, busBarIds.size()); assertTrue(busBarIds.containsAll(List.of("bbs1", "bbs2", "bbs3", "bbs4", "bbs1_2", "v1_0_1", "v1_1_1"))); } + + @Test + void testApplyWithNamingStrategy() { + Network network = getNetwork(); + VoltageLevel voltageLevel = network.getVoltageLevel("v1"); + var bbs = voltageLevel.getNodeBreakerView().newBusbarSection() + .setId("bbs1_2") + .setName("bbs1_2") + .setNode(1) + .add(); + bbs.newExtension(BusbarSectionPositionAdder.class).withBusbarIndex(1).withSectionIndex(0).add(); + + ReportNode report = ReportNode.newRootReportNode() + .withMessageTemplate("test") + .build(); + CreateVoltageLevelSectionInfos.builder() + .stashed(false) + .voltageLevelId("v1") + .busbarSectionId("bbs1_2") + .busbarIndex(2) + .isAfterBusbarSectionId(true) + .leftSwitchKind("BREAKER") + .rightSwitchKind("DISCONNECTOR") + .isAllBusbars(false) + .build().toModification().apply(network, new DummyNamingStrategy(), report); + Assertions.assertNotNull(network.getSwitch("DISCONNECTOR_1_7")); + } } diff --git a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java index d54d193a..bae56e2b 100644 --- a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java @@ -7,14 +7,17 @@ package org.gridsuite.modification.modifications; import com.fasterxml.jackson.core.type.TypeReference; +import com.powsybl.commons.report.ReportNode; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.Switch; import com.powsybl.iidm.network.SwitchKind; import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.CreateVoltageLevelTopologyInfos; import org.gridsuite.modification.dto.ModificationInfos; +import org.gridsuite.modification.utils.DummyNamingStrategy; import org.gridsuite.modification.utils.NetworkWithTeePoint; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import java.util.*; import java.util.stream.Collectors; @@ -67,10 +70,10 @@ protected void assertAfterNetworkModificationApplication() { List busBarIds = new ArrayList<>(); getNetwork().getBusbarSections().forEach(busbarSection -> busBarIds.add(busbarSection.getId())); Assertions.assertEquals(7, busBarIds.size()); - Assertions.assertTrue(busBarIds.containsAll(List.of("BUSBAR_1_1", "BUSBAR_1_2", "BUSBAR_1_3", "bbs1", "bbs2", "bbs3", "bbs4"))); + Assertions.assertTrue(busBarIds.containsAll(List.of("v1_1_1", "v1_1_2", "v1_1_3", "bbs1", "bbs2", "bbs3", "bbs4"))); assertTrue(getNetwork().getSwitchStream().map(Switch::getId).collect(Collectors.toSet()) - .containsAll(Set.of("l11_DISCONNECTOR_13_0", "DISCONNECTOR_10_7", "ld1_BREAKER", "ld1_DISCONNECTOR_11_0", - "DISCONNECTOR_6_9", "DISCONNECTOR_7_8", "BREAKER_1_1", "l11_BREAKER"))); + .containsAll(Set.of("l11_DISCONNECTOR_13_0", "v1_DISCONNECTOR_10_7", "ld1_BREAKER", "ld1_DISCONNECTOR_11_0", + "v1_DISCONNECTOR_6_9", "v1_DISCONNECTOR_7_8", "v1_BREAKER_1_1", "l11_BREAKER"))); } @Override @@ -80,4 +83,19 @@ protected void testCreationModificationMessage(ModificationInfos modificationInf }); assertEquals("v1", updatedValues.get("voltageLevelId")); } + + @Test + void testApplyWithNamingStrategy() { + Network network = getNetwork(); + ReportNode report = ReportNode.newRootReportNode() + .withMessageTemplate("test") + .build(); + CreateVoltageLevelTopologyInfos.builder() + .stashed(false) + .voltageLevelId("v1") + .sectionCount(3) + .switchKinds(List.of(SwitchKind.BREAKER, SwitchKind.DISCONNECTOR)) + .build().toModification().apply(network, new DummyNamingStrategy(), report); + Assertions.assertNotNull(network.getBusbarSection("BUSBAR_1_1")); + } } From c19224c2621d37c0d679638df8411e99c07bf8b5 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Wed, 17 Sep 2025 09:31:59 +0200 Subject: [PATCH 5/5] clean Signed-off-by: Etienne Homer --- .../modifications/CreateVoltageLevelTopologyTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java index bae56e2b..7ee6ee1c 100644 --- a/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java @@ -72,8 +72,8 @@ protected void assertAfterNetworkModificationApplication() { Assertions.assertEquals(7, busBarIds.size()); Assertions.assertTrue(busBarIds.containsAll(List.of("v1_1_1", "v1_1_2", "v1_1_3", "bbs1", "bbs2", "bbs3", "bbs4"))); assertTrue(getNetwork().getSwitchStream().map(Switch::getId).collect(Collectors.toSet()) - .containsAll(Set.of("l11_DISCONNECTOR_13_0", "v1_DISCONNECTOR_10_7", "ld1_BREAKER", "ld1_DISCONNECTOR_11_0", - "v1_DISCONNECTOR_6_9", "v1_DISCONNECTOR_7_8", "v1_BREAKER_1_1", "l11_BREAKER"))); + .containsAll(Set.of("l11_DISCONNECTOR_13_0", "v1_DISCONNECTOR_10_7", "ld1_BREAKER", "ld1_DISCONNECTOR_11_0", + "v1_DISCONNECTOR_6_9", "v1_DISCONNECTOR_7_8", "v1_BREAKER_1_1", "l11_BREAKER"))); } @Override