Example usage for org.hibernate.criterion DetachedCriteria addOrder

List of usage examples for org.hibernate.criterion DetachedCriteria addOrder

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria addOrder.

Prototype

public DetachedCriteria addOrder(Order order) 

Source Link

Document

Adds an ordering

Usage

From source file:org.ambraproject.rhino.service.impl.ArticleCrudServiceImpl.java

License:Open Source License

@Override
public Collection<String> getArticleDoisForDateRange(int pageNumber, int pageSize, SortOrder sortOrder,
        Optional<LocalDateTime> fromDate, Optional<LocalDateTime> toDate) {
    final long totalArticles = hibernateTemplate.execute(session -> {
        final Query query = session.createQuery("select count(*) from Article");
        final Long count = (Long) query.uniqueResult();
        return count;
    });//from   ww  w .  j ava  2s  . c o  m

    if (totalArticles > 0L) {
        pageNumber = max(pageNumber, 1);
        final int maxResults = min(pageSize, MAX_PAGE_SIZE);
        final int firstResult = (pageNumber - 1) * maxResults;

        if (LOG.isDebugEnabled()) {
            LOG.debug("pageNumber: {}, pageSize: {}", pageNumber, pageSize);
            LOG.debug("firstResult: {}, maxResults: {}", firstResult, maxResults);
            LOG.debug("sortOrder: {}", sortOrder);
        }

        if (firstResult < totalArticles) {
            final DetachedCriteria criteria = DetachedCriteria.forClass(Article.class);
            final ProjectionList projections = Projections.projectionList();
            projections.add(Projections.property("doi" /* propertyName */));
            criteria.setProjection(projections);

            // Set restrictions for filtering on date range, if any.
            if (fromDate.isPresent()) {
                criteria.add(Restrictions.ge("created" /* propertyName */,
                        java.sql.Timestamp.valueOf(fromDate.get())));
            }
            if (toDate.isPresent()) {
                criteria.add(Restrictions.le("created" /* propertyName */,
                        java.sql.Timestamp.valueOf(toDate.get())));
            }

            if (sortOrder == SortOrder.OLDEST) {
                criteria.addOrder(Order.asc("created" /* propertyName */));
            } else {
                criteria.addOrder(Order.desc("created" /* propertyName */));
            }

            @SuppressWarnings("unchecked")
            final List<String> articleDois = (List<String>) hibernateTemplate.findByCriteria(criteria,
                    firstResult, maxResults);
            return articleDois;
        }
    }
    return ImmutableList.of();
}

From source file:org.ambraproject.service.annotation.AnnotationServiceImpl.java

License:Apache License

@Override
@Transactional(readOnly = true)//from w w w.j a v  a2s  .c o  m
public AnnotationView[] listAnnotationsNoReplies(final Long articleID,
        final Set<AnnotationType> annotationTypes, final AnnotationOrder order) {
    if (order == AnnotationOrder.MOST_RECENT_REPLY) {
        throw new IllegalArgumentException(
                "Cannot specify Most Recent Reply order type when replies are not being loaded up");
    }
    //Basic criteria
    DetachedCriteria criteria = DetachedCriteria.forClass(Annotation.class)
            .add(Restrictions.eq("articleID", articleID)).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    //restrict by type
    if (annotationTypes != null && !annotationTypes.isEmpty()) {
        criteria.add(Restrictions.in("type", annotationTypes));
    }
    switch (order) {
    case OLDEST_TO_NEWEST:
        criteria.addOrder(Order.asc("created"));
        break;
    case NEWEST_TO_OLDEST:
        criteria.addOrder(Order.desc("created"));
        break;
    }
    List annotationResults = hibernateTemplate.findByCriteria(criteria);
    //Don't want to call buildAnnotationView() here because that would involve finding the article title and doi for each annotation,
    // when we only need to do it once. So load up the info we need to build annotation views here
    Object[] articleTitleAndDoi;
    try {
        articleTitleAndDoi = (Object[]) hibernateTemplate
                .findByCriteria(DetachedCriteria.forClass(Article.class).add(Restrictions.eq("ID", articleID))
                        .setProjection(Projections.projectionList().add(Projections.property("doi"))
                                .add(Projections.property("title"))),
                        0, 1)
                .get(0);

    } catch (IndexOutOfBoundsException e) {
        throw new IllegalArgumentException("article " + articleID + " didn't exist");
    }
    String articleDoi = (String) articleTitleAndDoi[0];
    String articleTitle = (String) articleTitleAndDoi[1];

    List<AnnotationView> viewResults = new ArrayList<AnnotationView>(annotationResults.size());
    for (Object annotation : annotationResults) {
        viewResults.add(new AnnotationView((Annotation) annotation, articleDoi, articleTitle, null));
    }
    return viewResults.toArray(new AnnotationView[viewResults.size()]);
}

From source file:org.capelin.transaction.dao.RecordDao.java

License:GNU General Public License

/**
 * List all relevant record.//from  w ww .j  a  va 2s.  com
 * 
 * @param field
 * @param value
 * @param pageNumber
 * @param ascending
 * @return PagedResults
 */
public PagedResults listPaged(String field, String value, int pageNumber, boolean ascending) {

    DetachedCriteria criteria = DetachedCriteria.forClass(recordClass);
    criteria.add(Restrictions.ilike(field, value, MatchMode.START));
    if (ascending) {
        criteria.addOrder(Order.asc(field));
    } else {
        criteria.addOrder(Order.desc(field));
    }
    List<?> result = getHibernateTemplate().findByCriteria(criteria, getFirstResultNumber(pageNumber),
            getPageSize());

    Criteria crit = getSession().createCriteria(recordClass);
    crit.add(Restrictions.ilike(field, value, MatchMode.START));
    Number total = (Number) crit.setProjection(Projections.rowCount()).uniqueResult();
    return new PagedResults(total.intValue(), getTotalPageNumber(total.intValue()), result);
}

