diff --git a/pom.xml b/pom.xml index 3c643eeae..205972300 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ **/migration/**/* gridsuite org.gridsuite:network-modification-server - 0.54.0 + 0.55.0 diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VoltageInitModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VoltageInitModificationEntity.java index 368d43361..b935beade 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VoltageInitModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VoltageInitModificationEntity.java @@ -26,6 +26,10 @@ import jakarta.persistence.ForeignKey; import jakarta.persistence.Index; import jakarta.persistence.Table; +import jakarta.persistence.Column; + +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.List; import java.util.stream.Collectors; @@ -75,6 +79,15 @@ public class VoltageInitModificationEntity extends ModificationEntity { foreignKey = @ForeignKey(name = "VoltageInitModificationEntity_buses_fk1")) private List buses; + @Column(name = "rootNetworkName") + private String rootNetworkName; + + @Column(name = "nodeName") + private String nodeName; + + @Column(name = "computationDate", columnDefinition = "timestamptz") + private Instant computationDate; + public VoltageInitModificationEntity(VoltageInitModificationInfos voltageInitModificationInfos) { super(voltageInitModificationInfos); assignAttributes(voltageInitModificationInfos); @@ -93,7 +106,10 @@ private void assignAttributes(VoltageInitModificationInfos voltageInitModificati vscConverterStations = toEmbeddableVoltageInitVscConverterStations(voltageInitModificationInfos.getVscConverterStations()); shuntCompensators = toEmbeddableVoltageInitShuntCompensators(voltageInitModificationInfos.getShuntCompensators()); buses = toEmbeddableVoltageInitBuses(voltageInitModificationInfos.getBuses()); - + rootNetworkName = voltageInitModificationInfos.getRootNetworkName(); + nodeName = voltageInitModificationInfos.getNodeName(); + //We need to limit the precision to avoid database precision storage limit issue (postgres has a precision of 6 digits while h2 can go to 9) + this.computationDate = voltageInitModificationInfos.getComputationDate() != null ? voltageInitModificationInfos.getComputationDate().truncatedTo(ChronoUnit.MICROS) : null; } public static List toEmbeddableVoltageInitGenerators(List generators) { @@ -187,6 +203,9 @@ public VoltageInitModificationInfos toModificationInfos() { .vscConverterStations(toVscConverterStationsModification(vscConverterStations)) .shuntCompensators(toShuntCompensatorsModification(shuntCompensators)) .buses(toBusesModification(buses)) + .rootNetworkName(getRootNetworkName()) + .nodeName(getNodeName()) + .computationDate(getComputationDate()) .build(); } } diff --git a/src/main/resources/db/changelog/changesets/changelog_20251205T094612Z.xml b/src/main/resources/db/changelog/changesets/changelog_20251205T094612Z.xml new file mode 100644 index 000000000..4cb20c9aa --- /dev/null +++ b/src/main/resources/db/changelog/changesets/changelog_20251205T094612Z.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index 671f84e69..f0346ee9a 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -443,4 +443,7 @@ databaseChangeLog: relativeToChangelogFile: true - include: file: changesets/changelog_20251128T072356Z.xml - relativeToChangelogFile: true \ No newline at end of file + relativeToChangelogFile: true + - include: + file: changesets/changelog_20251205T094612Z.xml + relativeToChangelogFile: true diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java index fa2ed09f3..3c9ea4108 100644 --- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java +++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java @@ -60,6 +60,7 @@ import java.io.IOException; import java.io.InputStream; +import java.time.Instant; import java.util.*; import java.util.stream.Collectors; @@ -1609,6 +1610,9 @@ void testCreateVoltageInitModification() throws Exception { .v(226.) .angle(0.6) .build())) + .rootNetworkName("rootNetwork") + .nodeName("node") + .computationDate(Instant.now()) .build(); UUID groupUuid = UUID.randomUUID(); diff --git a/src/test/java/org/gridsuite/modification/server/VoltageInitReportTest.java b/src/test/java/org/gridsuite/modification/server/VoltageInitReportTest.java index 1bfcfb1bb..24429be04 100644 --- a/src/test/java/org/gridsuite/modification/server/VoltageInitReportTest.java +++ b/src/test/java/org/gridsuite/modification/server/VoltageInitReportTest.java @@ -147,6 +147,9 @@ private static List voltageInitModifications() { VoltageInitShuntCompensatorModificationInfos.builder().shuntCompensatorId("v5shunt").sectionCount(0).connect(false).build(), VoltageInitShuntCompensatorModificationInfos.builder().shuntCompensatorId("v6shunt").sectionCount(1).connect(false).build())) .buses(List.of()) + .rootNetworkName("rootNetwork") + .nodeName("node") + .computationDate(Instant.now()) .build()) ); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java index 75190819a..d262b1b70 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java @@ -14,8 +14,11 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.ResultActions; +import com.fasterxml.jackson.core.type.TypeReference; +import java.time.Instant; import java.util.List; +import java.util.Map; import java.util.UUID; import static org.gridsuite.modification.server.utils.NetworkUtil.createGenerator; @@ -205,6 +208,9 @@ protected ModificationInfos buildModification() { .v(230.) .angle(0.5) .build())) + .rootNetworkName("rootNetwork1") + .nodeName("node1") + .computationDate(Instant.now()) .build(); } @@ -266,6 +272,9 @@ protected ModificationInfos buildModificationUpdate() { .connect(false) .build())) .buses(List.of()) + .rootNetworkName("rootNetwork2") + .nodeName("node2") + .computationDate(Instant.now()) .build(); } @@ -366,4 +375,20 @@ protected void assertAfterNetworkModificationDeletion() { assertEquals(225., getNetwork().getShuntCompensator("v5shunt").getTargetV(), 0.001); assertEquals(0, getNetwork().getShuntCompensator("v6shunt").getSectionCount()); } + + @Override + protected void testCreationModificationMessage(ModificationInfos modificationInfos) throws Exception { + assertEquals("VOLTAGE_INIT_MODIFICATION", modificationInfos.getMessageType()); + Map createdValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { }); + assertEquals("rootNetwork1", createdValues.get("rootNetworkName")); + assertEquals("node1", createdValues.get("nodeName")); + } + + @Override + protected void testUpdateModificationMessage(ModificationInfos modificationInfos) throws Exception { + assertEquals("VOLTAGE_INIT_MODIFICATION", modificationInfos.getMessageType()); + Map updatedValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { }); + assertEquals("rootNetwork2", updatedValues.get("rootNetworkName")); + assertEquals("node2", updatedValues.get("nodeName")); + } }