下面列出了org.springframework.data.domain.Sort#and ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 获取分页请求 带排序
*
* @param sort
* 排序条件
* @return PageRequest
*/
protected PageRequest getPageRequest(Sort sort) {
int page = 0;
int size = 10;
try {
String sortName = request.getParameter("sortName");
String sortOrder = request.getParameter("sortOrder");
if (StringUtils.isNoneBlank(sortName) && StringUtils.isNoneBlank(sortOrder)) {
if (sortOrder.equalsIgnoreCase("desc")) {
sort.and(new Sort(Direction.DESC, sortName));
} else {
sort.and(new Sort(Direction.ASC, sortName));
}
}
page = Integer.parseInt(request.getParameter("pageNumber")) - 1;
size = Integer.parseInt(request.getParameter("pageSize"));
} catch (Exception e) {
e.printStackTrace();
}
PageRequest pageRequest = new PageRequest(page, size, sort);
return pageRequest;
}
public Sort getSorter(Map<String, String> inputParam) {
ArrayList<HashMap<String, String>> sorters = this.parse(inputParam);
Sort sortBy = null;
if (sorters == null) {
return null;
} else if (sorters.isEmpty()) {
sortBy = Sort.by("token").ascending();
} else {
for (HashMap<String, String> sorter : sorters) {
Sort.Direction dir = sorter.get("dir").equalsIgnoreCase("asc") ? Sort.Direction.ASC : Sort.Direction.DESC;
if (sortBy == null) {
sortBy = Sort.by(dir, sorter.get("field"));
} else {
sortBy = sortBy.and(Sort.by(dir, sorter.get("field")));
}
}
}
return sortBy;
}
/**
* Parametric Constructor.
*
* @param definition
* as QueryDefinition
* @param queryConfig
* as Config
* @param sortIds
* as sort
* @param sortStates
* as Sort status
*/
public RolloutBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortIds, final boolean[] sortStates) {
super(definition, queryConfig, sortIds, sortStates);
searchText = getSearchText();
if (sortStates != null && sortStates.length > 0) {
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortIds[0]);
for (int targetId = 1; targetId < sortIds.length; targetId++) {
sort.and(new Sort(sortStates[targetId] ? Direction.ASC : Direction.DESC, (String) sortIds[targetId]));
}
}
}
/**
* Parametric Constructor.
*
* @param definition
* as QueryDefinition
* @param queryConfig
* as Config
* @param sortPropertyIds
* as sort
* @param sortStates
* as Sort status
*/
public RolloutGroupBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortPropertyIds, final boolean[] sortStates) {
super(definition, queryConfig, sortPropertyIds, sortStates);
rolloutId = getRolloutId();
if (sortStates != null && sortStates.length > 0) {
sort = new Sort(sortStates[0] ? ASC : DESC, (String) sortPropertyIds[0]);
for (int targetId = 1; targetId < sortPropertyIds.length; targetId++) {
sort.and(new Sort(sortStates[targetId] ? ASC : DESC, (String) sortPropertyIds[targetId]));
}
}
}
/**
*
* @param definition
* @param queryConfig
* @param sortPropertyIds
* @param sortStates
*/
public TargetFilterBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortPropertyIds, final boolean[] sortStates) {
super(definition, queryConfig, sortPropertyIds, sortStates);
if (HawkbitCommonUtil.isNotNullOrEmpty(queryConfig)) {
searchText = (String) queryConfig.get(SPUIDefinitions.FILTER_BY_TEXT);
if (!StringUtils.isEmpty(searchText)) {
searchText = String.format("%%%s%%", searchText);
}
}
if (sortStates != null && sortStates.length > 0) {
// Initalize sort
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[0]);
// Add sort
for (int tfId = 1; tfId < sortPropertyIds.length; tfId++) {
sort.and(new Sort(sortStates[tfId] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[tfId]));
}
}
}
/**
* Parametric Constructor.
*
* @param definition
* as Def
* @param queryConfig
* as Config
* @param sortIds
* as sort
* @param sortStates
* as Sort status
*/
public CustomTargetBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortIds, final boolean[] sortStates) {
super(definition, queryConfig, sortIds, sortStates);
if (isNotNullOrEmpty(queryConfig)) {
filterQuery = (String) queryConfig.get(FILTER_BY_QUERY);
}
if (sortStates != null && sortStates.length > 0) {
sort = new Sort(sortStates[0] ? ASC : DESC, (String) sortIds[0]);
for (int targetId = 1; targetId < sortIds.length; targetId++) {
sort.and(new Sort(sortStates[targetId] ? ASC : DESC, (String) sortIds[targetId]));
}
}
}
/**
* Parametric Constructor.
*
* @param definition
* as Def
* @param queryConfig
* as Config
* @param sortIds
* as sort
* @param sortStates
* as Sort status
*/
public ArtifactBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortIds, final boolean[] sortStates) {
super(definition, queryConfig, sortIds, sortStates);
if (HawkbitCommonUtil.isNotNullOrEmpty(queryConfig)) {
baseSwModuleId = (Long) queryConfig.get(SPUIDefinitions.BY_BASE_SOFTWARE_MODULE);
}
if (!ArrayUtils.isEmpty(sortStates)) {
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortIds[0]);
for (int targetId = 1; targetId < sortIds.length; targetId++) {
sort.and(new Sort(sortStates[targetId] ? Direction.ASC : Direction.DESC, (String) sortIds[targetId]));
}
}
}
/**
* Bean query for retrieving beans/objects of type.
*
* @param definition
* query definition
* @param queryConfig
* as queryConfig
* @param sortPropertyIds
* property id's for sorting
* @param sortStates
* sort states
*/
public DistributionBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortPropertyIds, final boolean[] sortStates) {
super(definition, queryConfig, sortPropertyIds, sortStates);
if (HawkbitCommonUtil.isNotNullOrEmpty(queryConfig)) {
distributionTags = (Collection<String>) queryConfig.get(SPUIDefinitions.FILTER_BY_TAG);
searchText = (String) queryConfig.get(SPUIDefinitions.FILTER_BY_TEXT);
noTagClicked = (Boolean) queryConfig.get(SPUIDefinitions.FILTER_BY_NO_TAG);
pinnedTarget = (TargetIdName) queryConfig.get(SPUIDefinitions.ORDER_BY_PINNED_TARGET);
if (!StringUtils.isEmpty(searchText)) {
searchText = String.format("%%%s%%", searchText);
}
}
if (sortStates != null && sortStates.length > 0) {
// Initalize sort
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[0]);
// Add sort
for (int distId = 1; distId < sortPropertyIds.length; distId++) {
sort.and(new Sort(sortStates[distId] ? Direction.ASC : Direction.DESC,
(String) sortPropertyIds[distId]));
}
}
}
/**
* Parametric Constructor.
*
* @param definition
* QueryDefinition contains the query properties.
* @param queryConfig
* Implementation specific configuration.
* @param sortPropertyIds
* The properties participating in sort.
* @param sortStates
* The ascending or descending state of sort properties.
*/
public ActionStatusMsgBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortPropertyIds, final boolean[] sortStates) {
super(definition, queryConfig, sortPropertyIds, sortStates);
if (isNotNullOrEmpty(queryConfig)) {
currentSelectedActionStatusId = (Long) queryConfig.get(SPUIDefinitions.MESSAGES_BY_ACTIONSTATUS);
noMessageText = (String) queryConfig.get(SPUIDefinitions.NO_MSG_PROXY);
}
if (sortStates != null && sortStates.length > 0) {
// Initialize sort
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[0]);
// Add sort
for (int distId = 1; distId < sortPropertyIds.length; distId++) {
sort.and(new Sort(sortStates[distId] ? Direction.ASC : Direction.DESC,
(String) sortPropertyIds[distId]));
}
}
}
/**
* Parametric Constructor.
*
* @param definition
* QueryDefinition contains the query properties.
* @param queryConfig
* Implementation specific configuration.
* @param sortPropertyIds
* The properties participating in sort.
* @param sortStates
* The ascending or descending state of sort properties.
*/
public ActionBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortPropertyIds, final boolean[] sortStates) {
super(definition, queryConfig, sortPropertyIds, sortStates);
if (isNotNullOrEmpty(queryConfig)) {
currentSelectedConrollerId = (String) queryConfig.get(SPUIDefinitions.ACTIONS_BY_TARGET);
}
if (sortStates == null || sortStates.length <= 0) {
return;
}
// Initialize sort
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[0]);
// Add sort
for (int distId = 1; distId < sortPropertyIds.length; distId++) {
sort.and(new Sort(sortStates[distId] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[distId]));
}
}
/**
* Parametric Constructor.
*
* @param definition
* QueryDefinition contains the query properties.
* @param queryConfig
* Implementation specific configuration.
* @param sortPropertyIds
* The properties participating in sort.
* @param sortStates
* The ascending or descending state of sort properties.
*/
public ActionStatusBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortPropertyIds, final boolean[] sortStates) {
super(definition, queryConfig, sortPropertyIds, sortStates);
if (isNotNullOrEmpty(queryConfig)) {
currentSelectedActionId = (Long) queryConfig.get(SPUIDefinitions.ACTIONSTATES_BY_ACTION);
}
if (sortStates != null && sortStates.length > 0) {
// Initialize sort
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[0]);
// Add sort
for (int distId = 1; distId < sortPropertyIds.length; distId++) {
sort.and(new Sort(sortStates[distId] ? Direction.ASC : Direction.DESC,
(String) sortPropertyIds[distId]));
}
}
}
private void merge(Sort sort, Pageable page) {
if (sort == null) {
sort = this.sort;
}
if (page == null) {
page = this.page;
}
//合并排序
if (sort == null) {
this.sort = page != null ? page.getSort() : null;
} else {
this.sort = (page != null ? sort.and(page.getSort()) : sort);
}
//把排序合并到page中
if (page != null) {
this.page = new PageRequest(page.getPageNumber(), page.getPageSize(), this.sort);
} else {
this.page = null;
}
}
public DocumentQuery with(@NonNull Sort sort) {
if (sort.isSorted()) {
this.sort = sort.and(this.sort);
}
return this;
}
/**
* Parametric Constructor.
*
* @param definition
* as QueryDefinition
* @param queryConfig
* as Config
* @param sortPropertyIds
* as sort
* @param sortStates
* as Sort status
*/
public DistributionBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortPropertyIds, final boolean[] sortStates) {
super(definition, queryConfig, sortPropertyIds, sortStates);
if (sortStates.length > 0) {
// Initalize sort
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[0]);
// Add sort
for (int distId = 1; distId < sortPropertyIds.length; distId++) {
sort.and(new Sort(sortStates[distId] ? Direction.ASC : Direction.DESC,
(String) sortPropertyIds[distId]));
}
}
}
/**
* Parametric Constructor.
*
* @param definition
* as Def
* @param queryConfig
* as Config
* @param sortIds
* as sort
* @param sortStates
* as Sort status
*/
public TargetBeanQuery(final QueryDefinition definition, final Map<String, Object> queryConfig,
final Object[] sortIds, final boolean[] sortStates) {
super(definition, queryConfig, sortIds, sortStates);
if (HawkbitCommonUtil.isNotNullOrEmpty(queryConfig)) {
status = (Collection<TargetUpdateStatus>) queryConfig.get(SPUIDefinitions.FILTER_BY_STATUS);
overdueState = (Boolean) queryConfig.get(SPUIDefinitions.FILTER_BY_OVERDUE_STATE);
targetTags = (String[]) queryConfig.get(SPUIDefinitions.FILTER_BY_TAG);
noTagClicked = (Boolean) queryConfig.get(SPUIDefinitions.FILTER_BY_NO_TAG);
distributionId = (Long) queryConfig.get(SPUIDefinitions.FILTER_BY_DISTRIBUTION);
searchText = (String) queryConfig.get(SPUIDefinitions.FILTER_BY_TEXT);
targetFilterQueryId = (Long) queryConfig.get(SPUIDefinitions.FILTER_BY_TARGET_FILTER_QUERY);
if (!StringUtils.isEmpty(searchText)) {
searchText = String.format("%%%s%%", searchText);
}
pinnedDistId = (Long) queryConfig.get(SPUIDefinitions.ORDER_BY_DISTRIBUTION);
}
if (sortStates != null && sortStates.length > 0) {
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortIds[0]);
for (int targetId = 1; targetId < sortIds.length; targetId++) {
sort.and(new Sort(sortStates[targetId] ? Direction.ASC : Direction.DESC, (String) sortIds[targetId]));
}
}
}
private void setupSorting(final Object[] sortPropertyIds, final boolean[] sortStates) {
if (sortStates != null && sortStates.length > 0) {
// Initialize sort
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[0]);
// Add sort
for (int distId = 1; distId < sortPropertyIds.length; distId++) {
sort = sort.and(new Sort(sortStates[distId] ? Direction.ASC : Direction.DESC,
(String) sortPropertyIds[distId]));
}
}
}
@Override
public Page<Transaction> findRechargeByEmailAndDateBetweenAndRemark(final String email, final Date beginDate, final Date endDate, final String remark, Integer page, Integer size) {
Sort sort = new Sort(Direction.DESC, "datetime");
sort = sort.and(new Sort(Direction.DESC, "type"));
sort = sort.and(new Sort(Direction.DESC, "sourceUserAccount.user.email"));
Pageable pageable = new PageRequest(page, size == null ? Integer.valueOf(HermesConstants.DEFAULT_PAGE_SIZE) : size, sort);
return transactionRepository.findAll(new Specification<Transaction>() {
@Override
public Predicate toPredicate(Root<Transaction> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
if (StringUtils.isNotEmpty(email)) {
list.add(cb.like(root.<UserAccount> get("sourceUserAccount").<User> get("user").<String> get("email"), "%" + email.trim() + "%"));
}
if (StringUtils.isNotEmpty(remark)) {
list.add(cb.like(root.<String> get("remark"), "%" + remark.trim() + "%"));
}
if (beginDate != null && endDate != null) {
try {
list.add(cb.greaterThanOrEqualTo(root.<Date> get("datetime"), beginDate));
list.add(cb.lessThanOrEqualTo(root.<Date> get("datetime"), endDate));
} catch (Exception e) {
Logger.error("充值明细列表查询:格式化开始时间[" + beginDate + "],结束时间[" + endDate + "],异常,忽略时间查询条件");
}
}
list.add(cb.notEqual(root.<UserAccount> get("sourceUserAccount").<User> get("user").<String> get("email"), HermesConstants.CROP_EMAIL));
List<String> inList = new ArrayList<String>();
inList.add(Transaction.Type.CHARGE);
inList.add(Transaction.Type.REVERSE_CHARGE);
Predicate in = ((root.<String> get("type")).in(inList));
list.add(in);
return cb.and(list.toArray(new Predicate[list.size()]));
}
}, pageable);
}
private Sort getSort(String sortNamePrefix, Map<String, String[]> sortMap, Pageable defaultPageRequest, NativeWebRequest webRequest) {
Sort sort = null;
List<OrderedSort> orderedSortList = Lists.newArrayList();
for (String name : sortMap.keySet()) {
//sort1.abc
int propertyIndex = name.indexOf(".") + 1;
int order = 0;
String orderStr = name.substring(sortNamePrefix.length(), propertyIndex - 1);
try {
if (!StringUtils.isEmpty(orderStr)) {
order = Integer.valueOf(orderStr);
}
} catch (Exception e) {
}
String property = name.substring(propertyIndex);
assertSortProperty(property);
Sort.Direction direction = Sort.Direction.fromString(sortMap.get(name)[0]);
orderedSortList.add(new OrderedSort(property, direction, order));
}
Collections.sort(orderedSortList);
for (OrderedSort orderedSort : orderedSortList) {
Sort newSort = new Sort(orderedSort.direction, orderedSort.property);
if (sort == null) {
sort = newSort;
} else {
sort = sort.and(newSort);
}
}
if (sort == null) {
return defaultPageRequest.getSort();
}
return sort;
}
private StructuredQuery applyQueryBody(Object[] parameters,
Builder builder, boolean total, boolean singularResult, Cursor cursor) {
ParameterAccessor paramAccessor = new ParametersParameterAccessor(getQueryMethod().getParameters(), parameters);
if (this.tree.hasPredicate()) {
applySelectWithFilter(parameters, builder);
}
Pageable pageable = paramAccessor.getPageable();
Integer limit = null;
Integer offset = null;
if (singularResult || this.tree.isExistsProjection()) {
limit = 1;
}
else if (this.tree.isLimiting()) {
limit = this.tree.getMaxResults();
}
if (!singularResult && !total && pageable.isPaged()) {
limit = pageable.getPageSize();
}
Sort sort = this.tree.getSort();
if (getQueryMethod().getParameters().hasPageableParameter()) {
sort = sort.and(pageable.getSort());
}
if (getQueryMethod().getParameters().hasSortParameter()) {
sort = sort.and(paramAccessor.getSort());
}
if (pageable.isPaged() && !total) {
offset = (int) pageable.getOffset();
}
Cursor cursorToApply = null;
if (cursor != null) {
cursorToApply = cursor;
}
else if (pageable instanceof DatastorePageable) {
cursorToApply = ((DatastorePageable) pageable).toCursor();
}
DatastoreTemplate.applyQueryOptions(
builder, new DatastoreQueryOptions.Builder().setLimit(limit).setOffset(offset).setSort(sort)
.setCursor(cursorToApply).build(),
this.datastorePersistentEntity);
return builder.build();
}