From 0fb7fd28df01c6390e17617aa929cbe641bcf660 Mon Sep 17 00:00:00 2001 From: AAJELLAL <128486125+AAJELLAL@users.noreply.github.com> Date: Thu, 14 Dec 2023 17:01:49 +0100 Subject: [PATCH] Add voltage level tabular modification. (#393) Signed-off-by: AAJELLAL --- .../entities/TabularModificationEntity.java | 7 ++ .../modifications/TabularModification.java | 3 + .../TabularVoltageLevelModificationsTest.java | 96 +++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java diff --git a/src/main/java/org/gridsuite/modification/server/entities/TabularModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/TabularModificationEntity.java index 5fec9f1c4..8694d641b 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/TabularModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/TabularModificationEntity.java @@ -18,6 +18,7 @@ import org.gridsuite.modification.server.dto.*; import org.gridsuite.modification.server.entities.equipment.modification.GeneratorModificationEntity; import org.gridsuite.modification.server.entities.equipment.modification.LoadModificationEntity; +import org.gridsuite.modification.server.entities.equipment.modification.VoltageLevelModificationEntity; /** * @author Etienne Homer @@ -46,6 +47,9 @@ public TabularModificationEntity(TabularModificationInfos tabularModificationInf case "LOAD_MODIFICATION": modifications = tabularModificationInfos.getModifications().stream().map(loadModificationInfos -> new LoadModificationEntity((LoadModificationInfos) loadModificationInfos)).collect(Collectors.toList()); break; + case "VOLTAGE_LEVEL_MODIFICATION": + modifications = tabularModificationInfos.getModifications().stream().map(voltageLevelModificationInfos -> new VoltageLevelModificationEntity((VoltageLevelModificationInfos) voltageLevelModificationInfos)).collect(Collectors.toList()); + break; default: break; } @@ -76,6 +80,9 @@ public void update(@NonNull ModificationInfos modificationInfos) { case "LOAD_MODIFICATION": modifications.addAll(tabularModificationInfos.getModifications().stream().map(loadModificationInfos -> new LoadModificationEntity((LoadModificationInfos) loadModificationInfos)).collect(Collectors.toList())); break; + case "VOLTAGE_LEVEL_MODIFICATION": + modifications.addAll(tabularModificationInfos.getModifications().stream().map(voltageLevelModificationInfos -> new VoltageLevelModificationEntity((VoltageLevelModificationInfos) voltageLevelModificationInfos)).collect(Collectors.toList())); + break; default: break; } diff --git a/src/main/java/org/gridsuite/modification/server/modifications/TabularModification.java b/src/main/java/org/gridsuite/modification/server/modifications/TabularModification.java index 2296e8e14..b5f992747 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/TabularModification.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/TabularModification.java @@ -66,6 +66,9 @@ public void apply(Network network, Reporter subReporter) { case "LOAD_MODIFICATION": defaultMessage = "loads" + defaultMessage; break; + case "VOLTAGE_LEVEL_MODIFICATION": + defaultMessage = "voltage levels" + defaultMessage; + break; default: defaultMessage = "equipments of unknown type" + defaultMessage; break; diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java new file mode 100644 index 000000000..4851d64d5 --- /dev/null +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2023, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +package org.gridsuite.modification.server.modifications.tabularmodifications; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.powsybl.iidm.network.Network; +import lombok.SneakyThrows; +import org.gridsuite.modification.server.dto.*; +import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; +import org.gridsuite.modification.server.utils.NetworkCreation; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; + +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import static org.junit.Assert.assertEquals; + +/** + * @author AJELLAL Ali + */ +@Tag("IntegrationTest") +public class TabularVoltageLevelModificationsTest extends AbstractNetworkModificationTest { + @Override + protected Network createNetwork(UUID networkUuid) { + return NetworkCreation.create(networkUuid, true); + } + + @Override + protected ModificationInfos buildModification() { + List modifications = List.of( + VoltageLevelModificationInfos.builder().equipmentId("v1").nominalVoltage(new AttributeModification<>(300., OperationType.SET)).highVoltageLimit(new AttributeModification<>(400., OperationType.SET)).lowVoltageLimit(new AttributeModification<>(299., OperationType.SET)).build(), + VoltageLevelModificationInfos.builder().equipmentId("v2").nominalVoltage(new AttributeModification<>(300., OperationType.SET)).highVoltageLimit(new AttributeModification<>(400., OperationType.SET)).lowVoltageLimit(new AttributeModification<>(299., OperationType.SET)).build() + ); + return TabularModificationInfos.builder() + .modificationType("VOLTAGE_LEVEL_MODIFICATION") + .modifications(modifications) + .stashed(false) + .build(); + } + + @Override + protected ModificationInfos buildModificationUpdate() { + List modifications = List.of( + VoltageLevelModificationInfos.builder().equipmentId("v1").nominalVoltage(new AttributeModification<>(500., OperationType.SET)).highVoltageLimit(new AttributeModification<>(502., OperationType.SET)).lowVoltageLimit(new AttributeModification<>(499., OperationType.SET)).build(), + VoltageLevelModificationInfos.builder().equipmentId("v2").nominalVoltage(new AttributeModification<>(500., OperationType.SET)).highVoltageLimit(new AttributeModification<>(502., OperationType.SET)).lowVoltageLimit(new AttributeModification<>(499., OperationType.SET)).build() + ); + return TabularModificationInfos.builder() + .modificationType("VOLTAGE_LEVEL_MODIFICATION") + .modifications(modifications) + .stashed(false) + .build(); + } + + @Override + protected void assertAfterNetworkModificationCreation() { + assertEquals(300., getNetwork().getVoltageLevel("v1").getNominalV(), 0.001); + assertEquals(299., getNetwork().getVoltageLevel("v1").getLowVoltageLimit(), 0.001); + assertEquals(400., getNetwork().getVoltageLevel("v1").getHighVoltageLimit(), 0.001); + assertEquals(300., getNetwork().getVoltageLevel("v2").getNominalV(), 0.001); + assertEquals(299., getNetwork().getVoltageLevel("v2").getLowVoltageLimit(), 0.001); + assertEquals(400., getNetwork().getVoltageLevel("v2").getHighVoltageLimit(), 0.001); + } + + @Override + protected void assertAfterNetworkModificationDeletion() { + assertEquals(380.0, getNetwork().getVoltageLevel("v1").getNominalV(), 0.001); + assertEquals(Double.NaN, getNetwork().getVoltageLevel("v1").getLowVoltageLimit(), 0.001); + assertEquals(Double.NaN, getNetwork().getVoltageLevel("v1").getHighVoltageLimit(), 0.001); + assertEquals(225.0, getNetwork().getVoltageLevel("v2").getNominalV(), 0.001); + assertEquals(Double.NaN, getNetwork().getVoltageLevel("v2").getLowVoltageLimit(), 0.001); + assertEquals(Double.NaN, getNetwork().getVoltageLevel("v2").getHighVoltageLimit(), 0.001); + } + + @Override + @SneakyThrows + protected void testCreationModificationMessage(ModificationInfos modificationInfos) { + assertEquals("TABULAR_MODIFICATION", modificationInfos.getMessageType()); + Map createdValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { }); + Assertions.assertEquals("VOLTAGE_LEVEL_MODIFICATION", createdValues.get("tabularModificationType")); + } + + @Override + @SneakyThrows + protected void testUpdateModificationMessage(ModificationInfos modificationInfos) { + assertEquals("TABULAR_MODIFICATION", modificationInfos.getMessageType()); + Map updatedValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { }); + Assertions.assertEquals("VOLTAGE_LEVEL_MODIFICATION", updatedValues.get("tabularModificationType")); + } +}