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.encuestame.persistence.dao.imp.TweetPollDao.java

License:Apache License

@SuppressWarnings("unchecked")
//TODO: please use FrontEndDao new method.
/*//from w ww  . j ava 2 s .c  o  m
 * List<TweetPollSavedPublishedStatus> getLinksByHomeItem replace this method.
 */
public List<TweetPollSavedPublishedStatus> getLinksByTweetPoll(final TweetPoll tweetPoll, final Survey survey,
        final Poll poll, final TypeSearchResult itemType) {
    final DetachedCriteria criteria = DetachedCriteria.forClass(TweetPollSavedPublishedStatus.class);
    if (itemType.equals(TypeSearchResult.TWEETPOLL)) {
        criteria.add(Restrictions.eq("tweetPoll", tweetPoll));
        // criteria.addOrder(Order.desc("tweetPoll.createDate"));
    } else if (itemType.equals(TypeSearchResult.POLL)) {
        criteria.add(Restrictions.eq("poll", poll));
        // criteria.addOrder(Order.desc("survey.createdAt"));
    } else if (itemType.equals(TypeSearchResult.SURVEY)) {
        criteria.add(Restrictions.eq("survey", survey));
        // criteria.addOrder(Order.desc("poll.createdAt"));
    } else {
        log.error("Item type not valid: " + itemType);
    }
    criteria.addOrder(Order.desc("publicationDateTweet"));
    criteria.add(Restrictions.isNotNull("apiType"));
    criteria.add(Restrictions.isNotNull("tweetId"));
    criteria.add(Restrictions.eq("status", Status.SUCCESS));
    return (List<TweetPollSavedPublishedStatus>) getHibernateTemplate().findByCriteria(criteria);
}

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

License:Apache License

@SuppressWarnings("unchecked")
public List<TweetPollSavedPublishedStatus> getAllLinks(final TweetPoll tweetPoll, final Survey survey,
        final Poll poll, final TypeSearchResult itemType) {
    final DetachedCriteria criteria = DetachedCriteria.forClass(TweetPollSavedPublishedStatus.class);
    if (itemType.equals(TypeSearchResult.TWEETPOLL)) {
        criteria.add(Restrictions.eq("tweetPoll", tweetPoll));
        // criteria.addOrder(Order.desc("tweetPoll.createDate"));
    } else if (itemType.equals(TypeSearchResult.POLL)) {
        criteria.add(Restrictions.eq("poll", poll));
        // criteria.addOrder(Order.desc("survey.createdAt"));
    } else if (itemType.equals(TypeSearchResult.SURVEY)) {
        criteria.add(Restrictions.eq("survey", survey));
        // criteria.addOrder(Order.desc("poll.createdAt"));
    } else {// w  ww .ja  v a  2  s  .com
        log.error("Item type not valid: " + itemType);
    }
    criteria.addOrder(Order.desc("publicationDateTweet"));
    return (List<TweetPollSavedPublishedStatus>) getHibernateTemplate().findByCriteria(criteria);
}

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

License:Apache License

@SuppressWarnings("unchecked")
public List<TweetPoll> getTweetPolls(final Integer maxResults, final Integer start, final Date range) {
    final DetachedCriteria criteria = DetachedCriteria.forClass(TweetPoll.class);
    criteria.add(Restrictions.eq("publishTweetPoll", Boolean.TRUE));
    // criteria.add(Restrictions.gt("createDate", range));
    criteria.addOrder(Order.desc("createDate"));
    return (List<TweetPoll>) filterByMaxorStart(criteria, maxResults, start);
}

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

License:Apache License

@SuppressWarnings("unchecked")
public List<TweetPoll> getTweetPollByUsername(final Integer limitResults, final UserAccount account) {
    final DetachedCriteria criteria = DetachedCriteria.forClass(TweetPoll.class);
    criteria.add(Restrictions.eq("publishTweetPoll", Boolean.TRUE));
    criteria.add(Restrictions.eq("editorOwner", account));
    criteria.addOrder(Order.desc("createDate"));
    return (List<TweetPoll>) filterByMaxorStart(criteria, limitResults, 0);
}

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

