Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* 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.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.gridsuite.modification.dto.LimitsPropertyInfos;

import java.util.UUID;

/**
* @author El Cheikh Bassel <bassel.el-cheikh_externe at rte-france.com>
*/

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "limits_property_modification")
public class LimitsPropertyModificationEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private UUID id;

@Column(name = "name", nullable = false)
private String name;

@Column(name = "property_value", nullable = false)
private String propertyValue;

public static LimitsPropertyModificationEntity fromLimitsPropertyInfos(LimitsPropertyInfos propertyInfos) {
return new LimitsPropertyModificationEntity(null, propertyInfos.name(), propertyInfos.value());
}

public LimitsPropertyInfos toLimitsPropertyInfos() {
return new LimitsPropertyInfos(name, propertyValue);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import org.gridsuite.modification.dto.LimitsPropertyInfos;
import org.gridsuite.modification.dto.OperationalLimitsGroupInfos;
import org.gridsuite.modification.dto.OperationalLimitsGroupModificationInfos;
import org.gridsuite.modification.dto.OperationalLimitsGroupModificationType;
import org.gridsuite.modification.dto.TemporaryLimitModificationType;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
Expand Down Expand Up @@ -49,18 +51,30 @@ public class OperationalLimitsGroupModificationEntity {
))
private CurrentLimitsModificationEntity currentLimits;

@Column(name = "modificationType")
@Column(name = "modification_type")
@Enumerated(EnumType.STRING)
private OperationalLimitsGroupModificationType modificationType;

@Column(name = "temporaryLimitsModificationType")
@Column(name = "temporary_limits_modification_type")
@Enumerated(EnumType.STRING)
private TemporaryLimitModificationType temporaryLimitsModificationType;

@Column(name = "applicability")
@Enumerated(EnumType.STRING)
private OperationalLimitsGroupInfos.Applicability applicability;

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "operational_limit_group_id", foreignKey = @ForeignKey(name = "operational_limit_group_modification_id_fk"))
private List<LimitsPropertyModificationEntity> limitsProperties;

private static List<LimitsPropertyModificationEntity> toLimitPropertyEntities(List<LimitsPropertyInfos> properties) {
List<LimitsPropertyModificationEntity> result = new ArrayList<>();
if (!CollectionUtils.isEmpty(properties)) {
result = properties.stream().map(LimitsPropertyModificationEntity::fromLimitsPropertyInfos).toList();
}
return result;
}

public static List<OperationalLimitsGroupModificationEntity> toOperationalLimitsGroupsEntities(@NonNull List<OperationalLimitsGroupModificationInfos> limitsGroups) {
return limitsGroups.stream()
.filter(Objects::nonNull)
Expand All @@ -71,10 +85,9 @@ public static List<OperationalLimitsGroupModificationEntity> toOperationalLimits
new CurrentLimitsModificationEntity(limitsGroup.getCurrentLimits()),
limitsGroup.getModificationType(),
limitsGroup.getTemporaryLimitsModificationType(),
limitsGroup.getApplicability()
)
)
.toList();
limitsGroup.getApplicability(),
toLimitPropertyEntities(limitsGroup.getLimitsProperties()))
).toList();
}

public static List<OperationalLimitsGroupModificationInfos> fromOperationalLimitsGroupsEntities(List<OperationalLimitsGroupModificationEntity> limitsGroupsEntities) {
Expand All @@ -87,6 +100,8 @@ public static List<OperationalLimitsGroupModificationInfos> fromOperationalLimit
.modificationType(limitsGroupEntity.getModificationType())
.temporaryLimitsModificationType(limitsGroupEntity.getTemporaryLimitsModificationType())
.applicability(limitsGroupEntity.getApplicability())
.limitsProperties(limitsGroupEntity.getLimitsProperties().stream().map(
LimitsPropertyModificationEntity::toLimitsPropertyInfos).toList())
.build()
)
.collect(Collectors.toList());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:pro="http://www.liquibase.org/xml/ns/pro" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
<changeSet author="elcheikhbas (generated)" id="1761133756126-1">
<createTable tableName="limits_property_modification">
<column name="id" type="UUID">
<constraints nullable="false" primaryKey="true" primaryKeyName="limits_property_modificationPK"/>
</column>
<column name="name" type="VARCHAR(255)">
<constraints nullable="false"/>
</column>
<column name="property_value" type="VARCHAR(255)">
<constraints nullable="false"/>
</column>
<column name="operational_limit_group_id" type="UUID"/>
</createTable>
</changeSet>
<changeSet author="elcheikhbas (generated)" id="1761133756126-2">
<addForeignKeyConstraint baseColumnNames="operational_limit_group_id" baseTableName="limits_property_modification" constraintName="operational_limit_group_modification_id_fk" deferrable="false" initiallyDeferred="false" referencedColumnNames="uuid" referencedTableName="operational_limits_group_modification" validate="true"/>
</changeSet>
</databaseChangeLog>
3 changes: 3 additions & 0 deletions src/main/resources/db/changelog/db.changelog-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -426,3 +426,6 @@ databaseChangeLog:
- include:
file: changesets/changelog_20251009T130154Z.xml
relativeToChangelogFile: true
- include:
file: changesets/changelog_20251022T114823Z.xml
relativeToChangelogFile: true
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.springframework.test.web.servlet.ResultActions;

