etreschenkov 2024-08-26 18:13:10 +03:00
parent 08243c6964
commit 54ed129de6

View file

@ -95,11 +95,11 @@ public class RegistryController extends AbstractQueueController {
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(value = "/filter", method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getByFilter(@RequestParam(name = "designation", required = false) Optional<List<String>> designations,
@RequestParam(name = "status", required = false) Optional<String> status,
public CommonGetAllResponse getByFilter(@RequestParam(name = "registryCode", required = false) Optional<String> registryCode,
@RequestParam(name = "status", required = false) Optional<List<String>> status,
@RequestParam(name = "pageSize", required = false) Optional<Integer> pageSize,
@RequestParam(name = "pageIndex", required = false) Optional<Integer> pageIndex) {
if (designations.isEmpty() && status.isEmpty()) {
if (registryCode.isEmpty() && status.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_ACCEPTABLE, "Request should have at least one of the parameters: designation, status");
}
@ -107,20 +107,22 @@ public class RegistryController extends AbstractQueueController {
sw.start();
List<ImdgPredicate> filters = new ArrayList<>();
designations.ifPresent(ds -> filters.add(predicateBuilder.in("registryDesignation", ds.stream()
.map(d -> Optional.ofNullable(IEnumKey.getEnumByKey(RegistryDesignation.class, d))
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_ACCEPTABLE, "Unknown registry designation: " + d)))
.map(RegistryDesignation::getKey)
.toArray(String[]::new))));
status.ifPresent(s -> filters.add(predicateBuilder.in("registryStatus", Optional.ofNullable(IEnumKey.getEnumByKey(RegistryStatus.class, s))
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_ACCEPTABLE, "Unknown registry status: " + s))
.getKey())));
registryCode.ifPresent(regex -> filters.add(predicateBuilder.regex("registryCode", regex)));
status.ifPresent(collection -> {
String[] values = collection.stream()
.map(val -> Optional.ofNullable(IEnumKey.getEnumByKey(RegistryStatus.class, val))
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_ACCEPTABLE, "Unknown registry status: " + val)))
.map(RegistryStatus::getKey)
.toArray(String[]::new);
filters.add(predicateBuilder.in("registryStatus", values));
});
AtomicReference<Collection<Map<String, Object>>> all = new AtomicReference<>();
pageIndex.ifPresentOrElse(index -> {
ImdgPredicate filter = predicateBuilder.and(filters.toArray(ImdgPredicate[]::new));
all.set(stateLoader.getAllMetaTransformWithPagination(IMDGDistributedNames.Map_Registry, Registry.class, filter,
index, pageSize.orElse(100)));
pageSize.orElse(10_000), index));
},
() -> {
ImdgPredicate filter = predicateBuilder.and(filters.toArray(ImdgPredicate[]::new));