Skip to content

Commit 281c14f

Browse files
committed
Add Limits properties to operational limits groups modification entity
Signed-off-by: basseche <[email protected]>
1 parent 82d3789 commit 281c14f

File tree

4 files changed

+100
-6
lines changed

4 files changed

+100
-6
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Copyright (c) 2025, RTE (http://www.rte-france.com)
3+
* This Source Code Form is subject to the terms of the Mozilla Public
4+
* License, v. 2.0. If a copy of the MPL was not distributed with this
5+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6+
*/
7+
8+
package org.gridsuite.modification.server.entities.equipment.modification;
9+
10+
import jakarta.persistence.Column;
11+
import jakarta.persistence.Entity;
12+
import jakarta.persistence.GeneratedValue;
13+
import jakarta.persistence.GenerationType;
14+
import jakarta.persistence.Id;
15+
import jakarta.persistence.Table;
16+
import lombok.AllArgsConstructor;
17+
import lombok.Getter;
18+
import lombok.NoArgsConstructor;
19+
import lombok.Setter;
20+
import org.gridsuite.modification.dto.LimitsPropertyInfos;
21+
22+
import java.util.UUID;
23+
24+
/**
25+
* @author El Cheikh Bassel <bassel.el-cheikh_externe at rte-france.com>
26+
*/
27+
28+
@Getter
29+
@Setter
30+
@NoArgsConstructor
31+
@AllArgsConstructor
32+
@Entity
33+
@Table(name = "limits_property_modification")
34+
public class LimitsPropertyModificationEntity {
35+
@Id
36+
@GeneratedValue(strategy = GenerationType.AUTO)
37+
@Column(name = "id")
38+
private UUID id;
39+
40+
@Column(name = "name", nullable = false)
41+
private String name;
42+
43+
@Column(name = "property_value", nullable = false)
44+
private String propertyValue;
45+
46+
public static LimitsPropertyModificationEntity fromLimitsPropertyInfos(LimitsPropertyInfos propertyInfos) {
47+
return new LimitsPropertyModificationEntity(null, propertyInfos.name(), propertyInfos.value());
48+
}
49+
50+
public LimitsPropertyInfos toLimitsPropertyInfos() {
51+
return new LimitsPropertyInfos(name, propertyValue);
52+
}
53+
}

src/main/java/org/gridsuite/modification/server/entities/equipment/modification/OperationalLimitsGroupModificationEntity.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
import lombok.Getter;
1212
import lombok.NoArgsConstructor;
1313
import lombok.NonNull;
14+
import org.gridsuite.modification.dto.LimitsPropertyInfos;
1415
import org.gridsuite.modification.dto.OperationalLimitsGroupInfos;
1516
import org.gridsuite.modification.dto.OperationalLimitsGroupModificationInfos;
1617
import org.gridsuite.modification.dto.OperationalLimitsGroupModificationType;
1718
import org.gridsuite.modification.dto.TemporaryLimitModificationType;
1819
import org.springframework.util.CollectionUtils;
1920

21+
import java.util.ArrayList;
2022
import java.util.List;
2123
import java.util.Objects;
2224
import java.util.UUID;
@@ -49,18 +51,30 @@ public class OperationalLimitsGroupModificationEntity {
4951
))
5052
private CurrentLimitsModificationEntity currentLimits;
5153

52-
@Column(name = "modificationType")
54+
@Column(name = "modification_type")
5355
@Enumerated(EnumType.STRING)
5456
private OperationalLimitsGroupModificationType modificationType;
5557

56-
@Column(name = "temporaryLimitsModificationType")
58+
@Column(name = "temporary_limits_modification_type")
5759
@Enumerated(EnumType.STRING)
5860
private TemporaryLimitModificationType temporaryLimitsModificationType;
5961

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

66+
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
67+
@JoinColumn(name = "operational_limit_group_id", foreignKey = @ForeignKey(name = "operational_limit_group_modification_id_fk"))
68+
private List<LimitsPropertyModificationEntity> limitsProperties;
69+
70+
private static List<LimitsPropertyModificationEntity> toLimitPropertyEntities(List<LimitsPropertyInfos> properties) {
71+
List<LimitsPropertyModificationEntity> result = new ArrayList<>();
72+
if (!CollectionUtils.isEmpty(properties)) {
73+
result = properties.stream().map(LimitsPropertyModificationEntity::fromLimitsPropertyInfos).toList();
74+
}
75+
return result;
76+
}
77+
6478
public static List<OperationalLimitsGroupModificationEntity> toOperationalLimitsGroupsEntities(@NonNull List<OperationalLimitsGroupModificationInfos> limitsGroups) {
6579
return limitsGroups.stream()
6680
.filter(Objects::nonNull)
@@ -71,10 +85,9 @@ public static List<OperationalLimitsGroupModificationEntity> toOperationalLimits
7185
new CurrentLimitsModificationEntity(limitsGroup.getCurrentLimits()),
7286
limitsGroup.getModificationType(),
7387
limitsGroup.getTemporaryLimitsModificationType(),
74-
limitsGroup.getApplicability()
75-
)
76-
)
77-
.toList();
88+
limitsGroup.getApplicability(),
89+
toLimitPropertyEntities(limitsGroup.getLimitsProperties()))
90+
).toList();
7891
}
7992

8093
public static List<OperationalLimitsGroupModificationInfos> fromOperationalLimitsGroupsEntities(List<OperationalLimitsGroupModificationEntity> limitsGroupsEntities) {
@@ -87,6 +100,8 @@ public static List<OperationalLimitsGroupModificationInfos> fromOperationalLimit
87100
.modificationType(limitsGroupEntity.getModificationType())
88101
.temporaryLimitsModificationType(limitsGroupEntity.getTemporaryLimitsModificationType())
89102
.applicability(limitsGroupEntity.getApplicability())
103+
.limitsProperties(limitsGroupEntity.getLimitsProperties().stream().map(
104+
LimitsPropertyModificationEntity::toLimitsPropertyInfos).toList())
90105
.build()
91106
)
92107
.collect(Collectors.toList());
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
2+
<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">
3+
<changeSet author="elcheikhbas (generated)" id="1761133756126-1">
4+
<createTable tableName="limits_property_modification">
5+
<column name="id" type="UUID">
6+
<constraints nullable="false" primaryKey="true" primaryKeyName="limits_property_modificationPK"/>
7+
</column>
8+
<column name="name" type="VARCHAR(255)">
9+
<constraints nullable="false"/>
10+
</column>
11+
<column name="property_value" type="VARCHAR(255)">
12+
<constraints nullable="false"/>
13+
</column>
14+
<column name="operational_limit_group_id" type="UUID"/>
15+
</createTable>
16+
</changeSet>
17+
<changeSet author="elcheikhbas (generated)" id="1761133756126-2">
18+
<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"/>
19+
</changeSet>
20+
</databaseChangeLog>

src/main/resources/db/changelog/db.changelog-master.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,3 +426,9 @@ databaseChangeLog:
426426
- include:
427427
file: changesets/changelog_20251009T130154Z.xml
428428
relativeToChangelogFile: true
429+
- include:
430+
file: changesets/changelog_20251009T130154Z.xml
431+
relativeToChangelogFile: true
432+
- include:
433+
file: changesets/changelog_20251022T114823Z.xml
434+
relativeToChangelogFile: true

0 commit comments

Comments
 (0)