From source file:org.caratarse.auth.model.util.CriteriaFilterHelper.java

License:Apache License

public static void addQueryOrder(final DetachedCriteria crit, QueryOrder order) {
    if (order == null) {
        return;//from   w  ww . j  a v a 2 s  . co m
    }

    if (order.isSorted()) {
        order.iterate(new OrderCallback() {

            @Override
            public void orderBy(OrderComponent component) {
                if (component.isAscending()) {
                    crit.addOrder(Order.asc(component.getFieldName()));
                } else {
                    crit.addOrder(Order.desc(component.getFieldName()));
                }
            }
        });
    }
}

From source file:org.cobbzilla.wizard.dao.AbstractCRUDDAO.java

protected DetachedCriteria sort(DetachedCriteria criteria) {
    final Order order = getDefaultSortOrder();
    return order == null ? criteria : criteria.addOrder(order);
}

From source file:org.conventionsframework.dao.impl.BaseHibernateDaoImpl.java

License:Apache License

@Override
public PaginationResult<T> executePagination(SearchModel<T> searchModel, final DetachedCriteria dc) {

    int size = getRowCount(dc).intValue();
    String sortField = searchModel.getSortField();
    if (sortField != null) {
        if (searchModel.getSortOrder().equals(SortOrder.UNSORTED)) {
            searchModel.setSortOrder(SortOrder.ASCENDING);
        }//from w w  w  .  j a  va  2 s  .c o  m
        if (searchModel.getSortOrder().equals(SortOrder.ASCENDING)) {
            dc.addOrder(Order.asc(sortField));
        } else {
            dc.addOrder(Order.desc(sortField));
        }
        dc.addOrder(Order.asc(getSession().getSessionFactory().getClassMetadata(getPersistentClass())
                .getIdentifierPropertyName()));

    }

    List<T> data = this.findByCriteria(dc, searchModel.getFirst(), searchModel.getPageSize());

    return new PaginationResult<T>(data, size);
}

From source file:org.encuestame.persistence.dao.imp.AccountDaoImp.java

License:Apache License

public final List<UserAccount> retrieveListOwnerUsers(final Account account, final Integer maxResults,
        final Integer start) {
    final DetachedCriteria criteria = DetachedCriteria.forClass(UserAccount.class);
    criteria.add(Restrictions.eq("account", account));
    criteria.setFetchMode("secUserPermissions", FetchMode.SELECT);
    criteria.addOrder(Order.asc("enjoyDate"));
    getHibernateTemplate().setCacheQueries(true);
    return (List<UserAccount>) getHibernateTemplate().findByCriteria(criteria, start, maxResults);
}

From source file:org.encuestame.persistence.dao.imp.CommentDao.java

License:Apache License

@SuppressWarnings("unchecked")
public List<Comment> getCommentsbyUser(final UserAccount userAcc, final Integer maxResults, final Integer start,
        final List<CommentOptions> commentOptions) {
    final DetachedCriteria criteria = DetachedCriteria.forClass(Comment.class);
    criteria.add(Restrictions.eq("user", userAcc));
    criteria.addOrder(Order.desc("createdAt"));
    criteria.addOrder(Order.desc("likeVote"));
    if ((commentOptions.size() != 1) && (!commentOptions.get(0).equals(CommentOptions.ALL))) {
        criteria.add(Restrictions.in("commentOptions", commentOptions));
    }//from  www .j  a v  a 2 s  .c o  m
    return (List<Comment>) filterByMaxorStart(criteria, maxResults, start);
}

From source file:org.encuestame.persistence.dao.imp.CommentDao.java

License:Apache License

@SuppressWarnings("unchecked")
public List<Comment> getCommentsbyTweetPoll(final TweetPoll tpoll, final Integer maxResults,
        final Integer start) {
    final DetachedCriteria criteria = DetachedCriteria.forClass(Comment.class);
    criteria.add(Restrictions.eq("tweetPoll", tpoll));
    criteria.addOrder(Order.desc("likeVote"));
    return (List<Comment>) filterByMaxorStart(criteria, maxResults, start);
}

From source file:org.encuestame.persistence.dao.imp.CommentDao.java

License:Apache License

@SuppressWarnings("unchecked")
public List<Comment> getCommentsbyTypeAndStatus(final Long id, final TypeSearchResult typeSearch,
        final Integer maxResults, final Integer start, final CommentOptions commentOptions,
        final SearchPeriods period) {
    final DetachedCriteria criteria = DetachedCriteria.forClass(Comment.class);
    if (typeSearch.equals(TypeSearchResult.TWEETPOLL)) {
        criteria.createAlias("tweetPoll", "tweetPoll");
        criteria.add(Restrictions.eq("tweetPoll.tweetPollId", id));
    } else if (typeSearch.equals(TypeSearchResult.POLL)) {
        criteria.createAlias("poll", "poll");
        criteria.add(Restrictions.eq("poll.pollId", id));
    } else if (typeSearch.equals(TypeSearchResult.SURVEY)) {
        criteria.createAlias("survey", "survey");
        criteria.add(Restrictions.eq("survey.sid", id));
    } else {//from   ww  w.ja  v  a 2s  .c  o m
        log.error(" Search result type undefined " + typeSearch.toString());
    }

    criteria.addOrder(Order.desc("likeVote"));
    if (!commentOptions.equals(CommentOptions.ALL)) {
        criteria.add(Restrictions.eq("commentOptions", commentOptions));
    }

    if (period != null) {
        calculateSearchPeriodsDates(period, criteria, "createdAt");
    }
    return (List<Comment>) filterByMaxorStart(criteria, maxResults, start);
}