use of org.springframework.data.domain.Sort.Order in project spring-data-commons by spring-projects.
the class QSortUnitTests method shouldSupportSortByOperatorExpressions.
// DATACMNS-566
@Test
public void shouldSupportSortByOperatorExpressions() {
QUser user = QUser.user;
QSort sort = new QSort(user.dateOfBirth.yearMonth().asc());
Sort result = sort.and(Sort.by(Direction.ASC, "lastname"));
assertThat(result).hasSize(2);
assertThat(result).contains(new Order(Direction.ASC, "lastname"), new Order(Direction.ASC, user.dateOfBirth.yearMonth().toString()));
}
use of org.springframework.data.domain.Sort.Order in project spring-data-commons by spring-projects.
the class QSortUnitTests method shouldCreateSortForDeepNestedPathCorrectly.
// DATACMNS-621
@Test
public void shouldCreateSortForDeepNestedPathCorrectly() {
QSort sort = new QSort(wrapperForUserWrapper.wrapper.user.firstname.asc());
assertThat(sort).contains(new Order(Direction.ASC, "wrapper.user.firstname"));
}
use of org.springframework.data.domain.Sort.Order in project spring-data-commons by spring-projects.
the class QSortUnitTests method shouldCreateSortForNestedPathCorrectly.
// DATACMNS-621
@Test
public void shouldCreateSortForNestedPathCorrectly() {
QSort sort = new QSort(userWrapper.user.firstname.asc());
assertThat(sort).contains(new Order(Direction.ASC, "user.firstname"));
}
use of org.springframework.data.domain.Sort.Order in project spring-data-commons by spring-projects.
the class QSortUnitTests method handlesPlainStringPathsCorrectly.
// DATACMNS-755
@Test
public void handlesPlainStringPathsCorrectly() {
StringPath path = new PathBuilderFactory().create(User.class).getString("firstname");
QSort sort = new QSort(new OrderSpecifier<>(com.querydsl.core.types.Order.ASC, path));
assertThat(sort).contains(new Order(Direction.ASC, "firstname"));
}
use of org.springframework.data.domain.Sort.Order in project spring-data-commons by spring-projects.
the class SortHandlerMethodArgumentResolver method legacyFoldExpressions.
/**
* Folds the given {@link Sort} instance into two expressions. The first being the property list, the second being the
* direction.
*
* @throws IllegalArgumentException if a {@link Sort} with multiple {@link Direction}s has been handed in.
* @param sort must not be {@literal null}.
* @return
*/
protected List<String> legacyFoldExpressions(Sort sort) {
List<String> expressions = new ArrayList<>();
ExpressionBuilder builder = null;
for (Order order : sort) {
Direction direction = order.getDirection();
if (builder == null) {
builder = new ExpressionBuilder(direction);
} else if (!builder.hasSameDirectionAs(order)) {
throw new IllegalArgumentException(String.format("%s in legacy configuration only supports a single direction to sort by!", getClass().getSimpleName()));
}
builder.add(order.getProperty());
}
return builder == null ? Collections.emptyList() : builder.dumpExpressionIfPresentInto(expressions);
}
Aggregations