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
7 changes: 5 additions & 2 deletions src/main/java/org/gridsuite/study/server/StudyConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,11 @@ public enum SldDisplayMode {
public enum ModificationsActionType {
MOVE,
COPY,
SPLIT_COMPOSITE, // the network modifications contained into the composite modifications are extracted and inserted one by one
INSERT_COMPOSITE // the composite modifications are fully inserted as composite modifications
}

public enum CompositeModificationsActionType {
SPLIT, // the network modifications contained into the composite modifications are extracted and inserted one by one
INSERT // the composite modifications are fully inserted as composite modifications
}

public enum Severity {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -658,14 +658,14 @@ public ResponseEntity<Void> moveOrCopyModifications(@PathVariable("studyUuid") U
@RequestParam("action") ModificationsActionType action,
@RequestParam("originStudyUuid") UUID originStudyUuid,
@RequestParam("originNodeUuid") UUID originNodeUuid,
@RequestBody List<ModificationsToCopyInfos> modificationsToCopyInfos,
@RequestBody List<UUID> modificationsToCopyUuidList,
@RequestHeader(HEADER_USER_ID) String userId) {
studyService.assertIsStudyAndNodeExist(studyUuid, nodeUuid);
studyService.assertIsStudyAndNodeExist(originStudyUuid, originNodeUuid);
studyService.assertCanUpdateNodeInStudy(studyUuid, nodeUuid);
switch (action) {
case COPY, SPLIT_COMPOSITE, INSERT_COMPOSITE:
handleDuplicateOrInsertNetworkModifications(studyUuid, nodeUuid, originStudyUuid, originNodeUuid, modificationsToCopyInfos, userId, action);
case COPY:
handleDuplicateNetworkModifications(studyUuid, nodeUuid, originNodeUuid, modificationsToCopyUuidList, userId);
break;
case MOVE:
// we don't cut - paste modifications from different studies
Expand All @@ -674,18 +674,44 @@ public ResponseEntity<Void> moveOrCopyModifications(@PathVariable("studyUuid") U
}
studyService.assertNoBlockedNodeInStudy(studyUuid, originNodeUuid);
studyService.assertNoBlockedNodeInStudy(studyUuid, nodeUuid);
List<UUID> modificationsToCopyInfosUuids = modificationsToCopyInfos.stream().map(ModificationsToCopyInfos::getUuid).toList();
rebuildNodeService.moveNetworkModifications(studyUuid, nodeUuid, originNodeUuid, modificationsToCopyInfosUuids, userId);
rebuildNodeService.moveNetworkModifications(studyUuid, nodeUuid, originNodeUuid, modificationsToCopyUuidList, userId);
break;
}
return ResponseEntity.ok().build();
}

private void handleDuplicateOrInsertNetworkModifications(UUID targetStudyUuid, UUID targetNodeUuid, UUID originStudyUuid, UUID originNodeUuid, List<ModificationsToCopyInfos> modificationsToCopy, String userId, ModificationsActionType action) {
/**
* @param modificationsToInsert pair of the composite uuid and its name
*/
@PutMapping(value = "/studies/{studyUuid}/nodes/{nodeUuid}/composite-modifications", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "For a list of composite network modifications passed in body, insert them into the target node")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The composite modification list has been inserted.")})
public ResponseEntity<Void> insertCompositeModifications(@PathVariable("studyUuid") UUID studyUuid,
@PathVariable("nodeUuid") UUID nodeUuid,
@RequestParam("action") CompositeModificationsActionType action,
@RequestBody List<Pair<UUID, String>> modificationsToInsert,
@RequestHeader(HEADER_USER_ID) String userId) {
studyService.assertIsStudyAndNodeExist(studyUuid, nodeUuid);
studyService.assertCanUpdateNodeInStudy(studyUuid, nodeUuid);
handleInsertCompositeNetworkModifications(studyUuid, nodeUuid, modificationsToInsert, userId, action);
return ResponseEntity.ok().build();
}

private void handleInsertCompositeNetworkModifications(UUID targetStudyUuid, UUID targetNodeUuid, List<Pair<UUID, String>> modificationsToCopy, String userId, CompositeModificationsActionType action) {
studyService.assertNoBlockedNodeInStudy(targetStudyUuid, targetNodeUuid);
studyService.invalidateNodeTreeWithLF(targetStudyUuid, targetNodeUuid);
try {
studyService.insertCompositeNetworkModifications(targetStudyUuid, targetNodeUuid, modificationsToCopy, userId, action);
} finally {
studyService.unblockNodeTree(targetStudyUuid, targetNodeUuid);
}
}

private void handleDuplicateNetworkModifications(UUID targetStudyUuid, UUID targetNodeUuid, UUID originNodeUuid, List<UUID> modificationsToCopyUuidList, String userId) {
studyService.assertNoBlockedNodeInStudy(targetStudyUuid, targetNodeUuid);
studyService.invalidateNodeTreeWithLF(targetStudyUuid, targetNodeUuid);
try {
studyService.duplicateOrInsertNetworkModifications(targetStudyUuid, targetNodeUuid, originStudyUuid, originNodeUuid, modificationsToCopy, userId, action);
studyService.duplicateNetworkModifications(targetStudyUuid, targetNodeUuid, originNodeUuid, modificationsToCopyUuidList, userId);
} finally {
studyService.unblockNodeTree(targetStudyUuid, targetNodeUuid);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import org.gridsuite.study.server.RemoteServicesProperties;
import org.gridsuite.study.server.StudyConstants;
import org.gridsuite.study.server.dto.BuildInfos;
import org.gridsuite.study.server.dto.ModificationsToCopyInfos;
import org.gridsuite.study.server.dto.NodeReceiver;
import org.gridsuite.study.server.dto.modification.ModificationApplicationContext;
import org.gridsuite.study.server.dto.modification.NetworkModificationMetadata;
Expand Down Expand Up @@ -46,6 +45,7 @@
public class NetworkModificationService {

private static final String DELIMITER = "/";
private static final String COMPOSITE_PATH = "network-composite-modifications" + DELIMITER;
private static final String GROUP_PATH = "groups" + DELIMITER + "{groupUuid}";
private static final String NETWORK_MODIFICATIONS_PATH = "network-modifications";
private static final String NETWORK_MODIFICATIONS_COUNT_PATH = "network-modifications-count";
Expand Down Expand Up @@ -257,7 +257,7 @@ public void stopBuild(@NonNull UUID nodeUuid, @NonNull UUID rootNetworkUuid) {
restTemplate.put(getNetworkModificationServerURI(false) + path, null);
}

public NetworkModificationsResult moveModifications(UUID originGroupUuid, UUID targetGroupUuid, UUID beforeUuid, Pair<List<ModificationsToCopyInfos>, List<ModificationApplicationContext>> modificationContextInfos, boolean buildTargetNode) {
public NetworkModificationsResult moveModifications(UUID originGroupUuid, UUID targetGroupUuid, UUID beforeUuid, Pair<List<UUID>, List<ModificationApplicationContext>> modificationContextInfos, boolean buildTargetNode) {
var path = UriComponentsBuilder.fromPath(GROUP_PATH)
.queryParam(QUERY_PARAM_ACTION, ModificationsActionType.MOVE.name())
.queryParam("originGroupUuid", originGroupUuid)
Expand All @@ -268,7 +268,7 @@ public NetworkModificationsResult moveModifications(UUID originGroupUuid, UUID t

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Pair<List<ModificationsToCopyInfos>, List<ModificationApplicationContext>>> httpEntity = new HttpEntity<>(modificationContextInfos, headers);
HttpEntity<Pair<List<UUID>, List<ModificationApplicationContext>>> httpEntity = new HttpEntity<>(modificationContextInfos, headers);

return restTemplate.exchange(
getNetworkModificationServerURI(false) + path.buildAndExpand(targetGroupUuid).toUriString(),
Expand All @@ -277,13 +277,31 @@ public NetworkModificationsResult moveModifications(UUID originGroupUuid, UUID t
NetworkModificationsResult.class).getBody();
}

public NetworkModificationsResult duplicateOrInsertModifications(UUID groupUuid, ModificationsActionType action,
Pair<List<ModificationsToCopyInfos>, List<ModificationApplicationContext>> modificationContextInfos) {
return handleModifications(groupUuid, null, action, modificationContextInfos);
public NetworkModificationsResult duplicateModifications(UUID groupUuid,
Pair<List<UUID>, List<ModificationApplicationContext>> modificationContextInfos) {
return handleModifications(groupUuid, null, ModificationsActionType.COPY, modificationContextInfos);
}

public NetworkModificationsResult insertCompositeModifications(UUID groupUuid,
CompositeModificationsActionType action,
Pair<List<Pair<UUID, String>>, List<ModificationApplicationContext>> modificationContextInfos) {
var path = UriComponentsBuilder.fromPath(COMPOSITE_PATH + GROUP_PATH)
.queryParam(QUERY_PARAM_ACTION, action.name());

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Pair<List<Pair<UUID, String>>, List<ModificationApplicationContext>>> httpEntity = new HttpEntity<>(modificationContextInfos, headers);

return restTemplate.exchange(
getNetworkModificationServerURI(false) + path.buildAndExpand(groupUuid).toUriString(),
HttpMethod.PUT,
httpEntity,
NetworkModificationsResult.class
).getBody();
}

private NetworkModificationsResult handleModifications(UUID groupUuid, UUID originGroupUuid, ModificationsActionType action,
Pair<List<ModificationsToCopyInfos>, List<ModificationApplicationContext>> modificationContextInfos) {
Pair<List<UUID>, List<ModificationApplicationContext>> modificationContextInfos) {
var path = UriComponentsBuilder.fromPath(GROUP_PATH)
.queryParam(QUERY_PARAM_ACTION, action.name());

Expand All @@ -293,7 +311,7 @@ private NetworkModificationsResult handleModifications(UUID groupUuid, UUID orig

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Pair<List<ModificationsToCopyInfos>, List<ModificationApplicationContext>>> httpEntity = new HttpEntity<>(modificationContextInfos, headers);
HttpEntity<Pair<List<UUID>, List<ModificationApplicationContext>>> httpEntity = new HttpEntity<>(modificationContextInfos, headers);

return restTemplate.exchange(
getNetworkModificationServerURI(false) + path.buildAndExpand(groupUuid).toUriString(),
Expand Down Expand Up @@ -323,7 +341,7 @@ public Map<UUID, UUID> duplicateModificationsGroup(UUID sourceGroupUuid, UUID gr
).getBody();
}

public NetworkModificationsResult duplicateModificationsFromGroup(UUID groupUuid, UUID originGroupUuid, Pair<List<ModificationsToCopyInfos>, List<ModificationApplicationContext>> modificationContextInfos) {
public NetworkModificationsResult duplicateModificationsFromGroup(UUID groupUuid, UUID originGroupUuid, Pair<List<UUID>, List<ModificationApplicationContext>> modificationContextInfos) {
return handleModifications(groupUuid, originGroupUuid, StudyConstants.ModificationsActionType.COPY, modificationContextInfos);
}

Expand Down
Loading
Loading