Skip to content

Commit fb9292d

Browse files
committed
Add endpoint to process filters and return Identifiables attributes list
1 parent b5ff98c commit fb9292d

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/main/java/org/gridsuite/filter/server/FilterController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,17 @@ public ResponseEntity<List<FilterEquipments>> exportFilters(@RequestParam("ids")
192192
.body(ret);
193193
}
194194

195+
@GetMapping(value = "/filters/evaluate/identifiables", produces = MediaType.APPLICATION_JSON_VALUE)
196+
@Operation(summary = "Export matched identifiables elements to JSON format")
197+
@ApiResponses(value = {
198+
@ApiResponse(responseCode = "200", description = "The list of matched elements")
199+
})
200+
public ResponseEntity<List<IdentifiableAttributes>> evaluateFilters(@RequestParam("ids") List<UUID> ids,
201+
@RequestParam(value = "networkUuid") UUID networkUuid) {
202+
List<IdentifiableAttributes> identifiableAttributes = service.evaluateFilters(ids, networkUuid);
203+
return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(identifiableAttributes);
204+
}
205+
195206
@PostMapping(value = "/filters/evaluate", produces = MediaType.APPLICATION_JSON_VALUE)
196207
@Operation(summary = "Export matched elements to JSON format")
197208
@ApiResponses(value = {

src/main/java/org/gridsuite/filter/server/FilterService.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,24 @@ public List<IdentifiableAttributes> evaluateFilter(AbstractFilter filter, UUID n
242242
return getIdentifiableAttributes(filter, networkUuid, variantId, filterLoader);
243243
}
244244

245+
@Transactional(readOnly = true)
246+
public List<IdentifiableAttributes> evaluateFilters(List<UUID> filters, UUID networkUuid) {
247+
Map<String, IdentifiableAttributes> result = new HashMap<>();
248+
filters.forEach((UUID filterUuid)-> {
249+
Optional<AbstractFilter> optFilter = getFilterFromRepository(filterUuid);
250+
if (optFilter.isEmpty()) {
251+
return;
252+
}
253+
AbstractFilter filter = optFilter.get();
254+
Objects.requireNonNull(filter);
255+
FilterLoader filterLoader = new FilterLoaderImpl(filterRepositories);
256+
List<IdentifiableAttributes> temp = getIdentifiableAttributes(filter, networkUuid, null, filterLoader);
257+
temp.forEach(element -> result.put(element.getId(), element));
258+
}
259+
);
260+
return result.values().stream().toList();
261+
}
262+
245263
@Transactional(readOnly = true)
246264
public Optional<List<IdentifiableAttributes>> exportFilter(UUID id, UUID networkUuid, String variantId) {
247265
Objects.requireNonNull(id);

0 commit comments

Comments
 (0)