diff --git a/src/main/java/org/gridsuite/modification/server/dto/ModificationsSearchResult.java b/src/main/java/org/gridsuite/modification/server/dto/ModificationsSearchResult.java index 7715c12ae..4973a686b 100644 --- a/src/main/java/org/gridsuite/modification/server/dto/ModificationsSearchResult.java +++ b/src/main/java/org/gridsuite/modification/server/dto/ModificationsSearchResult.java @@ -13,10 +13,12 @@ import lombok.NoArgsConstructor; import org.gridsuite.modification.server.entities.ModificationEntity; +import java.util.List; import java.util.UUID; /** * @author Souissi Maissa + * @author Caroline Jeandat */ @Getter @NoArgsConstructor @@ -27,21 +29,15 @@ public class ModificationsSearchResult { @Schema(description = "Modification id") private UUID modificationUuid; - @Schema( - description = "Message type" - ) + @Schema(description = "Message type") private String messageType; - @Schema( - description = "Impacted equipment ID" - ) - - private String impactedEquipmentId; - @Schema( - description = "Message values" - ) + @Schema(description = "Message values") private String messageValues; + @Schema(description = "List of impacted equipment IDs") + private List impactedEquipmentIds; + public static ModificationsSearchResult.ModificationsSearchResultBuilder fromModificationEntity(ModificationEntity modificationEntity) { return ModificationsSearchResult.builder() .modificationUuid(modificationEntity.getId()) 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 0fdf5c86e..8bf01014b 100644 --- a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java @@ -403,7 +403,6 @@ public Map> searchNetworkModifications(@No List filteredSearchModificationsResult = rawSearchModificationInfos.stream() .map(result -> findMatchingEquipmentResults(modificationEntitiesById.get(result.getModificationUuid()), result, userInput)) - .flatMap(List::stream) .toList(); return groupSearchResultsByGroupUuid(filteredSearchModificationsResult, rawSearchModificationInfos); @@ -431,14 +430,13 @@ private Map getModificationEntitiesById(List findMatchingEquipmentResults( + private ModificationsSearchResult findMatchingEquipmentResults( ModificationEntity modificationEntity, ModificationApplicationInfos matchedModification, String userInput) { Pattern pattern = Pattern.compile(Pattern.quote(stripAccents(userInput)), Pattern.CASE_INSENSITIVE); - List modificationSearchResults = new ArrayList<>(); - Stream.of( + List impactedEquipmentIds = Stream.of( matchedModification.getCreatedEquipmentIds(), matchedModification.getModifiedEquipmentIds(), matchedModification.getDeletedEquipmentIds() @@ -447,12 +445,11 @@ private List findMatchingEquipmentResults( .flatMap(Collection::stream) .distinct() .filter(id -> pattern.matcher(stripAccents(id)).find()) - .map(id -> ModificationsSearchResult.fromModificationEntity(modificationEntity) - .impactedEquipmentId(id) - .build()) - .forEach(modificationSearchResults::add); + .toList(); - return modificationSearchResults; + return ModificationsSearchResult.fromModificationEntity(modificationEntity) + .impactedEquipmentIds(impactedEquipmentIds) + .build(); } private static String stripAccents(String input) { diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java index 61804e764..94dcc8e3a 100644 --- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java +++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java @@ -1979,7 +1979,8 @@ void testSearchModificationInfos() throws Exception { }); assertEquals(1, networkModificationsResult.size()); modificationsSearchResult = networkModificationsResult.get(TEST_GROUP_ID); - assertEquals(4, modificationsSearchResult.size()); + assertEquals(1, modificationsSearchResult.size()); + assertEquals(4, modificationsSearchResult.getFirst().getImpactedEquipmentIds().size()); assertEquals("GENERATOR_CREATION", modificationsSearchResult.getFirst().getMessageType()); assertEquals("{\"equipmentId\":\"idGenerator1\"}", modificationsSearchResult.getFirst().getMessageValues());