diff --git a/action-ial/action-ial-dsl/src/test/java/com/powsybl/action/ial/dsl/ConditionDslLoaderTest.java b/action-ial/action-ial-dsl/src/test/java/com/powsybl/action/ial/dsl/ConditionDslLoaderTest.java
index d145083eb29..ba5422901a0 100644
--- a/action-ial/action-ial-dsl/src/test/java/com/powsybl/action/ial/dsl/ConditionDslLoaderTest.java
+++ b/action-ial/action-ial-dsl/src/test/java/com/powsybl/action/ial/dsl/ConditionDslLoaderTest.java
@@ -158,19 +158,18 @@ void testExpressionEvaluator() throws IOException {
void testIsOverloadedNode() throws IOException {
line1.getTerminal1().setP(100.0).setQ(50.0);
evalAndAssert(false, "isOverloaded(['NHV1_NHV2_1','NHV1_NHV2_2'])");
-
- line1.newCurrentLimits1().setPermanentLimit(0.00001).add();
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(0.00001).add();
assertTrue(line1.getCurrentLimits1().isPresent());
evalAndAssert(true, "isOverloaded(['NHV1_NHV2_1','NHV1_NHV2_2'])");
line1.getTerminal1().setP(600.0).setQ(300.0); // i = 1019.2061
double current = line1.getTerminal1().getI();
- line1.newCurrentLimits1().setPermanentLimit(current - 100).add();
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(current - 100).add();
evalAndAssert(true, "isOverloaded(['NHV1_NHV2_1','NHV1_NHV2_2'])");
evalAndAssert(true, "isOverloaded(['NHV1_NHV2_1','NHV1_NHV2_2'], 0.05)");
- line1.newCurrentLimits1().setPermanentLimit(current).add();
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(current).add();
evalAndAssert(true, "isOverloaded(['NHV1_NHV2_1','NHV1_NHV2_2'])"); // permanent = real current
- line1.newCurrentLimits1().setPermanentLimit(current * 2).add();
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(current * 2).add();
evalAndAssert(false, "isOverloaded(['NHV1_NHV2_1','NHV1_NHV2_2'], 0.9)");
evalAndAssert(true, "isOverloaded(['NHV1_NHV2_1','NHV1_NHV2_2'], 0.1)");
@@ -196,13 +195,13 @@ void testAllOverloadedNode() throws IOException {
// Only line1 is overloaded
line1.getTerminal1().setP(600.0f).setQ(300.0f); // i = 1019.2061
double current1 = line1.getTerminal1().getI();
- line1.newCurrentLimits1().setPermanentLimit(current1 - 100).add();
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(current1 - 100).add();
evalAndAssert(false, "allOverloaded(['NHV1_NHV2_1','NHV1_NHV2_2'])");
// Both lines are overloaded
line2.getTerminal1().setP(600.0f).setQ(300.0f); // i = 1019.2061
double current2 = line2.getTerminal1().getI();
- line2.newCurrentLimits1().setPermanentLimit(current2 - 100).add();
+ line2.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(current2 - 100).add();
evalAndAssert(true, "allOverloaded(['NHV1_NHV2_1','NHV1_NHV2_2'])");
// Only line2 is overloaded
@@ -219,7 +218,7 @@ void testAllOverloadedNode() throws IOException {
}
private void addCurrentLimitsOnLine1() {
- line1.newCurrentLimits1()
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -242,7 +241,7 @@ private void addCurrentLimitsOnLine1() {
@Test
void testNetworkAccess() throws IOException {
// add temporary limits
- line1.newCurrentLimits1()
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -262,7 +261,7 @@ void testNetworkAccess() throws IOException {
@Test
void testLoadingRank() throws IOException {
// add temporary limits
- line1.newCurrentLimits1()
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -270,7 +269,7 @@ void testLoadingRank() throws IOException {
.setValue(800)
.endTemporaryLimit()
.add();
- line2.newCurrentLimits1()
+ line2.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -307,7 +306,7 @@ void testLoadingRank() throws IOException {
@Test
void testLoadingRankWithDifferentAcceptableDuration() throws IOException {
// add temporary limits
- line1.newCurrentLimits1()
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -315,7 +314,7 @@ void testLoadingRankWithDifferentAcceptableDuration() throws IOException {
.setValue(800)
.endTemporaryLimit()
.add();
- line2.newCurrentLimits1()
+ line2.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -339,7 +338,7 @@ void testLoadingRankWithDifferentAcceptableDuration() throws IOException {
@Test
void testLoadingRankWithUndefinedCurrentLimitsForLine2() throws IOException {
// add temporary limits
- line1.newCurrentLimits1()
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -358,7 +357,7 @@ void testLoadingRankWithUndefinedCurrentLimitsForLine2() throws IOException {
@Test
void testLoadingRankWithCurrentLimitsAtBothSides() throws IOException {
// add temporary limits
- line1.newCurrentLimits1()
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -366,7 +365,7 @@ void testLoadingRankWithCurrentLimitsAtBothSides() throws IOException {
.setValue(800)
.endTemporaryLimit()
.add();
- line1.newCurrentLimits2()
+ line1.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -379,7 +378,7 @@ void testLoadingRankWithCurrentLimitsAtBothSides() throws IOException {
.setValue(800)
.endTemporaryLimit()
.add();
- line2.newCurrentLimits1()
+ line2.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -408,7 +407,7 @@ void testLoadingRankWithCurrentLimitsAtBothSides() throws IOException {
@Test
void testMostLoaded() throws IOException {
// add temporary limits
- line1.newCurrentLimits1()
+ line1.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
@@ -416,7 +415,7 @@ void testMostLoaded() throws IOException {
.setValue(800)
.endTemporaryLimit()
.add();
- line2.newCurrentLimits1()
+ line2.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
diff --git a/action-ial/action-ial-simulator/src/test/java/com/powsybl/action/ial/simulator/EurostagTutorialExample1WithTemporaryLimitFactory.java b/action-ial/action-ial-simulator/src/test/java/com/powsybl/action/ial/simulator/EurostagTutorialExample1WithTemporaryLimitFactory.java
index 90c56d7f382..5d2b94f56b0 100644
--- a/action-ial/action-ial-simulator/src/test/java/com/powsybl/action/ial/simulator/EurostagTutorialExample1WithTemporaryLimitFactory.java
+++ b/action-ial/action-ial-simulator/src/test/java/com/powsybl/action/ial/simulator/EurostagTutorialExample1WithTemporaryLimitFactory.java
@@ -20,7 +20,7 @@ static Network create() {
Network network = EurostagTutorialExample1Factory.create();
// add a temporary limit
Line l2 = network.getLine("NHV1_NHV2_2");
- l2.newCurrentLimits1()
+ l2.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(400)
.beginTemporaryLimit()
.setName("20")
diff --git a/ampl-converter/src/test/java/com/powsybl/ampl/converter/AmplNetworkWriterTest.java b/ampl-converter/src/test/java/com/powsybl/ampl/converter/AmplNetworkWriterTest.java
index 2ac198bf603..b92e961e24f 100644
--- a/ampl-converter/src/test/java/com/powsybl/ampl/converter/AmplNetworkWriterTest.java
+++ b/ampl-converter/src/test/java/com/powsybl/ampl/converter/AmplNetworkWriterTest.java
@@ -184,7 +184,7 @@ void writeCurrentLimits() throws IOException {
void writeTieLine() throws IOException {
Network network = EurostagTutorialExample1Factory.createWithTieLine();
for (DanglingLine danglingLine : network.getDanglingLines()) {
- danglingLine.newCurrentLimits()
+ danglingLine.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit().setName("20'").setValue(120.0).setAcceptableDuration(20 * 60).endTemporaryLimit()
.beginTemporaryLimit().setName("10'").setValue(140.0).setAcceptableDuration(10 * 60).endTemporaryLimit()
diff --git a/ampl-converter/src/test/java/com/powsybl/ampl/converter/ExtendedAmplExporterTest.java b/ampl-converter/src/test/java/com/powsybl/ampl/converter/ExtendedAmplExporterTest.java
index 79fc7125e95..b80faf195e6 100644
--- a/ampl-converter/src/test/java/com/powsybl/ampl/converter/ExtendedAmplExporterTest.java
+++ b/ampl-converter/src/test/java/com/powsybl/ampl/converter/ExtendedAmplExporterTest.java
@@ -126,7 +126,7 @@ void testDanglingLineExport() throws IOException {
void testTieLineExport() throws IOException {
Network network = EurostagTutorialExample1Factory.createWithTieLine();
for (DanglingLine danglingLine : network.getDanglingLines()) {
- danglingLine.newCurrentLimits()
+ danglingLine.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit().setName("20'").setValue(120.0).setAcceptableDuration(20 * 60).endTemporaryLimit()
.beginTemporaryLimit().setName("10'").setValue(140.0).setAcceptableDuration(10 * 60).endTemporaryLimit()
diff --git a/cgmes/cgmes-conformity/src/main/java/com/powsybl/cgmes/conformity/CgmesConformity1NetworkCatalog.java b/cgmes/cgmes-conformity/src/main/java/com/powsybl/cgmes/conformity/CgmesConformity1NetworkCatalog.java
index 1f717c49ab5..32e60721b2a 100644
--- a/cgmes/cgmes-conformity/src/main/java/com/powsybl/cgmes/conformity/CgmesConformity1NetworkCatalog.java
+++ b/cgmes/cgmes-conformity/src/main/java/com/powsybl/cgmes/conformity/CgmesConformity1NetworkCatalog.java
@@ -129,7 +129,7 @@ private static Network microBE(String modelId) {
.setB(2.1677e-5)
.setPairingKey("TN_Border_ST24")
.add();
- be7.newCurrentLimits().setPermanentLimit(1180)
+ be7.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits().setPermanentLimit(1180)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1312.0)
@@ -223,7 +223,7 @@ private static Network microBE(String modelId) {
.setB(1.49854e-4)
.setPairingKey("TN_Border_AL11")
.add();
- be3.newCurrentLimits().setPermanentLimit(1371)
+ be3.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits().setPermanentLimit(1371)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1443.0)
@@ -249,7 +249,7 @@ private static Network microBE(String modelId) {
.setB(6.59734E-5)
.setPairingKey("TN_Border_GY11")
.add();
- be5.newCurrentLimits().setPermanentLimit(1804)
+ be5.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits().setPermanentLimit(1804)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1876.0)
@@ -275,7 +275,7 @@ private static Network microBE(String modelId) {
.setB(2.51956e-5)
.setPairingKey("TN_Border_MA11")
.add();
- be4.newCurrentLimits().setPermanentLimit(1226)
+ be4.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits().setPermanentLimit(1226)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1299.0)
@@ -337,7 +337,7 @@ private static Network microBE(String modelId) {
.setBus2(busAnvers220.getId())
.setVoltageLevel2(vlAnvers220.getId())
.add();
- lineBE2.newCurrentLimits1().setPermanentLimit(1443.0)
+ lineBE2.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(1443.0)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1574.0)
@@ -349,7 +349,7 @@ private static Network microBE(String modelId) {
.setAcceptableDuration(10)
.endTemporaryLimit()
.add();
- lineBE2.newCurrentLimits2().setPermanentLimit(1443.0)
+ lineBE2.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(1443.0)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1574.0)
@@ -386,7 +386,7 @@ private static Network microBE(String modelId) {
.setBus2(busAnvers220.getId())
.setVoltageLevel2(vlAnvers220.getId())
.add();
- lineBE6.newCurrentLimits1().setPermanentLimit(1180.0)
+ lineBE6.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(1180.0)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1312.0)
@@ -398,7 +398,7 @@ private static Network microBE(String modelId) {
.setAcceptableDuration(10)
.endTemporaryLimit()
.add();
- lineBE6.newCurrentLimits2().setPermanentLimit(1180.0)
+ lineBE6.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(1180.0)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1312.0)
@@ -544,7 +544,7 @@ private static void addTransformerBrussels110Brussels10(Substation sBrussels,
.setRatedU1(u1)
.setRatedU2(u2)
.add();
- tx.newCurrentLimits1().setPermanentLimit(1308.1)
+ tx.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(1308.1)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1408.1)
@@ -556,7 +556,7 @@ private static void addTransformerBrussels110Brussels10(Substation sBrussels,
.setAcceptableDuration(10)
.endTemporaryLimit()
.add();
- tx.newCurrentLimits2().setPermanentLimit(13746.4)
+ tx.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(13746.4)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(14746.4)
@@ -621,7 +621,7 @@ private static void addTransformerBrussels225Brussels110(Substation sBrussels,
.setRatedU1(u1)
.setRatedU2(u2)
.add();
- txBE22.newCurrentLimits2().setPermanentLimit(3411.6)
+ txBE22.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(3411.6)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(3611.6)
@@ -686,7 +686,7 @@ private static TwoWindingsTransformer addTransformerBrussels380Brussels110(Subst
.setRatedU1(u1)
.setRatedU2(u2)
.add();
- txBE21.newCurrentLimits2().setPermanentLimit(3411.6)
+ txBE21.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(3411.6)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(3611.6)
@@ -770,7 +770,7 @@ private static void addTWTBrussels380Brussels225Brussels21(Substation sBrussels,
.setVoltageLevel(vlBrussels21.getId())
.add()
.add();
- txBETR3.getLeg1().newCurrentLimits()
+ txBETR3.getLeg1().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(938.2)
.beginTemporaryLimit()
.setAcceptableDuration(20)
@@ -783,7 +783,7 @@ private static void addTWTBrussels380Brussels225Brussels21(Substation sBrussels,
.setValue(998.2)
.endTemporaryLimit()
.add();
- txBETR3.getLeg2().newCurrentLimits()
+ txBETR3.getLeg2().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1705.8)
.beginTemporaryLimit()
.setAcceptableDuration(20)
@@ -796,7 +796,7 @@ private static void addTWTBrussels380Brussels225Brussels21(Substation sBrussels,
.setValue(1905.8)
.endTemporaryLimit()
.add();
- txBETR3.getLeg3().newCurrentLimits()
+ txBETR3.getLeg3().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(17870.4)
.beginTemporaryLimit()
.setAcceptableDuration(20)
@@ -830,7 +830,7 @@ public static Network microBaseCaseBE() {
String modelId = "urn:uuid:d400c631-75a0-4c30-8aed-832b0d282e73";
Network network = microBE(modelId);
DanglingLine be1 = network.getDanglingLine(DANGLING_LINE_ID_1);
- be1.newCurrentLimits().setPermanentLimit(1443)
+ be1.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits().setPermanentLimit(1443)
.beginTemporaryLimit()
.setName("CL-4")
.setValue(1500.0)
@@ -853,7 +853,7 @@ public static Network microBaseCaseBE() {
.endTemporaryLimit()
.add();
TwoWindingsTransformer txBE21 = network.getTwoWindingsTransformer(TWT_ID_2);
- txBE21.newCurrentLimits1().setPermanentLimit(938.2)
+ txBE21.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(938.2)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(958.2)
@@ -866,7 +866,7 @@ public static Network microBaseCaseBE() {
.endTemporaryLimit()
.add();
TwoWindingsTransformer txBE22 = network.getTwoWindingsTransformer(TWT_ID_1);
- txBE22.newCurrentLimits1().setPermanentLimit(1705.8)
+ txBE22.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(1705.8)
.beginTemporaryLimit()
.setName(CL_0)
.setValue(1805.8)
@@ -998,7 +998,7 @@ public static Network microType4BE() {
TwoWindingsTransformer txBE22 = network.getTwoWindingsTransformer(TWT_ID_1);
txBE22.getRatioTapChanger().remove();
addPhaseTapChangerOnTxBE22(txBE22);
- txBE22.newCurrentLimits1().setPermanentLimit(1705.8)
+ txBE22.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(1705.8)
.beginTemporaryLimit()
.setName(CL_2)
.setValue(1805.8)
@@ -1010,7 +1010,7 @@ public static Network microType4BE() {
.setAcceptableDuration(10)
.endTemporaryLimit()
.add();
- txBE22.newCurrentLimits2().setPermanentLimit(3411.6)
+ txBE22.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(3411.6)
.beginTemporaryLimit()
.setName(CL_2)
.setValue(3611.6)
@@ -1026,7 +1026,7 @@ public static Network microType4BE() {
TwoWindingsTransformer txBE21 = network.getTwoWindingsTransformer(TWT_ID_2);
txBE21.getPhaseTapChanger().remove();
addPhaseTapChangerOnTxBE21(txBE21);
- txBE21.newCurrentLimits1().setPermanentLimit(938.2)
+ txBE21.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(938.2)
.beginTemporaryLimit()
.setName(CL_2)
.setValue(958.2)
@@ -1038,7 +1038,7 @@ public static Network microType4BE() {
.setAcceptableDuration(10)
.endTemporaryLimit()
.add();
- txBE21.newCurrentLimits2().setPermanentLimit(3411.6)
+ txBE21.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(3411.6)
.beginTemporaryLimit()
.setName(CL_2)
.setValue(3611.6)
@@ -1057,7 +1057,7 @@ public static Network microType4BE() {
network.getDanglingLine(DANGLING_LINE_ID_1)
.setP0(-89.462903)
.setQ0(1.519011)
- .newCurrentLimits()
+ .getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1443)
.beginTemporaryLimit()
.setName(CL_0)
diff --git a/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/CgmesTopologyKindTest.java b/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/CgmesTopologyKindTest.java
index 93ab21db564..a2771538ecc 100644
--- a/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/CgmesTopologyKindTest.java
+++ b/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/CgmesTopologyKindTest.java
@@ -332,10 +332,10 @@ private Network mixedTopologyNetwork() {
voltageLevel2.getNodeBreakerView().newInternalConnection().setNode1(3).setNode2(4).add();
// Add limits
- line.newCurrentLimits1().setPermanentLimit(100).add();
- line.newApparentPowerLimits1().setPermanentLimit(100).add();
- line.newActivePowerLimits2().setPermanentLimit(100).add();
- line.newApparentPowerLimits2().setPermanentLimit(100).add();
+ line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(100).add();
+ line.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits().setPermanentLimit(100).add();
+ line.getOrCreateSelectedOperationalLimitsGroup2().newActivePowerLimits().setPermanentLimit(100).add();
+ line.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits().setPermanentLimit(100).add();
return network;
}
diff --git a/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/EquipmentExportTest.java b/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/EquipmentExportTest.java
index 8f01b398d07..fa5ecb30ea5 100644
--- a/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/EquipmentExportTest.java
+++ b/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/EquipmentExportTest.java
@@ -255,11 +255,11 @@ private void prepareNetworkForSortedTransformerEndsComparison(Network network) {
TwoWindingsTransformer newTwt = pair.getRight().getAdder().add();
Optional currentLimits1 = pair.getRight().getCurrentLimits1();
if (currentLimits1.isPresent()) {
- newTwt.newCurrentLimits1().setPermanentLimit(currentLimits1.get().getPermanentLimit()).add();
+ newTwt.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(currentLimits1.get().getPermanentLimit()).add();
}
Optional currentLimits2 = pair.getRight().getCurrentLimits2();
if (currentLimits2.isPresent()) {
- newTwt.newCurrentLimits2().setPermanentLimit(currentLimits2.get().getPermanentLimit()).add();
+ newTwt.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(currentLimits2.get().getPermanentLimit()).add();
}
pair.getRight().getAliases().forEach(aliasPair -> {
if (aliasPair.getLeft() == null) {
diff --git a/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/issues/ExportNumberMaxValueTest.java b/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/issues/ExportNumberMaxValueTest.java
index f8bad8a5c11..a66abdef7e8 100644
--- a/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/issues/ExportNumberMaxValueTest.java
+++ b/cgmes/cgmes-conversion/src/test/java/com/powsybl/cgmes/conversion/test/export/issues/ExportNumberMaxValueTest.java
@@ -32,7 +32,7 @@ void testTemporaryLimitWithoutValue() throws IOException {
.getBusBreakerView().newBus().setId("B1").add();
Line line = network.newLine().setId("L01").setR(1.0).setX(10.0)
.setBus1("B0").setBus2("B1").add();
- line.newCurrentLimits1()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(2000)
.beginTemporaryLimit()
.setName("L300").setAcceptableDuration(300).setValue(3000)
diff --git a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/Branch.java b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/Branch.java
index 60103c610b4..db0cd01fdcb 100644
--- a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/Branch.java
+++ b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/Branch.java
@@ -224,7 +224,9 @@ default ApparentPowerLimits getNullableApparentPowerLimits1() {
* This operation is performed when the limits are created via {@link CurrentLimitsAdder#add()}, only if the limits to add
* are valid.
* @return an adder allowing to create a new {@link CurrentLimits} in the selected {@link OperationalLimitsGroup} on side 1.
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
*/
+ @Deprecated(since = "6.8.0")
CurrentLimitsAdder newCurrentLimits1();
/**
@@ -234,19 +236,61 @@ default ApparentPowerLimits getNullableApparentPowerLimits1() {
* are valid.
* @param currentLimits a set of existing current limits.
* @return an adder allowing to create a new {@link CurrentLimits} initialized from the limits in parameters in the selected {@link OperationalLimitsGroup} on side 1.
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits(CurrentLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
default CurrentLimitsAdder newCurrentLimits1(CurrentLimits currentLimits) {
CurrentLimitsAdder currentLimitsAdder = newCurrentLimits1();
return initializeFromLoadingLimits(currentLimitsAdder, currentLimits);
}
+ /**
+ * Get the {@link OperationalLimitsGroup} corresponding to the default ID or create a new one if it does not exist.
+ * Set the {@link OperationalLimitsGroup} as the selected one on side 1.
+ * @return the selected {@link OperationalLimitsGroup} on side 1.
+ */
+ OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup1();
+
+ /**
+ * Get the {@link OperationalLimitsGroup} corresponding to the default ID or create a new one if it does not exist.
+ * Set the {@link OperationalLimitsGroup} as the selected one on side 2.
+ * @return the selected {@link OperationalLimitsGroup} on side 2.
+ */
+ OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup2();
+
+ /**
+ * Get the {@link OperationalLimitsGroup} corresponding to the given ID or create a new one if it does not exist.
+ * Set the {@link OperationalLimitsGroup} as the selected one on side 1.
+ * @param limitsGroupId an ID of {@link OperationalLimitsGroup}
+ * @return the selected {@link OperationalLimitsGroup} on side 1.
+ */
+ default OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup1(String limitsGroupId) {
+ OperationalLimitsGroup operationalLimitsGroup = getOperationalLimitsGroup1(limitsGroupId).orElseGet(() -> newOperationalLimitsGroup1(limitsGroupId));
+ setSelectedOperationalLimitsGroup1(limitsGroupId);
+ return operationalLimitsGroup;
+ }
+
+ /**
+ * Get the {@link OperationalLimitsGroup} corresponding to the given ID or create a new one if it does not exist.
+ * Set the {@link OperationalLimitsGroup} as the selected one on side 2.
+ * @param limitsGroupId an ID of {@link OperationalLimitsGroup}
+ * @return the selected {@link OperationalLimitsGroup} on side 2.
+ */
+ default OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup2(String limitsGroupId) {
+ OperationalLimitsGroup operationalLimitsGroup = getOperationalLimitsGroup2(limitsGroupId).orElseGet(() -> newOperationalLimitsGroup2(limitsGroupId));
+ setSelectedOperationalLimitsGroup2(limitsGroupId);
+ return operationalLimitsGroup;
+ }
+
/**
* Create an adder to add a new {@link ActivePowerLimits} in the selected {@link OperationalLimitsGroup} on side 1.
* If there's no selected group, the adder will also create a new group with the default name and set it as selected.
* This operation is performed when the limits are created via {@link ActivePowerLimitsAdder#add()}, only if the limits to add
* are valid.
* @return an adder allowing to create a new {@link ActivePowerLimits} in the selected {@link OperationalLimitsGroup} on side 1.
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
*/
+ @Deprecated(since = "6.8.0")
ActivePowerLimitsAdder newActivePowerLimits1();
/**
@@ -256,7 +300,9 @@ default CurrentLimitsAdder newCurrentLimits1(CurrentLimits currentLimits) {
* are valid.
* @param activePowerLimits a set of existing active power limits.
* @return an adder allowing to create a new {@link ActivePowerLimits} initialized from the limits in parameters in the selected {@link OperationalLimitsGroup} on side 1.
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits(ActivePowerLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
default ActivePowerLimitsAdder newActivePowerLimits1(ActivePowerLimits activePowerLimits) {
ActivePowerLimitsAdder activePowerLimitsAdder = newActivePowerLimits1();
return initializeFromLoadingLimits(activePowerLimitsAdder, activePowerLimits);
@@ -268,7 +314,9 @@ default ActivePowerLimitsAdder newActivePowerLimits1(ActivePowerLimits activePow
* This operation is performed when the limits are created via {@link ApparentPowerLimitsAdder#add()}, only if the limits to add
* are valid.
* @return an adder allowing to create a new {@link ApparentPowerLimits} in the selected {@link OperationalLimitsGroup} on side 1.
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
*/
+ @Deprecated(since = "6.8.0")
ApparentPowerLimitsAdder newApparentPowerLimits1();
/**
@@ -278,7 +326,9 @@ default ActivePowerLimitsAdder newActivePowerLimits1(ActivePowerLimits activePow
* are valid.
* @param apparentPowerLimits a set of existing apparent power limits.
* @return an adder allowing to create a new {@link ApparentPowerLimits} initialized from the limits in parameters in the selected {@link OperationalLimitsGroup} on side 1.
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits(ApparentPowerLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
default ApparentPowerLimitsAdder newApparentPowerLimits1(ApparentPowerLimits apparentPowerLimits) {
ApparentPowerLimitsAdder apparentPowerLimitsAdder = newApparentPowerLimits1();
return initializeFromLoadingLimits(apparentPowerLimitsAdder, apparentPowerLimits);
@@ -391,7 +441,10 @@ default ApparentPowerLimits getNullableApparentPowerLimits2() {
* This operation is performed when the limits are created via {@link CurrentLimitsAdder#add()}, only if the limits to add
* are valid.
* @return an adder allowing to create a new {@link CurrentLimits} in the selected {@link OperationalLimitsGroup} on side 2.
+ CurrentLimits currentLimits
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
*/
+ @Deprecated(since = "6.8.0")
CurrentLimitsAdder newCurrentLimits2();
/**
@@ -401,7 +454,9 @@ default ApparentPowerLimits getNullableApparentPowerLimits2() {
* are valid.
* @param currentLimits a set of existing current limits.
* @return an adder allowing to create a new {@link CurrentLimits} initialized from the limits in parameters in the selected {@link OperationalLimitsGroup} on side 2.
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits(CurrentLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
default CurrentLimitsAdder newCurrentLimits2(CurrentLimits currentLimits) {
CurrentLimitsAdder currentLimitsAdder = newCurrentLimits2();
return initializeFromLoadingLimits(currentLimitsAdder, currentLimits);
@@ -413,7 +468,9 @@ default CurrentLimitsAdder newCurrentLimits2(CurrentLimits currentLimits) {
* This operation is performed when the limits are created via {@link ActivePowerLimitsAdder#add()}, only if the limits to add
* are valid.
* @return an adder allowing to create a new {@link ActivePowerLimits} in the selected {@link OperationalLimitsGroup} on side 2.
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
*/
+ @Deprecated(since = "6.8.0")
ActivePowerLimitsAdder newActivePowerLimits2();
/**
@@ -423,7 +480,9 @@ default CurrentLimitsAdder newCurrentLimits2(CurrentLimits currentLimits) {
* are valid.
* @param activePowerLimits a set of existing active power limits.
* @return an adder allowing to create a new {@link ActivePowerLimits} initialized from the limits in parameters in the selected {@link OperationalLimitsGroup} on side 2.
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits(ActivePowerLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
default ActivePowerLimitsAdder newActivePowerLimits2(ActivePowerLimits activePowerLimits) {
ActivePowerLimitsAdder activePowerLimitsAdder = newActivePowerLimits2();
return initializeFromLoadingLimits(activePowerLimitsAdder, activePowerLimits);
@@ -435,7 +494,9 @@ default ActivePowerLimitsAdder newActivePowerLimits2(ActivePowerLimits activePow
* This operation is performed when the limits are created via {@link ApparentPowerLimitsAdder#add()}, only if the limits to add
* are valid.
* @return an adder allowing to create a new {@link ApparentPowerLimits} in the selected {@link OperationalLimitsGroup} on side 2.
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
*/
+ @Deprecated(since = "6.8.0")
ApparentPowerLimitsAdder newApparentPowerLimits2();
/**
@@ -445,7 +506,9 @@ default ActivePowerLimitsAdder newActivePowerLimits2(ActivePowerLimits activePow
* are valid.
* @param apparentPowerLimits a set of existing apparent power limits.
* @return an adder allowing to create a new {@link ApparentPowerLimits} initialized from the limits in parameters in the selected {@link OperationalLimitsGroup} on side 2.
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits(ApparentPowerLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
default ApparentPowerLimitsAdder newApparentPowerLimits2(ApparentPowerLimits apparentPowerLimits) {
ApparentPowerLimitsAdder apparentPowerLimitsAdder = newApparentPowerLimits2();
return initializeFromLoadingLimits(apparentPowerLimitsAdder, apparentPowerLimits);
diff --git a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/FlowsLimitsHolder.java b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/FlowsLimitsHolder.java
index b510a162a75..80f757afee2 100644
--- a/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/FlowsLimitsHolder.java
+++ b/iidm/iidm-api/src/main/java/com/powsybl/iidm/network/FlowsLimitsHolder.java
@@ -86,6 +86,25 @@ default CurrentLimits getNullableCurrentLimits() {
return getCurrentLimits().orElse(null);
}
+ /**
+ * Get the {@link OperationalLimitsGroup} corresponding to the default ID or create a new one if it does not exist.
+ * Set the {@link OperationalLimitsGroup} as the selected one.
+ * @return the selected {@link OperationalLimitsGroup}.
+ */
+ OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup();
+
+ /**
+ * Get the {@link OperationalLimitsGroup} corresponding to the given ID or create a new one if it does not exist.
+ * Set the {@link OperationalLimitsGroup} as the selected one .
+ * @param limitsGroupId an ID of {@link OperationalLimitsGroup}
+ * @return the selected {@link OperationalLimitsGroup}.
+ */
+ default OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup(String limitsGroupId) {
+ OperationalLimitsGroup operationalLimitsGroup = getOperationalLimitsGroup(limitsGroupId).orElseGet(() -> newOperationalLimitsGroup(limitsGroupId));
+ setSelectedOperationalLimitsGroup(limitsGroupId);
+ return operationalLimitsGroup;
+ }
+
/**
* Get the {@link ActivePowerLimits} of the selected {@link OperationalLimitsGroup}.
* @return {@link ActivePowerLimits} of the selected {@link OperationalLimitsGroup} if any, an empty {@link Optional} otherwise.
@@ -124,7 +143,9 @@ default ApparentPowerLimits getNullableApparentPowerLimits() {
* This operation is performed when the limits are created via {@link CurrentLimitsAdder#add()}, only if the limits to add
* are valid.
* @return an adder allowing to create a new {@link CurrentLimits} in the selected {@link OperationalLimitsGroup}.
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits(CurrentLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
CurrentLimitsAdder newCurrentLimits();
/**
@@ -134,7 +155,9 @@ default ApparentPowerLimits getNullableApparentPowerLimits() {
* are valid.
* @param limits a set of existing current limits.
* @return an adder allowing to create a new {@link CurrentLimits} initialized from the limits in parameters in the selected {@link OperationalLimitsGroup}.
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits(CurrentLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
default CurrentLimitsAdder newCurrentLimits(CurrentLimits limits) {
CurrentLimitsAdder adder = newCurrentLimits();
return initializeFromLoadingLimits(adder, limits);
@@ -146,7 +169,9 @@ default CurrentLimitsAdder newCurrentLimits(CurrentLimits limits) {
* This operation is performed when the limits are created via {@link ApparentPowerLimitsAdder#add()}, only if the limits to add
* are valid.
* @return an adder allowing to create a new {@link ApparentPowerLimits} in the selected {@link OperationalLimitsGroup}.
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
*/
+ @Deprecated(since = "6.8.0")
ApparentPowerLimitsAdder newApparentPowerLimits();
/**
@@ -156,7 +181,9 @@ default CurrentLimitsAdder newCurrentLimits(CurrentLimits limits) {
* are valid.
* @param limits a set of existing apparent power limits.
* @return an adder allowing to create a new {@link ApparentPowerLimits} initialized from the limits in parameters in the selected {@link OperationalLimitsGroup}.
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits(ApparentPowerLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
default ApparentPowerLimitsAdder newApparentPowerLimits(ApparentPowerLimits limits) {
ApparentPowerLimitsAdder adder = newApparentPowerLimits();
return initializeFromLoadingLimits(adder, limits);
@@ -168,7 +195,9 @@ default ApparentPowerLimitsAdder newApparentPowerLimits(ApparentPowerLimits limi
* This operation is performed when the limits are created via {@link ActivePowerLimitsAdder#add()}, only if the limits to add
* are valid.
* @return an adder allowing to create a new {@link ActivePowerLimits} in the selected {@link OperationalLimitsGroup}.
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
*/
+ @Deprecated(since = "6.8.0")
ActivePowerLimitsAdder newActivePowerLimits();
/**
@@ -178,7 +207,9 @@ default ApparentPowerLimitsAdder newApparentPowerLimits(ApparentPowerLimits limi
* are valid.
* @param limits a set of existing active power limits.
* @return an adder allowing to create a new {@link ActivePowerLimits} initialized from the limits in parameters in the selected {@link OperationalLimitsGroup}.
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits(ActivePowerLimits)} instead.
*/
+ @Deprecated(since = "6.8.0")
default ActivePowerLimitsAdder newActivePowerLimits(ActivePowerLimits limits) {
ActivePowerLimitsAdder adder = newActivePowerLimits();
return initializeFromLoadingLimits(adder, limits);
diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractConnectableBranch.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractConnectableBranch.java
index 85dd220d71a..b9a109c4270 100644
--- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractConnectableBranch.java
+++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/AbstractConnectableBranch.java
@@ -97,19 +97,41 @@ public void cancelSelectedOperationalLimitsGroup1() {
getOperationalLimitsHolder1().cancelSelectedOperationalLimitsGroup();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public CurrentLimitsAdder newCurrentLimits1() {
- return getOperationalLimitsHolder1().newCurrentLimits();
+ return getOperationalLimitsHolder1().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits();
}
+ @Override
+ public OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup1() {
+ return getOperationalLimitsHolder1().getOrCreateSelectedOperationalLimitsGroup();
+ }
+
+ @Override
+ public OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup2() {
+ return getOperationalLimitsHolder2().getOrCreateSelectedOperationalLimitsGroup();
+ }
+
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ActivePowerLimitsAdder newActivePowerLimits1() {
- return getOperationalLimitsHolder1().newActivePowerLimits();
+ return getOperationalLimitsHolder1().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ApparentPowerLimitsAdder newApparentPowerLimits1() {
- return getOperationalLimitsHolder1().newApparentPowerLimits();
+ return getOperationalLimitsHolder1().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits();
}
private FlowsLimitsHolder getOperationalLimitsHolder2() {
@@ -156,19 +178,31 @@ public void cancelSelectedOperationalLimitsGroup2() {
getOperationalLimitsHolder2().cancelSelectedOperationalLimitsGroup();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public CurrentLimitsAdder newCurrentLimits2() {
- return getOperationalLimitsHolder2().newCurrentLimits();
+ return getOperationalLimitsHolder2().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ActivePowerLimitsAdder newActivePowerLimits2() {
- return getOperationalLimitsHolder2().newActivePowerLimits();
+ return getOperationalLimitsHolder2().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ApparentPowerLimitsAdder newApparentPowerLimits2() {
- return getOperationalLimitsHolder2().newApparentPowerLimits();
+ return getOperationalLimitsHolder2().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits();
}
@Override
diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DanglingLineImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DanglingLineImpl.java
index 343136f29d8..de338a720cb 100644
--- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DanglingLineImpl.java
+++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DanglingLineImpl.java
@@ -475,19 +475,36 @@ public void cancelSelectedOperationalLimitsGroup() {
operationalLimitsGroups.cancelSelectedOperationalLimitsGroup();
}
+ @Override
+ public OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup() {
+ return operationalLimitsGroups.getOrCreateSelectedOperationalLimitsGroup();
+ }
+
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public CurrentLimitsAdder newCurrentLimits() {
- return operationalLimitsGroups.newCurrentLimits();
+ return operationalLimitsGroups.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ActivePowerLimitsAdder newActivePowerLimits() {
- return operationalLimitsGroups.newActivePowerLimits();
+ return operationalLimitsGroups.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ApparentPowerLimitsAdder newApparentPowerLimits() {
- return operationalLimitsGroups.newApparentPowerLimits();
+ return operationalLimitsGroups.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits();
}
@Override
@@ -536,4 +553,5 @@ public void allocateVariantArrayElement(int[] indexes, int sourceIndex) {
generation.allocateVariantArrayElement(indexes, sourceIndex);
}
}
+
}
diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/OperationalLimitsGroupsImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/OperationalLimitsGroupsImpl.java
index f82a9563720..c4f939aada0 100644
--- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/OperationalLimitsGroupsImpl.java
+++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/OperationalLimitsGroupsImpl.java
@@ -107,7 +107,8 @@ public Optional getSelectedOperationalLimitsGroupId() {
return Optional.ofNullable(selectedLimitsId);
}
- private OperationalLimitsGroupImpl getOrCreateSelectedOperationalLimitsGroup() {
+ @Override
+ public OperationalLimitsGroupImpl getOrCreateSelectedOperationalLimitsGroup() {
return getSelectedOperationalLimitsGroupImpl().orElseGet(() -> {
String groupId = DEFAULT_SELECTED_OPERATIONAL_LIMITS_GROUP_ID;
OperationalLimitsGroupImpl group = Optional.ofNullable(operationalLimitsGroupById.get(groupId))
@@ -117,18 +118,30 @@ private OperationalLimitsGroupImpl getOrCreateSelectedOperationalLimitsGroup() {
});
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public CurrentLimitsAdder newCurrentLimits() {
return new CurrentLimitsAdderImpl(this::getOrCreateSelectedOperationalLimitsGroup,
identifiable, identifiable.getId(), identifiable.getNetwork());
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ActivePowerLimitsAdder newActivePowerLimits() {
return new ActivePowerLimitsAdderImpl(this::getOrCreateSelectedOperationalLimitsGroup,
identifiable, identifiable.getId(), identifiable.getNetwork());
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ApparentPowerLimitsAdder newApparentPowerLimits() {
return new ApparentPowerLimitsAdderImpl(this::getOrCreateSelectedOperationalLimitsGroup,
diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/ThreeWindingsTransformerImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/ThreeWindingsTransformerImpl.java
index 279c8fdac2d..122c47045a8 100644
--- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/ThreeWindingsTransformerImpl.java
+++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/ThreeWindingsTransformerImpl.java
@@ -207,19 +207,36 @@ public void cancelSelectedOperationalLimitsGroup() {
operationalLimitsHolder.cancelSelectedOperationalLimitsGroup();
}
+ @Override
+ public OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup() {
+ return operationalLimitsHolder.getOrCreateSelectedOperationalLimitsGroup();
+ }
+
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public CurrentLimitsAdder newCurrentLimits() {
- return operationalLimitsHolder.newCurrentLimits();
+ return operationalLimitsHolder.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ActivePowerLimitsAdder newActivePowerLimits() {
- return operationalLimitsHolder.newActivePowerLimits();
+ return operationalLimitsHolder.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ApparentPowerLimitsAdder newApparentPowerLimits() {
- return operationalLimitsHolder.newApparentPowerLimits();
+ return operationalLimitsHolder.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits();
}
protected String getTypeDescription() {
diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineImpl.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineImpl.java
index 7f2472a7fd1..c02976c69c1 100644
--- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineImpl.java
+++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/TieLineImpl.java
@@ -274,19 +274,41 @@ public void cancelSelectedOperationalLimitsGroup1() {
danglingLine1.cancelSelectedOperationalLimitsGroup();
}
+ @Override
+ public OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup1() {
+ return danglingLine1.getOrCreateSelectedOperationalLimitsGroup();
+ }
+
+ @Override
+ public OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup2() {
+ return danglingLine2.getOrCreateSelectedOperationalLimitsGroup();
+ }
+
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public CurrentLimitsAdder newCurrentLimits1() {
- return danglingLine1.newCurrentLimits();
+ return danglingLine1.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ActivePowerLimitsAdder newActivePowerLimits1() {
- return danglingLine1.newActivePowerLimits();
+ return danglingLine1.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ApparentPowerLimitsAdder newApparentPowerLimits1() {
- return danglingLine1.newApparentPowerLimits();
+ return danglingLine1.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits();
}
@Override
@@ -329,19 +351,31 @@ public void cancelSelectedOperationalLimitsGroup2() {
danglingLine2.cancelSelectedOperationalLimitsGroup();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public CurrentLimitsAdder newCurrentLimits2() {
- return danglingLine2.newCurrentLimits();
+ return danglingLine2.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ActivePowerLimitsAdder newActivePowerLimits2() {
- return danglingLine2.newActivePowerLimits();
+ return danglingLine2.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ApparentPowerLimitsAdder newApparentPowerLimits2() {
- return danglingLine2.newApparentPowerLimits();
+ return danglingLine2.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits();
}
@Override
diff --git a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/util/SwitchesFlowTest.java b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/util/SwitchesFlowTest.java
index ebf78e167af..eb61005ae8a 100644
--- a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/util/SwitchesFlowTest.java
+++ b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/util/SwitchesFlowTest.java
@@ -295,10 +295,10 @@ private static void createTwoWindingsTransformer(Substation s, String vl1id, Str
.setNode2(node2)
.setVoltageLevel2(vl2id)
.add();
- twt.newCurrentLimits1()
+ twt.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1030.0)
.add();
- twt.newCurrentLimits2()
+ twt.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1030.0)
.add();
twt.getTerminal1().setP(p1).setQ(q1);
@@ -421,10 +421,10 @@ private static void createTwoWindingsTransformer(Substation s, String vl1id, Str
.setBus2(busId2)
.setVoltageLevel2(vl2id)
.add();
- twt.newCurrentLimits1()
+ twt.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1030.0)
.add();
- twt.newCurrentLimits2()
+ twt.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1030.0)
.add();
twt.getTerminal1().setP(p1).setQ(q1);
diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/TopologyModificationUtils.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/TopologyModificationUtils.java
index 52bd361800e..0547bd57c4e 100644
--- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/TopologyModificationUtils.java
+++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/TopologyModificationUtils.java
@@ -175,13 +175,13 @@ static void attachLine(Terminal terminal, LineAdder adder, BiConsumer addLoadingLimits(created.newActivePowerLimits1(), lim));
- limits.getApparentPowerLimits().ifPresent(lim -> addLoadingLimits(created.newApparentPowerLimits1(), lim));
- limits.getCurrentLimits().ifPresent(lim -> addLoadingLimits(created.newCurrentLimits1(), lim));
+ limits.getActivePowerLimits().ifPresent(lim -> addLoadingLimits(created.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits(), lim));
+ limits.getApparentPowerLimits().ifPresent(lim -> addLoadingLimits(created.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits(), lim));
+ limits.getCurrentLimits().ifPresent(lim -> addLoadingLimits(created.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits(), lim));
} else {
- limits.getActivePowerLimits().ifPresent(lim -> addLoadingLimits(created.newActivePowerLimits2(), lim));
- limits.getApparentPowerLimits().ifPresent(lim -> addLoadingLimits(created.newApparentPowerLimits2(), lim));
- limits.getCurrentLimits().ifPresent(lim -> addLoadingLimits(created.newCurrentLimits2(), lim));
+ limits.getActivePowerLimits().ifPresent(lim -> addLoadingLimits(created.getOrCreateSelectedOperationalLimitsGroup2().newActivePowerLimits(), lim));
+ limits.getApparentPowerLimits().ifPresent(lim -> addLoadingLimits(created.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits(), lim));
+ limits.getCurrentLimits().ifPresent(lim -> addLoadingLimits(created.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits(), lim));
}
}
diff --git a/iidm/iidm-modification/src/test/java/com/powsybl/iidm/modification/topology/RevertConnectVoltageLevelOnLineTest.java b/iidm/iidm-modification/src/test/java/com/powsybl/iidm/modification/topology/RevertConnectVoltageLevelOnLineTest.java
index cdfe4a61f5c..d923dd87ed7 100644
--- a/iidm/iidm-modification/src/test/java/com/powsybl/iidm/modification/topology/RevertConnectVoltageLevelOnLineTest.java
+++ b/iidm/iidm-modification/src/test/java/com/powsybl/iidm/modification/topology/RevertConnectVoltageLevelOnLineTest.java
@@ -21,7 +21,6 @@
import static com.powsybl.iidm.modification.topology.TopologyTestUtils.*;
import static org.junit.jupiter.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
/**
* @author Franck Lecuyer {@literal }
@@ -88,13 +87,13 @@ void revertConnectVoltageLevelOnLineNbTest() throws IOException {
// create limits on tee point side
Line line1 = network.getLine("CJ_1");
Line line2 = network.getLine("CJ_2");
- line1.newActivePowerLimits2().setPermanentLimit(100.).beginTemporaryLimit().setName("limit1").setValue(500).setAcceptableDuration(1200).endTemporaryLimit().add();
- line1.newApparentPowerLimits2().setPermanentLimit(200.).add();
- line1.newCurrentLimits2().setPermanentLimit(100.).beginTemporaryLimit().setName("limit3").setValue(900).setAcceptableDuration(60).endTemporaryLimit().add();
+ line1.getOrCreateSelectedOperationalLimitsGroup2().newActivePowerLimits().setPermanentLimit(100.).beginTemporaryLimit().setName("limit1").setValue(500).setAcceptableDuration(1200).endTemporaryLimit().add();
+ line1.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits().setPermanentLimit(200.).add();
+ line1.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(100.).beginTemporaryLimit().setName("limit3").setValue(900).setAcceptableDuration(60).endTemporaryLimit().add();
- line2.newActivePowerLimits1().setPermanentLimit(600.).beginTemporaryLimit().setName("limit4").setValue(1000).setAcceptableDuration(300).endTemporaryLimit().add();
- line2.newApparentPowerLimits1().setPermanentLimit(800.).add();
- line2.newCurrentLimits1().setPermanentLimit(900.).beginTemporaryLimit().setName("limit6").setValue(400).setAcceptableDuration(1200).endTemporaryLimit().add();
+ line2.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits().setPermanentLimit(600.).beginTemporaryLimit().setName("limit4").setValue(1000).setAcceptableDuration(300).endTemporaryLimit().add();
+ line2.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits().setPermanentLimit(800.).add();
+ line2.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(900.).beginTemporaryLimit().setName("limit6").setValue(400).setAcceptableDuration(1200).endTemporaryLimit().add();
ReportNode reportNode = ReportNode.newRootReportNode()
.withResourceBundles(PowsyblTestReportResourceBundle.TEST_BASE_NAME, PowsyblCoreReportResourceBundle.BASE_NAME)
diff --git a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/DanglingLineSerDe.java b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/DanglingLineSerDe.java
index eebd5ca6a8a..ea78b962df2 100644
--- a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/DanglingLineSerDe.java
+++ b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/DanglingLineSerDe.java
@@ -170,13 +170,13 @@ protected void readSubElements(DanglingLine dl, NetworkDeserializerContext conte
}
case ACTIVE_POWER_LIMITS -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(dl.newActivePowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(dl.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(dl.newApparentPowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(dl.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits(), context));
}
- case CURRENT_LIMITS -> readCurrentLimits(dl.newCurrentLimits(), context);
+ case CURRENT_LIMITS -> readCurrentLimits(dl.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits(), context);
case ReactiveLimitsSerDe.ELEM_REACTIVE_CAPABILITY_CURVE -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME + ".generation", "reactiveLimits", IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_3, context);
ReactiveLimitsSerDe.INSTANCE.readReactiveCapabilityCurve(dl.getGeneration(), context);
diff --git a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/LineSerDe.java b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/LineSerDe.java
index 419cd524e35..0ab6f56c556 100644
--- a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/LineSerDe.java
+++ b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/LineSerDe.java
@@ -94,26 +94,26 @@ protected void readSubElements(Line l, NetworkDeserializerContext context) {
}
case ACTIVE_POWER_LIMITS_1 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(l.newActivePowerLimits1(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(l.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS_1 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(l.newApparentPowerLimits1(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(l.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits(), context));
}
- case "currentLimits1" -> readCurrentLimits(l.newCurrentLimits1(), context);
+ case "currentLimits1" -> readCurrentLimits(l.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits(), context);
case LIMITS_GROUP_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, LIMITS_GROUPS + "2", IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_12, context);
IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_12, context, () -> readLoadingLimitsGroup(l::newOperationalLimitsGroup2, LIMITS_GROUP_2, context));
}
case ACTIVE_POWER_LIMITS_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(l.newActivePowerLimits2(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(l.getOrCreateSelectedOperationalLimitsGroup2().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(l.newApparentPowerLimits2(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(l.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits(), context));
}
- case "currentLimits2" -> readCurrentLimits(l.newCurrentLimits2(), context);
+ case "currentLimits2" -> readCurrentLimits(l.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits(), context);
default -> super.readSubElement(elementName, l, context);
}
});
diff --git a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/ThreeWindingsTransformerSerDe.java b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/ThreeWindingsTransformerSerDe.java
index 8a995ea249c..7dcd069bced 100644
--- a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/ThreeWindingsTransformerSerDe.java
+++ b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/ThreeWindingsTransformerSerDe.java
@@ -180,39 +180,39 @@ protected void readSubElements(ThreeWindingsTransformer tx, NetworkDeserializerC
}
case ACTIVE_POWER_LIMITS_1 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tx.getLeg1().newActivePowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tx.getLeg1().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS_1 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tx.getLeg1().newApparentPowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tx.getLeg1().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits(), context));
}
- case "currentLimits1" -> readCurrentLimits(tx.getLeg1().newCurrentLimits(), context);
+ case "currentLimits1" -> readCurrentLimits(tx.getLeg1().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits(), context);
case LIMITS_GROUP_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, LIMITS_GROUP_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_12, context);
IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_12, context, () -> readLoadingLimitsGroups(tx.getLeg2(), LIMITS_GROUP_2, context));
}
case ACTIVE_POWER_LIMITS_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tx.getLeg2().newActivePowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tx.getLeg2().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tx.getLeg2().newApparentPowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tx.getLeg2().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits(), context));
}
- case "currentLimits2" -> readCurrentLimits(tx.getLeg2().newCurrentLimits(), context);
+ case "currentLimits2" -> readCurrentLimits(tx.getLeg2().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits(), context);
case LIMITS_GROUP_3 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, LIMITS_GROUP_3, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_12, context);
IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_12, context, () -> readLoadingLimitsGroups(tx.getLeg3(), LIMITS_GROUP_3, context));
}
case ACTIVE_POWER_LIMITS_3 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_3, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tx.getLeg3().newActivePowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tx.getLeg3().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS_3 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS_3, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tx.getLeg3().newApparentPowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tx.getLeg3().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits(), context));
}
- case "currentLimits3" -> readCurrentLimits(tx.getLeg3().newCurrentLimits(), context);
+ case "currentLimits3" -> readCurrentLimits(tx.getLeg3().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits(), context);
case RATIO_TAP_CHANGER_1 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, RATIO_TAP_CHANGER_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_1, context);
readRatioTapChanger(1, tx.getLeg1(), context);
diff --git a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/TieLineSerDe.java b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/TieLineSerDe.java
index 752ddbf9c83..a5235df5e39 100644
--- a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/TieLineSerDe.java
+++ b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/TieLineSerDe.java
@@ -172,16 +172,16 @@ protected void readSubElements(TieLine tl, NetworkDeserializerContext context) {
case ACTIVE_POWER_LIMITS_1 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
IidmSerDeUtil.assertMaximumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_9, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tl.getDanglingLine1().newActivePowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tl.getDanglingLine1().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS_1 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
IidmSerDeUtil.assertMaximumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_9, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tl.getDanglingLine1().newApparentPowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tl.getDanglingLine1().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits(), context));
}
case "currentLimits1" -> {
IidmSerDeUtil.assertMaximumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_9, context);
- readCurrentLimits(tl.getDanglingLine1().newCurrentLimits(), context);
+ readCurrentLimits(tl.getDanglingLine1().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits(), context);
}
case LIMITS_GROUP_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, LIMITS_GROUP_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_12, context);
@@ -190,16 +190,16 @@ protected void readSubElements(TieLine tl, NetworkDeserializerContext context) {
case ACTIVE_POWER_LIMITS_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
IidmSerDeUtil.assertMaximumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_9, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tl.getDanglingLine2().newActivePowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(tl.getDanglingLine2().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
IidmSerDeUtil.assertMaximumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_9, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tl.getDanglingLine2().newApparentPowerLimits(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(tl.getDanglingLine2().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits(), context));
}
case "currentLimits2" -> {
IidmSerDeUtil.assertMaximumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_9, context);
- readCurrentLimits(tl.getDanglingLine2().newCurrentLimits(), context);
+ readCurrentLimits(tl.getDanglingLine2().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits(), context);
}
default -> readSubElement(elementName, tl, context);
}
diff --git a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/TwoWindingsTransformerSerDe.java b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/TwoWindingsTransformerSerDe.java
index b05d2977b6c..5827d801cb5 100644
--- a/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/TwoWindingsTransformerSerDe.java
+++ b/iidm/iidm-serde/src/main/java/com/powsybl/iidm/serde/TwoWindingsTransformerSerDe.java
@@ -102,26 +102,26 @@ protected void readSubElements(TwoWindingsTransformer twt, NetworkDeserializerCo
}
case ACTIVE_POWER_LIMITS_1 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(twt.newActivePowerLimits1(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(twt.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS_1 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS_1, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(twt.newApparentPowerLimits1(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(twt.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits(), context));
}
- case "currentLimits1" -> readCurrentLimits(twt.newCurrentLimits1(), context);
+ case "currentLimits1" -> readCurrentLimits(twt.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits(), context);
case LIMITS_GROUP_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, LIMITS_GROUP_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_12, context);
IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_12, context, () -> readLoadingLimitsGroup(twt::newOperationalLimitsGroup2, LIMITS_GROUP_2, context));
}
case ACTIVE_POWER_LIMITS_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, ACTIVE_POWER_LIMITS_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(twt.newActivePowerLimits2(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readActivePowerLimits(twt.getOrCreateSelectedOperationalLimitsGroup2().newActivePowerLimits(), context));
}
case APPARENT_POWER_LIMITS_2 -> {
IidmSerDeUtil.assertMinimumVersion(ROOT_ELEMENT_NAME, APPARENT_POWER_LIMITS_2, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_5, context);
- IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(twt.newApparentPowerLimits2(), context));
+ IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_5, context, () -> readApparentPowerLimits(twt.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits(), context));
}
- case "currentLimits2" -> readCurrentLimits(twt.newCurrentLimits2(), context);
+ case "currentLimits2" -> readCurrentLimits(twt.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits(), context);
case "ratioTapChanger" -> readRatioTapChanger(twt, context);
case "phaseTapChanger" -> readPhaseTapChanger(twt, context);
default -> readSubElement(elementName, twt, context);
diff --git a/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/BinaryTest.java b/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/BinaryTest.java
index 61ba3ff397e..0eff205e692 100644
--- a/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/BinaryTest.java
+++ b/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/BinaryTest.java
@@ -34,7 +34,7 @@ void testEmptyNullStringAttributes() {
.setVoltageLevel2("vl2").setNode2(0)
.setR(0.1).setX(10)
.add();
- l0.newCurrentLimits1().add();
+ l0.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().add();
l0.cancelSelectedOperationalLimitsGroup1(); // selected group id is now null on side 1
l0.newOperationalLimitsGroup2("").newCurrentLimits().add();
l0.setSelectedOperationalLimitsGroup2(""); // selected group id is now "" on side 2
diff --git a/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/LoadingLimitsBugTest.java b/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/LoadingLimitsBugTest.java
index e2feef42796..8803fb6d2e0 100644
--- a/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/LoadingLimitsBugTest.java
+++ b/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/LoadingLimitsBugTest.java
@@ -40,7 +40,7 @@ void test() throws IOException {
.setG(0.0)
.setB(0.0)
.add();
- twt.newApparentPowerLimits1()
+ twt.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits()
.setPermanentLimit(100)
.add();
// check that XIIDM 1.5 is not ill-formed
diff --git a/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/LoadingLimitsXmlTest.java b/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/LoadingLimitsXmlTest.java
index 0d938cff7a0..2bb49901145 100644
--- a/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/LoadingLimitsXmlTest.java
+++ b/iidm/iidm-serde/src/test/java/com/powsybl/iidm/serde/LoadingLimitsXmlTest.java
@@ -31,9 +31,10 @@ void testDanglingLine() throws IOException {
Network network = DanglingLineNetworkFactory.create();
network.setCaseDate(ZonedDateTime.parse("2013-01-15T18:45:00.000+01:00"));
DanglingLine dl = network.getDanglingLine("DL");
- createLoadingLimits(dl::newActivePowerLimits);
- createLoadingLimits(dl::newApparentPowerLimits);
- createLoadingLimits(dl::newCurrentLimits);
+ OperationalLimitsGroup operationalLimitsGroup = dl.getOrCreateSelectedOperationalLimitsGroup();
+ createLoadingLimits(operationalLimitsGroup::newActivePowerLimits);
+ createLoadingLimits(operationalLimitsGroup::newApparentPowerLimits);
+ createLoadingLimits(operationalLimitsGroup::newCurrentLimits);
allFormatsRoundTripTest(network, "dl-loading-limits.xml", CURRENT_IIDM_VERSION);
// backward compatibility from version 1.5
@@ -61,19 +62,23 @@ void testEurostag() throws IOException {
Network network = EurostagTutorialExample1Factory.create();
network.setCaseDate(ZonedDateTime.parse("2013-01-15T18:45:00.000+01:00"));
Line line = network.getLine("NHV1_NHV2_2");
- createLoadingLimits(line::newActivePowerLimits1);
- createLoadingLimits(line::newActivePowerLimits2);
- createLoadingLimits(line::newApparentPowerLimits1);
- createLoadingLimits(line::newApparentPowerLimits2);
- createLoadingLimits(line::newCurrentLimits1);
- createLoadingLimits(line::newCurrentLimits2);
+ OperationalLimitsGroup operationalLimitsGroup1 = line.getOrCreateSelectedOperationalLimitsGroup1();
+ OperationalLimitsGroup operationalLimitsGroup2 = line.getOrCreateSelectedOperationalLimitsGroup2();
+ createLoadingLimits(operationalLimitsGroup1::newActivePowerLimits);
+ createLoadingLimits(operationalLimitsGroup2::newActivePowerLimits);
+ createLoadingLimits(operationalLimitsGroup1::newApparentPowerLimits);
+ createLoadingLimits(operationalLimitsGroup2::newApparentPowerLimits);
+ createLoadingLimits(operationalLimitsGroup1::newCurrentLimits);
+ createLoadingLimits(operationalLimitsGroup2::newCurrentLimits);
TwoWindingsTransformer twt = network.getTwoWindingsTransformer("NGEN_NHV1");
- createLoadingLimits(twt::newActivePowerLimits1);
- createLoadingLimits(twt::newActivePowerLimits2);
- createLoadingLimits(twt::newApparentPowerLimits1);
- createLoadingLimits(twt::newApparentPowerLimits2);
- createLoadingLimits(twt::newCurrentLimits1);
- createLoadingLimits(twt::newCurrentLimits2);
+ operationalLimitsGroup1 = twt.getOrCreateSelectedOperationalLimitsGroup1();
+ operationalLimitsGroup2 = twt.getOrCreateSelectedOperationalLimitsGroup2();
+ createLoadingLimits(operationalLimitsGroup1::newActivePowerLimits);
+ createLoadingLimits(operationalLimitsGroup2::newActivePowerLimits);
+ createLoadingLimits(operationalLimitsGroup1::newApparentPowerLimits);
+ createLoadingLimits(operationalLimitsGroup2::newApparentPowerLimits);
+ createLoadingLimits(operationalLimitsGroup1::newCurrentLimits);
+ createLoadingLimits(operationalLimitsGroup2::newCurrentLimits);
allFormatsRoundTripTest(network, "eurostag-loading-limits.xml", CURRENT_IIDM_VERSION);
// backward compatibility from version 1.5
@@ -100,12 +105,14 @@ void testEurostag() throws IOException {
void testTieLine() throws IOException {
Network network = NetworkSerDe.read(getVersionedNetworkAsStream("tieline.xml", CURRENT_IIDM_VERSION));
TieLine tl = network.getTieLine("NHV1_NHV2_1");
- createLoadingLimits(tl.getDanglingLine1()::newActivePowerLimits);
- createLoadingLimits(tl.getDanglingLine2()::newActivePowerLimits);
- createLoadingLimits(tl.getDanglingLine1()::newApparentPowerLimits);
- createLoadingLimits(tl.getDanglingLine2()::newApparentPowerLimits);
- createLoadingLimits(tl.getDanglingLine1()::newCurrentLimits);
- createLoadingLimits(tl.getDanglingLine2()::newCurrentLimits);
+ OperationalLimitsGroup operationalLimitsGroup1 = tl.getOrCreateSelectedOperationalLimitsGroup1();
+ OperationalLimitsGroup operationalLimitsGroup2 = tl.getOrCreateSelectedOperationalLimitsGroup2();
+ createLoadingLimits(operationalLimitsGroup1::newActivePowerLimits);
+ createLoadingLimits(operationalLimitsGroup2::newActivePowerLimits);
+ createLoadingLimits(operationalLimitsGroup1::newApparentPowerLimits);
+ createLoadingLimits(operationalLimitsGroup2::newApparentPowerLimits);
+ createLoadingLimits(operationalLimitsGroup1::newCurrentLimits);
+ createLoadingLimits(operationalLimitsGroup2::newCurrentLimits);
allFormatsRoundTripTest(network, "tl-loading-limits.xml", CURRENT_IIDM_VERSION);
// backward compatibility from version 1.5
@@ -132,12 +139,12 @@ void testTieLine() throws IOException {
void testThreeWindingsTransformer() throws IOException {
Network network = ThreeWindingsTransformerNetworkFactory.createWithCurrentLimits();
ThreeWindingsTransformer twt = network.getThreeWindingsTransformer("3WT");
- createLoadingLimits(() -> twt.getLeg1().newActivePowerLimits());
- createLoadingLimits(() -> twt.getLeg1().newApparentPowerLimits());
- createLoadingLimits(() -> twt.getLeg2().newActivePowerLimits());
- createLoadingLimits(() -> twt.getLeg2().newApparentPowerLimits());
- createLoadingLimits(() -> twt.getLeg3().newActivePowerLimits());
- createLoadingLimits(() -> twt.getLeg3().newApparentPowerLimits());
+ createLoadingLimits(() -> twt.getLeg1().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits());
+ createLoadingLimits(() -> twt.getLeg1().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits());
+ createLoadingLimits(() -> twt.getLeg2().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits());
+ createLoadingLimits(() -> twt.getLeg2().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits());
+ createLoadingLimits(() -> twt.getLeg3().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits());
+ createLoadingLimits(() -> twt.getLeg3().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits());
allFormatsRoundTripTest(network, "t3w-loading-limits.xml", CURRENT_IIDM_VERSION);
// backward compatibility from version 1.5
diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractActivePowerLimitsTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractActivePowerLimitsTest.java
index 37629c35e98..a4dc11b5cbd 100644
--- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractActivePowerLimitsTest.java
+++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractActivePowerLimitsTest.java
@@ -23,7 +23,7 @@ public abstract class AbstractActivePowerLimitsTest extends AbstractIdenticalLim
private static Network createNetwork() {
Network network = EurostagTutorialExample1Factory.create();
Line line = network.getLine("NHV1_NHV2_1");
- line.newActivePowerLimits1()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits()
.setPermanentLimit(350)
.beginTemporaryLimit()
.setValue(370)
@@ -36,7 +36,7 @@ private static Network createNetwork() {
.setName("10'")
.endTemporaryLimit()
.add();
- line.newActivePowerLimits2()
+ line.getOrCreateSelectedOperationalLimitsGroup2().newActivePowerLimits()
.setPermanentLimit(400)
.add();
return network;
@@ -84,7 +84,7 @@ public void testAdderByCopy() {
Network network = createNetwork();
Line line = network.getLine("NHV1_NHV2_2");
- ActivePowerLimitsAdder adder = line.newActivePowerLimits1()
+ ActivePowerLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -105,7 +105,7 @@ public void testAdderByCopy() {
ActivePowerLimits limits1 = line.getActivePowerLimits1().get();
// Second limit
- ActivePowerLimitsAdder adder2 = line.newActivePowerLimits2(limits1);
+ ActivePowerLimitsAdder adder2 = line.getOrCreateSelectedOperationalLimitsGroup2().newActivePowerLimits(limits1);
adder2.add();
@@ -116,7 +116,7 @@ public void testAdderByCopy() {
// Tests
assertTrue(areLimitsIdentical(limits1, limits2));
- adder = line.newActivePowerLimits1(limits2);
+ adder = line.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits(limits2);
adder.add();
assertTrue(areLimitsIdentical(limits1, limits2));
diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractApparentPowerLimitsTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractApparentPowerLimitsTest.java
index 3f92123e22d..4428244535c 100644
--- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractApparentPowerLimitsTest.java
+++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractApparentPowerLimitsTest.java
@@ -23,7 +23,7 @@ public abstract class AbstractApparentPowerLimitsTest extends AbstractIdenticalL
private static Network createNetwork() {
Network network = EurostagTutorialExample1Factory.create();
Line line = network.getLine("NHV1_NHV2_2");
- line.newApparentPowerLimits1()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits()
.setPermanentLimit(300)
.beginTemporaryLimit()
.setName("20'")
@@ -36,7 +36,7 @@ private static Network createNetwork() {
.setValue(350)
.endTemporaryLimit()
.add();
- line.newApparentPowerLimits2()
+ line.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits()
.setPermanentLimit(310)
.add();
return network;
@@ -84,7 +84,7 @@ public void testAdderByCopy() {
Network network = createNetwork();
Line line = network.getLine("NHV1_NHV2_2");
- ApparentPowerLimitsAdder adder = line.newApparentPowerLimits1()
+ ApparentPowerLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -105,7 +105,7 @@ public void testAdderByCopy() {
ApparentPowerLimits limits1 = line.getApparentPowerLimits1().get();
// Second limit
- ApparentPowerLimitsAdder adder2 = line.newApparentPowerLimits2(limits1);
+ ApparentPowerLimitsAdder adder2 = line.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits(limits1);
adder2.add();
@@ -116,7 +116,7 @@ public void testAdderByCopy() {
// Tests
assertTrue(areLimitsIdentical(limits1, limits2));
- adder = line.newApparentPowerLimits1(limits2);
+ adder = line.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits(limits2);
adder.add();
assertTrue(areLimitsIdentical(limits1, limits2));
diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractCurrentLimitsTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractCurrentLimitsTest.java
index dfa8444a8c6..2b96daae24b 100644
--- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractCurrentLimitsTest.java
+++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractCurrentLimitsTest.java
@@ -61,7 +61,7 @@ private static Network createNetwork() {
.setB1(0.0)
.setB2(0.0)
.add();
- l.newCurrentLimits1()
+ l.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1000.0)
.beginTemporaryLimit()
.setName("20'")
@@ -143,7 +143,7 @@ private static Network createNetworkForThreeWindingsTransformer() {
.setBus("B3")
.add()
.add();
- transformer.getLeg1().newCurrentLimits()
+ transformer.getLeg1().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1000.0)
.beginTemporaryLimit()
.setName("20'")
@@ -161,7 +161,7 @@ private static Network createNetworkForThreeWindingsTransformer() {
.setValue(1600.0)
.endTemporaryLimit()
.add();
- transformer.getLeg2().newCurrentLimits()
+ transformer.getLeg2().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1000.0)
.beginTemporaryLimit()
.setName("20'")
@@ -179,7 +179,7 @@ private static Network createNetworkForThreeWindingsTransformer() {
.setValue(1600.0)
.endTemporaryLimit()
.add();
- transformer.getLeg3().newCurrentLimits()
+ transformer.getLeg3().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1000.0)
.beginTemporaryLimit()
.setName("20'")
@@ -323,7 +323,7 @@ public void testForThreeWindingsTransformerLeg3() {
@Test
public void testLimitWithoutTempLimit() {
Line l = createNetwork().getLine("L");
- l.newCurrentLimits1().setPermanentLimit(1000.0).add();
+ l.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(1000.0).add();
l.getTerminal1().getBusBreakerView().getBus().setV(390.0);
l.getTerminal1().setP(800.0).setQ(400.0); // i = 1324.0969
assertTrue(l.isOverloaded());
@@ -332,7 +332,7 @@ public void testLimitWithoutTempLimit() {
@Test
public void testSetterGetter() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder currentLimitsAdder = line.newCurrentLimits1()
+ CurrentLimitsAdder currentLimitsAdder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit()
.setName("20'")
@@ -436,7 +436,7 @@ public void testSetterGetter() {
@Test
public void ensureNameUnicity() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit()
.setName("TL")
@@ -470,7 +470,7 @@ public void ensureNameUnicity() {
@Test
public void testNameDuplicationIsAllowed() {
Line line = createNetwork().getLine("L");
- CurrentLimits currentLimits = line.newCurrentLimits1()
+ CurrentLimits currentLimits = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit()
.setName("TL")
@@ -491,14 +491,14 @@ public void testNameDuplicationIsAllowed() {
@Test
public void testAdderGetOwner() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1();
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits();
assertEquals("L", adder.getOwnerId());
}
@Test
public void testAdderGetTemporaryLimitValue() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -519,7 +519,7 @@ public void testAdderGetTemporaryLimitValue() {
@Test
public void testAdderGetTemporaryLimitAcceptableDuration() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -540,7 +540,7 @@ public void testAdderGetTemporaryLimitAcceptableDuration() {
@Test
public void testAdderGetLowestTemporaryLimitValue() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1();
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits();
assertEquals(Double.NaN, adder.getLowestTemporaryLimitValue(), 0.0);
adder.setPermanentLimit(1000.)
@@ -561,7 +561,7 @@ public void testAdderGetLowestTemporaryLimitValue() {
@Test
public void testAdderHasTemporaryLimits() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1();
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits();
assertFalse(adder.hasTemporaryLimits());
adder.setPermanentLimit(1000.)
@@ -576,7 +576,7 @@ public void testAdderHasTemporaryLimits() {
@Test
public void testAdderRemoveTemporaryLimit() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -618,7 +618,7 @@ public void testAdderRemoveTemporaryLimit() {
@Test
public void testAdderFixPermanentLimit() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(Double.NaN)
.beginTemporaryLimit()
.setName("TL1")
@@ -644,7 +644,7 @@ public void testAdderFixPermanentLimit() {
@Test
public void testAdderPermanentLimitAlreadySet() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -658,7 +658,7 @@ public void testAdderPermanentLimitAlreadySet() {
@Test
public void testAdderSetPermanentLimitWithInfiniteDurationValue() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(Double.NaN)
.beginTemporaryLimit()
.setName("INFINITE")
@@ -683,7 +683,7 @@ public void testAdderSetPermanentLimitWithInfiniteDurationValue() {
@Test
public void testAdderWithValueZero() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(0)
.beginTemporaryLimit()
.setName("TEST")
@@ -702,7 +702,7 @@ public void testAdderWithValueZero() {
public void testAdderByCopy() {
// First limit
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -723,7 +723,7 @@ public void testAdderByCopy() {
CurrentLimits limits1 = line.getCurrentLimits1().get();
// Second limit
- CurrentLimitsAdder adder2 = line.newCurrentLimits2(limits1);
+ CurrentLimitsAdder adder2 = line.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits(limits1);
adder2.add();
@@ -734,17 +734,17 @@ public void testAdderByCopy() {
// Tests
assertTrue(areLimitsIdentical(limits1, limits2));
- adder = line.newCurrentLimits1(limits2);
+ adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits(limits2);
adder.add();
assertTrue(areLimitsIdentical(limits1, limits2));
- assertFalse(line.newCurrentLimits1(null).hasTemporaryLimits());
+ assertFalse(line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits(null).hasTemporaryLimits());
}
@Test
public void testSetTemporaryLimitValue() {
Line line = createNetwork().getLine("L");
- CurrentLimitsAdder adder = line.newCurrentLimits1()
+ CurrentLimitsAdder adder = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractDanglingLineTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractDanglingLineTest.java
index 5f1275426e1..e2a97d3ee38 100644
--- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractDanglingLineTest.java
+++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractDanglingLineTest.java
@@ -116,17 +116,17 @@ public void baseTests() {
danglingLine.setPairingKey(newPairingKey);
assertEquals(newPairingKey, danglingLine.getPairingKey());
- danglingLine.newCurrentLimits()
+ danglingLine.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(100.0)
.add();
assertEquals(100.0, danglingLine.getCurrentLimits().map(LoadingLimits::getPermanentLimit).orElse(0.0), 0.0);
- danglingLine.newActivePowerLimits()
+ danglingLine.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits()
.setPermanentLimit(60.0)
.add();
assertEquals(60.0, danglingLine.getActivePowerLimits().map(LoadingLimits::getPermanentLimit).orElse(0.0), 0.0);
- danglingLine.newApparentPowerLimits()
+ danglingLine.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits()
.setPermanentLimit(132.0)
.add();
assertEquals(132.0, danglingLine.getApparentPowerLimits().map(LoadingLimits::getPermanentLimit).orElse(0.0), 0.0);
diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractLineTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractLineTest.java
index c3bdfb37bf1..5a2d9740c40 100644
--- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractLineTest.java
+++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractLineTest.java
@@ -26,6 +26,9 @@
import static com.powsybl.iidm.network.VariantManagerConstants.INITIAL_VARIANT_ID;
import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyDouble;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.*;
public abstract class AbstractLineTest {
@@ -131,7 +134,7 @@ public void baseAcLineTests() {
acLine.setB2(b2);
assertEquals(b2, acLine.getB2(), 0.0);
- CurrentLimits currentLimits1 = acLine.newCurrentLimits1()
+ CurrentLimits currentLimits1 = acLine.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(100)
.beginTemporaryLimit()
.setName("5'")
@@ -139,7 +142,7 @@ public void baseAcLineTests() {
.setValue(1400)
.endTemporaryLimit()
.add();
- CurrentLimits currentLimits2 = acLine.newCurrentLimits2()
+ CurrentLimits currentLimits2 = acLine.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(50)
.beginTemporaryLimit()
.setName("20'")
@@ -676,16 +679,16 @@ void createSelectedOperationalLimitsGroupWhenMissing(LimitType limitType) {
static Stream getLimitType() {
return Stream.of(
Arguments.of(LimitType.CURRENT),
- Arguments.of(LimitType.APPARENT_POWER),
- Arguments.of(LimitType.ACTIVE_POWER)
+ Arguments.of(LimitType.ACTIVE_POWER),
+ Arguments.of(LimitType.APPARENT_POWER)
);
}
private LoadingLimitsAdder, ?> getAdder(Line l, LimitType limitType) {
return switch (limitType) {
- case CURRENT -> l.newCurrentLimits1();
- case ACTIVE_POWER -> l.newActivePowerLimits1();
- case APPARENT_POWER -> l.newApparentPowerLimits1();
+ case CURRENT -> l.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits();
+ case ACTIVE_POWER -> l.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits();
+ case APPARENT_POWER -> l.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits();
default -> throw new IllegalArgumentException("Invalid type");
};
}
@@ -701,7 +704,7 @@ private Optional getLimits(OperationalLimitsGroup group, LimitTyp
@ParameterizedTest(name = "{0}")
@MethodSource("getLimitType")
- void dontChangeSelectedOperationalLimitsGroupIfAdderNotUsed(LimitType limitType) {
+ void addEmptySelectedOperationalLimitsGroupIfAdderNotUsed(LimitType limitType) {
Line line = network.newLine()
.setId("line")
.setName(LINE_NAME)
@@ -715,14 +718,16 @@ void dontChangeSelectedOperationalLimitsGroupIfAdderNotUsed(LimitType limitType)
assertTrue(line.getOperationalLimitsGroups1().isEmpty());
LoadingLimitsAdder, ?> adder = getAdder(line, limitType);
adder.setPermanentLimit(1000.);
- // The adder is voluntarily NOT added. The default group should not be updated.
- assertTrue(line.getSelectedOperationalLimitsGroup1().isEmpty());
- assertTrue(line.getOperationalLimitsGroups1().isEmpty());
+ // The adder is voluntarily NOT added. The default group is updated, but no limit is added.
+ assertTrue(line.getSelectedOperationalLimitsGroup1().isPresent());
+ assertEquals(1, line.getOperationalLimitsGroups1().size());
+ assertEquals("DEFAULT", line.getSelectedOperationalLimitsGroup1().get().getId());
+ assertTrue(line.getSelectedOperationalLimitsGroup1().get().isEmpty());
}
@ParameterizedTest(name = "{0}")
@MethodSource("getLimitType")
- void dontChangeDefaultOperationalLimitsGroupIfAdderValidationFails(LimitType limitType) {
+ void addEmptyDefaultOperationalLimitsGroupIfAdderValidationFails(LimitType limitType) {
Line line = network.newLine()
.setId("line")
.setName(LINE_NAME)
@@ -738,8 +743,10 @@ void dontChangeDefaultOperationalLimitsGroupIfAdderValidationFails(LimitType lim
adder.setPermanentLimit(Double.NaN);
adder.beginTemporaryLimit().setName("10'").setValue(500.).setAcceptableDuration(600).endTemporaryLimit();
assertThrows(ValidationException.class, adder::add);
- // The limits' validation of the adder fails. The default group should not be updated.
- assertTrue(line.getSelectedOperationalLimitsGroup1().isEmpty());
- assertTrue(line.getOperationalLimitsGroups1().isEmpty());
+ // The limits' validation of the adder fails. The default group is updated, but no limit is added.
+ assertFalse(line.getSelectedOperationalLimitsGroup1().isEmpty());
+ assertEquals(1, line.getOperationalLimitsGroups1().size());
+ assertEquals("DEFAULT", line.getSelectedOperationalLimitsGroup1().get().getId());
+ assertTrue(line.getSelectedOperationalLimitsGroup1().get().isEmpty());
}
}
diff --git a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractThreeWindingsTransformerTest.java b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractThreeWindingsTransformerTest.java
index f3ae34f192f..1a2e40bc110 100644
--- a/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractThreeWindingsTransformerTest.java
+++ b/iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractThreeWindingsTransformerTest.java
@@ -196,7 +196,7 @@ public void testCurrentLimitsInLeg1() {
ThreeWindingsTransformer transformer = transformerAdder.add();
ThreeWindingsTransformer.Leg leg1 = transformer.getLeg1();
- CurrentLimits currentLimitsInLeg1 = leg1.newCurrentLimits()
+ CurrentLimits currentLimitsInLeg1 = leg1.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(100)
.beginTemporaryLimit()
.setName("20'")
@@ -213,12 +213,12 @@ public void testPowerLimitsInLeg1() {
ThreeWindingsTransformer transformer = transformerAdder.add();
ThreeWindingsTransformer.Leg leg1 = transformer.getLeg1();
- ActivePowerLimits activePowerLimits1 = leg1.newActivePowerLimits()
+ ActivePowerLimits activePowerLimits1 = leg1.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits()
.setPermanentLimit(400)
.add();
assertSame(activePowerLimits1, leg1.getActivePowerLimits().orElse(null));
- ApparentPowerLimits apparentPowerLimits1 = leg1.newApparentPowerLimits()
+ ApparentPowerLimits apparentPowerLimits1 = leg1.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits()
.setPermanentLimit(2.4)
.add();
assertSame(apparentPowerLimits1, leg1.getApparentPowerLimits().orElse(null));
@@ -234,8 +234,7 @@ public void testRatioTapChangerAndCurrentLimitsInLeg2() {
assertTrue(leg2.hasRatioTapChanger());
assertSame(ratioTapChangerInLeg2, leg2.getRatioTapChanger());
-
- CurrentLimits currentLimitsInLeg2 = leg2.newCurrentLimits()
+ CurrentLimits currentLimitsInLeg2 = leg2.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(100)
.beginTemporaryLimit()
.setName("20'")
@@ -256,8 +255,7 @@ public void testRatioTapChangerAndCurrentLimitsInLeg3() {
assertTrue(leg3.getOptionalRatioTapChanger().isPresent());
assertSame(ratioTapChangerInLeg3, leg3.getRatioTapChanger());
-
- CurrentLimits currentLimitsInLeg3 = leg3.newCurrentLimits()
+ CurrentLimits currentLimitsInLeg3 = leg3.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(100)
.beginTemporaryLimit()
.setName("20'")
@@ -1261,7 +1259,7 @@ public void testAdderByCopy() {
ThreeWindingsTransformer.Leg leg1 = transformer.getLeg1();
ThreeWindingsTransformer.Leg leg2 = transformer.getLeg2();
- CurrentLimitsAdder currentLimitsAdder1 = leg1.newCurrentLimits()
+ CurrentLimitsAdder currentLimitsAdder1 = leg1.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -1270,7 +1268,7 @@ public void testAdderByCopy() {
.endTemporaryLimit();
currentLimitsAdder1.add();
- ActivePowerLimitsAdder activePowerLimitsAdder1 = leg1.newActivePowerLimits()
+ ActivePowerLimitsAdder activePowerLimitsAdder1 = leg1.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -1279,7 +1277,7 @@ public void testAdderByCopy() {
.endTemporaryLimit();
activePowerLimitsAdder1.add();
- ApparentPowerLimitsAdder apparentPowerLimitsAdder1 = leg1.newApparentPowerLimits()
+ ApparentPowerLimitsAdder apparentPowerLimitsAdder1 = leg1.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setName("TL1")
@@ -1295,19 +1293,19 @@ public void testAdderByCopy() {
assertTrue(leg1.getApparentPowerLimits().isPresent());
ApparentPowerLimits apparentPowerLimits1 = leg1.getApparentPowerLimits().get();
- CurrentLimitsAdder currentLimitsAdder2 = leg2.newCurrentLimits(currentLimits1);
+ CurrentLimitsAdder currentLimitsAdder2 = leg2.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits(currentLimits1);
currentLimitsAdder2.add();
Optional optionalCurrentLimits2 = leg2.getCurrentLimits();
assertTrue(optionalCurrentLimits2.isPresent());
CurrentLimits currentLimits2 = optionalCurrentLimits2.get();
- ActivePowerLimitsAdder activePowerLimitsAdder2 = leg2.newActivePowerLimits(activePowerLimits1);
+ ActivePowerLimitsAdder activePowerLimitsAdder2 = leg2.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits(activePowerLimits1);
activePowerLimitsAdder2.add();
Optional optionalActivePowerLimits2 = leg2.getActivePowerLimits();
assertTrue(optionalActivePowerLimits2.isPresent());
ActivePowerLimits activePowerLimits2 = optionalActivePowerLimits2.get();
- ApparentPowerLimitsAdder apparentPowerLimitsAdder2 = leg2.newApparentPowerLimits(apparentPowerLimits1);
+ ApparentPowerLimitsAdder apparentPowerLimitsAdder2 = leg2.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits(apparentPowerLimits1);
apparentPowerLimitsAdder2.add();
Optional optionalApparentPowerLimits2 = leg2.getApparentPowerLimits();
assertTrue(optionalApparentPowerLimits2.isPresent());
diff --git a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/DanglingLineNetworkFactory.java b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/DanglingLineNetworkFactory.java
index b9191828b2f..6b2ca5483ac 100644
--- a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/DanglingLineNetworkFactory.java
+++ b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/DanglingLineNetworkFactory.java
@@ -111,7 +111,7 @@ private static Network createBase(NetworkFactory networkFactory) {
}
private static void createDanglingLineCurrentLimits(DanglingLine danglingLine) {
- danglingLine.newCurrentLimits()
+ danglingLine.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit()
.setName("20'")
diff --git a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/EurostagTutorialExample1Factory.java b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/EurostagTutorialExample1Factory.java
index eb76c6520aa..9e3a3db10d4 100644
--- a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/EurostagTutorialExample1Factory.java
+++ b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/EurostagTutorialExample1Factory.java
@@ -394,7 +394,7 @@ public static Network createWithMoreGenerators(NetworkFactory networkFactory) {
public static Network createWithCurrentLimits() {
Network network = createWithFixedCurrentLimits();
Line line = network.getLine(NHV1_NHV2_1);
- line.newCurrentLimits2()
+ line.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("10'")
@@ -409,7 +409,7 @@ public static Network createWithCurrentLimits() {
.add();
line = network.getLine(NHV1_NHV2_2);
- line.newCurrentLimits1()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("20'")
@@ -450,8 +450,8 @@ public static Network createWithFixedCurrentLimits(NetworkFactory networkFactory
Line line = network.getLine(NHV1_NHV2_1);
line.getTerminal1().setP(560.0).setQ(550.0);
line.getTerminal2().setP(-560.0).setQ(-550.0);
- line.newCurrentLimits1().setPermanentLimit(500).add();
- line.newCurrentLimits2()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(500).add();
+ line.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("10'")
@@ -473,7 +473,7 @@ public static Network createWithFixedCurrentLimits(NetworkFactory networkFactory
line = network.getLine(NHV1_NHV2_2);
line.getTerminal1().setP(560.0).setQ(550.0);
line.getTerminal2().setP(-560.0).setQ(-550.0);
- line.newCurrentLimits1()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("20'")
@@ -486,7 +486,7 @@ public static Network createWithFixedCurrentLimits(NetworkFactory networkFactory
.setValue(Double.MAX_VALUE)
.endTemporaryLimit()
.add();
- line.newCurrentLimits2().setPermanentLimit(500).add();
+ line.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(500).add();
return network;
}
@@ -520,8 +520,8 @@ public static Network createWithFixedLimits(NetworkFactory networkFactory) {
Line line = network.getLine(NHV1_NHV2_1);
line.getTerminal1().setP(560.0).setQ(550.0);
line.getTerminal2().setP(560.0).setQ(550.0);
- line.newActivePowerLimits1().setPermanentLimit(500).add();
- line.newActivePowerLimits2()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits().setPermanentLimit(500).add();
+ line.getOrCreateSelectedOperationalLimitsGroup2().newActivePowerLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("10'")
@@ -540,8 +540,8 @@ public static Network createWithFixedLimits(NetworkFactory networkFactory) {
.endTemporaryLimit()
.add();
- line.newApparentPowerLimits1().setPermanentLimit(500).add();
- line.newApparentPowerLimits2()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits().setPermanentLimit(500).add();
+ line.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("10'")
@@ -563,7 +563,7 @@ public static Network createWithFixedLimits(NetworkFactory networkFactory) {
line = network.getLine(NHV1_NHV2_2);
line.getTerminal1().setP(560.0).setQ(550.0);
line.getTerminal2().setP(560.0).setQ(550.0);
- line.newActivePowerLimits1()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("20'")
@@ -576,9 +576,9 @@ public static Network createWithFixedLimits(NetworkFactory networkFactory) {
.setValue(Double.MAX_VALUE)
.endTemporaryLimit()
.add();
- line.newActivePowerLimits2().setPermanentLimit(500).add();
+ line.getOrCreateSelectedOperationalLimitsGroup2().newActivePowerLimits().setPermanentLimit(500).add();
- line.newApparentPowerLimits1()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("20'")
@@ -591,7 +591,7 @@ public static Network createWithFixedLimits(NetworkFactory networkFactory) {
.setValue(Double.MAX_VALUE)
.endTemporaryLimit()
.add();
- line.newApparentPowerLimits2().setPermanentLimit(500).add();
+ line.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits().setPermanentLimit(500).add();
return network;
}
@@ -626,8 +626,8 @@ public static Network createWithFixedCurrentLimitsOnDanglingLines(NetworkFactory
DanglingLine danglingLine2 = network.getDanglingLine(DANGLING_LINE_XNODE1_2);
danglingLine1.getTerminal().setP(560.0).setQ(550.0);
danglingLine2.getTerminal().setP(-560.0).setQ(-550.0);
- danglingLine1.newCurrentLimits().setPermanentLimit(500).add();
- danglingLine2.newCurrentLimits()
+ danglingLine1.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits().setPermanentLimit(500).add();
+ danglingLine2.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("10'")
@@ -650,7 +650,7 @@ public static Network createWithFixedCurrentLimitsOnDanglingLines(NetworkFactory
danglingLine2 = network.getDanglingLine(DANGLING_LINE_XNODE2_2);
danglingLine1.getTerminal().setP(560.0).setQ(550.0);
danglingLine2.getTerminal().setP(-560.0).setQ(-550.0);
- danglingLine1.newCurrentLimits()
+ danglingLine1.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("20'")
@@ -663,7 +663,7 @@ public static Network createWithFixedCurrentLimitsOnDanglingLines(NetworkFactory
.setValue(Double.MAX_VALUE)
.endTemporaryLimit()
.add();
- danglingLine2.newCurrentLimits().setPermanentLimit(500).add();
+ danglingLine2.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits().setPermanentLimit(500).add();
return network;
}
@@ -698,8 +698,8 @@ public static Network createWithFixedLimitsOnDanglingLines(NetworkFactory networ
DanglingLine danglingLine2 = network.getDanglingLine(DANGLING_LINE_XNODE1_2);
danglingLine1.getTerminal().setP(560.0).setQ(550.0);
danglingLine2.getTerminal().setP(560.0).setQ(550.0);
- danglingLine1.newActivePowerLimits().setPermanentLimit(500).add();
- danglingLine2.newActivePowerLimits()
+ danglingLine1.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits().setPermanentLimit(500).add();
+ danglingLine2.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("10'")
@@ -718,8 +718,8 @@ public static Network createWithFixedLimitsOnDanglingLines(NetworkFactory networ
.endTemporaryLimit()
.add();
- danglingLine1.newApparentPowerLimits().setPermanentLimit(500).add();
- danglingLine2.newApparentPowerLimits()
+ danglingLine1.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits().setPermanentLimit(500).add();
+ danglingLine2.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("10'")
@@ -742,7 +742,7 @@ public static Network createWithFixedLimitsOnDanglingLines(NetworkFactory networ
danglingLine2 = network.getDanglingLine(DANGLING_LINE_XNODE2_2);
danglingLine1.getTerminal().setP(560.0).setQ(550.0);
danglingLine2.getTerminal().setP(560.0).setQ(550.0);
- danglingLine1.newActivePowerLimits()
+ danglingLine1.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("20'")
@@ -755,9 +755,9 @@ public static Network createWithFixedLimitsOnDanglingLines(NetworkFactory networ
.setValue(Double.MAX_VALUE)
.endTemporaryLimit()
.add();
- danglingLine2.newActivePowerLimits().setPermanentLimit(500).add();
+ danglingLine2.getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits().setPermanentLimit(500).add();
- danglingLine1.newApparentPowerLimits()
+ danglingLine1.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits()
.setPermanentLimit(1100)
.beginTemporaryLimit()
.setName("20'")
@@ -770,7 +770,7 @@ public static Network createWithFixedLimitsOnDanglingLines(NetworkFactory networ
.setValue(Double.MAX_VALUE)
.endTemporaryLimit()
.add();
- danglingLine2.newApparentPowerLimits().setPermanentLimit(500).add();
+ danglingLine2.getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits().setPermanentLimit(500).add();
return network;
}
diff --git a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/FictitiousSwitchFactory.java b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/FictitiousSwitchFactory.java
index 2563d8289c9..4b90539d239 100644
--- a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/FictitiousSwitchFactory.java
+++ b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/FictitiousSwitchFactory.java
@@ -232,10 +232,10 @@ public static Network create(NetworkFactory networkFactory) {
.setNode2(10)
.setVoltageLevel2("N")
.add();
- twtCI.newCurrentLimits1()
+ twtCI.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(931.0)
.add();
- twtCI.newCurrentLimits2()
+ twtCI.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(931.0)
.add();
twtCI.newPhaseTapChanger()
@@ -293,10 +293,10 @@ public static Network create(NetworkFactory networkFactory) {
.setNode2(5)
.setVoltageLevel2("N")
.add();
- lineCJ.newCurrentLimits1()
+ lineCJ.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(931.0)
.add();
- lineCJ.newCurrentLimits2()
+ lineCJ.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(931.0)
.beginTemporaryLimit()
.setName("IST")
diff --git a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/FourSubstationsNodeBreakerFactory.java b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/FourSubstationsNodeBreakerFactory.java
index 4d8b133b506..883b449c292 100644
--- a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/FourSubstationsNodeBreakerFactory.java
+++ b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/FourSubstationsNodeBreakerFactory.java
@@ -161,10 +161,10 @@ public static Network create(NetworkFactory networkFactory) {
.setNode2(3)
.setVoltageLevel2("S1VL2")
.add();
- twt.newCurrentLimits1()
+ twt.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1031.0)
.add();
- twt.newCurrentLimits2()
+ twt.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1031.0)
.add();
twt.newPhaseTapChanger()
@@ -545,10 +545,10 @@ public static Network create(NetworkFactory networkFactory) {
.add();
lineS3S4.getTerminal1().setP(240.0036).setQ(2.1751);
lineS3S4.getTerminal2().setP(-240.0).setQ(2.5415);
- lineS3S4.newCurrentLimits1()
+ lineS3S4.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(931.0)
.add();
- lineS3S4.newCurrentLimits2()
+ lineS3S4.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(931.0)
.beginTemporaryLimit()
.setName("IST")
diff --git a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/SecurityAnalysisTestNetworkFactory.java b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/SecurityAnalysisTestNetworkFactory.java
index c1fc2b6ce49..79451012303 100644
--- a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/SecurityAnalysisTestNetworkFactory.java
+++ b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/SecurityAnalysisTestNetworkFactory.java
@@ -240,10 +240,10 @@ public static Network createWithFixedCurrentLimits() {
public static Network createWithFixedCurrentLimits(NetworkFactory networkFactory) {
Network network = create(networkFactory);
- network.getLine(LINE_S1S2V1_1).newCurrentLimits2()
+ network.getLine(LINE_S1S2V1_1).getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(75)
.add();
- network.getLine(LINE_S1S2V1_1).newCurrentLimits1()
+ network.getLine(LINE_S1S2V1_1).getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(75)
.beginTemporaryLimit()
.setName("10'")
@@ -261,8 +261,8 @@ public static Network createWithFixedCurrentLimits(NetworkFactory networkFactory
.setValue(Double.MAX_VALUE)
.endTemporaryLimit()
.add();
- network.getLine(LINE_S1S2V1_2).newCurrentLimits2().setPermanentLimit(75).add();
- network.getLine(LINE_S1S2V1_2).newCurrentLimits1()
+ network.getLine(LINE_S1S2V1_2).getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits().setPermanentLimit(75).add();
+ network.getLine(LINE_S1S2V1_2).getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(75)
.beginTemporaryLimit()
.setName("10'")
@@ -280,7 +280,7 @@ public static Network createWithFixedCurrentLimits(NetworkFactory networkFactory
.setValue(Double.MAX_VALUE)
.endTemporaryLimit()
.add();
- network.getLine(LINE_S1S2V2).newCurrentLimits1()
+ network.getLine(LINE_S1S2V2).getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(60)
.beginTemporaryLimit()
.setName("10'")
@@ -288,7 +288,7 @@ public static Network createWithFixedCurrentLimits(NetworkFactory networkFactory
.setValue(80)
.endTemporaryLimit()
.add();
- network.getTwoWindingsTransformer(TWT2).newCurrentLimits1().setPermanentLimit(90)
+ network.getTwoWindingsTransformer(TWT2).getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(90)
.beginTemporaryLimit()
.setName("10'")
.setAcceptableDuration(10 * 60)
@@ -300,7 +300,7 @@ public static Network createWithFixedCurrentLimits(NetworkFactory networkFactory
.setValue(110)
.endTemporaryLimit()
.add();
- network.getTwoWindingsTransformer(TWT).newCurrentLimits1().setPermanentLimit(92)
+ network.getTwoWindingsTransformer(TWT).getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(92)
.beginTemporaryLimit()
.setName("10'")
.setAcceptableDuration(10 * 60)
@@ -321,11 +321,11 @@ public static Network createWithFixedPowerLimits() {
public static Network createWithFixedPowerLimits(NetworkFactory networkFactory) {
Network network = create(networkFactory);
- network.getTwoWindingsTransformer(TWT).newActivePowerLimits1().setPermanentLimit(71).add();
- network.getTwoWindingsTransformer(TWT2).newActivePowerLimits1().setPermanentLimit(55).add();
- network.getLine(LINE_S1S2V1_1).newActivePowerLimits1().setPermanentLimit(55).add();
- network.getLine(LINE_S1S2V1_2).newActivePowerLimits1().setPermanentLimit(55).add();
- network.getLine(LINE_S1S2V2).newActivePowerLimits1().setPermanentLimit(30).add();
+ network.getTwoWindingsTransformer(TWT).getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits().setPermanentLimit(71).add();
+ network.getTwoWindingsTransformer(TWT2).getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits().setPermanentLimit(55).add();
+ network.getLine(LINE_S1S2V1_1).getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits().setPermanentLimit(55).add();
+ network.getLine(LINE_S1S2V1_2).getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits().setPermanentLimit(55).add();
+ network.getLine(LINE_S1S2V2).getOrCreateSelectedOperationalLimitsGroup1().newActivePowerLimits().setPermanentLimit(30).add();
return network;
}
}
diff --git a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/ThreeWindingsTransformerNetworkFactory.java b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/ThreeWindingsTransformerNetworkFactory.java
index b4a87bdaf5f..61999d90666 100644
--- a/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/ThreeWindingsTransformerNetworkFactory.java
+++ b/iidm/iidm-test/src/main/java/com/powsybl/iidm/network/test/ThreeWindingsTransformerNetworkFactory.java
@@ -393,7 +393,7 @@ public static Network createWithUnsortedEnds(NetworkFactory networkFactory) {
public static Network createWithCurrentLimits() {
Network network = create();
- network.getThreeWindingsTransformer("3WT").getLeg1().newCurrentLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg1().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1000.0)
.beginTemporaryLimit()
.setName("20'")
@@ -407,7 +407,7 @@ public static Network createWithCurrentLimits() {
.endTemporaryLimit()
.add();
- network.getThreeWindingsTransformer("3WT").getLeg2().newCurrentLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg2().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit()
.setName("20'")
@@ -421,7 +421,7 @@ public static Network createWithCurrentLimits() {
.endTemporaryLimit()
.add();
- network.getThreeWindingsTransformer("3WT").getLeg3().newCurrentLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg3().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(10.0)
.beginTemporaryLimit()
.setName("20'")
@@ -441,7 +441,7 @@ public static Network createWithCurrentLimits() {
public static Network createWithUnsortedEndsAndCurrentLimits() {
Network network = createWithUnsortedEnds(NetworkFactory.findDefault());
- network.getThreeWindingsTransformer("3WT").getLeg1().newCurrentLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg1().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(1000.0)
.beginTemporaryLimit()
.setName("20'")
@@ -455,7 +455,7 @@ public static Network createWithUnsortedEndsAndCurrentLimits() {
.endTemporaryLimit()
.add();
- network.getThreeWindingsTransformer("3WT").getLeg2().newCurrentLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg2().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit()
.setName("20'")
@@ -469,7 +469,7 @@ public static Network createWithUnsortedEndsAndCurrentLimits() {
.endTemporaryLimit()
.add();
- network.getThreeWindingsTransformer("3WT").getLeg3().newCurrentLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg3().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(10.0)
.beginTemporaryLimit()
.setName("20'")
@@ -489,7 +489,7 @@ public static Network createWithUnsortedEndsAndCurrentLimits() {
public static Network createWithApparentPowerLimits() {
Network network = create();
- network.getThreeWindingsTransformer("3WT").getLeg1().newApparentPowerLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg1().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits()
.setPermanentLimit(1000.0)
.beginTemporaryLimit()
.setName("20'")
@@ -503,7 +503,7 @@ public static Network createWithApparentPowerLimits() {
.endTemporaryLimit()
.add();
- network.getThreeWindingsTransformer("3WT").getLeg2().newApparentPowerLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg2().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit()
.setName("20'")
@@ -517,7 +517,7 @@ public static Network createWithApparentPowerLimits() {
.endTemporaryLimit()
.add();
- network.getThreeWindingsTransformer("3WT").getLeg3().newApparentPowerLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg3().getOrCreateSelectedOperationalLimitsGroup().newApparentPowerLimits()
.setPermanentLimit(10.0)
.beginTemporaryLimit()
.setName("20'")
@@ -537,7 +537,7 @@ public static Network createWithApparentPowerLimits() {
public static Network createWithActivePowerLimits() {
Network network = create();
- network.getThreeWindingsTransformer("3WT").getLeg1().newActivePowerLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg1().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits()
.setPermanentLimit(1000.0)
.beginTemporaryLimit()
.setName("20'")
@@ -551,7 +551,7 @@ public static Network createWithActivePowerLimits() {
.endTemporaryLimit()
.add();
- network.getThreeWindingsTransformer("3WT").getLeg2().newActivePowerLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg2().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits()
.setPermanentLimit(100.0)
.beginTemporaryLimit()
.setName("20'")
@@ -565,7 +565,7 @@ public static Network createWithActivePowerLimits() {
.endTemporaryLimit()
.add();
- network.getThreeWindingsTransformer("3WT").getLeg3().newActivePowerLimits()
+ network.getThreeWindingsTransformer("3WT").getLeg3().getOrCreateSelectedOperationalLimitsGroup().newActivePowerLimits()
.setPermanentLimit(10.0)
.beginTemporaryLimit()
.setName("20'")
diff --git a/matpower/matpower-converter/src/main/java/com/powsybl/matpower/converter/MatpowerExporter.java b/matpower/matpower-converter/src/main/java/com/powsybl/matpower/converter/MatpowerExporter.java
index 177cf0ef3a8..db38590c197 100644
--- a/matpower/matpower-converter/src/main/java/com/powsybl/matpower/converter/MatpowerExporter.java
+++ b/matpower/matpower-converter/src/main/java/com/powsybl/matpower/converter/MatpowerExporter.java
@@ -502,20 +502,37 @@ public ApparentPowerLimits getNullableApparentPowerLimits() {
return branch.getNullableApparentPowerLimits(side);
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newCurrentLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public CurrentLimitsAdder newCurrentLimits() {
throw new UnsupportedOperationException();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newApparentPowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ApparentPowerLimitsAdder newApparentPowerLimits() {
throw new UnsupportedOperationException();
}
+ /**
+ * @deprecated Use {@link OperationalLimitsGroup#newActivePowerLimits()} instead.
+ */
+ @Deprecated(since = "6.8.0")
@Override
public ActivePowerLimitsAdder newActivePowerLimits() {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public OperationalLimitsGroup getOrCreateSelectedOperationalLimitsGroup() {
+ throw new UnsupportedOperationException();
+ }
}
private void createLines(Network network, MatpowerModel model, Context context) {
diff --git a/matpower/matpower-converter/src/main/java/com/powsybl/matpower/converter/MatpowerImporter.java b/matpower/matpower-converter/src/main/java/com/powsybl/matpower/converter/MatpowerImporter.java
index 26788872649..5cd1543a751 100644
--- a/matpower/matpower-converter/src/main/java/com/powsybl/matpower/converter/MatpowerImporter.java
+++ b/matpower/matpower-converter/src/main/java/com/powsybl/matpower/converter/MatpowerImporter.java
@@ -360,8 +360,8 @@ private static void createBranches(MatpowerModel model, ContainersMapping contai
// there is probably something to fix on IIDM API to not have sided apparent
// power limits. Apparent power does not depend on voltage so it does not make
// sens to associate the limit to a branch side.
- createApparentPowerLimits(mBranch, branch.newApparentPowerLimits1());
- createApparentPowerLimits(mBranch, branch.newApparentPowerLimits2());
+ createApparentPowerLimits(mBranch, branch.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits());
+ createApparentPowerLimits(mBranch, branch.getOrCreateSelectedOperationalLimitsGroup2().newApparentPowerLimits());
}
}
}
diff --git a/matpower/matpower-converter/src/test/java/com/powsybl/matpower/converter/MatpowerExporterTest.java b/matpower/matpower-converter/src/test/java/com/powsybl/matpower/converter/MatpowerExporterTest.java
index b1c5b3e2829..f2c6334ab3e 100644
--- a/matpower/matpower-converter/src/test/java/com/powsybl/matpower/converter/MatpowerExporterTest.java
+++ b/matpower/matpower-converter/src/test/java/com/powsybl/matpower/converter/MatpowerExporterTest.java
@@ -174,7 +174,7 @@ void testWithCurrentLimits() throws IOException {
void testWithCurrentLimits2() throws IOException {
var network = EurostagTutorialExample1Factory.create();
Line line = network.getLine("NHV1_NHV2_1");
- line.newCurrentLimits1()
+ line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1000)
.beginTemporaryLimit()
.setName("20'")
@@ -204,7 +204,7 @@ void testWithCurrentLimits2() throws IOException {
void testWithApparentPowerLimits() throws IOException {
var network = EurostagTutorialExample1Factory.createWithFixedCurrentLimits();
var l = network.getLine("NHV1_NHV2_1");
- l.newApparentPowerLimits1()
+ l.getOrCreateSelectedOperationalLimitsGroup1().newApparentPowerLimits()
.setPermanentLimit(1000)
.beginTemporaryLimit()
.setName("1'")
@@ -212,7 +212,7 @@ void testWithApparentPowerLimits() throws IOException {
.setValue(1500)
.endTemporaryLimit()
.add();
- l.newCurrentLimits2()
+ l.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1000)
.add();
exportToMatAndCompareTo(network, "/sim1-with-apparent-power-limits.json");
diff --git a/psse/psse-converter/src/main/java/com/powsybl/psse/converter/LineConverter.java b/psse/psse-converter/src/main/java/com/powsybl/psse/converter/LineConverter.java
index 9858b646439..fd32f7c52cf 100644
--- a/psse/psse-converter/src/main/java/com/powsybl/psse/converter/LineConverter.java
+++ b/psse/psse-converter/src/main/java/com/powsybl/psse/converter/LineConverter.java
@@ -110,13 +110,13 @@ private void defineOperationalLimits(Line line, double vnom1, double vnom2) {
// CurrentPermanentLimit in A
if (currentLimit1 > 0) {
- CurrentLimitsAdder currentLimitFrom = line.newCurrentLimits1();
+ CurrentLimitsAdder currentLimitFrom = line.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits();
currentLimitFrom.setPermanentLimit(currentLimit1 * 1000);
currentLimitFrom.add();
}
if (currentLimit2 > 0) {
- CurrentLimitsAdder currentLimitTo = line.newCurrentLimits2();
+ CurrentLimitsAdder currentLimitTo = line.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits();
currentLimitTo.setPermanentLimit(currentLimit2 * 1000);
currentLimitTo.add();
}
diff --git a/psse/psse-converter/src/main/java/com/powsybl/psse/converter/TransformerConverter.java b/psse/psse-converter/src/main/java/com/powsybl/psse/converter/TransformerConverter.java
index d030ec3487a..c04d139bb49 100644
--- a/psse/psse-converter/src/main/java/com/powsybl/psse/converter/TransformerConverter.java
+++ b/psse/psse-converter/src/main/java/com/powsybl/psse/converter/TransformerConverter.java
@@ -17,7 +17,6 @@
import org.slf4j.LoggerFactory;
import com.powsybl.iidm.network.ThreeWindingsTransformer.Leg;
-import com.powsybl.iidm.network.RatioTapChanger;
import com.powsybl.iidm.network.util.ContainersMapping;
import com.powsybl.psse.converter.PsseImporter.PerUnitContext;
import com.powsybl.psse.model.PsseException;
@@ -533,13 +532,13 @@ private void defineOperationalLimits(TwoWindingsTransformer twt, double vnom1, d
// CurrentPermanentLimit in A
if (currentLimit1 > 0) {
- CurrentLimitsAdder currentLimitFrom = twt.newCurrentLimits1();
+ CurrentLimitsAdder currentLimitFrom = twt.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits();
currentLimitFrom.setPermanentLimit(currentLimit1 * 1000);
currentLimitFrom.add();
}
if (currentLimit2 > 0) {
- CurrentLimitsAdder currentLimitTo = twt.newCurrentLimits2();
+ CurrentLimitsAdder currentLimitTo = twt.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits();
currentLimitTo.setPermanentLimit(currentLimit2 * 1000);
currentLimitTo.add();
}
@@ -556,17 +555,17 @@ private void defineOperationalLimits(ThreeWindingsTransformer twt, double vnom1,
// CurrentPermanentLimit in A
if (currentLimit1 > 0) {
- CurrentLimitsAdder currentLimitFrom = twt.getLeg1().newCurrentLimits();
+ CurrentLimitsAdder currentLimitFrom = twt.getLeg1().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits();
currentLimitFrom.setPermanentLimit(currentLimit1 * 1000);
currentLimitFrom.add();
}
if (currentLimit2 > 0) {
- CurrentLimitsAdder currentLimitFrom = twt.getLeg2().newCurrentLimits();
+ CurrentLimitsAdder currentLimitFrom = twt.getLeg2().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits();
currentLimitFrom.setPermanentLimit(currentLimit2 * 1000);
currentLimitFrom.add();
}
if (currentLimit3 > 0) {
- CurrentLimitsAdder currentLimitFrom = twt.getLeg3().newCurrentLimits();
+ CurrentLimitsAdder currentLimitFrom = twt.getLeg3().getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits();
currentLimitFrom.setPermanentLimit(currentLimit3 * 1000);
currentLimitFrom.add();
}
diff --git a/security-analysis/security-analysis-api/src/test/java/com/powsybl/security/limitreduction/DefaultLimitReductionsApplierTest.java b/security-analysis/security-analysis-api/src/test/java/com/powsybl/security/limitreduction/DefaultLimitReductionsApplierTest.java
index eb3f8e0438c..f79ad7ffd9c 100644
--- a/security-analysis/security-analysis-api/src/test/java/com/powsybl/security/limitreduction/DefaultLimitReductionsApplierTest.java
+++ b/security-analysis/security-analysis-api/src/test/java/com/powsybl/security/limitreduction/DefaultLimitReductionsApplierTest.java
@@ -187,7 +187,7 @@ void noLimitsToReduceTest() {
void reduceOnOneSideOnlyTest() {
applier.setWorkingContingency("contingency5");
TwoWindingsTransformer nhv2Nload = network.getTwoWindingsTransformer("NHV2_NLOAD");
- nhv2Nload.newCurrentLimits1()
+ nhv2Nload.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setValue(1200.)
@@ -195,7 +195,7 @@ void reduceOnOneSideOnlyTest() {
.setName("60'")
.endTemporaryLimit()
.add();
- nhv2Nload.newCurrentLimits2()
+ nhv2Nload.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1000.)
.beginTemporaryLimit()
.setValue(1200.)
diff --git a/security-analysis/security-analysis-default/src/test/java/com/powsybl/security/impl/SecurityAnalysisTest.java b/security-analysis/security-analysis-default/src/test/java/com/powsybl/security/impl/SecurityAnalysisTest.java
index 83ae0af8782..81c96b6e7b4 100644
--- a/security-analysis/security-analysis-default/src/test/java/com/powsybl/security/impl/SecurityAnalysisTest.java
+++ b/security-analysis/security-analysis-default/src/test/java/com/powsybl/security/impl/SecurityAnalysisTest.java
@@ -95,8 +95,8 @@ void run() {
((Bus) network.getIdentifiable("NHV2")).setV(380.0).setAngle(0.20);
network.getLine("NHV1_NHV2_1").getTerminal1().setP(560.0).setQ(550.0);
network.getLine("NHV1_NHV2_1").getTerminal2().setP(560.0).setQ(550.0);
- network.getLine("NHV1_NHV2_1").newCurrentLimits1().setPermanentLimit(1500.0).add();
- network.getLine("NHV1_NHV2_1").newCurrentLimits2()
+ network.getLine("NHV1_NHV2_1").getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(1500.0).add();
+ network.getLine("NHV1_NHV2_1").getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1200.0)
.beginTemporaryLimit()
.setName("10'")
@@ -205,8 +205,8 @@ void testStateMonitors() {
((Bus) network.getIdentifiable("NHV2")).setAngle(0.0);
network.getLine("NHV1_NHV2_1").getTerminal1().setP(560.0).setQ(550.0);
network.getLine("NHV1_NHV2_1").getTerminal2().setP(560.0).setQ(550.0);
- network.getLine("NHV1_NHV2_1").newCurrentLimits1().setPermanentLimit(1500.0).add();
- network.getLine("NHV1_NHV2_1").newCurrentLimits2()
+ network.getLine("NHV1_NHV2_1").getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(1500.0).add();
+ network.getLine("NHV1_NHV2_1").getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1200.0)
.beginTemporaryLimit()
.setName("10'")
@@ -216,8 +216,8 @@ void testStateMonitors() {
.add();
network.getLine("NHV1_NHV2_2").getTerminal1().setP(600.0).setQ(500.0);
network.getLine("NHV1_NHV2_2").getTerminal2().setP(600.0).setQ(500.0);
- network.getLine("NHV1_NHV2_2").newCurrentLimits1().setPermanentLimit(1500.0).add();
- network.getLine("NHV1_NHV2_2").newCurrentLimits2()
+ network.getLine("NHV1_NHV2_2").getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits().setPermanentLimit(1500.0).add();
+ network.getLine("NHV1_NHV2_2").getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(1200.0)
.beginTemporaryLimit()
.setName("10'")
diff --git a/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteImporter.java b/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteImporter.java
index 0816731bac0..3df0722d1d2 100644
--- a/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteImporter.java
+++ b/ucte/ucte-converter/src/main/java/com/powsybl/ucte/converter/UcteImporter.java
@@ -21,7 +21,6 @@
import com.powsybl.commons.parameters.ParameterType;
import com.powsybl.commons.report.ReportNode;
import com.powsybl.entsoe.util.*;
-import com.powsybl.iidm.network.Importer;
import com.powsybl.iidm.network.*;
import com.powsybl.iidm.network.extensions.SlackTerminal;
import com.powsybl.ucte.network.*;
@@ -311,7 +310,7 @@ private static void createDanglingLine(UcteLine ucteLine, boolean connected,
}
if (ucteLine.getCurrentLimit() != null) {
- dl.newCurrentLimits()
+ dl.getOrCreateSelectedOperationalLimitsGroup().newCurrentLimits()
.setPermanentLimit(ucteLine.getCurrentLimit())
.add();
}
@@ -403,10 +402,10 @@ private static void createStandardLine(Network network, UcteLine ucteLine, UcteN
if (ucteLine.getCurrentLimit() != null) {
int currentLimit = ucteLine.getCurrentLimit();
- l.newCurrentLimits1()
+ l.getOrCreateSelectedOperationalLimitsGroup1().newCurrentLimits()
.setPermanentLimit(currentLimit)
.add();
- l.newCurrentLimits2()
+ l.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(currentLimit)
.add();
}
@@ -787,7 +786,7 @@ private static void createTransformers(UcteNetworkExt ucteNetwork, Network netwo
if (ucteTransfo.getCurrentLimit() != null) {
int currentLimit = ucteTransfo.getCurrentLimit();
- transformer.newCurrentLimits2()
+ transformer.getOrCreateSelectedOperationalLimitsGroup2().newCurrentLimits()
.setPermanentLimit(currentLimit)
.add();
}