Skip to content

Commit 26591dd

Browse files
authored
Use naming strategy from application.yml (#688)
Signed-off-by: Etienne Homer <[email protected]>
1 parent cde2a0b commit 26591dd

File tree

5 files changed

+200
-4
lines changed

5 files changed

+200
-4
lines changed

src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import com.powsybl.commons.report.ReportConstants;
1212
import com.powsybl.commons.report.ReportNode;
1313
import com.powsybl.commons.report.TypedValue;
14+
import com.powsybl.iidm.modification.topology.DefaultNamingStrategy;
15+
import com.powsybl.iidm.modification.topology.NamingStrategiesServiceLoader;
1416
import com.powsybl.iidm.network.Network;
1517
import com.powsybl.network.store.client.NetworkStoreService;
1618
import com.powsybl.network.store.client.PreloadingStrategy;
@@ -65,6 +67,9 @@ public class NetworkModificationApplicator {
6567
@Setter // TODO REMOVE when VoltageInitReportTest will no longer use NetworkModificationApplicator
6668
private Integer collectionThreshold;
6769

70+
@Value("${naming-strategy:Default}")
71+
private String namingStrategy;
72+
6873
public NetworkModificationApplicator(NetworkStoreService networkStoreService, EquipmentInfosService equipmentInfosService,
6974
ModificationApplicationInfosService applicationInfosService,
7075
ReportService reportService, FilterService filterService,
@@ -215,7 +220,7 @@ private void apply(AbstractModification modification, Network network, ReportNod
215220
modification.initApplicationContext(this.filterService, this.loadFlowService);
216221

217222
// apply all changes on the network
218-
modification.apply(network, subReportNode);
223+
modification.apply(network, new NamingStrategiesServiceLoader().findNamingStrategyByName(namingStrategy).orElse(new DefaultNamingStrategy()), subReportNode);
219224
}
220225

221226
private void handleException(ReportNode subReportNode, Exception e) {
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
/**
2+
* Copyright (c) 2024, RTE (http://www.rte-france.com)
3+
* This Source Code Form is subject to the terms of the Mozilla Public
4+
* License, v. 2.0. If a copy of the MPL was not distributed with this
5+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6+
*/
7+
package org.gridsuite.modification.server.modifications;
8+
9+
import com.powsybl.iidm.network.Network;
10+
import com.powsybl.iidm.network.Switch;
11+
import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl;
12+
import org.gridsuite.modification.dto.CouplingDeviceInfos;
13+
import org.gridsuite.modification.dto.CreateCouplingDeviceInfos;
14+
import org.gridsuite.modification.dto.ModificationInfos;
15+
import org.gridsuite.modification.server.utils.NetworkCreation;
16+
import org.junit.jupiter.api.Tag;
17+
import org.springframework.test.context.TestPropertySource;
18+
19+
import java.util.Set;
20+
import java.util.UUID;
21+
import java.util.stream.Collectors;
22+
23+
import static org.junit.jupiter.api.Assertions.*;
24+
25+
/**
26+
* @author Etienne Homer <etienne.homer at rte-france.com>
27+
*/
28+
@Tag("IntegrationTest")
29+
@TestPropertySource(locations = "classpath:application-dummy-naming-strategy.yml")
30+
class NamingStrategyTest extends AbstractNetworkModificationTest {
31+
32+
@Override
33+
protected Network createNetwork(UUID networkUuid) {
34+
Network network = NetworkCreation.createSwitchNetwork(networkUuid, new NetworkFactoryImpl());
35+
network.getVoltageLevel("vl1")
36+
.getNodeBreakerView()
37+
.newBusbarSection()
38+
.setId("b3")
39+
.setName("b3")
40+
.setNode(15)
41+
.add();
42+
network.getVoltageLevel("vl1")
43+
.getNodeBreakerView()
44+
.newBusbarSection()
45+
.setId("b9")
46+
.setName("b9")
47+
.setNode(20)
48+
.add();
49+
return network;
50+
}
51+
52+
@Override
53+
protected ModificationInfos buildModification() {
54+
return CreateCouplingDeviceInfos.builder()
55+
.couplingDeviceInfos(CouplingDeviceInfos.builder()
56+
.busbarSectionId1("b1")
57+
.busbarSectionId2("b3")
58+
.build())
59+
.voltageLevelId("v1")
60+
.build();
61+
}
62+
63+
@Override
64+
protected ModificationInfos buildModificationUpdate() {
65+
return CreateCouplingDeviceInfos.builder()
66+
.couplingDeviceInfos(CouplingDeviceInfos.builder()
67+
.busbarSectionId1("b1")
68+
.busbarSectionId2("b4")
69+
.build())
70+
.voltageLevelId("v1")
71+
.build();
72+
}
73+
74+
@Override
75+
protected void assertAfterNetworkModificationCreation() {
76+
assertTrue(getNetwork().getSwitchStream().map(Switch::getId).collect(Collectors.toSet())
77+
// verify that the switches names follow the dummy naming strategy
78+
.containsAll(Set.of("SWITCH_b1_b3", "DISCONNECTOR_22_15_0", "DISCONNECTOR_21_0_0")));
79+
}
80+
81+
@Override
82+
protected void assertAfterNetworkModificationDeletion() {
83+
// nothing to test
84+
}
85+
86+
@Override
87+
protected void testCreationModificationMessage(ModificationInfos modificationInfos) {
88+
// nothing to test
89+
}
90+
91+
@Override
92+
protected void testUpdateModificationMessage(ModificationInfos modificationInfos) {
93+
// nothing to test
94+
}
95+
96+
}
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package org.gridsuite.modification.server.utils;
2+
3+
import com.google.auto.service.AutoService;
4+
import com.powsybl.iidm.modification.topology.NamingStrategy;
5+
import com.powsybl.iidm.network.BusbarSection;
6+
import com.powsybl.iidm.network.Connectable;
7+
import com.powsybl.iidm.network.SwitchKind;
8+
import com.powsybl.iidm.network.VoltageLevel;
9+
10+
import java.util.List;
11+
12+
/**
13+
* @author Etienne Homer {@literal <etienne.homer at rte-france.com>}
14+
*/
15+
@AutoService(NamingStrategy.class)
16+
public class DummyNamingStrategy implements NamingStrategy {
17+
18+
@Override
19+
public final String getName() {
20+
return "Dummy naming strategy";
21+
}
22+
23+
@Override
24+
public String getSectioningPrefix(String baseId, BusbarSection bbs, int busBarNum, int section1Num, int section2Num) {
25+
return "SECTION_" + busBarNum + "_" + section1Num + "_" + section2Num;
26+
}
27+
28+
@Override
29+
public String getChunkPrefix(String baseId, List<SwitchKind> switchKindList, int busBarNum, int section1Num, int section2Num) {
30+
return "PREFIX_" + busBarNum + "_" + section1Num + "_" + section2Num;
31+
}
32+
33+
@Override
34+
public final String getDisconnectorId(String baseId, int id1Num, int id2Num) {
35+
return "DISCONNECTOR_" + id1Num + "_" + id2Num;
36+
}
37+
38+
@Override
39+
public String getDisconnectorId(BusbarSection bbs, String baseId, int id1Num, int id2Num, int side) {
40+
return "DISCONNECTOR_" + id1Num + "_" + id2Num + "_" + side;
41+
}
42+
43+
@Override
44+
public String getDisconnectorBetweenChunksId(BusbarSection bbs, String baseId, int id1Num, int id2Num) {
45+
return "DISCONNECTOR_" + id1Num + "_" + id2Num;
46+
}
47+
48+
@Override
49+
public final String getBreakerId(String baseId) {
50+
return baseId;
51+
}
52+
53+
@Override
54+
public final String getBreakerId(String baseId, int id1Num, int id2Num) {
55+
return "BREAKER_" + id1Num + "_" + id1Num;
56+
}
57+
58+
@Override
59+
public final String getSwitchId(String baseId) {
60+
return baseId;
61+
}
62+
63+
@Override
64+
public final String getSwitchId(String baseId, int idNum) {
65+
return "SWITCH_" + idNum;
66+
}
67+
68+
@Override
69+
public final String getSwitchId(String baseId, int id1Num, int id2Num) {
70+
return "SWITCH_" + id1Num + "_" + id2Num;
71+
}
72+
73+
@Override
74+
public final String getBusbarId(String baseId, int id1Num, int id2Num) {
75+
return "BUSBAR_" + id1Num + "_" + id2Num;
76+
}
77+
78+
@Override
79+
public final String getBusbarId(String baseId, List<SwitchKind> switchKindList, int id1Num, int id2Num) {
80+
return "BUSBAR_" + id1Num + "_" + id2Num;
81+
}
82+
83+
@Override
84+
public final String getBusId(String baseId) {
85+
return baseId;
86+
}
87+
88+
@Override
89+
public final String getSwitchBaseId(Connectable<?> connectable, int side) {
90+
return "SWITCH_" + connectable.getId() + "_" + side;
91+
}
92+
93+
@Override
94+
public String getSwitchBaseId(VoltageLevel voltageLevel, BusbarSection bbs1, BusbarSection bbs2) {
95+
return "SWITCH_" + bbs1.getId() + "_" + bbs2.getId();
96+
}
97+
}

src/test/resources/application-default.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,3 @@ powsybl-ws:
3434

3535
impacts:
3636
collection-threshold: 5
37-
38-
39-
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
naming-strategy: Dummy naming strategy

0 commit comments

Comments
 (0)