Skip to content
Open
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;
}
Comment on lines +66 to +76
Copy link
Contributor

@Mathieu-Deharbe Mathieu-Deharbe Oct 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that this could be a List<LimitsPropertyEntity> (given that we only create properties and never modify, the structure is the same)

Then LimitsPropertyModificationEntity wouldn't be needed (for now anyway)


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
Loading