private static List<FieldSortBuilder> sort(Query query, ElasticsearchPersistentEntity<?> entity) { if (query.getSort() == null || query.getSort().isUnsorted()) { return Collections.emptyList(); } List<FieldSortBuilder> mappedSort = new ArrayList<>(); for (Sort.Order order : query.getSort()) { ElasticsearchPersistentProperty property = entity.getPersistentProperty(order.getProperty()); String fieldName = property != null ? property.getFieldName() : order.getProperty(); FieldSortBuilder sort = SortBuilders.fieldSort(fieldName) .order(order.getDirection().isDescending() ? SortOrder.DESC : SortOrder.ASC); if (order.getNullHandling() == Sort.NullHandling.NULLS_FIRST) { sort.missing("_first"); } else if (order.getNullHandling() == Sort.NullHandling.NULLS_LAST) { sort.missing("_last"); } mappedSort.add(sort); } return mappedSort; }
for (Sort.Order order : query.getSort()) { FieldSortBuilder sort = SortBuilders.fieldSort(order.getProperty()) .order(order.getDirection().isDescending() ? SortOrder.DESC : SortOrder.ASC); if (order.getNullHandling() == Sort.NullHandling.NULLS_FIRST) { sort.missing("_first");
@SuppressWarnings("unchecked") public Page<Revision<N, T>> findRevisions(ID id, Pageable pageable) { Class<T> type = entityInformation.getJavaType(); AuditReader reader = AuditReaderFactory.get(entityManager); List<Number> revisionNumbers = getRevisions((ID) id, (Class<T>) type, reader); boolean isDescending = RevisionSort.getRevisionDirection(pageable.getSort()).isDescending(); if (isDescending) { Collections.reverse(revisionNumbers); } if ( pageable.getOffset() >= revisionNumbers.size()) { return Page.empty(pageable); } long upperBound = pageable.getOffset() + pageable.getPageSize(); upperBound = upperBound > revisionNumbers.size() ? revisionNumbers.size() : upperBound; List<? extends Number> subList = revisionNumbers.subList(toInt(pageable.getOffset()), toInt(upperBound)); Revisions<N, T> revisions = getEntitiesForRevisions((List<N>) subList, id, reader); revisions = isDescending ? revisions.reverse() : revisions; return new PageImpl<Revision<N, T>>(revisions.getContent(), pageable, revisionNumbers.size()); }
/** * Returns whether sorting for this property shall be descending. * * @return * @since 1.13 */ public boolean isDescending() { return this.direction.isDescending(); }