License:Apache License

@SuppressWarnings("unchecked")
public List<Object[]> getTweetPollsRangeStats(final String tagName, final SearchPeriods period) {
    final DetachedCriteria detached = DetachedCriteria.forClass(TweetPoll.class)
            .createAlias("hashTags", "hashTags").setProjection(Projections.id())
            .add(Subqueries.propertyIn("hashTags.hashTagId",
                    DetachedCriteria.forClass(HashTag.class, "hash").setProjection(Projections.id())
                            .add(Restrictions.in("hash.hashTag", new String[] { tagName }))));
    final DetachedCriteria criteria = DetachedCriteria.forClass(TweetPoll.class, "tweetPoll");
    criteria.add(Subqueries.propertyIn("tweetPoll.tweetPollId", detached));
    criteria.addOrder(Order.desc("tweetPoll.createDate"));
    criteria.add(Restrictions.eq("publishTweetPoll", Boolean.TRUE));
    ProjectionList projList = Projections.projectionList();
    projList.add(Projections.groupProperty("createDate"));
    projList.add(Projections.rowCount());
    criteria.setProjection(projList);/*from   w  w w.  j ava  2 s . c  o  m*/
    calculateSearchPeriodsDates(period, criteria, "createDate");

    return (List<Object[]>) getHibernateTemplate().findByCriteria(criteria);
}

From source file:org.eulerframework.web.core.base.dao.impl.hibernate5.BaseDao.java

License:Apache License

@Override
public PageResponse<T> pageQuery(PageQueryRequest pageQueryRequest, List<Criterion> criterions,
        List<Order> orders, Projection projection, Map<String, FetchMode> fetchMode) {
    DetachedCriteria detachedCriteria = this.analyzeQueryRequest(pageQueryRequest);

    if (!CollectionUtils.isEmpty(criterions)) {
        for (Criterion c : criterions) {
            detachedCriteria.add(c);//from   w  w  w.  j av a 2s.  c  om
        }
    }

    if (!CollectionUtils.isEmpty(orders)) {
        for (Order d : orders) {
            detachedCriteria.addOrder(d);
        }
    }

    if (!CollectionUtils.isEmpty(fetchMode)) {
        for (Map.Entry<String, FetchMode> entry : fetchMode.entrySet()) {
            String property = entry.getKey();
            FetchMode propertyFetchMode = entry.getValue();
            detachedCriteria.setFetchMode(property, propertyFetchMode);
        }
    }

    return this.pageQuery(detachedCriteria, pageQueryRequest.getPageIndex(), pageQueryRequest.getPageSize(),
            projection);
}

From source file:org.eulerframework.web.core.base.dao.impl.hibernate5.BaseDao.java

License:Apache License

protected DetachedCriteria analyzeQueryRequest(QueryRequest queryRequest) {
    DetachedCriteria detachedCriteria = DetachedCriteria.forClass(this.entityClass);

    Map<String, String> queryMap = queryRequest.getQueryMap();

    if (queryRequest.useOr()) {
        List<Criterion> criterions = new ArrayList<>();

        for (Map.Entry<String, String> entry : queryMap.entrySet()) {
            String property = entry.getKey();
            String value = entry.getValue();

            if (StringUtils.isNull(value))
                continue;

            QueryMode queryMode = queryRequest.getQueryMode(property);
            try {
                criterions.add(this.generateRestriction(property, value, queryMode));
            } catch (NumberFormatException e) {
                this.logger.warn(e.getMessage() + " property:" + property);
            }//from  www .  jav a2s .c o m
        }

        detachedCriteria.add(Restrictions.or(criterions.toArray(new Criterion[0])));
    } else {
        for (Map.Entry<String, String> entry : queryMap.entrySet()) {
            String property = entry.getKey();
            String value = entry.getValue();

            if (StringUtils.isNull(value))
                continue;

            QueryMode queryMode = queryRequest.getQueryMode(property);
            detachedCriteria.add(this.generateRestriction(property, value, queryMode));
        }
    }

    LinkedHashMap<String, OrderMode> sortMap = queryRequest.getSortMap();

    for (Map.Entry<String, OrderMode> entry : sortMap.entrySet()) {
        String property = entry.getKey();
        OrderMode value = entry.getValue();

        if (value == null)
            continue;

        detachedCriteria.addOrder(this.analyzeOrderMode(property, value));
    }

    return detachedCriteria;
}

