Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // CONTROLLER:
- @GetMapping
- public ResponseEntity<Page<ResourceDto>> getResources(
- @RequestParam int page,
- @RequestParam int size,
- @RequestParam(required = false) Map<String, String> filters) {
- Page<ResourceDto> response=resourceService.search(page, size, filters);
- return ResponseEntity.ok(response);
- }
- // SERVICE:
- public Page<ResourceDto> search(int page, int size, Map<String, String> filters){
- String tenantId=TenantContext.getCurrentTenant();
- Pageable pageable= PageRequest.of(page, size, Sort.by("createdOn").descending());
- Specification<Resource> specification=(root, query, criteriaBuilder) -> {
- Predicate predicate=criteriaBuilder.equal(root.get("tenantId"), tenantId);
- if(filters!=null){
- for(Map.Entry<String, String> filter:filters.entrySet()){
- String key = filter.getKey();
- String value = filter.getValue();
- if(key.equals("name") || key.equals("description") || key.equals("artefact")|| key.equals("link") || key.equals("language")) {
- if(key.equals("artefact") || key.equals("link")){
- predicate=criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get(key), Boolean.parseBoolean(value)));
- }else{
- predicate=criteriaBuilder.and(predicate, criteriaBuilder.like(root.get(key), "%"+value+"%"));
- }
- }
- }
- }
- return predicate;
- };
- Page<Resource> resources = resourceRepository.findAll(specification, pageable);
- List<ResourceDto> convertedResources=resourceMapper.listResourceToListResourceDto(resources.getContent());
- return new PageImpl<>(convertedResources, pageable, resources.getTotalElements());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement