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(); }