Skip to content

Commit 7f84e4c

Browse files
authored
Add the nad generation mode (#68)
Signed-off-by: AAJELLAL <[email protected]>
1 parent c647de5 commit 7f84e4c

File tree

10 files changed

+73
-30
lines changed

10 files changed

+73
-30
lines changed

src/main/java/org/gridsuite/studyconfig/server/controller/NetworkVisualizationsParamController.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,7 @@
1919
import org.gridsuite.studyconfig.server.service.NetworkVisualizationsParamService;
2020
import org.springframework.http.HttpStatus;
2121
import org.springframework.http.ResponseEntity;
22-
import org.springframework.web.bind.annotation.DeleteMapping;
23-
import org.springframework.web.bind.annotation.GetMapping;
24-
import org.springframework.web.bind.annotation.PathVariable;
25-
import org.springframework.web.bind.annotation.PostMapping;
26-
import org.springframework.web.bind.annotation.PutMapping;
27-
import org.springframework.web.bind.annotation.RequestBody;
28-
import org.springframework.web.bind.annotation.RequestMapping;
29-
import org.springframework.web.bind.annotation.RequestParam;
30-
import org.springframework.web.bind.annotation.RestController;
22+
import org.springframework.web.bind.annotation.*;
3123

3224
import java.util.UUID;
3325

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
package org.gridsuite.studyconfig.server.dto;
8+
9+
/**
10+
* @author AJELLAL Ali <[email protected]>
11+
*/
12+
public enum NadPositionsGenerationMode {
13+
GEOGRAPHICAL_COORDINATES,
14+
AUTOMATIC,
15+
CONFIGURED
16+
}

src/main/java/org/gridsuite/studyconfig/server/dto/NetworkAreaDiagramParamInfos.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
*/
1414
@Schema(name = "NetworkAreaDiagramParamDto", description = "Network area diagram parameters")
1515
public record NetworkAreaDiagramParamInfos(
16-
17-
@Schema(description = "Initialize with geographical data")
18-
Boolean initNadWithGeoData
16+
@Schema(description = "The nad positions generation mode")
17+
NadPositionsGenerationMode nadPositionsGenerationMode
1918
) { }

src/main/java/org/gridsuite/studyconfig/server/entities/NetworkVisualizationParamEntity.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@
77
package org.gridsuite.studyconfig.server.entities;
88

99
import jakarta.persistence.*;
10-
import lombok.AllArgsConstructor;
11-
import lombok.Builder;
12-
import lombok.Getter;
13-
import lombok.NoArgsConstructor;
14-
import lombok.Setter;
10+
import lombok.*;
11+
1512
import java.util.UUID;
1613

1714
/**
@@ -58,6 +55,6 @@ public class NetworkVisualizationParamEntity {
5855
@Column(name = "component_library")
5956
private String componentLibrary = "";
6057

61-
@Column(name = "init_nad_with_geo_data")
62-
private Boolean initNadWithGeoData = true;
58+
@Column(name = "nad_positions_generation_mode")
59+
private String nadPositionsGenerationMode = null;
6360
}

src/main/java/org/gridsuite/studyconfig/server/mapper/NetworkVisualizationParamMapper.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
*/
77
package org.gridsuite.studyconfig.server.mapper;
88

9-
import org.gridsuite.studyconfig.server.dto.MapParamInfos;
10-
import org.gridsuite.studyconfig.server.dto.NetworkAreaDiagramParamInfos;
11-
import org.gridsuite.studyconfig.server.dto.NetworkVisualizationParamInfos;
12-
import org.gridsuite.studyconfig.server.dto.SingleLineDiagramParamInfos;
9+
import org.apache.logging.log4j.util.Strings;
10+
import org.gridsuite.studyconfig.server.dto.*;
1311
import org.gridsuite.studyconfig.server.entities.NetworkVisualizationParamEntity;
1412

1513
/**
@@ -20,7 +18,7 @@ public final class NetworkVisualizationParamMapper {
2018
private NetworkVisualizationParamMapper() {
2119
}
2220

23-
public static NetworkVisualizationParamInfos toDto(NetworkVisualizationParamEntity entity) {
21+
public static NetworkVisualizationParamInfos toDto(NetworkVisualizationParamEntity entity, NadPositionsGenerationMode nadPositionsGenerationDefaultMode) {
2422
return new NetworkVisualizationParamInfos(
2523
entity.getId(),
2624
new MapParamInfos(
@@ -35,10 +33,15 @@ public static NetworkVisualizationParamInfos toDto(NetworkVisualizationParamEnti
3533
entity.getSubstationLayout(),
3634
entity.getComponentLibrary()
3735
),
38-
new NetworkAreaDiagramParamInfos(entity.getInitNadWithGeoData())
36+
new NetworkAreaDiagramParamInfos(getNadPositionsGenerationMode(entity.getNadPositionsGenerationMode(), nadPositionsGenerationDefaultMode))
3937
);
4038
}
4139

40+
private static NadPositionsGenerationMode getNadPositionsGenerationMode(String nadPositionsGenerationMode, NadPositionsGenerationMode nadPositionsGenerationDefaultMode) {
41+
return Strings.isEmpty(nadPositionsGenerationMode) ? nadPositionsGenerationDefaultMode : NadPositionsGenerationMode.valueOf(nadPositionsGenerationMode);
42+
43+
}
44+
4245
public static NetworkVisualizationParamEntity toEntity(NetworkVisualizationParamInfos dto) {
4346
NetworkVisualizationParamEntity entity = new NetworkVisualizationParamEntity();
4447
updateEntity(entity, dto);
@@ -58,6 +61,6 @@ public static void updateEntity(NetworkVisualizationParamEntity entity, NetworkV
5861
entity.setSubstationLayout(dto.singleLineDiagramParameters().substationLayout());
5962
entity.setComponentLibrary(dto.singleLineDiagramParameters().componentLibrary());
6063
// NAD
61-
entity.setInitNadWithGeoData(dto.networkAreaDiagramParameters().initNadWithGeoData());
64+
entity.setNadPositionsGenerationMode(dto.networkAreaDiagramParameters().nadPositionsGenerationMode().name());
6265
}
6366
}

src/main/java/org/gridsuite/studyconfig/server/service/NetworkVisualizationsParamService.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88

99
import jakarta.persistence.EntityNotFoundException;
1010
import lombok.RequiredArgsConstructor;
11+
import org.gridsuite.studyconfig.server.dto.NadPositionsGenerationMode;
1112
import org.gridsuite.studyconfig.server.dto.NetworkVisualizationParamInfos;
1213
import org.gridsuite.studyconfig.server.entities.NetworkVisualizationParamEntity;
1314
import org.gridsuite.studyconfig.server.mapper.NetworkVisualizationParamMapper;
1415
import org.gridsuite.studyconfig.server.repositories.NetworkVisualizationParamRepository;
16+
import org.springframework.beans.factory.annotation.Value;
1517
import org.springframework.stereotype.Service;
1618
import org.springframework.transaction.annotation.Transactional;
1719

@@ -26,9 +28,13 @@ public class NetworkVisualizationsParamService {
2628

2729
private final NetworkVisualizationParamRepository repository;
2830

31+
@Value("${study-config.nad-positions-generation-default-mode:}")
32+
private NadPositionsGenerationMode nadPositionsGenerationDefaultMode;
33+
2934
@Transactional
3035
public UUID createDefaultParameters() {
3136
NetworkVisualizationParamEntity entity = new NetworkVisualizationParamEntity();
37+
entity.setNadPositionsGenerationMode(nadPositionsGenerationDefaultMode.toString());
3238
return repository.save(entity).getId();
3339
}
3440

@@ -54,14 +60,14 @@ public UUID duplicateParameters(UUID id) {
5460
.substationLayout(entity.getSubstationLayout())
5561
.componentLibrary(entity.getComponentLibrary())
5662
// NAD
57-
.initNadWithGeoData(entity.getInitNadWithGeoData())
63+
.nadPositionsGenerationMode(entity.getNadPositionsGenerationMode())
5864
.build();
5965
return repository.save(duplicate).getId();
6066
}
6167

6268
@Transactional(readOnly = true)
6369
public NetworkVisualizationParamInfos getParameters(UUID id) {
64-
return NetworkVisualizationParamMapper.toDto(findEntityById(id));
70+
return NetworkVisualizationParamMapper.toDto(findEntityById(id), nadPositionsGenerationDefaultMode);
6571
}
6672

6773
@Transactional

src/main/resources/config/application.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@ spring:
55
powsybl-ws:
66
database:
77
name: studyconfig
8+
9+
study-config:
10+
nad-positions-generation-default-mode: GEOGRAPHICAL_COORDINATES
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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="ajellalali (generated)" id="1753286256612-7">
4+
<addColumn tableName="network_visualization_params">
5+
<column name="nad_positions_generation_mode" type="varchar(255)"/>
6+
</addColumn>
7+
</changeSet>
8+
<changeSet author="ajellalali (generated)" id="1753286256612-8">
9+
<dropColumn columnName="INIT_NAD_WITH_GEO_DATA" tableName="NETWORK_VISUALIZATION_PARAMS"/>
10+
</changeSet>
11+
</databaseChangeLog>

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,6 @@ databaseChangeLog:
6868
- include:
6969
file: changesets/changelog_20250801T093703Z.xml
7070
relativeToChangelogFile: true
71+
- include:
72+
file: changesets/changelog_20250723T155729Z.xml
73+
relativeToChangelogFile: true

src/test/java/org/gridsuite/studyconfig/server/NetworkVisualizationParamsIntegrationTest.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.UUID;
2525

2626
import static org.assertj.core.api.Assertions.assertThat;
27+
import static org.gridsuite.studyconfig.server.dto.NadPositionsGenerationMode.GEOGRAPHICAL_COORDINATES;
2728
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
2829
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
2930
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
@@ -132,6 +133,18 @@ void testDuplicateParams() throws Exception {
132133
assertThat(networkVisualizationParamRepository.existsById(duplicatedParams.id())).isTrue();
133134
}
134135

136+
@Test
137+
void testUpdateNotFoundPositionsConfigUuidParameter() throws Exception {
138+
NetworkVisualizationParamInfos paramsToUpdate = createDto();
139+
saveAndReturnId(paramsToUpdate);
140+
UUID nonExistentId = UUID.randomUUID();
141+
UUID updatedPositionsConfigUuid = UUID.randomUUID();
142+
mockMvc.perform(put(URI_NETWORK_VISUALIZATION_PARAM_BASE + "/" + nonExistentId + "/nad-positions-config-uuid")
143+
.content("\"" + updatedPositionsConfigUuid + "\"")
144+
.contentType(MediaType.APPLICATION_JSON))
145+
.andExpect(status().isNotFound());
146+
}
147+
135148
private NetworkVisualizationParamInfos getParams(UUID paramsUuid) throws Exception {
136149
MvcResult mvcGetResult = mockMvc.perform(get(URI_NETWORK_VISUALIZATION_PARAM_BASE + "/" + paramsUuid))
137150
.andExpect(status().isOk())
@@ -156,14 +169,14 @@ private NetworkVisualizationParamInfos createDto() {
156169
return new NetworkVisualizationParamInfos(null,
157170
new MapParamInfos(true, false, "flow", true, "base"),
158171
new SingleLineDiagramParamInfos(false, false, "layout", "lib"),
159-
new NetworkAreaDiagramParamInfos(true));
172+
new NetworkAreaDiagramParamInfos(GEOGRAPHICAL_COORDINATES));
160173
}
161174

162175
private NetworkVisualizationParamInfos createDtoForUpdate(UUID id) {
163176
return new NetworkVisualizationParamInfos(id,
164177
new MapParamInfos(false, true, "flow2", false, "base2"),
165178
new SingleLineDiagramParamInfos(true, true, "layout2", "lib2"),
166-
new NetworkAreaDiagramParamInfos(false));
179+
new NetworkAreaDiagramParamInfos(GEOGRAPHICAL_COORDINATES));
167180
}
168181

169182
private UUID saveAndReturnId(NetworkVisualizationParamInfos dto) {

0 commit comments

Comments
 (0)