Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import java.util.List;
import java.util.UUID;

import static org.gridsuite.computation.service.NotificationService.HEADER_USER_ID;

/**
* @author Florent MILLOT <florent.millot at rte-france.com>
*/
Expand Down Expand Up @@ -55,24 +57,27 @@ public ResponseEntity<UUID> createParameters(
@ApiResponse(responseCode = "200", description = "parameters were duplicated")
@ApiResponse(responseCode = "404", description = "source parameters were not found")
public ResponseEntity<UUID> duplicateParameters(
@Parameter(description = "source parameters UUID") @RequestParam("duplicateFrom") UUID sourceParametersUuid) {
return ResponseEntity.of(parametersService.duplicateParameters(sourceParametersUuid));
@Parameter(description = "source parameters UUID") @RequestParam("duplicateFrom") UUID sourceParametersUuid,
@RequestHeader(HEADER_USER_ID) String userId) {
return ResponseEntity.of(parametersService.duplicateParameters(sourceParametersUuid, userId));
}

@GetMapping(value = "/{uuid}", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Get parameters")
@ApiResponse(responseCode = "200", description = "parameters were returned")
@ApiResponse(responseCode = "404", description = "parameters were not found")
public ResponseEntity<SensitivityAnalysisParametersInfos> getParameters(
@Parameter(description = "parameters UUID") @PathVariable("uuid") UUID parametersUuid) {
return ResponseEntity.of(parametersService.getParameters(parametersUuid));
@Parameter(description = "parameters UUID") @PathVariable("uuid") UUID parametersUuid,
@RequestHeader(HEADER_USER_ID) String userId) {
return ResponseEntity.of(parametersService.getParameters(parametersUuid, userId));
}

@GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Get all parameters")
@ApiResponse(responseCode = "200", description = "the list of all parameters was returned")
public ResponseEntity<List<SensitivityAnalysisParametersInfos>> getAllParameters() {
return ResponseEntity.ok(parametersService.getAllParameters());
public ResponseEntity<List<SensitivityAnalysisParametersInfos>> getAllParameters(
@RequestHeader(HEADER_USER_ID) String userId) {
return ResponseEntity.ok(parametersService.getAllParameters(userId));
}

@PutMapping(value = "/{uuid}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* 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/.
*/
package org.gridsuite.sensitivityanalysis.server.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.UUID;

/**
* partial type from ElementAttributes (Directory-server)
* @author Caroline Jeandat {@literal <caroline.jeandat at rte-france.com>}
*/
@AllArgsConstructor
@NoArgsConstructor
public class ElementAttributes {
@Getter
private UUID elementUuid;
@Setter
@Getter
private String elementName;
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,26 @@ public abstract class AbstractSensitivityFactorEntity {
name = "monitoredBranch",
joinColumns = @JoinColumn(name = "SensitivityFactorId")
)
private List<EquipmentsContainerEmbeddable> monitoredBranch;
@Column(name = "containerId")
private List<UUID> monitoredBranch;

// liquidbase add foreignKey everytime, you need to delete it
@ElementCollection
@CollectionTable(
name = "injections",
joinColumns = @JoinColumn(name = "SensitivityFactorId")
)
private List<EquipmentsContainerEmbeddable> injections;
@Column(name = "containerId")
private List<UUID> injections;

// liquidbase add foreignKey everytime, you need to delete it
@ElementCollection
@CollectionTable(
name = "contingencies",
joinColumns = @JoinColumn(name = "SensitivityFactorId")
)
private List<EquipmentsContainerEmbeddable> contingencies;
@Column(name = "containerId")
private List<UUID> contingencies;

@Column(name = "activated", columnDefinition = "boolean default true")
private boolean activated;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -68,16 +68,6 @@ public SensitivityAnalysisParametersEntity(@NonNull SensitivityAnalysisParameter
assignAttributes(parametersInfos);
}

/**
* Copy used to duplicate in DB with .save.
* The ID is changed. The date is updated.
*
* @return a copy of the entity
*/
public SensitivityAnalysisParametersEntity copy() {
return this.toInfos().toEntity();
}

public void update(@NonNull SensitivityAnalysisParametersInfos parametersInfos) {
assignAttributes(parametersInfos);
}
Expand Down Expand Up @@ -105,9 +95,9 @@ private List<SensitivityFactorWithDistribTypeEntity> convertInjectionsSets(List<
for (SensitivityInjectionsSet sensitivityInjectionsSet : sensitivityInjectionsSets) {
SensitivityFactorWithDistribTypeEntity entity = new SensitivityFactorWithDistribTypeEntity();
entity.setDistributionType(sensitivityInjectionsSet.getDistributionType());
entity.setMonitoredBranch(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityInjectionsSet.getMonitoredBranches()));
entity.setInjections(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityInjectionsSet.getInjections()));
entity.setContingencies(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityInjectionsSet.getContingencies()));
entity.setMonitoredBranch(sensitivityInjectionsSet.getMonitoredBranches().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setInjections(sensitivityInjectionsSet.getInjections().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setContingencies(sensitivityInjectionsSet.getContingencies().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setActivated(sensitivityInjectionsSet.isActivated());
sensitivityInjectionsSetEntities.add(entity);
}
Expand All @@ -120,9 +110,9 @@ private List<SensitivityFactorForInjectionEntity> convertInjections(List<Sensiti
if (sensitivityInjections != null) {
for (SensitivityInjection sensitivityInjection : sensitivityInjections) {
SensitivityFactorForInjectionEntity entity = new SensitivityFactorForInjectionEntity();
entity.setMonitoredBranch(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityInjection.getMonitoredBranches()));
entity.setInjections(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityInjection.getInjections()));
entity.setContingencies(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityInjection.getContingencies()));
entity.setMonitoredBranch(sensitivityInjection.getMonitoredBranches().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setInjections(sensitivityInjection.getInjections().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setContingencies(sensitivityInjection.getContingencies().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setActivated(sensitivityInjection.isActivated());
sensitivityInjectionEntities.add(entity);
}
Expand All @@ -135,10 +125,10 @@ private List<SensitivityFactorWithSensiTypeForHvdcEntity> convertHdvcs(List<Sens
if (sensitivityHvdcs != null) {
for (SensitivityHVDC sensitivityHvdc : sensitivityHvdcs) {
SensitivityFactorWithSensiTypeForHvdcEntity entity = new SensitivityFactorWithSensiTypeForHvdcEntity();
entity.setMonitoredBranch(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityHvdc.getMonitoredBranches()));
entity.setInjections(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityHvdc.getHvdcs()));
entity.setMonitoredBranch(sensitivityHvdc.getMonitoredBranches().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setInjections(sensitivityHvdc.getHvdcs().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setSensitivityType(sensitivityHvdc.getSensitivityType());
entity.setContingencies(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityHvdc.getContingencies()));
entity.setContingencies(sensitivityHvdc.getContingencies().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setActivated(sensitivityHvdc.isActivated());
sensitivityHvdcEntities.add(entity);
}
Expand All @@ -152,9 +142,9 @@ private List<SensitivityFactorWithSensiTypeForPstEntity> convertPsts(List<Sensit
for (SensitivityPST sensitivityPst : sensitivityPsts) {
SensitivityFactorWithSensiTypeForPstEntity entity = new SensitivityFactorWithSensiTypeForPstEntity();
entity.setSensitivityType(sensitivityPst.getSensitivityType());
entity.setMonitoredBranch(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityPst.getMonitoredBranches()));
entity.setInjections(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityPst.getPsts()));
entity.setContingencies(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityPst.getContingencies()));
entity.setMonitoredBranch(sensitivityPst.getMonitoredBranches().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setInjections(sensitivityPst.getPsts().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setContingencies(sensitivityPst.getContingencies().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setActivated(sensitivityPst.isActivated());
sensitivityPstEntities.add(entity);
}
Expand All @@ -167,72 +157,13 @@ private List<SensitivityFactorForNodeEntity> convertNodes(List<SensitivityNodes>
if (sensitivityNodes != null) {
for (SensitivityNodes sensitivityNode : sensitivityNodes) {
SensitivityFactorForNodeEntity entity = new SensitivityFactorForNodeEntity();
entity.setMonitoredBranch(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityNode.getMonitoredVoltageLevels()));
entity.setInjections(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityNode.getEquipmentsInVoltageRegulation()));
entity.setContingencies(EquipmentsContainerEmbeddable.toEmbeddableContainerEquipments(sensitivityNode.getContingencies()));
entity.setMonitoredBranch(sensitivityNode.getMonitoredVoltageLevels().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setInjections(sensitivityNode.getEquipmentsInVoltageRegulation().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setContingencies(sensitivityNode.getContingencies().stream().map(EquipmentsContainer::getContainerId).toList());
entity.setActivated(sensitivityNode.isActivated());
sensitivityNodeEntities.add(entity);
}
}
return sensitivityNodeEntities;
}

public SensitivityAnalysisParametersInfos toInfos() {

List<SensitivityInjectionsSet> sensiInjectionsSets = new ArrayList<>();
this.sensitivityInjectionsSets.stream().map(sensitivityInjectionsSet -> new SensitivityInjectionsSet(
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityInjectionsSet.getMonitoredBranch()),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityInjectionsSet.getInjections()),
sensitivityInjectionsSet.getDistributionType(),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityInjectionsSet.getContingencies()),
sensitivityInjectionsSet.isActivated()
)).forEach(sensiInjectionsSets::add);

List<SensitivityInjection> sensiInjections = new ArrayList<>();
this.sensitivityInjections.stream().map(sensitivityInjection -> new SensitivityInjection(
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityInjection.getMonitoredBranch()),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityInjection.getInjections()),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityInjection.getContingencies()),
sensitivityInjection.isActivated()
)).forEach(sensiInjections::add);

List<SensitivityHVDC> sensiHvdcs = new ArrayList<>();
this.sensitivityHVDCs.stream().map(sensitivityHvdc -> new SensitivityHVDC(
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityHvdc.getMonitoredBranch()),
sensitivityHvdc.getSensitivityType(),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityHvdc.getInjections()),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityHvdc.getContingencies()),
sensitivityHvdc.isActivated()
)).forEach(sensiHvdcs::add);

List<SensitivityPST> sensiPsts = new ArrayList<>();
this.sensitivityPSTs.stream().map(sensitivityPst -> new SensitivityPST(
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityPst.getMonitoredBranch()),
sensitivityPst.getSensitivityType(),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityPst.getInjections()),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityPst.getContingencies()),
sensitivityPst.isActivated()
)).forEach(sensiPsts::add);

List<SensitivityNodes> sensiNodes = new ArrayList<>();
this.sensitivityNodes.stream().map(sensitivityNode -> new SensitivityNodes(
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityNode.getMonitoredBranch()),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityNode.getInjections()),
EquipmentsContainerEmbeddable.fromEmbeddableContainerEquipments(sensitivityNode.getContingencies()),
sensitivityNode.isActivated()
)).forEach(sensiNodes::add);

return SensitivityAnalysisParametersInfos.builder()
.uuid(this.id)
.provider(this.provider)
.flowFlowSensitivityValueThreshold(this.flowFlowSensitivityValueThreshold)
.angleFlowSensitivityValueThreshold(this.angleFlowSensitivityValueThreshold)
.flowVoltageSensitivityValueThreshold(this.flowVoltageSensitivityValueThreshold)
.sensitivityInjectionsSet(sensiInjectionsSets)
.sensitivityInjection(sensiInjections)
.sensitivityHVDC(sensiHvdcs)
.sensitivityPST(sensiPsts)
.sensitivityNodes(sensiNodes)
.build();
}
}
Loading