From 4342c6ce02b047e6c295b28c1d874a06a36c28a3 Mon Sep 17 00:00:00 2001 From: Caroline Jeandat Date: Fri, 20 Mar 2026 13:41:55 +0100 Subject: [PATCH 1/7] add endpoint to duplicate a process config --- .../controllers/ProcessConfigController.java | 13 +++++++++ .../processconfig/ProcessConfigService.java | 6 +++++ .../ProcessConfigControllerTest.java | 27 +++++++++++++++++++ .../ProcessConfigServiceTest.java | 8 ++++++ 4 files changed, 54 insertions(+) diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java index 2236c41..d973889 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java @@ -80,6 +80,19 @@ public ResponseEntity updateProcessConfig( ResponseEntity.notFound().build(); } + @PostMapping(value = "/duplication", produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "Duplicate a process config") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "process config was duplicated"), + @ApiResponse(responseCode = "404", description = "process config to duplicate was not found")}) + public ResponseEntity duplicateProcessConfig( + @Parameter(description = "process config UUID to duplicate") @RequestParam("duplicateFrom") UUID sourceProcessConfigUuid) { + Optional newProcessConfigUuid = processConfigService.duplicateProcessConfig(sourceProcessConfigUuid); + return newProcessConfigUuid + .map(configUuid -> ResponseEntity.ok().body(configUuid)) + .orElseGet(() -> ResponseEntity.notFound().build()); + } + @DeleteMapping(value = "/{uuid}", produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Delete process config") @ApiResponses(value = { diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java index ff4608b..c93cc17 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java @@ -66,6 +66,12 @@ public boolean updateProcessConfig(UUID processConfigUuid, ProcessConfig process .orElse(false); } + @Transactional + public Optional duplicateProcessConfig(UUID sourceProcessConfigUuid) { + return processConfigRepository.findById(sourceProcessConfigUuid) + .map(sourceEntity -> createProcessConfig(toProcessConfig(sourceEntity))); + } + @Transactional public boolean deleteProcessConfig(UUID processConfigUuid) { if (processConfigRepository.existsById(processConfigUuid)) { diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java index 2d5e0f0..85cd654 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java @@ -150,6 +150,33 @@ void updateSecurityAnalysisConfigNotFound() throws Exception { verify(processConfigService).updateProcessConfig(any(UUID.class), any(ProcessConfig.class)); } + @Test + void duplicateSecurityAnalysisConfig() throws Exception { + UUID processConfigId = UUID.randomUUID(); + UUID newProcessConfigId = UUID.randomUUID(); + + when(processConfigService.duplicateProcessConfig(any(UUID.class))) + .thenReturn(Optional.of(newProcessConfigId)); + + mockMvc.perform(post("/v1/process-configs/duplication?duplicateFrom={uuid}", processConfigId)) + .andExpect(status().isOk()); + + verify(processConfigService).duplicateProcessConfig(any(UUID.class)); + } + + @Test + void duplicateSecurityAnalysisConfigNotFound() throws Exception { + UUID processConfigId = UUID.randomUUID(); + + when(processConfigService.duplicateProcessConfig(any(UUID.class))) + .thenReturn(Optional.empty()); + + mockMvc.perform(post("/v1/process-configs/duplication?duplicateFrom={uuid}", processConfigId)) + .andExpect(status().isNotFound()); + + verify(processConfigService).duplicateProcessConfig(any(UUID.class)); + } + @Test void deleteSecurityAnalysisConfig() throws Exception { UUID processConfigId = UUID.randomUUID(); diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java index 1ce851b..4c33451 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java @@ -144,6 +144,14 @@ void updateSecurityAnalysisConfigNotFound() { verify(processConfigRepository).findById(processConfigId); } + @Test + void duplicateSecurityAnalysisConfig() { + } + + @Test + void duplicateSecurityAnalysisConfigNotFound() { + } + @Test void deleteSecurityAnalysisConfig() { UUID processConfigId = UUID.randomUUID(); From 6d66f6a671369ddca9f33098824b6cc00106925e Mon Sep 17 00:00:00 2001 From: Caroline Jeandat Date: Fri, 20 Mar 2026 15:12:31 +0100 Subject: [PATCH 2/7] add tests --- .../processconfig/ProcessConfigService.java | 2 +- .../ProcessConfigControllerTest.java | 12 +++++---- .../ProcessConfigServiceTest.java | 26 +++++++++++++++++++ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java index c93cc17..0a85f8e 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java @@ -69,7 +69,7 @@ public boolean updateProcessConfig(UUID processConfigUuid, ProcessConfig process @Transactional public Optional duplicateProcessConfig(UUID sourceProcessConfigUuid) { return processConfigRepository.findById(sourceProcessConfigUuid) - .map(sourceEntity -> createProcessConfig(toProcessConfig(sourceEntity))); + .map(sourceEntity -> processConfigRepository.save(sourceEntity).getId()); } @Transactional diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java index 85cd654..b51c396 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java @@ -155,26 +155,28 @@ void duplicateSecurityAnalysisConfig() throws Exception { UUID processConfigId = UUID.randomUUID(); UUID newProcessConfigId = UUID.randomUUID(); - when(processConfigService.duplicateProcessConfig(any(UUID.class))) + when(processConfigService.duplicateProcessConfig(processConfigId)) .thenReturn(Optional.of(newProcessConfigId)); mockMvc.perform(post("/v1/process-configs/duplication?duplicateFrom={uuid}", processConfigId)) - .andExpect(status().isOk()); + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON)) + .andExpect(jsonPath("$").value(newProcessConfigId.toString())); - verify(processConfigService).duplicateProcessConfig(any(UUID.class)); + verify(processConfigService).duplicateProcessConfig(processConfigId); } @Test void duplicateSecurityAnalysisConfigNotFound() throws Exception { UUID processConfigId = UUID.randomUUID(); - when(processConfigService.duplicateProcessConfig(any(UUID.class))) + when(processConfigService.duplicateProcessConfig(processConfigId)) .thenReturn(Optional.empty()); mockMvc.perform(post("/v1/process-configs/duplication?duplicateFrom={uuid}", processConfigId)) .andExpect(status().isNotFound()); - verify(processConfigService).duplicateProcessConfig(any(UUID.class)); + verify(processConfigService).duplicateProcessConfig(processConfigId); } @Test diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java index 4c33451..c06bc49 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java @@ -146,10 +146,36 @@ void updateSecurityAnalysisConfigNotFound() { @Test void duplicateSecurityAnalysisConfig() { + UUID processConfigId = UUID.randomUUID(); + UUID expectedNewProcessConfigId = UUID.randomUUID(); + + SecurityAnalysisConfigEntity securityAnalysisConfigEntity = securityAnalysisConfigMapper.toEntity(securityAnalysisConfig); + + when(processConfigRepository.findById(processConfigId)) + .thenReturn(Optional.of(securityAnalysisConfigEntity)); + when(processConfigRepository.save(securityAnalysisConfigEntity)) + .thenAnswer(invocation -> { + SecurityAnalysisConfigEntity entity = invocation.getArgument(0); + entity.setId(expectedNewProcessConfigId); + return entity; + }); + + Optional newProcessConfigId = processConfigService.duplicateProcessConfig(processConfigId); + assertThat(newProcessConfigId).isPresent(); + assertThat(newProcessConfigId.get()).isEqualTo(expectedNewProcessConfigId); + verify(processConfigRepository).findById(processConfigId); + verify(processConfigRepository).save(securityAnalysisConfigEntity); } @Test void duplicateSecurityAnalysisConfigNotFound() { + UUID processConfigId = UUID.randomUUID(); + + when(processConfigRepository.findById(processConfigId)).thenReturn(Optional.empty()); + + Optional newProcessConfigId = processConfigService.duplicateProcessConfig(processConfigId); + assertThat(newProcessConfigId).isEmpty(); + verify(processConfigRepository).findById(processConfigId); } @Test From 7c0d1480200e14672b1027685c693d060a707b07 Mon Sep 17 00:00:00 2001 From: Caroline Jeandat Date: Fri, 20 Mar 2026 17:06:56 +0100 Subject: [PATCH 3/7] fix copy --- .../services/processconfig/ProcessConfigService.java | 6 +++++- .../processconfig/ProcessConfigServiceTest.java | 11 ++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java index 0a85f8e..ae944df 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java @@ -36,6 +36,10 @@ public ProcessConfigService(ProcessConfigRepository processConfigRepository, Sec @Transactional public UUID createProcessConfig(ProcessConfig processConfig) { + return doCreateProcessConfig(processConfig); + } + + private UUID doCreateProcessConfig(ProcessConfig processConfig) { switch (processConfig) { case SecurityAnalysisConfig sac -> { return processConfigRepository.save(securityAnalysisConfigMapper.toEntity(sac)).getId(); @@ -69,7 +73,7 @@ public boolean updateProcessConfig(UUID processConfigUuid, ProcessConfig process @Transactional public Optional duplicateProcessConfig(UUID sourceProcessConfigUuid) { return processConfigRepository.findById(sourceProcessConfigUuid) - .map(sourceEntity -> processConfigRepository.save(sourceEntity).getId()); + .map(sourceEntity -> doCreateProcessConfig(toProcessConfig(sourceEntity))); } @Transactional diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java index c06bc49..7d109ec 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java @@ -149,11 +149,9 @@ void duplicateSecurityAnalysisConfig() { UUID processConfigId = UUID.randomUUID(); UUID expectedNewProcessConfigId = UUID.randomUUID(); - SecurityAnalysisConfigEntity securityAnalysisConfigEntity = securityAnalysisConfigMapper.toEntity(securityAnalysisConfig); - when(processConfigRepository.findById(processConfigId)) - .thenReturn(Optional.of(securityAnalysisConfigEntity)); - when(processConfigRepository.save(securityAnalysisConfigEntity)) + .thenReturn(Optional.of(mock(SecurityAnalysisConfigEntity.class))); + when(processConfigRepository.save(any(SecurityAnalysisConfigEntity.class))) .thenAnswer(invocation -> { SecurityAnalysisConfigEntity entity = invocation.getArgument(0); entity.setId(expectedNewProcessConfigId); @@ -161,10 +159,13 @@ void duplicateSecurityAnalysisConfig() { }); Optional newProcessConfigId = processConfigService.duplicateProcessConfig(processConfigId); + assertThat(newProcessConfigId).isPresent(); assertThat(newProcessConfigId.get()).isEqualTo(expectedNewProcessConfigId); + verify(processConfigRepository).findById(processConfigId); - verify(processConfigRepository).save(securityAnalysisConfigEntity); + ArgumentCaptor captor = ArgumentCaptor.forClass(SecurityAnalysisConfigEntity.class); + verify(processConfigRepository).save(captor.capture()); } @Test From e4fa2a11d7df8640fd89e23b51de7b0ca9751a65 Mon Sep 17 00:00:00 2001 From: Caroline Jeandat Date: Sat, 21 Mar 2026 01:26:51 +0100 Subject: [PATCH 4/7] add get metadata --- .../controllers/ProcessConfigController.java | 9 +++++ .../processconfig/ProcessConfigService.java | 5 +++ .../ProcessConfigControllerTest.java | 33 +++++++++++++++++++ .../ProcessConfigServiceTest.java | 32 ++++++++++++++++++ 4 files changed, 79 insertions(+) diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java index d973889..79d6d42 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java @@ -67,6 +67,15 @@ public ResponseEntity getProcessConfig( return processConfig.map(config -> ResponseEntity.ok().body(config)).orElseGet(() -> ResponseEntity.notFound().build()); } + @GetMapping(value = "/metadata", produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "Get process configs") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "process configs were returned")}) + public ResponseEntity> getProcessConfigsMetadata(@RequestParam("ids") List processConfigIds) { + List processConfigs = processConfigService.getProcessConfigsMetadata(processConfigIds); + return ResponseEntity.ok().body(processConfigs); + } + @PutMapping(value = "/{uuid}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Update process config") @ApiResponses(value = { diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java index ae944df..db617f7 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java @@ -53,6 +53,11 @@ public Optional getProcessConfig(UUID processConfigUuid) return processConfigRepository.findById(processConfigUuid).map(this::toPersistedProcessConfig); } + @Transactional(readOnly = true) + public List getProcessConfigsMetadata(List processConfigUuids) { + return processConfigRepository.findAllById(processConfigUuids).stream().map(this::toPersistedProcessConfig).toList(); + } + @Transactional public boolean updateProcessConfig(UUID processConfigUuid, ProcessConfig processConfig) { return processConfigRepository.findById(processConfigUuid) diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java index b51c396..95b93c0 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java @@ -110,6 +110,39 @@ void getSecurityAnalysisConfigNotFound() throws Exception { verify(processConfigService).getProcessConfig(any(UUID.class)); } + @Test + void getProcessConfigsMetadata() throws Exception { + UUID processConfigId1 = UUID.randomUUID(); + UUID processConfigId2 = UUID.randomUUID(); + + SecurityAnalysisConfig securityAnalysisConfig1 = new SecurityAnalysisConfig( + UUID.randomUUID(), + List.of(UUID.randomUUID(), UUID.randomUUID()), + UUID.randomUUID() + ); + SecurityAnalysisConfig securityAnalysisConfig2 = new SecurityAnalysisConfig( + UUID.randomUUID(), + List.of(UUID.randomUUID(), UUID.randomUUID()), + UUID.randomUUID() + ); + + List expectedResult = List.of( + new PersistedProcessConfig(processConfigId1, securityAnalysisConfig1), + new PersistedProcessConfig(processConfigId2, securityAnalysisConfig2) + ); + + when(processConfigService.getProcessConfigsMetadata(List.of(processConfigId1, processConfigId2))) + .thenReturn(expectedResult); + + mockMvc.perform(get("/v1/process-configs/metadata") + .param("ids", processConfigId1.toString(), processConfigId2.toString())) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON)) + .andExpect(content().json(objectMapper.writeValueAsString(expectedResult))); + + verify(processConfigService).getProcessConfigsMetadata(List.of(processConfigId1, processConfigId2)); + } + @Test void updateSecurityAnalysisConfig() throws Exception { UUID processConfigId = UUID.randomUUID(); diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java index 7d109ec..67c3063 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java @@ -104,6 +104,38 @@ void getSecurityAnalysisConfigNotFound() { assertThat(processConfig).isEmpty(); } + @Test + void getProcessConfigsMetadata() { + UUID processConfigId1 = UUID.randomUUID(); + UUID processConfigId2 = UUID.randomUUID(); + + SecurityAnalysisConfig securityAnalysisConfig1 = new SecurityAnalysisConfig( + UUID.randomUUID(), + List.of(UUID.randomUUID(), UUID.randomUUID()), + UUID.randomUUID() + ); + SecurityAnalysisConfig securityAnalysisConfig2 = new SecurityAnalysisConfig( + UUID.randomUUID(), + List.of(UUID.randomUUID(), UUID.randomUUID()), + UUID.randomUUID() + ); + + SecurityAnalysisConfigEntity entity1 = securityAnalysisConfigMapper.toEntity(securityAnalysisConfig1); + entity1.setId(processConfigId1); + SecurityAnalysisConfigEntity entity2 = securityAnalysisConfigMapper.toEntity(securityAnalysisConfig2); + entity2.setId(processConfigId2); + + when(processConfigRepository.findAllById(List.of(processConfigId1, processConfigId2))) + .thenReturn(List.of(entity1, entity2)); + + List persistedProcessConfigList = processConfigService.getProcessConfigsMetadata(List.of(processConfigId1, processConfigId2)); + + assertThat(persistedProcessConfigList).isEqualTo(List.of( + new PersistedProcessConfig(processConfigId1, securityAnalysisConfig1), + new PersistedProcessConfig(processConfigId2, securityAnalysisConfig2) + )); + } + @Test void updateSecurityAnalysisConfig() { UUID processConfigId = UUID.randomUUID(); From 440b2103143262554de4eb5a9f5517ba120cd923 Mon Sep 17 00:00:00 2001 From: Caroline Jeandat Date: Wed, 25 Mar 2026 13:41:35 +0100 Subject: [PATCH 5/7] add get metadata --- .../controllers/ProcessConfigController.java | 5 ++-- .../dto/processconfig/MetadataInfos.java | 20 +++++++++++++++ .../processconfig/ProcessConfigService.java | 7 ++++-- .../ProcessConfigControllerTest.java | 22 +++++----------- .../ProcessConfigServiceTest.java | 25 ++++++------------- 5 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 monitor-server/src/main/java/org/gridsuite/monitor/server/dto/processconfig/MetadataInfos.java diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java index 79d6d42..73728a2 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java @@ -11,6 +11,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; +import org.gridsuite.monitor.server.dto.processconfig.MetadataInfos; import org.gridsuite.monitor.server.dto.processconfig.PersistedProcessConfig; import org.gridsuite.monitor.commons.types.processconfig.ProcessConfig; import org.gridsuite.monitor.commons.types.processexecution.ProcessType; @@ -71,8 +72,8 @@ public ResponseEntity getProcessConfig( @Operation(summary = "Get process configs") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "process configs were returned")}) - public ResponseEntity> getProcessConfigsMetadata(@RequestParam("ids") List processConfigIds) { - List processConfigs = processConfigService.getProcessConfigsMetadata(processConfigIds); + public ResponseEntity> getProcessConfigsMetadata(@RequestParam("ids") List processConfigIds) { + List processConfigs = processConfigService.getProcessConfigsMetadata(processConfigIds); return ResponseEntity.ok().body(processConfigs); } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/dto/processconfig/MetadataInfos.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/dto/processconfig/MetadataInfos.java new file mode 100644 index 0000000..c3ff986 --- /dev/null +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/dto/processconfig/MetadataInfos.java @@ -0,0 +1,20 @@ +/** + * 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.monitor.server.dto.processconfig; + +import org.gridsuite.monitor.commons.types.processexecution.ProcessType; + +import java.util.UUID; + +/** + * @author Caroline Jeandat {@literal } + */ +public record MetadataInfos( + UUID id, + ProcessType type +) { +} diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java index db617f7..1f43a16 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigService.java @@ -9,6 +9,7 @@ import org.gridsuite.monitor.commons.types.processconfig.ProcessConfig; import org.gridsuite.monitor.commons.types.processconfig.SecurityAnalysisConfig; import org.gridsuite.monitor.commons.types.processexecution.ProcessType; +import org.gridsuite.monitor.server.dto.processconfig.MetadataInfos; import org.gridsuite.monitor.server.dto.processconfig.ProcessConfigComparison; import org.gridsuite.monitor.server.dto.processconfig.ProcessConfigFieldComparison; import org.gridsuite.monitor.server.dto.processconfig.PersistedProcessConfig; @@ -54,8 +55,10 @@ public Optional getProcessConfig(UUID processConfigUuid) } @Transactional(readOnly = true) - public List getProcessConfigsMetadata(List processConfigUuids) { - return processConfigRepository.findAllById(processConfigUuids).stream().map(this::toPersistedProcessConfig).toList(); + public List getProcessConfigsMetadata(List processConfigUuids) { + return processConfigRepository.findAllById(processConfigUuids).stream() + .map(entity -> new MetadataInfos(entity.getId(), entity.getProcessType())) + .toList(); } @Transactional diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java index 95b93c0..cbbb046 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java @@ -7,6 +7,7 @@ package org.gridsuite.monitor.server.controllers; import com.fasterxml.jackson.databind.ObjectMapper; +import org.gridsuite.monitor.server.dto.processconfig.MetadataInfos; import org.gridsuite.monitor.server.dto.processconfig.PersistedProcessConfig; import org.gridsuite.monitor.commons.types.processconfig.ProcessConfig; import org.gridsuite.monitor.commons.types.processconfig.SecurityAnalysisConfig; @@ -115,30 +116,19 @@ void getProcessConfigsMetadata() throws Exception { UUID processConfigId1 = UUID.randomUUID(); UUID processConfigId2 = UUID.randomUUID(); - SecurityAnalysisConfig securityAnalysisConfig1 = new SecurityAnalysisConfig( - UUID.randomUUID(), - List.of(UUID.randomUUID(), UUID.randomUUID()), - UUID.randomUUID() - ); - SecurityAnalysisConfig securityAnalysisConfig2 = new SecurityAnalysisConfig( - UUID.randomUUID(), - List.of(UUID.randomUUID(), UUID.randomUUID()), - UUID.randomUUID() - ); - - List expectedResult = List.of( - new PersistedProcessConfig(processConfigId1, securityAnalysisConfig1), - new PersistedProcessConfig(processConfigId2, securityAnalysisConfig2) + List expectedMetadata = List.of( + new MetadataInfos(processConfigId1, ProcessType.SECURITY_ANALYSIS), + new MetadataInfos(processConfigId2, ProcessType.SECURITY_ANALYSIS) ); when(processConfigService.getProcessConfigsMetadata(List.of(processConfigId1, processConfigId2))) - .thenReturn(expectedResult); + .thenReturn(expectedMetadata); mockMvc.perform(get("/v1/process-configs/metadata") .param("ids", processConfigId1.toString(), processConfigId2.toString())) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON)) - .andExpect(content().json(objectMapper.writeValueAsString(expectedResult))); + .andExpect(content().json(objectMapper.writeValueAsString(expectedMetadata))); verify(processConfigService).getProcessConfigsMetadata(List.of(processConfigId1, processConfigId2)); } diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java index 67c3063..cf6ac9d 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/processconfig/ProcessConfigServiceTest.java @@ -6,6 +6,7 @@ */ package org.gridsuite.monitor.server.services.processconfig; +import org.gridsuite.monitor.server.dto.processconfig.MetadataInfos; import org.gridsuite.monitor.server.dto.processconfig.PersistedProcessConfig; import org.gridsuite.monitor.commons.types.processconfig.SecurityAnalysisConfig; import org.gridsuite.monitor.commons.types.processexecution.ProcessType; @@ -109,30 +110,20 @@ void getProcessConfigsMetadata() { UUID processConfigId1 = UUID.randomUUID(); UUID processConfigId2 = UUID.randomUUID(); - SecurityAnalysisConfig securityAnalysisConfig1 = new SecurityAnalysisConfig( - UUID.randomUUID(), - List.of(UUID.randomUUID(), UUID.randomUUID()), - UUID.randomUUID() - ); - SecurityAnalysisConfig securityAnalysisConfig2 = new SecurityAnalysisConfig( - UUID.randomUUID(), - List.of(UUID.randomUUID(), UUID.randomUUID()), - UUID.randomUUID() - ); - - SecurityAnalysisConfigEntity entity1 = securityAnalysisConfigMapper.toEntity(securityAnalysisConfig1); + SecurityAnalysisConfigEntity entity1 = securityAnalysisConfigMapper.toEntity(securityAnalysisConfig); entity1.setId(processConfigId1); - SecurityAnalysisConfigEntity entity2 = securityAnalysisConfigMapper.toEntity(securityAnalysisConfig2); + SecurityAnalysisConfigEntity entity2 = securityAnalysisConfigMapper.toEntity(securityAnalysisConfig); entity2.setId(processConfigId2); when(processConfigRepository.findAllById(List.of(processConfigId1, processConfigId2))) .thenReturn(List.of(entity1, entity2)); - List persistedProcessConfigList = processConfigService.getProcessConfigsMetadata(List.of(processConfigId1, processConfigId2)); + List metadataInfos = processConfigService.getProcessConfigsMetadata(List.of(processConfigId1, processConfigId2)); - assertThat(persistedProcessConfigList).isEqualTo(List.of( - new PersistedProcessConfig(processConfigId1, securityAnalysisConfig1), - new PersistedProcessConfig(processConfigId2, securityAnalysisConfig2) + verify(processConfigRepository).findAllById(List.of(processConfigId1, processConfigId2)); + assertThat(metadataInfos).isEqualTo(List.of( + new MetadataInfos(processConfigId1, ProcessType.SECURITY_ANALYSIS), + new MetadataInfos(processConfigId2, ProcessType.SECURITY_ANALYSIS) )); } From 96908734d8ddf1787cd2abf39f2847ec6807b548 Mon Sep 17 00:00:00 2001 From: Caroline Jeandat Date: Thu, 26 Mar 2026 10:37:46 +0100 Subject: [PATCH 6/7] typo --- .../monitor/server/controllers/ProcessConfigController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java index 73728a2..d6af176 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java @@ -69,9 +69,9 @@ public ResponseEntity getProcessConfig( } @GetMapping(value = "/metadata", produces = MediaType.APPLICATION_JSON_VALUE) - @Operation(summary = "Get process configs") + @Operation(summary = "Get process configs metadata") @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "process configs were returned")}) + @ApiResponse(responseCode = "200", description = "process configs metadata were returned")}) public ResponseEntity> getProcessConfigsMetadata(@RequestParam("ids") List processConfigIds) { List processConfigs = processConfigService.getProcessConfigsMetadata(processConfigIds); return ResponseEntity.ok().body(processConfigs); @@ -96,7 +96,7 @@ public ResponseEntity updateProcessConfig( @ApiResponse(responseCode = "200", description = "process config was duplicated"), @ApiResponse(responseCode = "404", description = "process config to duplicate was not found")}) public ResponseEntity duplicateProcessConfig( - @Parameter(description = "process config UUID to duplicate") @RequestParam("duplicateFrom") UUID sourceProcessConfigUuid) { + @Parameter(description = "UUID of the process config to duplicate") @RequestParam("duplicateFrom") UUID sourceProcessConfigUuid) { Optional newProcessConfigUuid = processConfigService.duplicateProcessConfig(sourceProcessConfigUuid); return newProcessConfigUuid .map(configUuid -> ResponseEntity.ok().body(configUuid)) From 938c3ab1748dc800b16a6ac2ff5e4f0f0f108170 Mon Sep 17 00:00:00 2001 From: Caroline Jeandat Date: Thu, 26 Mar 2026 10:53:29 +0100 Subject: [PATCH 7/7] typo --- .../server/controllers/ProcessConfigControllerTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java index cbbb046..f33196e 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java @@ -112,7 +112,7 @@ void getSecurityAnalysisConfigNotFound() throws Exception { } @Test - void getProcessConfigsMetadata() throws Exception { + void getSecurityAnalysisConfigsMetadata() throws Exception { UUID processConfigId1 = UUID.randomUUID(); UUID processConfigId2 = UUID.randomUUID(); @@ -174,7 +174,7 @@ void updateSecurityAnalysisConfigNotFound() throws Exception { } @Test - void duplicateSecurityAnalysisConfig() throws Exception { + void duplicateProcessConfig() throws Exception { UUID processConfigId = UUID.randomUUID(); UUID newProcessConfigId = UUID.randomUUID(); @@ -190,7 +190,7 @@ void duplicateSecurityAnalysisConfig() throws Exception { } @Test - void duplicateSecurityAnalysisConfigNotFound() throws Exception { + void duplicateProcessConfigNotFound() throws Exception { UUID processConfigId = UUID.randomUUID(); when(processConfigService.duplicateProcessConfig(processConfigId))