From ac74cb4da6269f5c8b1abdb6caadaa322b526026 Mon Sep 17 00:00:00 2001 From: Kamil MARUT Date: Mon, 18 May 2026 13:56:06 +0200 Subject: [PATCH 1/3] save busbar section measurements --- pom.xml | 2 +- .../BatteryModificationEntity.java | 4 ++ .../BusbarSectionVMeasurementEntity.java | 63 ++++++++++++++++++ .../VoltageLevelModificationEntity.java | 30 ++++++--- .../changesets/changelog_20260521T092513Z.xml | 3 + .../changesets/changelog_20260521T095725Z.xml | 37 +++++++++++ .../db/changelog/db.changelog-master.yaml | 6 ++ .../BatteryModificationTest.java | 22 +++++++ .../VoltageLevelModificationTest.java | 66 +++++++++++++++++++ 9 files changed, 224 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BusbarSectionVMeasurementEntity.java create mode 100644 src/main/resources/db/changelog/changesets/changelog_20260521T092513Z.xml create mode 100644 src/main/resources/db/changelog/changesets/changelog_20260521T095725Z.xml diff --git a/pom.xml b/pom.xml index 2e39ab396..a47eb8798 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ gridsuite org.gridsuite:network-modification-server - 0.81.0 + 0.82.0-SNAPSHOT diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BatteryModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BatteryModificationEntity.java index 2dd7fc9ee..83af648e8 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BatteryModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BatteryModificationEntity.java @@ -151,6 +151,10 @@ public BatteryModificationInfos toModificationInfos() { .stepUpTransformerX(toAttributeModification(getStepUpTransformerX())) .reactiveCapabilityCurve(toAttributeModification(getReactiveCapabilityCurve())) .reactiveCapabilityCurvePoints(DTOUtils.toReactiveCapabilityCurvePointsModificationInfos(getReactiveCapabilityCurvePoints())) + .pMeasurementValue(toAttributeModification(getPMeasurementValue())) + .pMeasurementValidity(toAttributeModification(getPMeasurementValidity())) + .qMeasurementValue(toAttributeModification(getQMeasurementValue())) + .qMeasurementValidity(toAttributeModification(getQMeasurementValidity())) // properties .properties(CollectionUtils.isEmpty(getProperties()) ? null : getProperties().stream() diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BusbarSectionVMeasurementEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BusbarSectionVMeasurementEntity.java new file mode 100644 index 000000000..a1878874d --- /dev/null +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BusbarSectionVMeasurementEntity.java @@ -0,0 +1,63 @@ +/** + * Copyright (c) 2025, 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.entities.equipment.modification; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.gridsuite.modification.dto.BusbarSectionVMeasurementInfos; +import org.gridsuite.modification.server.entities.equipment.modification.attribute.BooleanModificationEmbedded; +import org.gridsuite.modification.server.entities.equipment.modification.attribute.DoubleModificationEmbedded; + +import java.util.UUID; + +import static org.gridsuite.modification.server.entities.equipment.modification.attribute.IAttributeModificationEmbeddable.toAttributeModification; + +/** + * @author Mohamed Ben Rejeb + */ +@NoArgsConstructor +@Getter +@Entity +@Table(name = "busbar_section_v_measurement") +public class BusbarSectionVMeasurementEntity { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + private UUID id; + + @Column(name = "busbar_section_id") + private String busbarSectionId; + + @Embedded + @AttributeOverrides(value = { + @AttributeOverride(name = "value", column = @Column(name = "v_measurement_value")), + @AttributeOverride(name = "opType", column = @Column(name = "v_measurement_value_op")) + }) + private DoubleModificationEmbedded vMeasurementValue; + + @Embedded + @AttributeOverrides(value = { + @AttributeOverride(name = "value", column = @Column(name = "v_measurement_validity")), + @AttributeOverride(name = "opType", column = @Column(name = "v_measurement_validity_op")) + }) + private BooleanModificationEmbedded vMeasurementValidity; + + public BusbarSectionVMeasurementEntity(BusbarSectionVMeasurementInfos infos) { + this.busbarSectionId = infos.getBusbarSectionId(); + this.vMeasurementValue = infos.getVMeasurementValue() != null ? new DoubleModificationEmbedded(infos.getVMeasurementValue()) : null; + this.vMeasurementValidity = infos.getVMeasurementValidity() != null ? new BooleanModificationEmbedded(infos.getVMeasurementValidity()) : null; + } + + public BusbarSectionVMeasurementInfos toInfos() { + return BusbarSectionVMeasurementInfos.builder() + .busbarSectionId(busbarSectionId) + .vMeasurementValue(toAttributeModification(vMeasurementValue)) + .vMeasurementValidity(toAttributeModification(vMeasurementValidity)) + .build(); + } +} diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VoltageLevelModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VoltageLevelModificationEntity.java index fff3e8350..92a31b575 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VoltageLevelModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VoltageLevelModificationEntity.java @@ -15,16 +15,12 @@ import org.gridsuite.modification.server.entities.equipment.modification.attribute.DoubleModificationEmbedded; import org.gridsuite.modification.server.entities.equipment.modification.attribute.IAttributeModificationEmbeddable; -import jakarta.persistence.AttributeOverride; -import jakarta.persistence.AttributeOverrides; -import jakarta.persistence.Column; -import jakarta.persistence.Embedded; -import jakarta.persistence.Entity; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.PrimaryKeyJoinColumn; -import jakarta.persistence.Table; +import jakarta.persistence.*; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; +import java.util.List; + import static org.gridsuite.modification.dto.AttributeModification.toAttributeModification; /** @@ -72,6 +68,11 @@ public class VoltageLevelModificationEntity extends BasicEquipmentModificationEn }) private DoubleModificationEmbedded ipMax; + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) + @JoinColumn(name = "voltage_level_modification_id", nullable = false, + foreignKey = @ForeignKey(name = "busbar_section_v_measurement_vl_id_fk")) + private List busbarSectionVMeasurements; + public VoltageLevelModificationEntity(VoltageLevelModificationInfos voltageLevelModificationInfos) { super(voltageLevelModificationInfos); assignAttributes(voltageLevelModificationInfos); @@ -89,6 +90,15 @@ private void assignAttributes(VoltageLevelModificationInfos voltageLevelModifica this.highVoltageLimit = voltageLevelModificationInfos.getHighVoltageLimit() != null ? new DoubleModificationEmbedded(voltageLevelModificationInfos.getHighVoltageLimit()) : null; this.ipMin = voltageLevelModificationInfos.getIpMin() != null ? new DoubleModificationEmbedded(voltageLevelModificationInfos.getIpMin()) : null; this.ipMax = voltageLevelModificationInfos.getIpMax() != null ? new DoubleModificationEmbedded(voltageLevelModificationInfos.getIpMax()) : null; + if (this.busbarSectionVMeasurements == null) { + this.busbarSectionVMeasurements = new ArrayList<>(); + } + this.busbarSectionVMeasurements.clear(); + if (!CollectionUtils.isEmpty(voltageLevelModificationInfos.getBusbarSectionVMeasurements())) { + voltageLevelModificationInfos.getBusbarSectionVMeasurements().stream() + .map(BusbarSectionVMeasurementEntity::new) + .forEach(this.busbarSectionVMeasurements::add); + } } @Override @@ -110,6 +120,10 @@ public VoltageLevelModificationInfos toModificationInfos() { .highVoltageLimit(IAttributeModificationEmbeddable.toAttributeModification(getHighVoltageLimit())) .ipMin(IAttributeModificationEmbeddable.toAttributeModification(this.getIpMin())) .ipMax(IAttributeModificationEmbeddable.toAttributeModification(this.getIpMax())) + .busbarSectionVMeasurements(CollectionUtils.isEmpty(busbarSectionVMeasurements) ? null : + busbarSectionVMeasurements.stream() + .map(BusbarSectionVMeasurementEntity::toInfos) + .toList()) // properties .properties(CollectionUtils.isEmpty(getProperties()) ? null : getProperties().stream() diff --git a/src/main/resources/db/changelog/changesets/changelog_20260521T092513Z.xml b/src/main/resources/db/changelog/changesets/changelog_20260521T092513Z.xml new file mode 100644 index 000000000..eb104f455 --- /dev/null +++ b/src/main/resources/db/changelog/changesets/changelog_20260521T092513Z.xml @@ -0,0 +1,3 @@ + + + diff --git a/src/main/resources/db/changelog/changesets/changelog_20260521T095725Z.xml b/src/main/resources/db/changelog/changesets/changelog_20260521T095725Z.xml new file mode 100644 index 000000000..8ad4b3ad1 --- /dev/null +++ b/src/main/resources/db/changelog/changesets/changelog_20260521T095725Z.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index e402123ea..500cc44df 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -480,3 +480,9 @@ databaseChangeLog: - include: file: changesets/changelog_20260423T141808Z.xml relativeToChangelogFile: true + - include: + file: changesets/changelog_20260521T092513Z.xml + relativeToChangelogFile: true + - include: + file: changesets/changelog_20260521T095725Z.xml + relativeToChangelogFile: true diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java index da04d9d2a..5ca9efbab 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java @@ -13,6 +13,8 @@ import com.powsybl.iidm.network.ReactiveLimitsKind; import com.powsybl.iidm.network.extensions.ActivePowerControl; import com.powsybl.iidm.network.extensions.BatteryShortCircuit; +import com.powsybl.iidm.network.extensions.Measurement; +import com.powsybl.iidm.network.extensions.Measurements; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.dto.NetworkModificationsResult; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -40,6 +42,10 @@ class BatteryModificationTest extends AbstractInjectionModificationTest { private static final String PROPERTY_NAME = "property-name"; private static final String PROPERTY_VALUE = "property-value"; + private static final Double MEASUREMENT_P_VALUE = 10.0; + private static final Boolean MEASUREMENT_P_VALID = false; + private static final Double MEASUREMENT_Q_VALUE = 0.5; + private static final Boolean MEASUREMENT_Q_VALID = true; @Override protected Network createNetwork(UUID networkUuid) { @@ -68,6 +74,10 @@ protected ModificationInfos buildModification() { .stepUpTransformerX(new AttributeModification<>(0.2, OperationType.SET)) .participate(new AttributeModification<>(true, OperationType.SET)) .reactiveCapabilityCurve(new AttributeModification<>(true, OperationType.SET)) + .pMeasurementValue(new AttributeModification<>(MEASUREMENT_P_VALUE, OperationType.SET)) + .pMeasurementValidity(new AttributeModification<>(MEASUREMENT_P_VALID, OperationType.SET)) + .qMeasurementValue(new AttributeModification<>(MEASUREMENT_Q_VALUE, OperationType.SET)) + .qMeasurementValidity(new AttributeModification<>(MEASUREMENT_Q_VALID, OperationType.SET)) .properties(List.of(FreePropertyInfos.builder().name(PROPERTY_NAME).value(PROPERTY_VALUE).build())) .build(); } @@ -116,6 +126,7 @@ protected void assertAfterNetworkModificationCreation() { assertNotNull(batteryShortCircuit); assertEquals(0.1, batteryShortCircuit.getDirectTransX()); assertEquals(0.2, batteryShortCircuit.getStepUpTransformerX()); + assertMeasurements(modifiedBattery); } @Override @@ -415,4 +426,15 @@ void testBatteryShortCircuitAttributesModification() throws Exception { assertThat(createdModification).recursivelyEquals(batteryModificationInfos); testNetworkModificationsCount(getGroupId(), 2); } + + private void assertMeasurements(Battery battery) { + Measurements measurements = (Measurements) battery.getExtension(Measurements.class); + assertNotNull(measurements); + Collection activePowerMeasurements = measurements.getMeasurements(Measurement.Type.ACTIVE_POWER).stream().toList(); + Collection reactivePowerMeasurements = measurements.getMeasurements(Measurement.Type.REACTIVE_POWER).stream().toList(); + assertThat(activePowerMeasurements).isNotEmpty(); + assertThat(reactivePowerMeasurements).isNotEmpty(); + assertThat(activePowerMeasurements).allMatch(m -> m.getValue() == MEASUREMENT_P_VALUE && m.isValid() == MEASUREMENT_P_VALID); + assertThat(reactivePowerMeasurements).allMatch(m -> m.getValue() == MEASUREMENT_Q_VALUE && m.isValid() == MEASUREMENT_Q_VALID); + } } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java index 85f0f5653..c1a600b73 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java @@ -7,10 +7,13 @@ package org.gridsuite.modification.server.modifications; import com.fasterxml.jackson.core.type.TypeReference; +import com.powsybl.iidm.network.BusbarSection; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.VoltageLevel; import com.powsybl.iidm.network.extensions.IdentifiableShortCircuit; import com.powsybl.iidm.network.extensions.IdentifiableShortCircuitAdder; +import com.powsybl.iidm.network.extensions.Measurement; +import com.powsybl.iidm.network.extensions.Measurements; import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -19,10 +22,13 @@ import org.springframework.http.MediaType; import org.springframework.test.web.servlet.ResultActions; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.UUID; +import static org.assertj.core.api.Assertions.assertThat; + import static org.gridsuite.modification.NetworkModificationException.Type.MODIFY_VOLTAGE_LEVEL_ERROR; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; @@ -39,6 +45,8 @@ class VoltageLevelModificationTest extends AbstractNetworkModificationTest { private static final String PROPERTY_NAME = "property-name"; private static final String PROPERTY_VALUE = "property-value"; + private static final Double MEASUREMENT_V_VALUE = 400.0; + private static final Boolean MEASUREMENT_V_VALID = true; @Override protected Network createNetwork(UUID networkUuid) { @@ -57,6 +65,12 @@ protected ModificationInfos buildModification() { .ipMax(new AttributeModification<>(0.8, OperationType.SET)) .ipMin(new AttributeModification<>(0.7, OperationType.SET)) .properties(List.of(FreePropertyInfos.builder().name(PROPERTY_NAME).value(PROPERTY_VALUE).build())) + .busbarSectionVMeasurements(List.of( + BusbarSectionVMeasurementInfos.builder() + .busbarSectionId("1.1") + .vMeasurementValue(new AttributeModification<>(MEASUREMENT_V_VALUE, OperationType.SET)) + .vMeasurementValidity(new AttributeModification<>(MEASUREMENT_V_VALID, OperationType.SET)) + .build())) .build(); } @@ -71,6 +85,12 @@ protected ModificationInfos buildModificationUpdate() { .highVoltageLimit(new AttributeModification<>(55D, OperationType.SET)) .ipMax(new AttributeModification<>(0.9, OperationType.SET)) .ipMin(new AttributeModification<>(0.5, OperationType.SET)) + .busbarSectionVMeasurements(List.of( + BusbarSectionVMeasurementInfos.builder() + .busbarSectionId("1.1") + .vMeasurementValue(new AttributeModification<>(380D, OperationType.SET)) + .vMeasurementValidity(new AttributeModification<>(false, OperationType.SET)) + .build())) .build(); } @@ -87,6 +107,19 @@ protected void assertAfterNetworkModificationCreation() { assertEquals(0.8, identifiableShortCircuit.getIpMax(), 0); assertEquals(0.7, identifiableShortCircuit.getIpMin(), 0); assertEquals(PROPERTY_VALUE, getNetwork().getVoltageLevel("v1").getProperty(PROPERTY_NAME)); + assertBusbarSectionMeasurement(getNetwork().getBusbarSection("1.1")); + } + + private void assertBusbarSectionMeasurement(BusbarSection bbs) { + assertNotNull(bbs); + Measurements measurements = (Measurements) bbs.getExtension(Measurements.class); + assertNotNull(measurements); + Collection voltageMeasurements = measurements.getMeasurements(Measurement.Type.VOLTAGE).stream().toList(); + assertThat(voltageMeasurements).isNotEmpty(); + assertThat(voltageMeasurements).allSatisfy(m -> { + assertThat(m.getValue()).isEqualTo(MEASUREMENT_V_VALUE); + assertThat(m.isValid()).isEqualTo(MEASUREMENT_V_VALID); + }); } @Override @@ -243,6 +276,39 @@ void testSetIpMaxOnEquipmentWitOnlyIpMaxExtension() throws Exception { assertEquals(targetIpMax, identifiableShortCircuit1.getIpMax(), 0); } + @Test + void testBusbarSectionMeasurementUpdateExistingPath() throws Exception { + // Apply first modification: adds a new voltage measurement to the BBS (add path) + applyModification((VoltageLevelModificationInfos) buildModification()); + assertBusbarSectionMeasurement(getNetwork().getBusbarSection("1.1")); + + // Apply second modification: updates the existing voltage measurement (update/upsert path) + final double updatedValue = 380.0; + final boolean updatedValidity = false; + VoltageLevelModificationInfos updateModif = VoltageLevelModificationInfos.builder() + .stashed(false) + .equipmentId("v1") + .busbarSectionVMeasurements(List.of( + BusbarSectionVMeasurementInfos.builder() + .busbarSectionId("1.1") + .vMeasurementValue(new AttributeModification<>(updatedValue, OperationType.SET)) + .vMeasurementValidity(new AttributeModification<>(updatedValidity, OperationType.SET)) + .build())) + .build(); + applyModification(updateModif); + + BusbarSection bbs = getNetwork().getBusbarSection("1.1"); + assertNotNull(bbs); + Measurements measurements = (Measurements) bbs.getExtension(Measurements.class); + assertNotNull(measurements); + Collection voltageMeasurements = measurements.getMeasurements(Measurement.Type.VOLTAGE).stream().toList(); + assertThat(voltageMeasurements).hasSize(1); + assertThat(voltageMeasurements).allSatisfy(m -> { + assertThat(m.getValue()).isEqualTo(updatedValue); + assertThat(m.isValid()).isEqualTo(updatedValidity); + }); + } + private void applyModification(VoltageLevelModificationInfos infos) throws Exception { String body = getJsonBody(infos, null); ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) From fd9afd1562dc484deb7e400b152032c2f6688e35 Mon Sep 17 00:00:00 2001 From: benrejebmoh Date: Tue, 26 May 2026 15:43:19 +0200 Subject: [PATCH 2/3] voltage measurements modification for busbar-section network-modification Signed-off-by: benrejebmoh --- pom.xml | 2 +- .../changesets/changelog_20260521T092513Z.xml | 3 -- ...25Z.xml => changelog_20260526T094439Z.xml} | 35 +++++++++---------- .../db/changelog/db.changelog-master.yaml | 3 ++ 4 files changed, 21 insertions(+), 22 deletions(-) delete mode 100644 src/main/resources/db/changelog/changesets/changelog_20260521T092513Z.xml rename src/main/resources/db/changelog/changesets/{changelog_20260521T095725Z.xml => changelog_20260526T094439Z.xml} (51%) diff --git a/pom.xml b/pom.xml index de69f0b60..f9f640739 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ gridsuite org.gridsuite:network-modification-server - 0.83.0-SNAPSHOT + 0.84.0-SNAPSHOT diff --git a/src/main/resources/db/changelog/changesets/changelog_20260521T092513Z.xml b/src/main/resources/db/changelog/changesets/changelog_20260521T092513Z.xml deleted file mode 100644 index eb104f455..000000000 --- a/src/main/resources/db/changelog/changesets/changelog_20260521T092513Z.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/main/resources/db/changelog/changesets/changelog_20260521T095725Z.xml b/src/main/resources/db/changelog/changesets/changelog_20260526T094439Z.xml similarity index 51% rename from src/main/resources/db/changelog/changesets/changelog_20260521T095725Z.xml rename to src/main/resources/db/changelog/changesets/changelog_20260526T094439Z.xml index 8ad4b3ad1..024bc47c3 100644 --- a/src/main/resources/db/changelog/changesets/changelog_20260521T095725Z.xml +++ b/src/main/resources/db/changelog/changesets/changelog_20260526T094439Z.xml @@ -1,37 +1,36 @@ - + - - + + - - + + + + + + + + - - + + - - + + - - + + diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index 2752eba51..cdeb87147 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -486,3 +486,6 @@ databaseChangeLog: - include: file: changesets/changelog_20260522T132309Z.xml relativeToChangelogFile: true + - include: + file: changesets/changelog_20260526T094439Z.xml + relativeToChangelogFile: true From 0f06b65b7553727ac9aef1f0c44b6f51a61558ab Mon Sep 17 00:00:00 2001 From: benrejebmoh Date: Thu, 28 May 2026 15:40:58 +0200 Subject: [PATCH 3/3] handling review comments Signed-off-by: benrejebmoh --- .../BusbarSectionVMeasurementEntity.java | 2 +- .../changesets/changelog_20260526T094439Z.xml | 15 ------------ .../VoltageLevelModificationTest.java | 24 ++++++------------- 3 files changed, 8 insertions(+), 33 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BusbarSectionVMeasurementEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BusbarSectionVMeasurementEntity.java index a1878874d..9981b53e5 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BusbarSectionVMeasurementEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BusbarSectionVMeasurementEntity.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2025, RTE (http://www.rte-france.com) + * Copyright (c) 2026, 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/. diff --git a/src/main/resources/db/changelog/changesets/changelog_20260526T094439Z.xml b/src/main/resources/db/changelog/changesets/changelog_20260526T094439Z.xml index 024bc47c3..e2092e654 100644 --- a/src/main/resources/db/changelog/changesets/changelog_20260526T094439Z.xml +++ b/src/main/resources/db/changelog/changesets/changelog_20260526T094439Z.xml @@ -15,22 +15,7 @@ - - - - - - - - - - - - - - - diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java index c1a600b73..85ba60ef2 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java @@ -107,18 +107,17 @@ protected void assertAfterNetworkModificationCreation() { assertEquals(0.8, identifiableShortCircuit.getIpMax(), 0); assertEquals(0.7, identifiableShortCircuit.getIpMin(), 0); assertEquals(PROPERTY_VALUE, getNetwork().getVoltageLevel("v1").getProperty(PROPERTY_NAME)); - assertBusbarSectionMeasurement(getNetwork().getBusbarSection("1.1")); + assertBusbarSectionMeasurement(getNetwork().getBusbarSection("1.1"), MEASUREMENT_V_VALUE, MEASUREMENT_V_VALID); } - private void assertBusbarSectionMeasurement(BusbarSection bbs) { + private void assertBusbarSectionMeasurement(BusbarSection bbs, double expectedValue, boolean expectedValid) { assertNotNull(bbs); Measurements measurements = (Measurements) bbs.getExtension(Measurements.class); assertNotNull(measurements); Collection voltageMeasurements = measurements.getMeasurements(Measurement.Type.VOLTAGE).stream().toList(); - assertThat(voltageMeasurements).isNotEmpty(); - assertThat(voltageMeasurements).allSatisfy(m -> { - assertThat(m.getValue()).isEqualTo(MEASUREMENT_V_VALUE); - assertThat(m.isValid()).isEqualTo(MEASUREMENT_V_VALID); + assertThat(voltageMeasurements).isNotEmpty().allSatisfy(m -> { + assertThat(m.getValue()).isEqualTo(expectedValue); + assertThat(m.isValid()).isEqualTo(expectedValid); }); } @@ -280,7 +279,7 @@ void testSetIpMaxOnEquipmentWitOnlyIpMaxExtension() throws Exception { void testBusbarSectionMeasurementUpdateExistingPath() throws Exception { // Apply first modification: adds a new voltage measurement to the BBS (add path) applyModification((VoltageLevelModificationInfos) buildModification()); - assertBusbarSectionMeasurement(getNetwork().getBusbarSection("1.1")); + assertBusbarSectionMeasurement(getNetwork().getBusbarSection("1.1"), MEASUREMENT_V_VALUE, MEASUREMENT_V_VALID); // Apply second modification: updates the existing voltage measurement (update/upsert path) final double updatedValue = 380.0; @@ -297,16 +296,7 @@ void testBusbarSectionMeasurementUpdateExistingPath() throws Exception { .build(); applyModification(updateModif); - BusbarSection bbs = getNetwork().getBusbarSection("1.1"); - assertNotNull(bbs); - Measurements measurements = (Measurements) bbs.getExtension(Measurements.class); - assertNotNull(measurements); - Collection voltageMeasurements = measurements.getMeasurements(Measurement.Type.VOLTAGE).stream().toList(); - assertThat(voltageMeasurements).hasSize(1); - assertThat(voltageMeasurements).allSatisfy(m -> { - assertThat(m.getValue()).isEqualTo(updatedValue); - assertThat(m.isValid()).isEqualTo(updatedValidity); - }); + assertBusbarSectionMeasurement(getNetwork().getBusbarSection("1.1"), updatedValue, updatedValidity); } private void applyModification(VoltageLevelModificationInfos infos) throws Exception {