Skip to content

Commit 81e6ca4

Browse files
authored
Fix get elements metadata whith elements not having equipmentType in their specific metadata (#149)
* fix(DirectoryService): fix `getElementsMetadata` to keep elements which pass the `elementTypes` filter but doesn't have a `equipmentType` in their specific metadata Signed-off-by: sBouzols <[email protected]>
1 parent 02d2619 commit 81e6ca4

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

src/main/java/org/gridsuite/explore/server/services/DirectoryService.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,13 @@ public List<ElementAttributes> getElementsMetadata(List<UUID> ids, List<String>
366366

367367
if (!CollectionUtils.isEmpty(equipmentTypes) && !listOfElements.isEmpty()) {
368368
listOfElements = listOfElements.stream()
369-
.filter(element -> "DIRECTORY".equals(element.getType())
370-
|| equipmentTypes.contains(element.getSpecificMetadata().get("equipmentType")))
369+
.filter(element -> {
370+
Object equipmentType = element.getSpecificMetadata().get("equipmentType");
371+
if (equipmentType != null) { // could be null for some elements
372+
return equipmentTypes.contains(equipmentType);
373+
}
374+
return true; // keep other elements
375+
})
371376
.collect(Collectors.toList());
372377
}
373378

src/test/java/org/gridsuite/explore/server/ExploreTest.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ class ExploreTest {
112112
private static final String FILTER_CONTINGENCY_LIST = "filterContingencyList";
113113
private static final String FILTER_CONTINGENCY_LIST_2 = "filterContingencyList2";
114114
private static final String FILTER = "FILTER";
115-
private final Map<String, Object> specificMetadata = Map.of("id", FILTER_UUID);
115+
private final Map<String, Object> specificMetadata = Map.of("equipmentType", "GENERATOR", "id", FILTER_UUID);
116116
private final Map<String, Object> specificMetadata2 = Map.of("equipmentType", "LINE", "id", FILTER_UUID_2);
117117
private final Map<String, Object> caseSpecificMetadata = Map.of("uuid", CASE_UUID, "name", TEST_FILE, "format", "XIIDM");
118118
private final Map<String, Object> modificationSpecificMetadata = Map.of("id", MODIFICATION_UUID, "type", "LOAD_MODIFICATION");
@@ -272,6 +272,8 @@ public MockResponse dispatch(RecordedRequest request) {
272272
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), parametersElementAttributesAsString);
273273
} else if (path.matches("/v1/elements\\?ids=" + FILTER_UUID + "," + FILTER_UUID_2 + "&elementTypes=FILTER") && "GET".equals(request.getMethod())) {
274274
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), "[" + filterAttributesAsString + "," + filter2AttributesAsString + "]");
275+
} else if (path.matches("/v1/elements\\?ids=" + FILTER_UUID + "," + FILTER_UUID_2 + "," + CASE_UUID + "&elementTypes=FILTER,CASE") && "GET".equals(request.getMethod())) {
276+
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), "[" + filterAttributesAsString + "," + filter2AttributesAsString + "," + caseElementAttributesAsString + "]");
275277
} else if (path.matches("/v1/elements\\?ids=" + CASE_UUID) && "GET".equals(request.getMethod())) {
276278
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), "[" + caseElementAttributesAsString + "]");
277279
} else if (path.matches("/v1/elements\\?ids=" + MODIFICATION_UUID) && "GET".equals(request.getMethod())) {
@@ -674,6 +676,7 @@ void testGetElementsMetadata() throws Exception {
674676

675677
ElementAttributes filter1 = new ElementAttributes(FILTER_UUID, FILTER_CONTINGENCY_LIST, FILTER, USER1, 0L, null, specificMetadata);
676678
ElementAttributes filter2 = new ElementAttributes(FILTER_UUID_2, FILTER_CONTINGENCY_LIST_2, FILTER, USER1, 0L, null, specificMetadata2);
679+
ElementAttributes caseElement = new ElementAttributes(CASE_UUID, "case", "CASE", USER1, 0L, null, caseSpecificMetadata);
677680

678681
mockMvc.perform(get("/v1/explore/elements/metadata?ids=" + FILTER_UUID + "," + FILTER_UUID_2 + "&equipmentTypes=&elementTypes=FILTER")
679682
.header("userId", USER1))
@@ -686,7 +689,7 @@ void testGetElementsMetadata() throws Exception {
686689
.header("userId", USER1))
687690
.andExpectAll(
688691
status().isOk(),
689-
content().string(mapper.writeValueAsString(List.of()))
692+
content().string(mapper.writeValueAsString(List.of(filter1)))
690693
);
691694

692695
mockMvc.perform(get("/v1/explore/elements/metadata?ids=" + FILTER_UUID + "," + FILTER_UUID_2 + "&equipmentTypes=LINE&elementTypes=FILTER")
@@ -695,6 +698,20 @@ void testGetElementsMetadata() throws Exception {
695698
status().isOk(),
696699
content().string(mapper.writeValueAsString(List.of(filter2)))
697700
);
701+
702+
mockMvc.perform(get("/v1/explore/elements/metadata?ids=" + FILTER_UUID + "," + FILTER_UUID_2 + "&equipmentTypes=GENERATOR,LINE&elementTypes=FILTER")
703+
.header("userId", USER1))
704+
.andExpectAll(
705+
status().isOk(),
706+
content().string(mapper.writeValueAsString(List.of(filter1, filter2)))
707+
);
708+
709+
mockMvc.perform(get("/v1/explore/elements/metadata?ids=" + FILTER_UUID + "," + FILTER_UUID_2 + "," + CASE_UUID + "&equipmentTypes=GENERATOR&elementTypes=FILTER,CASE")
710+
.header("userId", USER1))
711+
.andExpectAll(
712+
status().isOk(),
713+
content().string(mapper.writeValueAsString(List.of(filter1, caseElement)))
714+
);
698715
}
699716

700717
@Test

0 commit comments

Comments
 (0)