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
Expand Up @@ -14,6 +14,7 @@
import lombok.Setter;
import lombok.experimental.SuperBuilder;

import java.util.List;
import java.util.UUID;

/**
Expand All @@ -36,14 +37,8 @@ public class LimitsForLineTypeInfos {
@Schema(description = "Permanent limit")
private Double permanentLimit;

@Schema(description = "Temporary limit value")
private Double temporaryLimitValue;

@Schema(description = "Temporary limit acceptable duration")
private Integer temporaryLimitAcceptableDuration;

@Schema(description = "Temporary limit name")
private String temporaryLimitName;
@Schema(description = "temporary limits list")
List<TemporaryLimitInfos> temporaryLimits;

@Schema(description = "Area")
private String area;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/**
* 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/.
* SPDX-License-Identifier: MPL-2.0
*/
package org.gridsuite.modification.server.dto.catalog;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.server.entities.catalog.TemporaryLimitEntity;

import java.util.UUID;

/**
* @author Etienne Lesot <etienne.lesot at rte-france.com>
*/
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Schema(description = "Temporary Limits infos")
public class TemporaryLimitInfos {
@Schema(description = "id")
private UUID id;

@Schema(description = "Temporary limit value")
private Double limitValue;

@Schema(description = "Temporary limit acceptable duration")
private Integer acceptableDuration;

@Schema(description = "Temporary limit name")
private String name;

public TemporaryLimitEntity toTemporaryLimitEntity() {
return TemporaryLimitEntity.builder()
.limitValue(limitValue)
.acceptableDuration(acceptableDuration)
.name(name).build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.server.dto.catalog.LimitsForLineTypeInfos;
import org.gridsuite.modification.server.dto.catalog.TemporaryLimitInfos;

import java.util.List;
import java.util.UUID;

/**
Expand All @@ -38,14 +40,9 @@ public class LimitsForLineTypeEntity {
@Column
private Double permanentLimit;

@Column
private Double temporaryLimitValue;

@Column
private Integer temporaryLimitAcceptableDuration;

@Column
private String temporaryLimitName;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "temporary_limit_id", nullable = false)
private List<TemporaryLimitEntity> temporaryLimits;

@Column
private String area;
Expand All @@ -58,9 +55,7 @@ public LimitsForLineTypeInfos toLineTypeInfos() {
.id(id)
.limitSetName(limitSetName)
.permanentLimit(permanentLimit)
.temporaryLimitValue(temporaryLimitValue)
.temporaryLimitAcceptableDuration(temporaryLimitAcceptableDuration)
.temporaryLimitName(temporaryLimitName)
.temporaryLimits(temporaryLimits.stream().map(TemporaryLimitEntity::toTemporaryLimitInfos).toList())
.area(area)
.temperature(temperature)
.build();
Expand All @@ -70,9 +65,7 @@ public LimitsForLineTypeEntity(LimitsForLineTypeInfos limitsForLineTypeInfos) {
this(limitsForLineTypeInfos.getId(),
limitsForLineTypeInfos.getLimitSetName(),
limitsForLineTypeInfos.getPermanentLimit(),
limitsForLineTypeInfos.getTemporaryLimitValue(),
limitsForLineTypeInfos.getTemporaryLimitAcceptableDuration(),
limitsForLineTypeInfos.getTemporaryLimitName(),
limitsForLineTypeInfos.getTemporaryLimits() != null ? limitsForLineTypeInfos.getTemporaryLimits().stream().map(TemporaryLimitInfos::toTemporaryLimitEntity).toList() : null,
limitsForLineTypeInfos.getArea(),
limitsForLineTypeInfos.getTemperature());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/**
* 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/.
* SPDX-License-Identifier: MPL-2.0
*/
package org.gridsuite.modification.server.entities.catalog;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.gridsuite.modification.server.dto.catalog.TemporaryLimitInfos;

import java.util.UUID;

/**
* @author Etienne Lesot <etienne.lesot at rte-france.com>
*/
@Getter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@Entity
@Table(name = "temporary_limit_for_line_catalog")
public class TemporaryLimitEntity {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private UUID id;

@Column
private Double limitValue;

@Column
private Integer acceptableDuration;

@Column
private String name;

public TemporaryLimitInfos toTemporaryLimitInfos() {
return TemporaryLimitInfos.builder()
.id(id)
.limitValue(limitValue)
.acceptableDuration(acceptableDuration)
.name(name).build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public void deleteLineTypesCatalog() {

public void resetLineTypes(MultipartFile file) {
try (GZIPInputStream gzipInputStream = new GZIPInputStream(file.getInputStream())) {
List<LineTypeInfos> lineTypes = mapper.readValue(gzipInputStream, new TypeReference<>() {
List<LineTypeInfos> lineTypes = mapper.readValue(gzipInputStream, new TypeReference<List<LineTypeInfos>>() {
});
deleteLineTypesCatalog();
// remove duplicates in file
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?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="lesoteti (generated)" id="1770820556280-15">
<createTable tableName="temporary_limit_for_line_catalog">
<column name="id" type="UUID">
<constraints nullable="false" primaryKey="true" primaryKeyName="temporary_limit_for_line_catalogPK"/>
</column>
<column name="acceptable_duration" type="INT"/>
<column name="name" type="VARCHAR(255)"/>
<column name="limit_value" type="FLOAT(53)"/>
<column name="temporary_limit_id" type="UUID">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="lesoteti (generated)" id="1770820556280-16">
<addForeignKeyConstraint baseColumnNames="temporary_limit_id" baseTableName="temporary_limit_for_line_catalog" constraintName="temporary_limit_for_line_catalog_limits_for_line_type_fk" deferrable="false" initiallyDeferred="false" referencedColumnNames="id" referencedTableName="limits_for_line_type" validate="true"/>
</changeSet>
<changeSet author="lesoteti (generated)" id="1770820556280-17">
<dropColumn columnName="TEMPORARY_LIMIT_ACCEPTABLE_DURATION" tableName="LIMITS_FOR_LINE_TYPE"/>
</changeSet>
<changeSet author="lesoteti (generated)" id="1770820556280-18">
<dropColumn columnName="TEMPORARY_LIMIT_NAME" tableName="LIMITS_FOR_LINE_TYPE"/>
</changeSet>
<changeSet author="lesoteti (generated)" id="1770820556280-19">
<dropColumn columnName="TEMPORARY_LIMIT_VALUE" tableName="LIMITS_FOR_LINE_TYPE"/>
</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 @@ -453,3 +453,6 @@ databaseChangeLog:
- include:
file: changesets/changelog_20251215T152152Z.xml
relativeToChangelogFile: true
- include:
file: changesets/changelog_20260211T143540Z.xml
relativeToChangelogFile: true
Original file line number Diff line number Diff line change
Expand Up @@ -1567,9 +1567,9 @@ void testGetLineTypeWithLimitsCatalog() throws Exception {
assertEquals(2, selectedLineType.getLimitsForLineType().size());
assertEquals("LimitSet1", selectedLineType.getLimitsForLineType().getFirst().getLimitSetName());
assertEquals(10.0, selectedLineType.getLimitsForLineType().getFirst().getPermanentLimit());
assertEquals(20.0, selectedLineType.getLimitsForLineType().getFirst().getTemporaryLimitValue());
assertEquals("TemporaryLimit1", selectedLineType.getLimitsForLineType().getFirst().getTemporaryLimitName());
assertEquals(100, selectedLineType.getLimitsForLineType().getFirst().getTemporaryLimitAcceptableDuration());
assertEquals(20.0, selectedLineType.getLimitsForLineType().getFirst().getTemporaryLimits().getFirst().getLimitValue());
assertEquals("TemporaryLimit1", selectedLineType.getLimitsForLineType().getFirst().getTemporaryLimits().getFirst().getName());
assertEquals(100, selectedLineType.getLimitsForLineType().getFirst().getTemporaryLimits().getFirst().getAcceptableDuration());
assertEquals("37", selectedLineType.getLimitsForLineType().getFirst().getTemperature());
assertEquals("1", selectedLineType.getLimitsForLineType().getFirst().getArea());
}
Expand Down
Binary file modified src/test/resources/line_types_catalog_3.json.gz
Binary file not shown.