List of usage examples for org.springframework.data.domain Sort iterator
public Iterator<Order> iterator()
From source file:com.netflix.genie.core.jpa.services.JpaJobSearchServiceImpl.java
/** * {@inheritDoc}//w w w.j ava 2 s . co m */ @Override public Page<JobSearchResult> findJobs(final String id, final String jobName, final String user, final Set<JobStatus> statuses, final Set<String> tags, final String clusterName, final String clusterId, final String commandName, final String commandId, final Date minStarted, final Date maxStarted, final Date minFinished, final Date maxFinished, @NotNull final Pageable page) { log.debug("called"); final CriteriaBuilder cb = this.entityManager.getCriteriaBuilder(); final CriteriaQuery<Long> countQuery = cb.createQuery(Long.class); final Root<JobEntity> root = countQuery.from(JobEntity.class); final Predicate whereClause = JpaJobSpecs.getFindPredicate(root, cb, id, jobName, user, statuses, tags, clusterName, clusterId == null ? null : this.clusterRepository.findOne(clusterId), commandName, commandId == null ? null : this.commandRepository.findOne(commandId), minStarted, maxStarted, minFinished, maxFinished); countQuery.select(cb.count(root)).where(whereClause); final Long count = this.entityManager.createQuery(countQuery).getSingleResult(); // Use the count to make sure we even need to make this query if (count > 0) { final CriteriaQuery<JobSearchResult> contentQuery = cb.createQuery(JobSearchResult.class); contentQuery.from(JobEntity.class); contentQuery.multiselect(root.get(JobEntity_.id), root.get(JobEntity_.name), root.get(JobEntity_.user), root.get(JobEntity_.status), root.get(JobEntity_.started), root.get(JobEntity_.finished), root.get(JobEntity_.clusterName), root.get(JobEntity_.commandName)); contentQuery.where(whereClause); final Sort sort = page.getSort(); final List<Order> orders = new ArrayList<>(); sort.iterator().forEachRemaining(order -> { if (order.isAscending()) { orders.add(cb.asc(root.get(order.getProperty()))); } else { orders.add(cb.desc(root.get(order.getProperty()))); } }); contentQuery.orderBy(orders); final List<JobSearchResult> results = this.entityManager.createQuery(contentQuery) .setFirstResult(page.getOffset()).setMaxResults(page.getPageSize()).getResultList(); return new PageImpl<>(results, page, count); } else { return new PageImpl<>(Lists.newArrayList(), page, count); } }
From source file:de.appsolve.padelcampus.db.dao.generic.BaseEntityDAO.java
private void addOrderBy(Criteria criteria, Pageable pageable) { Sort sort = pageable.getSort(); if (sort != null) { Iterator<Sort.Order> iterator = sort.iterator(); while (iterator.hasNext()) { Sort.Order order = iterator.next(); Order hibernateOrder;/*from ww w. j a va 2s . co m*/ switch (order.getDirection()) { case ASC: hibernateOrder = Order.asc(order.getProperty()); break; default: hibernateOrder = Order.desc(order.getProperty()); break; } criteria.addOrder(hibernateOrder); } } }
From source file:org.oncoblocks.centromere.sql.sqlbuilder.SqlBuilder.java
public SqlBuilder orderBy(Sort sort) { StringBuilder builder = new StringBuilder(); boolean flag = false; Iterator<Sort.Order> orders = sort.iterator(); while (orders.hasNext()) { Sort.Order order = orders.next(); if (flag) { builder.append(", "); }//from w w w .jav a2 s . co m flag = true; builder.append(order.getProperty() + " " + order.getDirection().toString()); } orderByClause = builder.toString(); return this; }
From source file:com.epam.ta.reportportal.core.widget.content.CasesTrendContentLoader.java
@Override public Map<String, List<ChartObject>> loadContent(Filter filter, Sort sorting, int quantity, List<String> contentFields, List<String> metaDataFields, Map<String, List<String>> options) { expect(metaDataFields == null || metaDataFields.isEmpty(), equalTo(false)) .verify(UNABLE_LOAD_WIDGET_CONTENT, "Metadata fields should exist for providing content."); /*/* ww w . j av a 2 s .c om*/ * Return empty map if filter target TestItem. Chart cannot show trend * for those filters so its unnecessary to proceed it. */ if (filter.getTarget().getCanonicalName().equalsIgnoreCase(TestItem.class.getName())) { return new HashMap<>(); } List<String> allFields = Lists.newArrayList(contentFields); allFields.addAll(metaDataFields); StatisticsDocumentHandler handler = new StatisticsDocumentHandler(contentFields, metaDataFields); // Expecting 'start_time' String field = sorting.iterator().next().getProperty(); // If sorting column not a start_time (it is required sorting for trend // charts) then setup it before call loadWithCallback() if (!field.equalsIgnoreCase(SORT_FIELD)) sorting = new Sort(Sort.Direction.DESC, SORT_FIELD); launchRepository.loadWithCallback(filter, sorting, quantity, allFields, handler, COLLECTION); List<ChartObject> rawData = handler.getResult(); Map<String, List<ChartObject>> result = new LinkedHashMap<>(); if ((options.get("timeline") != null) && (Period.findByName(options.get("timeline").get(0)) != null)) { Map<String, List<ChartObject>> timeline = maxByDate(rawData, Period.findByName(options.get("timeline").get(0)), getTotalFieldName()); result.putAll(calculateGroupedDiffs(timeline, sorting)); } else { result = calculateDiffs(rawData, sorting); } return result; }
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// w w w . j av a 2s. c o 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. j av a 2 s . c om 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 w w w . ja v a 2 s .com 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"); } }