Example usage for org.springframework.data.jpa.domain JpaSort JpaSort

List of usage examples for org.springframework.data.jpa.domain JpaSort JpaSort

Introduction

In this page you can find the example usage for org.springframework.data.jpa.domain JpaSort JpaSort.

Prototype

private JpaSort(List<Order> orders, @Nullable Direction direction, List<Path<?, ?>> paths) 

Source Link

Usage

From source file:org.zlogic.vogon.web.controller.TransactionsController.java

/**
 * Returns all transactions in a specific range, or all transactions if page
 * parameter is missing/*from  w w w .  j a  v a  2 s .co m*/
 *
 * @param page the page number
 * @param sortColumn the column used for sorting
 * @param sortDirection the sort direction
 * @param filterDescription
 * @param filterTags the tags to be filtered
 * @param filterDate the date to be filtered
 * @param user the authenticated user
 * @return the transactions
 */
@RequestMapping(method = RequestMethod.GET, produces = "application/json")
public @ResponseBody Collection<FinanceTransactionJson> getTransactions(@RequestParam("page") Integer page,
        @RequestParam(value = "sortColumn", required = false) SortColumn sortColumn,
        @RequestParam(value = "sortDirection", required = false) Sort.Direction sortDirection,
        @RequestParam(value = "filterDescription", required = false) String filterDescription,
        @RequestParam(value = "filterDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date filterDate,
        @RequestParam(value = "filterTags", required = false) Collection<String> filterTags,
        @AuthenticationPrincipal VogonSecurityUser user) {
    Attribute sortAttribute = FinanceTransaction_.transactionDate;
    if (sortColumn != null)
        switch (sortColumn) {
        case AMOUNT:
            sortAttribute = FinanceTransaction_.amount;
            break;
        case DATE:
            sortAttribute = FinanceTransaction_.transactionDate;
            break;
        case DESCRIPTION:
            sortAttribute = FinanceTransaction_.description;
            break;
        }
    if (sortDirection == null)
        sortDirection = Sort.Direction.fromStringOrNull(null);
    Sort sort = new JpaSort(sortDirection, sortAttribute, FinanceTransaction_.id);
    //TODO: Optimize if https://jira.spring.io/browse/DATAJPA-209 gets implemented?
    TransactionFilterSpecification filter = new TransactionFilterSpecification(user.getUser());
    filter.setFilterDescription(filterDescription);
    filter.setFilterDate(filterDate);
    if (filterTags != null)
        filter.setFilterTags(new HashSet<>(filterTags));
    if (page == null)
        return initializationHelper.initializeTransactions(transactionRepository.findAll(filter, sort));
    PageRequest pageRequest = new PageRequest(page, PAGE_SIZE, sort);
    return initializationHelper
            .initializeTransactions(transactionRepository.findAll(filter, pageRequest).getContent());
}