diff --git a/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java b/src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java index 6c12a44e..d91a85a3 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, subReportNode); + } + + @Override + public void apply(Network network, ReportNode subReportNode) { + apply(network, new DefaultNamingStrategy(), 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/CreateCouplingDeviceTest.java b/src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java index d948000f..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; @@ -92,4 +93,22 @@ void testCreateCouplingDeviceFail() { 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 d4843c96..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.*; @@ -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 bfd84c34..7ee6ee1c 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; @@ -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")); + } } 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..0d9c89e3 --- /dev/null +++ b/src/test/java/org/gridsuite/modification/utils/DummyNamingStrategy.java @@ -0,0 +1,94 @@ +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 { + + @Override + public final String getName() { + return "Dummy 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(); + } +}