Skip to content

Commit

Permalink
Merge from main
Browse files Browse the repository at this point in the history
  • Loading branch information
thangqp committed Sep 26, 2024
2 parents 0177a47 + 977b4d1 commit 4c626cc
Show file tree
Hide file tree
Showing 83 changed files with 1,460 additions and 680 deletions.
22 changes: 3 additions & 19 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<parent>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-parent-ws</artifactId>
<version>19</version>
<version>20</version>
<relativePath/>
</parent>

Expand Down Expand Up @@ -44,7 +44,7 @@
</developers>

<properties>
<gridsuite-dependencies.version>31</gridsuite-dependencies.version>
<gridsuite-dependencies.version>34</gridsuite-dependencies.version>
<db-util.version>1.0.5</db-util.version>
<log4j2-mock-version>0.0.2</log4j2-mock-version>
<testcontainers.version>1.16.2</testcontainers.version>
Expand Down Expand Up @@ -116,8 +116,6 @@
<dependency>
<groupId>org.gridsuite</groupId>
<artifactId>gridsuite-filter</artifactId>
<!-- FIXME: gridsuite-filter modules' version is overloaded in the dependencies section. The overloads and this property below have to be removed at next gridsuite-dependencies.version upgrade -->
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>com.powsybl</groupId>
Expand All @@ -130,20 +128,6 @@
<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-network-store-client</artifactId>
<!-- FIXME: network-store modules' version is overloaded in the dependencies section. The overloads and this property below have to be removed at next gridsuite-dependencies.version upgrade -->
<version>1.17.1</version>
</dependency>
<!-- FIXME: network-store modules' version is overloaded in the dependencies section. This section have to be removed at next gridsuite-dependencies.version upgrade -->
<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-network-store-iidm-impl</artifactId>
<version>1.17.1</version>
</dependency>
<!-- FIXME: network-store modules' version is overloaded in the dependencies section. This section have to be removed at next gridsuite-dependencies.version upgrade -->
<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-network-store-model</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.powsybl</groupId>
Expand Down Expand Up @@ -287,7 +271,7 @@
</dependency>
<dependency>
<groupId>org.wiremock</groupId>
<artifactId>wiremock</artifactId>
<artifactId>wiremock-jetty12</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,16 +90,16 @@ public ResponseEntity<Optional<NetworkModificationResult>> handleNetworkModifica
@RequestBody List<UUID> modificationsUuidList) {
switch (action) {
case COPY:
return ResponseEntity.ok().body(networkModificationService.duplicateModifications(targetGroupUuid, networkUuid, variantId, new ReportInfos(reportUuid, reporterId.toString()), modificationsUuidList));
return ResponseEntity.ok().body(networkModificationService.duplicateModifications(targetGroupUuid, networkUuid, variantId, new ReportInfos(reportUuid, reporterId), modificationsUuidList));
case INSERT:
return ResponseEntity.ok().body(networkModificationService.insertCompositeModifications(targetGroupUuid, networkUuid, variantId, new ReportInfos(reportUuid, reporterId.toString()), modificationsUuidList));
return ResponseEntity.ok().body(networkModificationService.insertCompositeModifications(targetGroupUuid, networkUuid, variantId, new ReportInfos(reportUuid, reporterId), modificationsUuidList));
case MOVE:
UUID sourceGroupUuid = originGroupUuid == null ? targetGroupUuid : originGroupUuid;
boolean canBuildNode = build;
if (sourceGroupUuid.equals(targetGroupUuid)) {
canBuildNode = false;
}
return ResponseEntity.ok().body(networkModificationService.moveModifications(targetGroupUuid, sourceGroupUuid, beforeModificationUuid, networkUuid, variantId, new ReportInfos(reportUuid, reporterId.toString()), modificationsUuidList, canBuildNode));
return ResponseEntity.ok().body(networkModificationService.moveModifications(targetGroupUuid, sourceGroupUuid, beforeModificationUuid, networkUuid, variantId, new ReportInfos(reportUuid, reporterId), modificationsUuidList, canBuildNode));
default:
throw new NetworkModificationException(TYPE_MISMATCH);
}
Expand Down Expand Up @@ -134,7 +134,7 @@ public ResponseEntity<Optional<NetworkModificationResult>> createNetworkModifica
@Parameter(description = "Reporter ID") @RequestParam("reporterId") String reporterId,
@RequestBody ModificationInfos modificationInfos) {
modificationInfos.check();
return ResponseEntity.ok().body(networkModificationService.createNetworkModification(networkUuid, variantId, groupUuid, new ReportInfos(reportUuid, reporterId), modificationInfos));
return ResponseEntity.ok().body(networkModificationService.createNetworkModification(networkUuid, variantId, groupUuid, new ReportInfos(reportUuid, UUID.fromString(reporterId)), modificationInfos));
}

