List of usage examples for org.springframework.data.domain Pageable getSort
Sort getSort();
From source file:org.wallride.repository.CommentRepositoryImpl.java
@Override public Page<Comment> search(CommentSearchRequest request, Pageable pageable) { FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager); QueryBuilder qb = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Comment.class) .get();//from w w w .j a va 2 s.c o m @SuppressWarnings("rawtypes") BooleanJunction<BooleanJunction> junction = qb.bool(); junction.must(qb.all().createQuery()); if (StringUtils.hasText(request.getKeyword())) { Analyzer analyzer = fullTextEntityManager.getSearchFactory().getAnalyzer("synonyms"); String[] fields = new String[] { "authorName", "content" }; MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, analyzer); parser.setDefaultOperator(QueryParser.Operator.AND); Query query = null; try { query = parser.parse(request.getKeyword()); } catch (ParseException e1) { try { query = parser.parse(QueryParser.escape(request.getKeyword())); } catch (ParseException e2) { throw new RuntimeException(e2); } } junction.must(query); } if (StringUtils.hasText(request.getLanguage())) { junction.must(qb.keyword().onField("post.language").matching(request.getLanguage()).createQuery()); } if (request.getPostId() != null) { junction.must(qb.keyword().onField("post.id").matching(request.getPostId()).createQuery()); } if (request.getApproved() != null) { junction.must(qb.keyword().onField("approved").matching(request.getApproved()).createQuery()); } Query searchQuery = junction.createQuery(); Session session = (Session) entityManager.getDelegate(); Criteria criteria = session.createCriteria(Comment.class).setFetchMode("post", FetchMode.JOIN) .setFetchMode("author", FetchMode.JOIN); Sort sort = null; if (pageable.getSort() != null) { if (pageable.getSort().getOrderFor("date") != null) { Order order = pageable.getSort().getOrderFor("date"); sort = new Sort( new SortField("sortDate", SortField.Type.STRING, order.getDirection().equals(Direction.DESC)), new SortField("sortId", SortField.Type.LONG, order.getDirection().equals(Direction.DESC))); } } if (sort == null) { sort = new Sort(new SortField("sortDate", SortField.Type.STRING), new SortField("sortId", SortField.Type.LONG)); } FullTextQuery persistenceQuery = fullTextEntityManager.createFullTextQuery(searchQuery, Comment.class) .setCriteriaQuery(criteria).setSort(sort); persistenceQuery.setFirstResult(pageable.getOffset()); persistenceQuery.setMaxResults(pageable.getPageSize()); int resultSize = persistenceQuery.getResultSize(); @SuppressWarnings("unchecked") List<Comment> results = persistenceQuery.getResultList(); return new PageImpl<>(results, pageable, resultSize); }
From source file:org.dspace.app.rest.converter.DiscoverResultConverter.java
private void setRequestInformation(final Context context, final String query, final String dsoType, final String configurationName, final String scope, final List<SearchFilter> searchFilters, final Pageable page, final SearchResultsRest resultsRest) { resultsRest.setQuery(query);//from www . j av a2 s.co m resultsRest.setConfigurationName(configurationName); resultsRest.setDsoType(dsoType); resultsRest.setScope(scope); if (page != null && page.getSort() != null && page.getSort().iterator().hasNext()) { Sort.Order order = page.getSort().iterator().next(); resultsRest.setSort(order.getProperty(), order.getDirection().name()); } SearchQueryConverter searchQueryConverter = new SearchQueryConverter(); List<SearchFilter> transformedFilters = searchQueryConverter.convert(searchFilters); SearchFilterToAppliedFilterConverter searchFilterToAppliedFilterConverter = new SearchFilterToAppliedFilterConverter(); for (SearchFilter searchFilter : CollectionUtils.emptyIfNull(transformedFilters)) { resultsRest.addAppliedFilter( searchFilterToAppliedFilterConverter.convertSearchFilter(context, searchFilter)); } }
From source file:org.dspace.app.rest.repository.BrowseEntryLinkRepository.java
public Page<BrowseEntryRest> listBrowseEntries(HttpServletRequest request, String browseName, Pageable pageable, String projection) throws BrowseException, SQLException { // FIXME this should be bind automatically and available as method // argument//from w ww .ja v a 2 s . co m String scope = null; if (request != null) { scope = request.getParameter("scope"); } Context context = obtainContext(); BrowseEngine be = new BrowseEngine(context); BrowserScope bs = new BrowserScope(context); DSpaceObject scopeObj = null; if (scope != null) { UUID uuid = UUID.fromString(scope); scopeObj = communityService.find(context, uuid); if (scopeObj == null) { scopeObj = collectionService.find(context, uuid); } } // process the input, performing some inline validation final BrowseIndex bi; if (StringUtils.isNotEmpty(browseName)) { bi = BrowseIndex.getBrowseIndex(browseName); } else { bi = null; } if (bi == null) { throw new IllegalArgumentException("Unknown browse index"); } if (!bi.isMetadataIndex()) { throw new IllegalStateException("The requested browse haven't metadata entries"); } // set up a BrowseScope and start loading the values into it bs.setBrowseIndex(bi); Sort sort = null; if (pageable != null) { sort = pageable.getSort(); } if (sort != null) { Iterator<Order> orders = sort.iterator(); while (orders.hasNext()) { bs.setOrder(orders.next().getDirection().name()); } } // bs.setFilterValue(value != null?value:authority); // bs.setFilterValueLang(valueLang); // bs.setJumpToItem(focus); // bs.setJumpToValue(valueFocus); // bs.setJumpToValueLang(valueFocusLang); // bs.setStartsWith(startsWith); if (pageable != null) { bs.setOffset(pageable.getOffset()); bs.setResultsPerPage(pageable.getPageSize()); } // bs.setEtAl(etAl); // bs.setAuthorityValue(authority); if (scopeObj != null) { bs.setBrowseContainer(scopeObj); } BrowseInfo binfo = be.browse(bs); Pageable pageResultInfo = new PageRequest((binfo.getStart() - 1) / binfo.getResultsPerPage(), binfo.getResultsPerPage()); Page<BrowseEntryRest> page = new PageImpl<String[]>(Arrays.asList(binfo.getStringResults()), pageResultInfo, binfo.getTotal()).map(converter); page.forEach(new Consumer<BrowseEntryRest>() { @Override public void accept(BrowseEntryRest t) { t.setBrowseIndex(bixConverter.convert(bi)); } }); return page; }
From source file:org.dspace.app.rest.repository.BrowseItemLinkRepository.java
public Page<ItemRest> listBrowseItems(HttpServletRequest request, String browseName, Pageable pageable, String projection) throws BrowseException, SQLException { //FIXME these should be bind automatically and available as method arguments String scope = null;/*from w w w .ja v a 2s .co m*/ String filterValue = null; String filterAuthority = null; if (request != null) { scope = request.getParameter("scope"); filterValue = request.getParameter("filterValue"); filterAuthority = request.getParameter("filterAuthority"); } Context context = obtainContext(); BrowseEngine be = new BrowseEngine(context); BrowserScope bs = new BrowserScope(context); DSpaceObject scopeObj = null; if (scope != null) { UUID uuid = UUID.fromString(scope); scopeObj = communityService.find(context, uuid); if (scopeObj == null) { scopeObj = collectionService.find(context, uuid); } } // process the input, performing some inline validation BrowseIndex bi = null; if (StringUtils.isNotEmpty(browseName)) { bi = BrowseIndex.getBrowseIndex(browseName); } if (bi == null) { throw new IllegalArgumentException("Unknown browse index"); } if (!bi.isItemIndex() && (filterAuthority == null && filterValue == null)) { throw new IllegalStateException( "The requested browse doesn't provide direct access to items you must specify a filter"); } if (!bi.isMetadataIndex() && (filterAuthority != null || filterValue != null)) { throw new IllegalStateException("The requested browse doesn't support filtering"); } // set up a BrowseScope and start loading the values into it bs.setBrowseIndex(bi); Sort sort = null; if (pageable != null) { sort = pageable.getSort(); } if (sort != null) { Iterator<Order> orders = sort.iterator(); while (orders.hasNext()) { Order order = orders.next(); bs.setOrder(order.getDirection().name()); String sortBy; if (!StringUtils.equals("default", order.getProperty())) { sortBy = order.getProperty(); } else { sortBy = bi.getDefaultOrder(); } try { SortOption so = SortOption.getSortOption(sortBy); if (so != null) { bs.setSortBy(so.getNumber()); } } catch (SortException e) { throw new RuntimeException(e.getMessage(), e); } } } if (filterValue != null || filterAuthority != null) { bs.setFilterValue(filterValue); bs.setAuthorityValue(filterAuthority); bs.setBrowseLevel(1); } // bs.setFilterValueLang(valueLang); // bs.setJumpToItem(focus); // bs.setJumpToValue(valueFocus); // bs.setJumpToValueLang(valueFocusLang); // bs.setStartsWith(startsWith); if (pageable != null) { bs.setOffset(pageable.getOffset()); bs.setResultsPerPage(pageable.getPageSize()); } if (scopeObj != null) { bs.setBrowseContainer(scopeObj); } // For second level browses on metadata indexes, we need to adjust the default sorting if (bi != null && bi.isMetadataIndex() && bs.isSecondLevel() && bs.getSortBy() <= 0) { bs.setSortBy(1); } BrowseInfo binfo = be.browse(bs); Pageable pageResultInfo = new PageRequest((binfo.getStart() - 1) / binfo.getResultsPerPage(), binfo.getResultsPerPage()); Page<ItemRest> page = new PageImpl<Item>(binfo.getBrowseItemResults(), pageResultInfo, binfo.getTotal()) .map(converter); return page; }
From source file:org.dspace.app.rest.utils.DiscoverQueryBuilder.java
private void configureSorting(Pageable page, DiscoverQuery queryArgs, DiscoverySortConfiguration searchSortConfiguration) throws InvalidSortingException { String sortBy = null;/*from ww w .ja v a2s.co m*/ String sortOrder = null; //Read the Pageable object if there is one if (page != null) { Sort sort = page.getSort(); if (sort != null && sort.iterator().hasNext()) { Sort.Order order = sort.iterator().next(); sortBy = order.getProperty(); sortOrder = order.getDirection().name(); } } //Load defaults if we did not receive values if (sortBy == null) { sortBy = getDefaultSortField(searchSortConfiguration); } if (sortOrder == null) { sortOrder = getDefaultSortDirection(searchSortConfiguration, sortOrder); } //Update Discovery query DiscoverySortFieldConfiguration sortFieldConfiguration = searchSortConfiguration .getSortFieldConfiguration(sortBy); if (sortFieldConfiguration != null) { String sortField = searchService.toSortFieldIndex(sortFieldConfiguration.getMetadataField(), sortFieldConfiguration.getType()); if ("asc".equalsIgnoreCase(sortOrder)) { queryArgs.setSortField(sortField, DiscoverQuery.SORT_ORDER.asc); } else if ("desc".equalsIgnoreCase(sortOrder)) { queryArgs.setSortField(sortField, DiscoverQuery.SORT_ORDER.desc); } else { throw new InvalidSortingException(sortOrder + " is not a valid sort order"); } } else { throw new InvalidSortingException(sortBy + " is not a valid sort field"); } }
From source file:org.dspace.app.rest.utils.RestRepositoryUtils.java
private Object[] prepareParameters(Method method, MultiValueMap<String, ? extends Object> rawParameters, Pageable pageable, Sort sort) { List<MethodParameter> parameters = new MethodParameters(method, PARAM_ANNOTATION).getParameters(); if (parameters.isEmpty()) { return new Object[0]; }//from ww w . j a v a 2s . c o m Object[] result = new Object[parameters.size()]; Sort sortToUse = pageable == null ? sort : pageable.getSort(); for (int i = 0; i < result.length; i++) { MethodParameter param = parameters.get(i); Class<?> targetType = param.getParameterType(); if (Pageable.class.isAssignableFrom(targetType)) { result[i] = pageable; } else if (Sort.class.isAssignableFrom(targetType)) { result[i] = sortToUse; } else { String parameterName = param.getParameterName(); if (StringUtils.isBlank(parameterName)) { throw new IllegalArgumentException( String.format(NAME_NOT_FOUND, ClassUtils.getQualifiedMethodName(method))); } Object value = unwrapSingleElement(rawParameters.get(parameterName)); result[i] = targetType.isInstance(value) ? value : convert(value, param); } } return result; }
From source file:org.ligoj.app.plugin.id.ldap.dao.AbstractContainerLdapRepository.java
@Override public Page<T> findAll(final Set<T> groups, final String criteria, final Pageable pageable, final Map<String, Comparator<T>> customComparators) { // Create the set with the right comparator final List<Sort.Order> orders = IteratorUtils .toList(ObjectUtils.defaultIfNull(pageable.getSort(), new ArrayList<Sort.Order>()).iterator()); orders.add(DEFAULT_ORDER);//from w ww .j a v a 2 s.c o m final Sort.Order order = orders.get(0); Comparator<T> comparator = customComparators.get(order.getProperty()); if (order.getDirection() == Direction.DESC) { comparator = Collections.reverseOrder(comparator); } final Set<T> result = new TreeSet<>(comparator); // Filter the groups, filtering by the criteria addFilteredByPattern(groups, criteria, result); // Apply in-memory pagination return inMemoryPagination.newPage(result, pageable); }
From source file:org.ligoj.app.plugin.id.ldap.dao.UserLdapRepository.java
@Override public Page<UserOrg> findAll(final Collection<GroupOrg> requiredGroups, final Set<String> companies, final String criteria, final Pageable pageable) { // Create the set with the right comparator final List<Sort.Order> orders = IteratorUtils .toList(ObjectUtils.defaultIfNull(pageable.getSort(), new ArrayList<Sort.Order>()).iterator()); orders.add(DEFAULT_ORDER);/*from w w w .j av a2s .c o m*/ final Sort.Order order = orders.get(0); Comparator<UserOrg> comparator = ObjectUtils.defaultIfNull(COMPARATORS.get(order.getProperty()), DEFAULT_COMPARATOR); if (order.getDirection() == Direction.DESC) { comparator = Collections.reverseOrder(comparator); } final Set<UserOrg> result = new TreeSet<>(comparator); // Filter the users traversing firstly the required groups and their members, // the companies, then the criteria final Map<String, UserOrg> users = findAll(); if (requiredGroups == null) { // No constraint on group addFilteredByCompaniesAndPattern(users.keySet(), companies, criteria, result, users); } else { // User must be within one the given groups for (final GroupOrg requiredGroup : requiredGroups) { addFilteredByCompaniesAndPattern(requiredGroup.getMembers(), companies, criteria, result, users); } } // Apply in-memory pagination return inMemoryPagination.newPage(result, pageable); }
From source file:org.opentestsystem.shared.progman.client.ProgramManagementClient.java
private static Map<String, String> getPageableParams(final Pageable pageable) { Map<String, String> params = Maps.newHashMap(); params.put("page.page", ""); params.put("page.size", ""); params.put("page.sort", ""); params.put("page.sort.dir", ""); if (pageable != null) { params.put("page.page", Integer.toString(pageable.getPageNumber())); params.put("page.size", Integer.toString(pageable.getPageSize())); if (pageable.getSort() != null && pageable.getSort().iterator().hasNext()) { Order firstOrder = pageable.getSort().iterator().next(); params.put("page.sort", firstOrder.getProperty()); params.put("page.sort.dir", firstOrder.getDirection().name()); }//from w ww. j av a2 s . co m } return params; }
From source file:org.springframework.data.document.mongodb.repository.QueryDslMongoRepository.java
/** * Applies the given {@link Pageable} to the given {@link MongodbQuery}. * /*from w w w . j a v a 2 s . com*/ * @param query * @param pageable * @return */ private MongodbQuery<T> applyPagination(MongodbQuery<T> query, Pageable pageable) { if (pageable == null) { return query; } query = query.offset(pageable.getOffset()).limit(pageable.getPageSize()); return applySorting(query, pageable.getSort()); }