Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects

In-memory sorting of roles returned by RoleService#search

Merged Jean Claude Correale requested to merge feature/fix-roles-search-sorting into develop
@@ -21,7 +21,6 @@ import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import lombok.SneakyThrows;
@@ -227,23 +226,23 @@ public class RoleServiceImpl implements RoleService {
private Comparator<? super RoleDTO> toComparator(Sort sort) {
return sort.stream()
.flatMap(order -> {
try {
return Optional.ofNullable(getPropertyDescriptor(order)).flatMap(toComparator(order)).stream();
} catch (BeansException e) {
return Stream.empty();
}
})
.flatMap(this::toComparator)
.reduce(Comparator::thenComparing)
.orElse(unsortedComparator());
}
private static PropertyDescriptor getPropertyDescriptor(Sort.Order order) {
return BeanUtils.getPropertyDescriptor(RoleDTO.class, order.getProperty());
private Stream<Comparator<RoleDTO>> toComparator(Sort.Order order) {
try {
return Optional.ofNullable(getPropertyDescriptor(order))
.flatMap(property -> toComparator(property, order.getDirection()))
.stream();
} catch (BeansException e) {
return Stream.empty();
}
}
private static Function<PropertyDescriptor, Optional<Comparator<RoleDTO>>> toComparator(Sort.Order order) {
return property -> toComparator(property, order.getDirection());
private static PropertyDescriptor getPropertyDescriptor(Sort.Order order) {
return BeanUtils.getPropertyDescriptor(RoleDTO.class, order.getProperty());
}
private static Optional<Comparator<RoleDTO>> toComparator(PropertyDescriptor property, Sort.Direction direction) {
Loading