From ad8db80d52c25310d75f4798e5947ca5cb486109 Mon Sep 17 00:00:00 2001 From: Etienne LESOT Date: Tue, 8 Oct 2024 14:18:31 +0200 Subject: [PATCH] review Signed-off-by: Etienne LESOT --- .../server/NetworkModificationController.java | 3 ++- .../NetworkModificationRepository.java | 18 +++++++++++++----- .../service/NetworkModificationService.java | 4 ++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/NetworkModificationController.java b/src/main/java/org/gridsuite/modification/server/NetworkModificationController.java index 91f0d4e0d..9396298c8 100644 --- a/src/main/java/org/gridsuite/modification/server/NetworkModificationController.java +++ b/src/main/java/org/gridsuite/modification/server/NetworkModificationController.java @@ -238,10 +238,11 @@ public ResponseEntity stashNetworkModifications( throw new IllegalArgumentException("groupUuid cannot be null"); } if (Boolean.TRUE.equals(stashed)) { - networkModificationService.stashNetworkModifications(networkModificationUuids); + networkModificationService.stashNetworkModifications(groupUuid, networkModificationUuids); networkModificationService.reorderNetworkModifications(groupUuid, Boolean.FALSE); } else { networkModificationService.restoreNetworkModifications(networkModificationUuids, groupUuid); + networkModificationService.reorderNetworkModifications(groupUuid, Boolean.TRUE); } return ResponseEntity.ok().build(); } diff --git a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java index 35844281c..5d3a0ae79 100644 --- a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java +++ b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java @@ -414,14 +414,17 @@ public List getActiveModificationsInfos(@NonNull UUID groupUu } @Transactional - public void stashNetworkModifications(@NonNull List modificationUuids) { + public void stashNetworkModifications(@NonNull List modificationUuids, int stashedModificationCount) { + int stashModificationOrder = -stashedModificationCount - 1; + Collections.reverse(modificationUuids); for (UUID modificationUuid : modificationUuids) { ModificationEntity modificationEntity = this.modificationRepository .findById(modificationUuid) .orElseThrow(() -> new NetworkModificationException(MODIFICATION_NOT_FOUND, String.format(MODIFICATION_NOT_FOUND_MESSAGE, modificationUuid))); modificationEntity.setStashed(true); - modificationEntity.setModificationsOrder(-1); + modificationEntity.setModificationsOrder(stashModificationOrder); this.modificationRepository.save(modificationEntity); + stashModificationOrder--; } } @@ -431,15 +434,20 @@ public void reorderNetworkModifications(UUID groupId, Boolean stashed) { if (entities.isEmpty()) { return; } - IntStream.range(0, entities.size()) - .forEach(i -> entities.get(i).setModificationsOrder(i)); + if (Boolean.TRUE.equals(stashed)) { + IntStream.range(1, entities.size() + 1) + .forEach(i -> entities.get(i - 1).setModificationsOrder(-i)); + } else { + IntStream.range(0, entities.size()) + .forEach(i -> entities.get(i).setModificationsOrder(i)); + } this.modificationRepository.saveAll(entities); } @Transactional public void restoreNetworkModifications(@NonNull List modificationUuids, int unStashedSize) { int modificationOrder = unStashedSize; - List modifications = modificationRepository.findAllById(modificationUuids); + List modifications = modificationRepository.findAllByIdIn(modificationUuids); if (modifications.size() != modificationUuids.size()) { throw new NetworkModificationException(MODIFICATION_NOT_FOUND); } diff --git a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java index e49553277..9115202a5 100644 --- a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java @@ -118,8 +118,8 @@ public void updateNetworkModificationActivation(@NonNull List modification } @Transactional - public void stashNetworkModifications(@NonNull List modificationUuids) { - networkModificationRepository.stashNetworkModifications(modificationUuids); + public void stashNetworkModifications(UUID groupUuid, @NonNull List modificationUuids) { + networkModificationRepository.stashNetworkModifications(modificationUuids, networkModificationRepository.getModificationsCount(groupUuid, true)); } @Transactional