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
Expand Up @@ -19,15 +19,7 @@
import org.gridsuite.studyconfig.server.service.NetworkVisualizationsParamService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

import java.util.UUID;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/**
* 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.studyconfig.server.dto;

/**
* @author AJELLAL Ali <[email protected]>
*/
public enum NadPositionsGenerationMode {
GEOGRAPHICAL_COORDINATES,
AUTOMATIC,
CONFIGURED
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
*/
@Schema(name = "NetworkAreaDiagramParamDto", description = "Network area diagram parameters")
public record NetworkAreaDiagramParamInfos(

@Schema(description = "Initialize with geographical data")
Boolean initNadWithGeoData
@Schema(description = "The nad positions generation mode")
NadPositionsGenerationMode nadPositionsGenerationMode
) { }
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,8 @@
package org.gridsuite.studyconfig.server.entities;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.*;

import java.util.UUID;

/**
Expand Down Expand Up @@ -58,6 +55,6 @@ public class NetworkVisualizationParamEntity {
@Column(name = "component_library")
private String componentLibrary = "";

@Column(name = "init_nad_with_geo_data")
private Boolean initNadWithGeoData = true;
@Column(name = "nad_positions_generation_mode")
private String nadPositionsGenerationMode = null;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@
*/
package org.gridsuite.studyconfig.server.mapper;

import org.gridsuite.studyconfig.server.dto.MapParamInfos;
import org.gridsuite.studyconfig.server.dto.NetworkAreaDiagramParamInfos;
import org.gridsuite.studyconfig.server.dto.NetworkVisualizationParamInfos;
import org.gridsuite.studyconfig.server.dto.SingleLineDiagramParamInfos;
import org.apache.logging.log4j.util.Strings;
import org.gridsuite.studyconfig.server.dto.*;
import org.gridsuite.studyconfig.server.entities.NetworkVisualizationParamEntity;

/**
Expand All @@ -20,7 +18,7 @@ public final class NetworkVisualizationParamMapper {
private NetworkVisualizationParamMapper() {
}

public static NetworkVisualizationParamInfos toDto(NetworkVisualizationParamEntity entity) {
public static NetworkVisualizationParamInfos toDto(NetworkVisualizationParamEntity entity, NadPositionsGenerationMode nadPositionsGenerationDefaultMode) {
return new NetworkVisualizationParamInfos(
entity.getId(),
new MapParamInfos(
Expand All @@ -35,10 +33,15 @@ public static NetworkVisualizationParamInfos toDto(NetworkVisualizationParamEnti
entity.getSubstationLayout(),
entity.getComponentLibrary()
),
new NetworkAreaDiagramParamInfos(entity.getInitNadWithGeoData())
new NetworkAreaDiagramParamInfos(getNadPositionsGenerationMode(entity.getNadPositionsGenerationMode(), nadPositionsGenerationDefaultMode))
);
}

private static NadPositionsGenerationMode getNadPositionsGenerationMode(String nadPositionsGenerationMode, NadPositionsGenerationMode nadPositionsGenerationDefaultMode) {
return Strings.isEmpty(nadPositionsGenerationMode) ? nadPositionsGenerationDefaultMode : NadPositionsGenerationMode.valueOf(nadPositionsGenerationMode);

}

public static NetworkVisualizationParamEntity toEntity(NetworkVisualizationParamInfos dto) {
NetworkVisualizationParamEntity entity = new NetworkVisualizationParamEntity();
updateEntity(entity, dto);
Expand All @@ -58,6 +61,6 @@ public static void updateEntity(NetworkVisualizationParamEntity entity, NetworkV
entity.setSubstationLayout(dto.singleLineDiagramParameters().substationLayout());
entity.setComponentLibrary(dto.singleLineDiagramParameters().componentLibrary());
// NAD
entity.setInitNadWithGeoData(dto.networkAreaDiagramParameters().initNadWithGeoData());
entity.setNadPositionsGenerationMode(dto.networkAreaDiagramParameters().nadPositionsGenerationMode().name());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@

import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor;
import org.gridsuite.studyconfig.server.dto.NadPositionsGenerationMode;
import org.gridsuite.studyconfig.server.dto.NetworkVisualizationParamInfos;
import org.gridsuite.studyconfig.server.entities.NetworkVisualizationParamEntity;
import org.gridsuite.studyconfig.server.mapper.NetworkVisualizationParamMapper;
import org.gridsuite.studyconfig.server.repositories.NetworkVisualizationParamRepository;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

private final NetworkVisualizationParamRepository repository;

@Value("${study-config.nad-positions-generation-default-mode:}")
private NadPositionsGenerationMode nadPositionsGenerationDefaultMode;

@Transactional
public UUID createDefaultParameters() {
NetworkVisualizationParamEntity entity = new NetworkVisualizationParamEntity();
entity.setNadPositionsGenerationMode(nadPositionsGenerationDefaultMode.toString());
return repository.save(entity).getId();
}

Expand All @@ -54,14 +60,14 @@ public UUID duplicateParameters(UUID id) {
.substationLayout(entity.getSubstationLayout())
.componentLibrary(entity.getComponentLibrary())
// NAD
.initNadWithGeoData(entity.getInitNadWithGeoData())
.nadPositionsGenerationMode(entity.getNadPositionsGenerationMode())
.build();
return repository.save(duplicate).getId();
}

@Transactional(readOnly = true)
public NetworkVisualizationParamInfos getParameters(UUID id) {
return NetworkVisualizationParamMapper.toDto(findEntityById(id));
return NetworkVisualizationParamMapper.toDto(findEntityById(id), nadPositionsGenerationDefaultMode);
}

@Transactional
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/config/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@ spring:
powsybl-ws:
database:
name: studyconfig

study-config:
nad-positions-generation-default-mode: GEOGRAPHICAL_COORDINATES
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?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="ajellalali (generated)" id="1753286256612-7">
<addColumn tableName="network_visualization_params">
<column name="nad_positions_generation_mode" type="varchar(255)"/>
</addColumn>
</changeSet>
<changeSet author="ajellalali (generated)" id="1753286256612-8">
<dropColumn columnName="INIT_NAD_WITH_GEO_DATA" tableName="NETWORK_VISUALIZATION_PARAMS"/>
</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 @@ -68,3 +68,6 @@ databaseChangeLog:
- include:
file: changesets/changelog_20250801T093703Z.xml
relativeToChangelogFile: true
- include:
file: changesets/changelog_20250723T155729Z.xml
relativeToChangelogFile: true
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.util.UUID;

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

@Test
void testUpdateNotFoundPositionsConfigUuidParameter() throws Exception {
NetworkVisualizationParamInfos paramsToUpdate = createDto();
saveAndReturnId(paramsToUpdate);
UUID nonExistentId = UUID.randomUUID();
UUID updatedPositionsConfigUuid = UUID.randomUUID();
mockMvc.perform(put(URI_NETWORK_VISUALIZATION_PARAM_BASE + "/" + nonExistentId + "/nad-positions-config-uuid")
.content("\"" + updatedPositionsConfigUuid + "\"")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isNotFound());
}

private NetworkVisualizationParamInfos getParams(UUID paramsUuid) throws Exception {
MvcResult mvcGetResult = mockMvc.perform(get(URI_NETWORK_VISUALIZATION_PARAM_BASE + "/" + paramsUuid))
.andExpect(status().isOk())
Expand All @@ -156,14 +169,14 @@ private NetworkVisualizationParamInfos createDto() {
return new NetworkVisualizationParamInfos(null,
new MapParamInfos(true, false, "flow", true, "base"),
new SingleLineDiagramParamInfos(false, false, "layout", "lib"),
new NetworkAreaDiagramParamInfos(true));
new NetworkAreaDiagramParamInfos(GEOGRAPHICAL_COORDINATES));
}

private NetworkVisualizationParamInfos createDtoForUpdate(UUID id) {
return new NetworkVisualizationParamInfos(id,
new MapParamInfos(false, true, "flow2", false, "base2"),
new SingleLineDiagramParamInfos(true, true, "layout2", "lib2"),
new NetworkAreaDiagramParamInfos(false));
new NetworkAreaDiagramParamInfos(GEOGRAPHICAL_COORDINATES));
}

private UUID saveAndReturnId(NetworkVisualizationParamInfos dto) {
Expand Down