From source file:org.faster.orm.criteria.GenericCriteria.java

License:Open Source License

public DetachedCriteria buildCriteria() {
    beforeBuildCriteria();// w ww  .j  a  va2s.  com
    DetachedCriteria dc = DetachedCriteria.forClass(persistClass);
    List<Field> queryFields = QueryHelper.getQueryFields(this.getClass());
    Set<String> aliases = new HashSet<String>(); // ??
    for (Field f : queryFields) {
        try {
            Object obj = f.get(this);
            boolean ignoreNull = QueryHelper.isIgnoreNull(f);
            if (obj == null) {
                if (ignoreNull) {
                    continue;
                }
            }

            String fieldName = QueryHelper.getFieldName(f);
            if (fieldName.contains(".")) {
                String[] subFieldNames = fieldName.split("\\.");
                String fieldPath = subFieldNames[0];
                String alias = subFieldNames[0];
                if (!aliases.contains(alias)) {
                    dc.createAlias(fieldPath, alias);
                    aliases.add(alias);
                }

                // ?alias
                for (int i = 1; i < subFieldNames.length - 1; i++) {
                    fieldPath += "." + subFieldNames[i];
                    alias += "_" + subFieldNames[i];
                    if (!aliases.contains(alias)) {
                        dc.createAlias(fieldPath, alias);
                        aliases.add(alias);
                    }
                }

                if (subFieldNames.length > 2) {
                    fieldName = alias + "." + subFieldNames[subFieldNames.length - 1];
                }
            }

            if (obj == null && !ignoreNull) {
                dc.add(Restrictions.isNull(fieldName));
                continue;
            }

            String stringValue = String.valueOf(obj);
            boolean ignoreEmptyOrZero = QueryHelper.isIgnoreEmptyOrZero(f);
            if (ignoreEmptyOrZero && isBlank(stringValue)) {
                continue;
            }

            if (stringValue.startsWith(NULL)) {
                dc.add(Restrictions.isNull(fieldName));
                continue;
            }

            if (stringValue.startsWith(NOT_NULL)) {
                dc.add(Restrictions.isNotNull(fieldName));
                continue;
            }

            String delimiter = QueryHelper.getDelimiter(f);
            DataType dt = QueryHelper.getDataType(f);
            MatchMode mm = QueryHelper.getMatchMode(f);

            switch (dt) {
            case STRING:
                switch (mm) {
                case EQ:
                    dc.add(Restrictions.eq(fieldName, stringValue));
                    continue;
                case LIKE:
                    dc.add(Restrictions.like(fieldName, stringValue,
                            org.hibernate.criterion.MatchMode.ANYWHERE));
                    continue;
                case LIKE_START:
                    dc.add(Restrictions.like(fieldName, stringValue, org.hibernate.criterion.MatchMode.START));
                    continue;
                case LIKE_END:
                    dc.add(Restrictions.like(fieldName, stringValue, org.hibernate.criterion.MatchMode.END));
                    continue;
                case ILIKE:
                    dc.add(Restrictions.ilike(fieldName, stringValue,
                            org.hibernate.criterion.MatchMode.ANYWHERE));
                    continue;
                case ILIKE_START:
                    dc.add(Restrictions.ilike(fieldName, stringValue, org.hibernate.criterion.MatchMode.START));
                    continue;
                case ILIKE_END:
                    dc.add(Restrictions.ilike(fieldName, stringValue, org.hibernate.criterion.MatchMode.END));
                    continue;
                case IN:
                    CriteriaRender.renderFieldByStringFilterValues(dc, fieldName, stringValue, delimiter);
                    continue;
                default:
                    throw new IllegalArgumentException("Invalid MatchMode for String: " + mm);
                }
            case INTEGER:
                if (ignoreEmptyOrZero && stringValue.equals("0")) {
                    continue;
                }

                Integer intValue = 0;
                if (mm != MatchMode.IN) {
                    try {
                        intValue = Integer.valueOf(stringValue);
                    } catch (Exception e) {
                        throw new IllegalArgumentException(
                                stringValue + " is not valid int value and can't use MatchMode: " + mm);
                    }
                }

                switch (mm) {
                case EQ:
                    dc.add(Restrictions.eq(fieldName, intValue));
                    continue;
                case NE:
                    dc.add(Restrictions.ne(fieldName, intValue));
                    continue;
                case IN:
                    CriteriaRender.renderFieldByIntegerFilterValues(dc, fieldName, stringValue, delimiter);
                    continue;
                case GT:
                    dc.add(Restrictions.gt(fieldName, intValue));
                    continue;
                case GE:
                    dc.add(Restrictions.ge(fieldName, intValue));
                    continue;
                case LT:
                    dc.add(Restrictions.lt(fieldName, intValue));
                    continue;
                case LE:
                    dc.add(Restrictions.le(fieldName, intValue));
                    continue;
                default:
                    throw new IllegalArgumentException("Invalid MatchMode for Long: " + mm);
                }
            case LONG:
                if (ignoreEmptyOrZero && stringValue.equals("0")) {
                    continue;
                }

                Long longValue = 0L;
                if (mm != MatchMode.IN) {
                    try {
                        longValue = Long.valueOf(stringValue);
                    } catch (Exception e) {
                        throw new IllegalArgumentException(
                                stringValue + " is not valid long value and can't use MatchMode: " + mm);
                    }
                }

                switch (mm) {
                case EQ:
                    dc.add(Restrictions.eq(fieldName, longValue));
                    continue;
                case NE:
                    dc.add(Restrictions.ne(fieldName, longValue));
                    continue;
                case IN:
                    CriteriaRender.renderFieldByLongFilterValues(dc, fieldName, stringValue, delimiter);
                    continue;
                case GT:
                    dc.add(Restrictions.gt(fieldName, longValue));
                    continue;
                case GE:
                    dc.add(Restrictions.ge(fieldName, longValue));
                    continue;
                case LT:
                    dc.add(Restrictions.lt(fieldName, longValue));
                    continue;
                case LE:
                    dc.add(Restrictions.le(fieldName, longValue));
                    continue;
                default:
                    throw new IllegalArgumentException("Invalid MatchMode for Long: " + mm);
                }
            case DATE:
                // TODO ??????
                Date date = DateTimes.parseStringToDate(stringValue);
                switch (mm) {
                case EQ:
                    dc.add(Restrictions.eq(fieldName, date));
                    continue;
                case NE:
                    dc.add(Restrictions.ne(fieldName, date));
                    continue;
                case GT:
                    dc.add(Restrictions.gt(fieldName, date));
                    continue;
                case GE:
                    dc.add(Restrictions.ge(fieldName, date));
                    continue;
                case LT:
                    dc.add(Restrictions.lt(fieldName, date));
                    continue;
                case LE:
                    dc.add(Restrictions.le(fieldName, date));
                    continue;
                default:
                    throw new IllegalArgumentException("Invalid MatchMode for Date: " + mm);
                }
            case BOOLEAN:
                Boolean bool = BooleanUtils.toBooleanObject(stringValue);
                switch (mm) {
                case EQ:
                    dc.add(Restrictions.eq(fieldName, bool));
                    continue;
                case NE:
                    dc.add(Restrictions.ne(fieldName, bool));
                    continue;
                default:
                    throw new IllegalArgumentException("Invalid MatchMode for Boolean: " + mm);
                }
            case LatLong:
                LatLngBound b = new LatLngBound(stringValue);
                if (b.isValid()) {
                    String minLatitude = b.getMinLatitude() == null ? "0.0" : b.getMinLatitude().toString();
                    String maxLatitude = b.getMaxLatitude() == null ? "0.0" : b.getMaxLatitude().toString();
                    String minLongitude = b.getMinLongitude() == null ? "0.0" : b.getMinLongitude().toString();
                    String maxLongitude = b.getMaxLongitude() == null ? "0.0" : b.getMaxLongitude().toString();
                    if ("area".equalsIgnoreCase(fieldName)) {
                        dc.add(Restrictions.between("latitude", minLatitude, maxLatitude));
                        dc.add(Restrictions.between("longitude", minLongitude, maxLongitude));
                    } else {
                        if (fieldName.contains(".")) {
                            String alias = fieldName.replace(".", "_");
                            if (!aliases.contains(alias)) {
                                dc.createAlias(fieldName, alias);
                                aliases.add(alias);
                            }
                            fieldName = alias;
                        } else {
                            if (!aliases.contains(fieldName)) {
                                dc.createAlias(fieldName, fieldName);
                                aliases.add(fieldName);
                            }
                        }
                        dc.add(Restrictions.between(fieldName + ".latitude", minLatitude, maxLatitude));
                        dc.add(Restrictions.between(fieldName + ".longitude", minLongitude, maxLongitude));
                    }
                }
                continue;
            default:
                throw new IllegalArgumentException("Unsupported DataType: " + dt);
            }
        } catch (Exception e) {
            throw new IllegalArgumentException(e);
        }
    }

    renderCriteria(dc);

    if (isNotBlank(sort)) {
        String[] fields = sort.split("-");
        if (fields.length < 2 || "desc".equalsIgnoreCase(fields[1])) {
            dc.addOrder(Order.desc(fields[0]));
        } else {
            dc.addOrder(Order.asc(fields[0]));
        }
    }

    return dc;
}