@PutMapping(value = "/network-modifications/{uuid}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
Expand Down Expand Up @@ -227,7 +227,7 @@ public ResponseEntity<Map<UUID, UUID>> duplicateModifications(@Parameter(descrip
return ResponseEntity.ok().body(networkModificationService.duplicateModifications(sourceModificationUuids));
}

@PutMapping(value = "/network-modifications", produces = MediaType.APPLICATION_JSON_VALUE)
@PutMapping(value = "/network-modifications", produces = MediaType.APPLICATION_JSON_VALUE, params = "stashed")
@Operation(summary = "stash or unstash network modifications")
@ApiResponse(responseCode = "200", description = "The network modifications were stashed")
public ResponseEntity<Void> stashNetworkModifications(
Expand All @@ -242,6 +242,16 @@ public ResponseEntity<Void> stashNetworkModifications(
return ResponseEntity.ok().build();
}

@PutMapping(value = "/network-modifications", produces = MediaType.APPLICATION_JSON_VALUE, params = "activated")
@Operation(summary = "activate or deactivate network modifications")
@ApiResponse(responseCode = "200", description = "The activation status related to the network modification was successfully updated")
public ResponseEntity<Void> updateNetworkModificationsActivationStatus(
@Parameter(description = "Network modification UUIDs") @RequestParam("uuids") List<UUID> networkModificationUuids,
@Parameter(description = "activate or deactivate network modifications") @RequestParam(name = "activated") Boolean activated) {
networkModificationService.updateNetworkModificationActivation(networkModificationUuids, activated);
return ResponseEntity.ok().build();
}

@PutMapping(value = "/groups/{groupUuid}/duplications", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Duplicate all modifications in a group and append them at the end of another modifications group")
@ApiResponse(responseCode = "200", description = "The modifications have been duplicated")
Expand All @@ -251,7 +261,7 @@ public ResponseEntity<Optional<NetworkModificationResult>> duplicateModification
@Parameter(description = "the reporter id", required = true) @RequestParam(value = "reporterId") UUID reporterId,
@Parameter(description = "the variant id", required = true) @RequestParam(value = "variantId") String variantId,
@Parameter(description = "origin group UUID, from where modifications are copied") @RequestParam(value = "duplicateFrom") UUID originGroupUuid) {
return ResponseEntity.ok().body(networkModificationService.duplicateModificationsInGroup(targetGroupUuid, networkUuid, variantId, new ReportInfos(reportUuid, reporterId.toString()), originGroupUuid));
return ResponseEntity.ok().body(networkModificationService.duplicateModificationsInGroup(targetGroupUuid, networkUuid, variantId, new ReportInfos(reportUuid, reporterId), originGroupUuid));
}

@DeleteMapping(value = "/groups/{groupUuid}/stashed-modifications")
Expand All @@ -278,6 +288,6 @@ public ResponseEntity<Optional<NetworkModificationResult>> applyModifications(@P
@Parameter(description = "the report uuid") @RequestParam(value = "reportUuid", required = false) UUID reportUuid,
@Parameter(description = "the reporter id") @RequestParam(value = "reporterId", required = false) String reporterId,
@RequestBody List<UUID> modificationsUuidList) {
return ResponseEntity.ok().body(networkModificationService.applyModificationsFromUuids(networkUuid, variantId, new ReportInfos(reportUuid, reporterId), modificationsUuidList));
return ResponseEntity.ok().body(networkModificationService.applyModificationsFromUuids(networkUuid, variantId, new ReportInfos(reportUuid, UUID.fromString(reporterId)), modificationsUuidList));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.gridsuite.modification.server.dto;
import com.powsybl.iidm.network.extensions.ConnectablePosition;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand Down Expand Up @@ -35,9 +36,39 @@ public class BranchModificationInfos extends BasicEquipmentModificationInfos {
@Schema(description = "Current limits Side 2")
private CurrentLimitsModificationInfos currentLimits2;

@Schema(description = "Voltage level id modification 1")
private AttributeModification<String> voltageLevelId1;

@Schema(description = "Voltage level id modification 2")
private AttributeModification<String> voltageLevelId2;

@Schema(description = "Bus id modification 1")
private AttributeModification<String> busOrBusbarSectionId1;

@Schema(description = "Bus id modification 2")
private AttributeModification<String> busOrBusbarSectionId2;

@Schema(description = "Connection Name 1")
private AttributeModification<String> connectionName1;

@Schema(description = "Connection Name 2")
private AttributeModification<String> connectionName2;

@Schema(description = "Connection Direction 1")
private AttributeModification<ConnectablePosition.Direction> connectionDirection1;

@Schema(description = "Connection Direction 2")
private AttributeModification<ConnectablePosition.Direction> connectionDirection2;

@Schema(description = "Connection Position 1")
private AttributeModification<Integer> connectionPosition1;

@Schema(description = "Connection Position 2")
private AttributeModification<Integer> connectionPosition2;

@Schema(description = "Connected 1")
private AttributeModification<Boolean> connected1;
private AttributeModification<Boolean> terminal1Connected;

@Schema(description = "Connected 2")
private AttributeModification<Boolean> connected2;
private AttributeModification<Boolean> terminal2Connected;
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,9 @@ public class BuildInfos {

private String destinationVariantId;

private UUID reportUuid;

private List<UUID> modificationGroupUuids = new ArrayList<>();

private List<String> reporterIds = new ArrayList<>();
private List<ReportInfos> reportsInfos = new ArrayList<>();

private Set<UUID> modificationsToExclude = new HashSet<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,12 +101,17 @@ public class ModificationInfos {
@Schema(description = "Message values")
private String messageValues;

@Schema(description = "Modification activated")
@Builder.Default
private Boolean activated = true;

// Only for metadata
public static ModificationInfos fromEntity(@NonNull ModificationEntity entity) {
ModificationInfos modificationInfos = ModificationInfos.builder()
.uuid(entity.getId())
.date(entity.getDate())
.stashed(entity.getStashed())
.activated(entity.getActivated())
.messageType(entity.getMessageType())
.messageValues(entity.getMessageValues())
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@
public class ReportInfos {
private UUID reportUuid;

private String reporterId;
private UUID nodeUuid;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@
import com.powsybl.iidm.network.extensions.ActivePowerControl;
import com.powsybl.iidm.network.extensions.ActivePowerControlAdder;
import jakarta.validation.constraints.NotNull;
import org.gridsuite.modification.server.dto.AttributeModification;
import org.gridsuite.modification.server.dto.OperationType;
import org.gridsuite.modification.server.modifications.ModificationUtils;

import static org.gridsuite.modification.server.NetworkModificationException.Type.MODIFY_BATTERY_ERROR;
import static org.gridsuite.modification.server.modifications.BatteryModification.modifyBatteryActiveLimitsAttributes;
import static org.gridsuite.modification.server.modifications.BatteryModification.modifyBatterySetpointsAttributes;

/**
* @author Seddik Yengui <Seddik.yengui at rte-france.com>
Expand All @@ -37,14 +44,28 @@ public static String getReferenceValue(Battery battery, String batteryField) {

public static void setNewValue(Battery battery, String batteryField, @NotNull String newValue) {
BatteryField field = BatteryField.valueOf(batteryField);
final AttributeModification<Double> attributeModification = new AttributeModification<>(Double.parseDouble(newValue), OperationType.SET);
switch (field) {
case MINIMUM_ACTIVE_POWER -> battery.setMinP(Double.parseDouble(newValue));
case MAXIMUM_ACTIVE_POWER -> battery.setMaxP(Double.parseDouble(newValue));
case ACTIVE_POWER_SET_POINT -> battery.setTargetP(Double.parseDouble(newValue));
case REACTIVE_POWER_SET_POINT -> battery.setTargetQ(Double.parseDouble(newValue));
case DROOP -> battery.newExtension(ActivePowerControlAdder.class)
.withDroop(Double.parseDouble(newValue))
.add();
case MINIMUM_ACTIVE_POWER ->
modifyBatteryActiveLimitsAttributes(null, attributeModification, battery, null);
case MAXIMUM_ACTIVE_POWER ->
modifyBatteryActiveLimitsAttributes(attributeModification, null, battery, null);
case ACTIVE_POWER_SET_POINT -> {
ModificationUtils.getInstance().checkActivePowerZeroOrBetweenMinAndMaxActivePower(
attributeModification, null, null, battery.getMinP(),
battery.getMaxP(), battery.getTargetP(), MODIFY_BATTERY_ERROR, "Battery '" + battery.getId() + "' : "
);
modifyBatterySetpointsAttributes(attributeModification, null, null, null, battery, null);
}
case REACTIVE_POWER_SET_POINT -> modifyBatterySetpointsAttributes(
null, attributeModification, null, null, battery, null);
case DROOP -> {
ActivePowerControl<Battery> activePowerControl = battery.getExtension(ActivePowerControl.class);
ActivePowerControlAdder<Battery> activePowerControlAdder = battery.newExtension(ActivePowerControlAdder.class);
ModificationUtils.getInstance().modifyActivePowerControlAttributes(
activePowerControl, activePowerControlAdder, null,
new AttributeModification<>(Float.parseFloat(newValue), OperationType.SET), null, null);
}
}
}
}
Loading

0 comments on commit 4c626cc

Please sign in to comment.