Example usage for org.springframework.data.domain Sort iterator

List of usage examples for org.springframework.data.domain Sort iterator

Introduction

In this page you can find the example usage for org.springframework.data.domain Sort iterator.

Prototype

public Iterator<Order> iterator() 

Source Link

Usage

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");
    }
}