Skip to content

Commit b3288ed

Browse files
authored
Group the network modifications search results by modification id (#719)
Previously, the modification search returned a list of modified equipments for each node, with the associated modification id. Now, for each node, a list of modifications is returned, and each modification is associated with a list of impacted equipments. Impacted equipments are therefore grouped by modificationId.
1 parent 82d3789 commit b3288ed

File tree

3 files changed

+15
-21
lines changed

3 files changed

+15
-21
lines changed

src/main/java/org/gridsuite/modification/server/dto/ModificationsSearchResult.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
import lombok.NoArgsConstructor;
1414
import org.gridsuite.modification.server.entities.ModificationEntity;
1515

16+
import java.util.List;
1617
import java.util.UUID;
1718

1819
/**
1920
* @author Souissi Maissa <souissi.maissa at rte-france.com>
21+
* @author Caroline Jeandat <caroline.jeandat at rte-france.com>
2022
*/
2123
@Getter
2224
@NoArgsConstructor
@@ -27,21 +29,15 @@ public class ModificationsSearchResult {
2729
@Schema(description = "Modification id")
2830
private UUID modificationUuid;
2931

30-
@Schema(
31-
description = "Message type"
32-
)
32+
@Schema(description = "Message type")
3333
private String messageType;
3434

35-
@Schema(
36-
description = "Impacted equipment ID"
37-
)
38-
39-
private String impactedEquipmentId;
40-
@Schema(
41-
description = "Message values"
42-
)
35+
@Schema(description = "Message values")
4336
private String messageValues;
4437

38+
@Schema(description = "List of impacted equipment IDs")
39+
private List<String> impactedEquipmentIds;
40+
4541
public static ModificationsSearchResult.ModificationsSearchResultBuilder fromModificationEntity(ModificationEntity modificationEntity) {
4642
return ModificationsSearchResult.builder()
4743
.modificationUuid(modificationEntity.getId())

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

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,6 @@ public Map<UUID, List<ModificationsSearchResult>> searchNetworkModifications(@No
403403

404404
List<ModificationsSearchResult> filteredSearchModificationsResult = rawSearchModificationInfos.stream()
405405
.map(result -> findMatchingEquipmentResults(modificationEntitiesById.get(result.getModificationUuid()), result, userInput))
406-
.flatMap(List::stream)
407406
.toList();
408407

409408
return groupSearchResultsByGroupUuid(filteredSearchModificationsResult, rawSearchModificationInfos);
@@ -431,14 +430,13 @@ private Map<UUID, ModificationEntity> getModificationEntitiesById(List<Modificat
431430
.collect(Collectors.toMap(ModificationEntity::getId, Function.identity()));
432431
}
433432

434-
private List<ModificationsSearchResult> findMatchingEquipmentResults(
433+
private ModificationsSearchResult findMatchingEquipmentResults(
435434
ModificationEntity modificationEntity,
436435
ModificationApplicationInfos matchedModification,
437436
String userInput) {
438437
Pattern pattern = Pattern.compile(Pattern.quote(stripAccents(userInput)), Pattern.CASE_INSENSITIVE);
439438

440-
List<ModificationsSearchResult> modificationSearchResults = new ArrayList<>();
441-
Stream.of(
439+
List<String> impactedEquipmentIds = Stream.of(
442440
matchedModification.getCreatedEquipmentIds(),
443441
matchedModification.getModifiedEquipmentIds(),
444442
matchedModification.getDeletedEquipmentIds()
@@ -447,12 +445,11 @@ private List<ModificationsSearchResult> findMatchingEquipmentResults(
447445
.flatMap(Collection::stream)
448446
.distinct()
449447
.filter(id -> pattern.matcher(stripAccents(id)).find())
450-
.map(id -> ModificationsSearchResult.fromModificationEntity(modificationEntity)
451-
.impactedEquipmentId(id)
452-
.build())
453-
.forEach(modificationSearchResults::add);
448+
.toList();
454449

455-
return modificationSearchResults;
450+
return ModificationsSearchResult.fromModificationEntity(modificationEntity)
451+
.impactedEquipmentIds(impactedEquipmentIds)
452+
.build();
456453
}
457454

458455
private static String stripAccents(String input) {

src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1979,7 +1979,8 @@ void testSearchModificationInfos() throws Exception {
19791979
});
19801980
assertEquals(1, networkModificationsResult.size());
19811981
modificationsSearchResult = networkModificationsResult.get(TEST_GROUP_ID);
1982-
assertEquals(4, modificationsSearchResult.size());
1982+
assertEquals(1, modificationsSearchResult.size());
1983+
assertEquals(4, modificationsSearchResult.getFirst().getImpactedEquipmentIds().size());
19831984
assertEquals("GENERATOR_CREATION", modificationsSearchResult.getFirst().getMessageType());
19841985
assertEquals("{\"equipmentId\":\"idGenerator1\"}", modificationsSearchResult.getFirst().getMessageValues());
19851986

0 commit comments

Comments
 (0)