Skip to content

Commit 152f28f

Browse files
authored
Fix mixed notifications for trashcan of network modifications (#565)
Add new modification statuses and notifications for stashing and restoring modifications, to deferentiate from deletion. Remove unused onlyStashed parameter. Signed-off-by: Florent MILLOT <[email protected]>
1 parent aacb8ca commit 152f28f

File tree

5 files changed

+33
-13
lines changed

5 files changed

+33
-13
lines changed

src/main/java/org/gridsuite/study/server/StudyController.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,10 +1111,9 @@ public ResponseEntity<Void> updateNetworkModification(@Parameter(description = "
11111111
public ResponseEntity<Void> deleteNetworkModifications(@Parameter(description = "Study UUID") @PathVariable("studyUuid") UUID studyUuid,
11121112
@Parameter(description = "Node UUID") @PathVariable("nodeUuid") UUID nodeUuid,
11131113
@Parameter(description = "Network modification UUIDs") @RequestParam(name = "uuids", required = false) List<UUID> networkModificationUuids,
1114-
@Parameter(description = "Delete only stashed modifications") @RequestParam(name = "onlyStashed", required = false, defaultValue = "false") Boolean onlyStashed,
11151114
@RequestHeader(HEADER_USER_ID) String userId) {
11161115
studyService.assertCanModifyNode(studyUuid, nodeUuid);
1117-
studyService.deleteNetworkModifications(studyUuid, nodeUuid, networkModificationUuids, onlyStashed, userId);
1116+
studyService.deleteNetworkModifications(studyUuid, nodeUuid, networkModificationUuids, userId);
11181117

11191118
return ResponseEntity.ok().build();
11201119
}

src/main/java/org/gridsuite/study/server/notification/NotificationService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,12 @@ public class NotificationService {
7878
public static final String UPDATE_TYPE_INDEXATION_STATUS = "indexation_status_updated";
7979

8080
public static final String MODIFICATIONS_CREATING_IN_PROGRESS = "creatingInProgress";
81+
public static final String MODIFICATIONS_STASHING_IN_PROGRESS = "stashingInProgress";
82+
public static final String MODIFICATIONS_RESTORING_IN_PROGRESS = "restoringInProgress";
8183
public static final String MODIFICATIONS_DELETING_IN_PROGRESS = "deletingInProgress";
8284
public static final String MODIFICATIONS_UPDATING_IN_PROGRESS = "updatingInProgress";
8385
public static final String MODIFICATIONS_UPDATING_FINISHED = "UPDATE_FINISHED";
86+
public static final String MODIFICATIONS_DELETING_FINISHED = "DELETE_FINISHED";
8487

8588
public static final String EVENTS_CRUD_CREATING_IN_PROGRESS = "eventCreatingInProgress";
8689
public static final String EVENTS_CRUD_DELETING_IN_PROGRESS = "eventDeletingInProgress";
@@ -344,6 +347,17 @@ public void emitEndModificationEquipmentNotification(UUID studyUuid, UUID parent
344347
);
345348
}
346349

350+
@PostCompletion
351+
public void emitEndDeletionEquipmentNotification(UUID studyUuid, UUID parentNodeUuid, Collection<UUID> childrenUuids) {
352+
sendUpdateMessage(MessageBuilder.withPayload("")
353+
.setHeader(HEADER_STUDY_UUID, studyUuid)
354+
.setHeader(HEADER_PARENT_NODE, parentNodeUuid)
355+
.setHeader(HEADER_NODES, childrenUuids)
356+
.setHeader(HEADER_UPDATE_TYPE, MODIFICATIONS_DELETING_FINISHED)
357+
.build()
358+
);
359+
}
360+
347361
public void emitStartEventCrudNotification(UUID studyUuid, UUID parentNodeUuid, Collection<UUID> childrenUuids, String crudType) {
348362
sendUpdateMessage(MessageBuilder.withPayload("")
349363
.setHeader(HEADER_STUDY_UUID, studyUuid)

src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,12 @@ public void deleteModifications(UUID groupUUid) {
126126
}
127127
}
128128

129-
public void deleteModifications(UUID groupUuid, List<UUID> modificationsUuids, boolean onlyStashed) {
129+
public void deleteModifications(UUID groupUuid, List<UUID> modificationsUuids) {
130130
Objects.requireNonNull(groupUuid);
131131
var path = UriComponentsBuilder
132132
.fromUriString(getNetworkModificationServerURI(false) + NETWORK_MODIFICATIONS_PATH)
133133
.queryParam(UUIDS, modificationsUuids)
134134
.queryParam(GROUP_UUID, groupUuid)
135-
.queryParam(QUERY_PARAM_ONLY_STASHED, onlyStashed)
136135
.buildAndExpand()
137136
.toUriString();
138137
try {

src/main/java/org/gridsuite/study/server/service/StudyService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,29 +1371,29 @@ public void changeModificationActiveState(@NonNull UUID studyUuid, @NonNull UUID
13711371
}
13721372

13731373
@Transactional
1374-
public void deleteNetworkModifications(UUID studyUuid, UUID nodeUuid, List<UUID> modificationsUuids, boolean onlyStashed, String userId) {
1374+
public void deleteNetworkModifications(UUID studyUuid, UUID nodeUuid, List<UUID> modificationsUuids, String userId) {
13751375
List<UUID> childrenUuids = networkModificationTreeService.getChildren(nodeUuid);
13761376
notificationService.emitStartModificationEquipmentNotification(studyUuid, nodeUuid, childrenUuids, NotificationService.MODIFICATIONS_DELETING_IN_PROGRESS);
13771377
try {
13781378
if (!networkModificationTreeService.getStudyUuidForNodeId(nodeUuid).equals(studyUuid)) {
13791379
throw new StudyException(NOT_ALLOWED);
13801380
}
13811381
UUID groupId = networkModificationTreeService.getModificationGroupUuid(nodeUuid);
1382-
networkModificationService.deleteModifications(groupId, modificationsUuids, onlyStashed);
1382+
networkModificationService.deleteModifications(groupId, modificationsUuids);
13831383
if (modificationsUuids != null) {
13841384
networkModificationTreeService.removeModificationsToExclude(nodeUuid, modificationsUuids);
13851385
}
13861386
updateStatuses(studyUuid, nodeUuid, false, false, false);
13871387
} finally {
1388-
notificationService.emitEndModificationEquipmentNotification(studyUuid, nodeUuid, childrenUuids);
1388+
notificationService.emitEndDeletionEquipmentNotification(studyUuid, nodeUuid, childrenUuids);
13891389
}
13901390
notificationService.emitElementUpdated(studyUuid, userId);
13911391
}
13921392

13931393
@Transactional
13941394
public void stashNetworkModifications(UUID studyUuid, UUID nodeUuid, List<UUID> modificationsUuids, String userId) {
13951395
List<UUID> childrenUuids = networkModificationTreeService.getChildren(nodeUuid);
1396-
notificationService.emitStartModificationEquipmentNotification(studyUuid, nodeUuid, childrenUuids, NotificationService.MODIFICATIONS_DELETING_IN_PROGRESS);
1396+
notificationService.emitStartModificationEquipmentNotification(studyUuid, nodeUuid, childrenUuids, NotificationService.MODIFICATIONS_STASHING_IN_PROGRESS);
13971397
try {
13981398
if (!networkModificationTreeService.getStudyUuidForNodeId(nodeUuid).equals(studyUuid)) {
13991399
throw new StudyException(NOT_ALLOWED);
@@ -1411,7 +1411,7 @@ public void stashNetworkModifications(UUID studyUuid, UUID nodeUuid, List<UUID>
14111411
@Transactional
14121412
public void restoreNetworkModifications(UUID studyUuid, UUID nodeUuid, List<UUID> modificationsUuids, String userId) {
14131413
List<UUID> childrenUuids = networkModificationTreeService.getChildren(nodeUuid);
1414-
notificationService.emitStartModificationEquipmentNotification(studyUuid, nodeUuid, childrenUuids, NotificationService.MODIFICATIONS_DELETING_IN_PROGRESS);
1414+
notificationService.emitStartModificationEquipmentNotification(studyUuid, nodeUuid, childrenUuids, NotificationService.MODIFICATIONS_RESTORING_IN_PROGRESS);
14151415
try {
14161416
if (!networkModificationTreeService.getStudyUuidForNodeId(nodeUuid).equals(studyUuid)) {
14171417
throw new StudyException(NOT_ALLOWED);

src/test/java/org/gridsuite/study/server/NetworkModificationTest.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1089,7 +1089,7 @@ public void deleteModificationRequest() throws Exception {
10891089
.header(USER_ID_HEADER, userId))
10901090
.andExpect(status().isForbidden());
10911091
checkEquipmentDeletingMessagesReceived(studyUuid1, modificationNode.getId());
1092-
checkEquipmentUpdatingFinishedMessagesReceived(studyUuid1, modificationNode.getId());
1092+
checkEquipmentDeletingFinishedMessagesReceived(studyUuid1, modificationNode.getId());
10931093

10941094
UUID modificationUuid = UUID.randomUUID();
10951095
mockMvc.perform(delete(URI_NETWORK_MODIF, studyUuid, modificationNode.getId())
@@ -1099,7 +1099,7 @@ public void deleteModificationRequest() throws Exception {
10991099
wireMockUtils.verifyDeleteRequest(stubId, "/v1/network-modifications", false, Map.of("uuids", WireMock.equalTo(modificationUuid.toString())));
11001100
checkEquipmentDeletingMessagesReceived(studyUuid, modificationNode.getId());
11011101
checkUpdateModelsStatusMessagesReceived(studyUuid, modificationNode.getId());
1102-
checkEquipmentUpdatingFinishedMessagesReceived(studyUuid, modificationNode.getId());
1102+
checkEquipmentDeletingFinishedMessagesReceived(studyUuid, modificationNode.getId());
11031103

11041104
String errorMessage = "Internal Server Error";
11051105
stubId = wireMockServer.stubFor(WireMock.delete(WireMock.urlPathMatching("/v1/network-modifications.*"))
@@ -1111,7 +1111,7 @@ public void deleteModificationRequest() throws Exception {
11111111
.andExpect(status().isBadRequest());
11121112
wireMockUtils.verifyDeleteRequest(stubId, "/v1/network-modifications", false, Map.of("uuids", WireMock.equalTo(modificationUuid.toString())));
11131113
checkEquipmentDeletingMessagesReceived(studyUuid, modificationNode.getId());
1114-
checkEquipmentUpdatingFinishedMessagesReceived(studyUuid, modificationNode.getId());
1114+
checkEquipmentDeletingFinishedMessagesReceived(studyUuid, modificationNode.getId());
11151115
}
11161116

11171117
@Test
@@ -2738,13 +2738,21 @@ private void checkUpdateEquipmentCreationMessagesReceived(UUID studyNameUserIdUu
27382738
}
27392739

27402740
private void checkEquipmentUpdatingFinishedMessagesReceived(UUID studyNameUserIdUuid, UUID nodeUuid) {
2741+
checkEquipmentFinishedMessagesReceived(studyNameUserIdUuid, nodeUuid, NotificationService.MODIFICATIONS_UPDATING_FINISHED);
2742+
}
2743+
2744+
private void checkEquipmentDeletingFinishedMessagesReceived(UUID studyNameUserIdUuid, UUID nodeUuid) {
2745+
checkEquipmentFinishedMessagesReceived(studyNameUserIdUuid, nodeUuid, NotificationService.MODIFICATIONS_DELETING_FINISHED);
2746+
}
2747+
2748+
private void checkEquipmentFinishedMessagesReceived(UUID studyNameUserIdUuid, UUID nodeUuid, String updateType) {
27412749
// assert that the broker message has been sent for updating study type
27422750
Message<byte[]> messageStudyUpdate = output.receive(TIMEOUT, studyUpdateDestination);
27432751
assertEquals("", new String(messageStudyUpdate.getPayload()));
27442752
MessageHeaders headersStudyUpdate = messageStudyUpdate.getHeaders();
27452753
assertEquals(studyNameUserIdUuid, headersStudyUpdate.get(NotificationService.HEADER_STUDY_UUID));
27462754
assertEquals(nodeUuid, headersStudyUpdate.get(NotificationService.HEADER_PARENT_NODE));
2747-
assertEquals(NotificationService.MODIFICATIONS_UPDATING_FINISHED, headersStudyUpdate.get(NotificationService.HEADER_UPDATE_TYPE));
2755+
assertEquals(updateType, headersStudyUpdate.get(NotificationService.HEADER_UPDATE_TYPE));
27482756
}
27492757

27502758
private void checkEquipmentDeletedMessagesReceived(UUID studyNameUserIdUuid, UUID nodeUuid, NetworkImpactsInfos expectedPayload) throws Exception {

0 commit comments

Comments
 (0)