import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -99,6 +100,7 @@ protected ModificationInfos buildModification() {
.modificationType(OperationalLimitsGroupModificationType.ADD)
.id("newOpLG1")
.applicability(SIDE1)
.limitsProperties(List.of(new LimitsPropertyInfos(PROPERTY_NAME, PROPERTY_VALUE)))
.currentLimits(
CurrentLimitsModificationInfos.builder()
.permanentLimit(12.0)
Expand All @@ -115,6 +117,7 @@ protected ModificationInfos buildModification() {
.modificationType(OperationalLimitsGroupModificationType.ADD)
.id("newOpLG2")
.applicability(SIDE2)
.limitsProperties(Collections.emptyList())
.currentLimits(
CurrentLimitsModificationInfos.builder()
.permanentLimit(22.0)
Expand All @@ -130,6 +133,7 @@ protected ModificationInfos buildModification() {
OperationalLimitsGroupModificationInfos.builder()
.id("DEFAULT")
.applicability(OperationalLimitsGroupInfos.Applicability.SIDE1)
.limitsProperties(Collections.emptyList())
.modificationType(OperationalLimitsGroupModificationType.MODIFY)
.temporaryLimitsModificationType(TemporaryLimitModificationType.REPLACE)
.currentLimits(CurrentLimitsModificationInfos.builder()
Expand Down Expand Up @@ -165,6 +169,7 @@ protected ModificationInfos buildModificationUpdate() {
.operationalLimitsGroups(List.of(OperationalLimitsGroupModificationInfos.builder()
.id("DEFAULT")
.applicability(OperationalLimitsGroupInfos.Applicability.SIDE1)
.limitsProperties(Collections.emptyList())
.modificationType(OperationalLimitsGroupModificationType.MODIFY)
.temporaryLimitsModificationType(TemporaryLimitModificationType.REPLACE)
.currentLimits(CurrentLimitsModificationInfos.builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ protected ModificationInfos buildModification() {
.modificationType(OperationalLimitsGroupModificationType.ADD)
.id("DEFAULT")
.applicability(SIDE1)
.limitsProperties(Collections.emptyList())
.currentLimits(
CurrentLimitsModificationInfos.builder()
.permanentLimit(12.0)
Expand All @@ -86,6 +87,7 @@ protected ModificationInfos buildModification() {
.modificationType(OperationalLimitsGroupModificationType.ADD)
.id("DEFAULT")
.applicability(SIDE2)
.limitsProperties(Collections.emptyList())
.currentLimits(
CurrentLimitsModificationInfos.builder()
.permanentLimit(22.0)
Expand Down Expand Up @@ -333,6 +335,7 @@ void testRatioTapChangerModification() throws Exception {
.modificationType(OperationalLimitsGroupModificationType.ADD)
.id("DEFAULT")
.applicability(SIDE1)
.limitsProperties(Collections.emptyList())
.currentLimits(
CurrentLimitsModificationInfos.builder()
.permanentLimit(21.1)
Expand All @@ -349,6 +352,7 @@ void testRatioTapChangerModification() throws Exception {
.modificationType(OperationalLimitsGroupModificationType.ADD)
.id("DEFAULT")
.applicability(SIDE2)
.limitsProperties(Collections.emptyList())
.currentLimits(
CurrentLimitsModificationInfos.builder()
.permanentLimit(22.1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Pair;

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.UUID;
Expand Down Expand Up @@ -175,6 +176,7 @@ public static OperationalLimitsGroupModificationInfos buildOperationalLimitsGrou
return OperationalLimitsGroupModificationInfos.builder()
.id("testName")
.applicability(applicability)
.limitsProperties(Collections.emptyList())
.modificationType(OperationalLimitsGroupModificationType.ADD)
.temporaryLimitsModificationType(TemporaryLimitModificationType.ADD)
.currentLimits(CurrentLimitsModificationInfos.builder()
Expand Down