Skip to content

Commit d7afbc7

Browse files
authored
Modification application with naming strategy (#94)
Signed-off-by: Etienne Homer <[email protected]>
1 parent e57a5e7 commit d7afbc7

File tree

7 files changed

+187
-6
lines changed

7 files changed

+187
-6
lines changed

src/main/java/org/gridsuite/modification/modifications/CreateCouplingDevice.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
import com.powsybl.commons.report.ReportNode;
1010
import com.powsybl.iidm.modification.topology.CreateCouplingDeviceBuilder;
11+
import com.powsybl.iidm.modification.topology.DefaultNamingStrategy;
12+
import com.powsybl.iidm.modification.topology.NamingStrategy;
1113
import com.powsybl.iidm.network.Network;
1214
import org.gridsuite.modification.ModificationType;
1315
import org.gridsuite.modification.dto.CreateCouplingDeviceInfos;
@@ -28,11 +30,16 @@ public CreateCouplingDevice(CreateCouplingDeviceInfos createCouplingDeviceInfos)
2830
* @param subReportNode
2931
*/
3032
@Override
31-
public void apply(Network network, ReportNode subReportNode) {
33+
public void apply(Network network, NamingStrategy namingStrategy, ReportNode subReportNode) {
3234
new CreateCouplingDeviceBuilder()
3335
.withBusOrBusbarSectionId1(createCouplingDeviceInfos.getCouplingDeviceInfos().getBusbarSectionId1())
3436
.withBusOrBusbarSectionId2(createCouplingDeviceInfos.getCouplingDeviceInfos().getBusbarSectionId2())
35-
.build().apply(network, false, subReportNode);
37+
.build().apply(network, namingStrategy, subReportNode);
38+
}
39+
40+
@Override
41+
public void apply(Network network, ReportNode subReportNode) {
42+
apply(network, new DefaultNamingStrategy(), subReportNode);
3643
}
3744

3845
@Override

src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelSection.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import com.powsybl.commons.report.TypedValue;
1212
import com.powsybl.iidm.modification.topology.CreateVoltageLevelSections;
1313
import com.powsybl.iidm.modification.topology.CreateVoltageLevelSectionsBuilder;
14+
import com.powsybl.iidm.modification.topology.DefaultNamingStrategy;
15+
import com.powsybl.iidm.modification.topology.NamingStrategy;
1416
import com.powsybl.iidm.network.BusbarSection;
1517
import com.powsybl.iidm.network.Network;
1618
import com.powsybl.iidm.network.SwitchKind;
@@ -66,6 +68,11 @@ public void check(Network network) throws NetworkModificationException {
6668

6769
@Override
6870
public void apply(Network network, ReportNode subReportNode) {
71+
apply(network, new DefaultNamingStrategy(), subReportNode);
72+
}
73+
74+
@Override
75+
public void apply(Network network, NamingStrategy namingStrategy, ReportNode subReportNode) {
6976
VoltageLevel voltageLevel = network.getVoltageLevel(modificationInfos.getVoltageLevelId());
7077
BusbarSection busbarSection = network.getBusbarSection(modificationInfos.getBusbarSectionId());
7178
List<String> busBarIds = new ArrayList<>();
@@ -80,7 +87,7 @@ public void apply(Network network, ReportNode subReportNode) {
8087
.withSwitchPrefixId(voltageLevel.getId())
8188
.withBusbarSectionPrefixId(voltageLevel.getId())
8289
.build();
83-
modification.apply(network, true, subReportNode);
90+
modification.apply(network, namingStrategy, true, subReportNode);
8491

8592
if (modificationInfos.isAllBusbars()) {
8693
List<BusbarSection> newBusbarSections = new ArrayList<>();

src/main/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopology.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88

99
import com.powsybl.commons.PowsyblException;
1010
import com.powsybl.commons.report.ReportNode;
11+
import com.powsybl.iidm.modification.topology.DefaultNamingStrategy;
1112
import com.powsybl.iidm.modification.topology.MoveFeederBayBuilder;
13+
import com.powsybl.iidm.modification.topology.NamingStrategy;
1214
import com.powsybl.iidm.network.*;
1315
import com.powsybl.iidm.network.extensions.BusbarSectionPosition;
1416
import org.gridsuite.modification.ModificationType;
@@ -53,20 +55,25 @@ public void check(Network network) {
5355

5456
@Override
5557
public void apply(Network network, ReportNode subReportNode) {
58+
apply(network, new DefaultNamingStrategy(), subReportNode);
59+
}
60+
61+
@Override
62+
public void apply(Network network, NamingStrategy namingStrategy, ReportNode subReportNode) {
5663
VoltageLevel voltageLevel = network.getVoltageLevel(createVoltageLevelTopologyInfos.getVoltageLevelId());
57-
createVoltageLevelBusBarSection(network, subReportNode, voltageLevel);
64+
createVoltageLevelBusBarSection(network, namingStrategy, subReportNode, voltageLevel);
5865
moveConnectableToAddSwitchesOnTheNewBar(network, voltageLevel);
5966
}
6067

61-
private void createVoltageLevelBusBarSection(Network network, ReportNode subReportNode, VoltageLevel voltageLevel) {
68+
private void createVoltageLevelBusBarSection(Network network, NamingStrategy namingStrategy, ReportNode subReportNode, VoltageLevel voltageLevel) {
6269
int lowBusOrBusbarIndex = findLowBusOrBusbarIndex(voltageLevel);
6370
new com.powsybl.iidm.modification.topology.CreateVoltageLevelTopologyBuilder()
6471
.withVoltageLevelId(createVoltageLevelTopologyInfos.getVoltageLevelId())
6572
.withSectionCount(createVoltageLevelTopologyInfos.getSectionCount())
6673
.withAlignedBusesOrBusbarCount(1)
6774
.withLowBusOrBusbarIndex(lowBusOrBusbarIndex)
6875
.withSwitchKinds(createVoltageLevelTopologyInfos.getSwitchKinds())
69-
.build().apply(network, true, subReportNode);
76+
.build().apply(network, namingStrategy, true, subReportNode);
7077
}
7178

7279
private void moveConnectableToAddSwitchesOnTheNewBar(Network network, VoltageLevel voltageLevel) {

src/test/java/org/gridsuite/modification/modifications/CreateCouplingDeviceTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.gridsuite.modification.dto.CouplingDeviceInfos;
1515
import org.gridsuite.modification.dto.CreateCouplingDeviceInfos;
1616
import org.gridsuite.modification.dto.ModificationInfos;
17+
import org.gridsuite.modification.utils.DummyNamingStrategy;
1718
import org.gridsuite.modification.utils.NetworkWithTeePoint;
1819
import org.junit.jupiter.api.Assertions;
1920
import org.junit.jupiter.api.Test;
@@ -92,4 +93,22 @@ void testCreateCouplingDeviceFail() {
9293
Assertions.assertEquals("core.iidm.modification.unexpectedDifferentVoltageLevels", report.getChildren().getFirst().getMessageKey());
9394
}
9495

96+
@Test
97+
void testApplyWithNamingStrategy() {
98+
CreateCouplingDeviceInfos createCouplingDeviceInfos = CreateCouplingDeviceInfos.builder()
99+
.stashed(false)
100+
.voltageLevelId("v1")
101+
.couplingDeviceInfos(CouplingDeviceInfos.builder()
102+
.busbarSectionId1("bbs1")
103+
.busbarSectionId2("bbs5")
104+
.build())
105+
.build();
106+
Network network = getNetwork();
107+
AbstractModification modification = createCouplingDeviceInfos.toModification();
108+
ReportNode report = ReportNode.newRootReportNode()
109+
.withMessageTemplate("test")
110+
.build();
111+
Assertions.assertDoesNotThrow(() -> modification.apply(network, new DummyNamingStrategy(), report));
112+
Assertions.assertNotNull(network.getSwitch("SWITCH_bbs1_bbs5"));
113+
}
95114
}

src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelSectionTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
import org.gridsuite.modification.NetworkModificationException;
1616
import org.gridsuite.modification.dto.CreateVoltageLevelSectionInfos;
1717
import org.gridsuite.modification.dto.ModificationInfos;
18+
import org.gridsuite.modification.utils.DummyNamingStrategy;
1819
import org.gridsuite.modification.utils.NetworkWithTeePoint;
20+
import org.junit.jupiter.api.Assertions;
1921
import org.junit.jupiter.api.Test;
2022

2123
import java.util.*;
@@ -133,4 +135,31 @@ void testCreateModificationWithAllBusbars() {
133135
assertEquals(7, busBarIds.size());
134136
assertTrue(busBarIds.containsAll(List.of("bbs1", "bbs2", "bbs3", "bbs4", "bbs1_2", "v1_0_1", "v1_1_1")));
135137
}
138+
139+
@Test
140+
void testApplyWithNamingStrategy() {
141+
Network network = getNetwork();
142+
VoltageLevel voltageLevel = network.getVoltageLevel("v1");
143+
var bbs = voltageLevel.getNodeBreakerView().newBusbarSection()
144+
.setId("bbs1_2")
145+
.setName("bbs1_2")
146+
.setNode(1)
147+
.add();
148+
bbs.newExtension(BusbarSectionPositionAdder.class).withBusbarIndex(1).withSectionIndex(0).add();
149+
150+
ReportNode report = ReportNode.newRootReportNode()
151+
.withMessageTemplate("test")
152+
.build();
153+
CreateVoltageLevelSectionInfos.builder()
154+
.stashed(false)
155+
.voltageLevelId("v1")
156+
.busbarSectionId("bbs1_2")
157+
.busbarIndex(2)
158+
.isAfterBusbarSectionId(true)
159+
.leftSwitchKind("BREAKER")
160+
.rightSwitchKind("DISCONNECTOR")
161+
.isAllBusbars(false)
162+
.build().toModification().apply(network, new DummyNamingStrategy(), report);
163+
Assertions.assertNotNull(network.getSwitch("DISCONNECTOR_1_7"));
164+
}
136165
}

src/test/java/org/gridsuite/modification/modifications/CreateVoltageLevelTopologyTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@
77
package org.gridsuite.modification.modifications;
88

99
import com.fasterxml.jackson.core.type.TypeReference;
10+
import com.powsybl.commons.report.ReportNode;
1011
import com.powsybl.iidm.network.Network;
1112
import com.powsybl.iidm.network.Switch;
1213
import com.powsybl.iidm.network.SwitchKind;
1314
import org.gridsuite.modification.NetworkModificationException;
1415
import org.gridsuite.modification.dto.CreateVoltageLevelTopologyInfos;
1516
import org.gridsuite.modification.dto.ModificationInfos;
17+
import org.gridsuite.modification.utils.DummyNamingStrategy;
1618
import org.gridsuite.modification.utils.NetworkWithTeePoint;
1719
import org.junit.jupiter.api.Assertions;
20+
import org.junit.jupiter.api.Test;
1821

1922
import java.util.*;
2023
import java.util.stream.Collectors;
@@ -80,4 +83,19 @@ protected void testCreationModificationMessage(ModificationInfos modificationInf
8083
});
8184
assertEquals("v1", updatedValues.get("voltageLevelId"));
8285
}
86+
87+
@Test
88+
void testApplyWithNamingStrategy() {
89+
Network network = getNetwork();
90+
ReportNode report = ReportNode.newRootReportNode()
91+
.withMessageTemplate("test")
92+
.build();
93+
CreateVoltageLevelTopologyInfos.builder()
94+
.stashed(false)
95+
.voltageLevelId("v1")
96+
.sectionCount(3)
97+
.switchKinds(List.of(SwitchKind.BREAKER, SwitchKind.DISCONNECTOR))
98+
.build().toModification().apply(network, new DummyNamingStrategy(), report);
99+
Assertions.assertNotNull(network.getBusbarSection("BUSBAR_1_1"));
100+
}
83101
}
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package org.gridsuite.modification.utils;
2+
3+
import com.google.auto.service.AutoService;
4+
import com.powsybl.iidm.modification.topology.NamingStrategy;
5+
import com.powsybl.iidm.network.*;
6+
7+
import java.util.List;
8+
9+
/**
10+
* @author Etienne Homer {@literal <etienne.homer at rte-france.com>}
11+
*/
12+
@AutoService(NamingStrategy.class)
13+
public class DummyNamingStrategy implements NamingStrategy {
14+
15+
@Override
16+
public final String getName() {
17+
return "Dummy naming strategy";
18+
}
19+
20+
@Override
21+
public String getSectioningPrefix(String baseId, BusbarSection bbs, int busBarNum, int section1Num, int section2Num) {
22+
return "SECTION_" + busBarNum + "_" + section1Num + "_" + section2Num;
23+
}
24+
25+
@Override
26+
public String getChunkPrefix(String baseId, List<SwitchKind> switchKindList, int busBarNum, int section1Num, int section2Num) {
27+
return "PREFIX_" + busBarNum + "_" + section1Num + "_" + section2Num;
28+
}
29+
30+
@Override
31+
public final String getDisconnectorId(String baseId, int id1Num, int id2Num) {
32+
return "DISCONNECTOR_" + id1Num + "_" + id2Num;
33+
}
34+
35+
@Override
36+
public String getDisconnectorId(BusbarSection bbs, String baseId, int id1Num, int id2Num, int side) {
37+
return "DISCONNECTOR_" + id1Num + "_" + id2Num + "_" + side;
38+
}
39+
40+
@Override
41+
public String getDisconnectorBetweenChunksId(BusbarSection bbs, String baseId, int id1Num, int id2Num) {
42+
return "DISCONNECTOR_" + id1Num + "_" + id2Num;
43+
}
44+
45+
@Override
46+
public final String getBreakerId(String baseId) {
47+
return baseId;
48+
}
49+
50+
@Override
51+
public final String getBreakerId(String baseId, int id1Num, int id2Num) {
52+
return "BREAKER_" + id1Num + "_" + id1Num;
53+
}
54+
55+
@Override
56+
public final String getSwitchId(String baseId) {
57+
return baseId;
58+
}
59+
60+
@Override
61+
public final String getSwitchId(String baseId, int idNum) {
62+
return "SWITCH_" + idNum;
63+
}
64+
65+
@Override
66+
public final String getSwitchId(String baseId, int id1Num, int id2Num) {
67+
return "SWITCH_" + id1Num + "_" + id2Num;
68+
}
69+
70+
@Override
71+
public final String getBusbarId(String baseId, int id1Num, int id2Num) {
72+
return "BUSBAR_" + id1Num + "_" + id2Num;
73+
}
74+
75+
@Override
76+
public final String getBusbarId(String baseId, List<SwitchKind> switchKindList, int id1Num, int id2Num) {
77+
return "BUSBAR_" + id1Num + "_" + id2Num;
78+
}
79+
80+
@Override
81+
public final String getBusId(String baseId) {
82+
return baseId;
83+
}
84+
85+
@Override
86+
public final String getSwitchBaseId(Connectable<?> connectable, int side) {
87+
return "SWITCH_" + connectable.getId() + "_" + side;
88+
}
89+
90+
@Override
91+
public String getSwitchBaseId(VoltageLevel voltageLevel, BusbarSection bbs1, BusbarSection bbs2) {
92+
return "SWITCH_" + bbs1.getId() + "_" + bbs2.getId();
93+
}
94+
}

0 commit comments

Comments
 (0)