From source file:org.faster.orm.service.hibernate.with.property.HibernateGenericServiceWithNameAndTimestamp.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*from   w  w w. j  a v a 2 s  .c  o  m*/
public PO findLastByCriteria(DetachedCriteria criteria, QueryOption queryOption) {
    StopWatch sw = null;
    if (log.isDebugEnabled()) {
        log.debug("Finding last {} with cache {} by {}",
                new Object[] { persistClassName, getCacheDisplay(queryOption.isCacheEnabled()), criteria });
        sw = new StopWatch();
        sw.start();
    }

    criteria.addOrder(Order.desc(getFieldNameOfTimestamp()));
    PO ret = (PO) fetchSingle(criteria, queryOption);

    if (log.isDebugEnabled()) {
        log.debug("Last {} is {}. ({} ms)", new Object[] { persistClassName, ret, sw.getTime() });
    }
    return ret;
}

From source file:org.fornax.cartridges.sculptor.framework.accessimpl.jpahibernate.JpaHibFindByExampleAccessImpl.java

License:Apache License

@Override
public void performExecute() throws PersistenceException {
    Example example = createExample();//from   ww  w .j a  va2 s .co m

    if (excludeProperties != null) {
        for (int i = 0; i < excludeProperties.length; i++) {
            example.excludeProperty(excludeProperties[i]);
        }
    }

    DetachedCriteria crit = createCriteria(example);

    if (orderBy != null) {
        if (orderByAsc) {
            crit.addOrder(Order.asc(orderBy));
        } else {
            crit.addOrder(Order.desc(orderBy));
        }
    }
    Session hibernateSession = HibernateSessionHelper.getHibernateSession(getEntityManager());
    final Criteria criteria = crit.getExecutableCriteria(hibernateSession);
    prepareCache(criteria);

    result = executeFind(criteria);
}