Example usage for org.hibernate.criterion Restrictions between

List of usage examples for org.hibernate.criterion Restrictions between

Introduction

In this page you can find the example usage for org.hibernate.criterion Restrictions between.

Prototype

public static Criterion between(String propertyName, Object low, Object high) 

Source Link

Document

Apply a "between" constraint to the named property

Usage

From source file:org.shredzone.cilla.service.search.strategy.AbstractSearchStrategy.java

License:Open Source License

/**
 * Creates a {@link Criteria} object for the filter given in the
 * {@link SearchResultImpl}.//from  w w w  .  j a v a  2s  . co m
 */
protected Criteria createCriteria(SearchResultImpl result) throws CillaServiceException {
    Criteria crit = pageDao.criteria();
    crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    crit.add(Restrictions.and(Restrictions.isNotNull("publication"),
            Restrictions.le("publication", result.getNow())));

    crit.add(
            Restrictions.or(Restrictions.isNull("expiration"), Restrictions.gt("expiration", result.getNow())));

    crit.add(Restrictions.eq("hidden", false));

    FilterModel filter = result.getFilter();
    if (filter != null) {
        if (filter.getCategory() != null) {
            // I'd prefer to use Restrictions.in instead, but this seems to be difficult.
            // http://stackoverflow.com/questions/407737/hibernate-criteria-querying-tables-in-nm-relationship
            Disjunction dis = Restrictions.disjunction();
            result.getEffectiveCategories().stream().mapToLong(Category::getId)
                    .forEach(id -> dis.add(Restrictions.idEq(id)));
            crit.createCriteria("categories").add(dis);
        }

        if (filter.getTag() != null) {
            long tagId = filter.getTag().getId();
            Disjunction dis = Restrictions.disjunction();

            // All pages with the requested tag
            crit.createAlias("tags", "tt");
            dis.add(Restrictions.eq("tt.id", tagId));

            // All pages with pictures in a gallery section having the requested tag
            DetachedCriteria subcrit = DetachedCriteria.forClass(GallerySection.class);
            subcrit.createCriteria("pictures").createCriteria("tags").add(Restrictions.idEq(tagId));
            subcrit.setProjection(Projections.distinct(Projections.property("page.id")));
            dis.add(Subqueries.propertyIn("id", subcrit));

            crit.add(dis);
        }

        if (filter.getCreator() != null) {
            crit.add(Restrictions.eq("creator", filter.getCreator()));
        }

        if (filter.getPage() != null) {
            crit.add(Restrictions.idEq(filter.getPage().getId()));
        }

        if (filter.getDate() != null) {
            DateRange dr = filter.getDate();
            PageOrder order = (filter.getOrder() != null ? filter.getOrder() : PageOrder.PUBLICATION);
            crit.add(Restrictions.between(order.getColumn(), dr.getFromDate().getTime(),
                    dr.getThruDate().getTime()));
        }

        if (filter.getQuery() != null) {
            // No challenge protected pages for context search, because protected
            // contents may be revealed in the search results.
            crit.add(Restrictions.isNull("challenge"));
        }
    }

    return crit;
}

From source file:org.sigmah.server.dao.hibernate.FilterCriterionBridge.java

License:Open Source License

/**
 * Given a filter, creates the Hibernate criteria need to call
 * {@link HibernateSiteTableDAO}/*from  w  w  w .j a v  a  2s. c om*/
 *
 * @param filter
 * @return
 */
public static Criterion resolveCriterion(Filter filter) {

    Conjunction criterion = Restrictions.conjunction();

    addRestriction(criterion, filter, DimensionType.Database, SiteTableColumn.database_id);
    addRestriction(criterion, filter, DimensionType.Activity, SiteTableColumn.activity_id);
    addRestriction(criterion, filter, DimensionType.Partner, SiteTableColumn.partner_id);
    addRestriction(criterion, filter, DimensionType.Site, SiteTableColumn.id);
    addAdminRestriction(criterion, filter);

    if (filter.isDateRestricted()) {

        if (filter.getMinDate() != null && filter.getMaxDate() == null) {
            criterion.add(Restrictions.disjunction()
                    .add(Restrictions.ge(SiteTableColumn.date1.property(), filter.getMinDate()))
                    .add(Restrictions.ge(SiteTableColumn.date2.property(), filter.getMinDate())));

        } else if (filter.getMaxDate() != null && filter.getMinDate() == null) {

            criterion.add(Restrictions.disjunction()
                    .add(Restrictions.le(SiteTableColumn.date1.property(), filter.getMaxDate()))
                    .add(Restrictions.le(SiteTableColumn.date2.property(), filter.getMaxDate())));

        } else {
            criterion.add(Restrictions.disjunction()
                    .add(Restrictions.between(SiteTableColumn.date1.property(), filter.getMinDate(),
                            filter.getMaxDate()))
                    .add(Restrictions.between(SiteTableColumn.date2.property(), filter.getMinDate(),
                            filter.getMaxDate())));

        }

    }

    return criterion;
}

From source file:org.transitime.reports.RoutePerformanceQuery.java

License:Open Source License

public List<Object[]> query(String agencyId, Date startDate, Date endDate, double allowableEarlyMin,
        double allowableLateMin, String predictionType, String predictionSource) {

    int msecLo = (int) (allowableEarlyMin * 60 * 1000);
    int msecHi = (int) (allowableLateMin * 60 * 1000);

    // Project to: # of predictions in which route is on time / # of predictions
    // for route. This cannot be done with pure Criteria API. This could be
    // moved to a separate class or XML file.
    String sqlProjection = "avg(predictionAccuracyMsecs BETWEEN " + Integer.toString(msecLo) + " AND "
            + Integer.toString(msecHi) + ") AS avgAccuracy";

    try {//w  w  w  . j  a  v a  2s .  c om
        session = HibernateUtils.getSession(agencyId);

        Projection proj = Projections.projectionList().add(Projections.groupProperty("routeId"), "routeId")
                .add(Projections.sqlProjection(sqlProjection, new String[] { "avgAccuracy" },
                        new Type[] { DoubleType.INSTANCE }), "performance");

        Criteria criteria = session.createCriteria(PredictionAccuracy.class).setProjection(proj)
                .add(Restrictions.between("arrivalDepartureTime", startDate, endDate));

        if (predictionType == PREDICTION_TYPE_AFFECTED)
            criteria.add(Restrictions.eq("affectedByWaitStop", true));
        else if (predictionType == PREDICTION_TYPE_NOT_AFFECTED)
            criteria.add(Restrictions.eq("affectedByWaitStop", false));

        if (predictionSource != "")
            criteria.add(Restrictions.eq("predictionSource", predictionSource));

        criteria.addOrder(Order.desc("performance"));

        criteria.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);

        @SuppressWarnings("unchecked")
        List<Object[]> results = criteria.list();

        return results;
    } catch (HibernateException e) {
        logger.error(e.toString());
        return null;
    } finally {
        session.close();
    }
}

From source file:org.xerela.provider.devices.internal.IpAddressResolutionScheme.java

License:Mozilla Public License

/**
 * @param networkAddress//from ww w  . java2 s . com
 * @param pageData
 * @param sortColumn
 * @param descending
 * @return
 */
private PageData cidrSearch(String networkAddress, PageData pageData, String sortColumn, boolean descending) {
    Long[] hiLoRange = NetworkAddressElf.getHiLoRange(networkAddress);

    Session session = DeviceProviderActivator.getSessionFactory().getCurrentSession();
    Criteria criteria = session.createCriteria(ZDeviceLite.class).setFirstResult(pageData.getOffset())
            .setMaxResults(pageData.getPageSize());

    if (hiLoRange[0] == null) {
        // If the HI word range is irrelevant this is either an IPv4 query, or a IPv6
        // query with a CIDR more than /63
        criteria.add(Restrictions.between(ATTR_IP_LOW, hiLoRange[2], hiLoRange[1]));
        // If its an IPv6 query and the range is in the lower word, then the high word
        // must be an exact match
        if (NetworkAddressElf.isIPv6AddressOrMask(networkAddress)) {
            String[] ipAndCidr = networkAddress.split("/"); //$NON-NLS-1$
            long[] hiLo = NetworkAddressElf.getHiLo(ipAndCidr[0]);
            criteria.add(Restrictions.eq(ATTR_IP_HIGH, hiLo[0]));
        }
    } else {
        // If the HI word is relevant this is an IPv6 query where the CIDR is
        // less than /64
        criteria.add(Restrictions.between(ATTR_IP_HIGH, hiLoRange[1], hiLoRange[0]));
    }

    return populatePageData(pageData, criteria, sortColumn, descending);
}

From source file:pl.edu.agh.toik.stockpredictor.core.dao.impl.hbm.CandleDAOImpl.java

@Override
public List<CandleEntity> listCandlesFor(String company, Date fromDay, Date toDay) {
    return factory.getCurrentSession().createCriteria(CandleEntity.class, "ce").createAlias("ce.company", "c")
            .add(Restrictions.and(Restrictions.eq("c.shortName", company),
                    Restrictions.between("ce.day", fromDay, toDay)))
            .list();//w  ww .  j a  va2  s  .  com
}

From source file:pl.edu.agh.toik.stockpredictor.core.dao.impl.hbm.StockQuoteDAOImpl.java

@Override
public List<StockQuoteEntity> listStockQuotes(String companyName, Date from, Date to) {
    Session s = factory.getCurrentSession();

    return s.createCriteria(StockQuoteEntity.class, "sq").createAlias("sq.company", "c")
            .add(Restrictions.eq("c.shortName", companyName)).add(Restrictions.between("sq.dateTime", from, to))
            .list();/*w  ww .j  av  a  2 s . co  m*/
}

From source file:pl.touk.wonderfulsecurity.dao.WsecBaseDaoImpl.java

License:Apache License

private void applyFilters(String key, Object filter, DetachedCriteria criteria) {
    if (key.endsWith(LIKE_SUFFIX)) {
        criteria.add(/*w  w w .  j ava 2 s .  c  o  m*/
                Restrictions.like(key.substring(0, key.length() - LIKE_SUFFIX.length()), "%" + filter + "%"));
    } else if (key.endsWith(I_LIKE_SUFFIX)) {
        criteria.add(Restrictions.ilike(key.substring(0, key.length() - I_LIKE_SUFFIX.length()),
                "%" + filter + "%"));
    } else if (key.endsWith(LIKE_DATE_SUFFIX)) {
        String realKey = key.substring(0, key.length() - LIKE_DATE_SUFFIX.length());
        Date dateFilter = ((Date) filter);
        Date plus24h = new Date();
        plus24h.setTime(dateFilter.getTime() + 86399999l);
        criteria.add(Restrictions.between(realKey, dateFilter, plus24h));
    } else if (key.endsWith(NULL_END_SUFFIX)) {
        criteria.add(Restrictions.isNull(key.substring(0, key.length() - NULL_END_SUFFIX.length())));
    } else if (key.endsWith(NOT_NULL_END_SUFFIX)) {
        criteria.add(Restrictions.isNotNull(key.substring(0, key.length() - NOT_NULL_END_SUFFIX.length())));
    } else if (key.endsWith(LIKE_MATCH_START_SUFFIX)) {
        criteria.add(Restrictions.like(key.substring(0, key.length() - LIKE_MATCH_START_SUFFIX.length()),
                filter + "%"));
    } else if (key.endsWith(I_LIKE_MATCH_START_SUFFIX)) {
        criteria.add(Restrictions.ilike(key.substring(0, key.length() - I_LIKE_MATCH_START_SUFFIX.length()),
                filter + "%"));
    } else if (key.endsWith(NOT_LIKE_END_SUFFIX)) {
        criteria.add(Restrictions.not(Restrictions
                .like(key.substring(0, key.length() - NOT_LIKE_END_SUFFIX.length()), "%" + filter + "%")));
    } else if (key.endsWith(LIKE_MATCH_END_SUFFIX)) {
        criteria.add(Restrictions.like(key.substring(0, key.length() - LIKE_MATCH_END_SUFFIX.length()),
                "%" + filter));
    } else if (key.endsWith(I_LIKE_MATCH_END_SUFFIX)) {
        criteria.add(Restrictions.ilike(key.substring(0, key.length() - I_LIKE_MATCH_END_SUFFIX.length()),
                "%" + filter));
    } else if (key.endsWith(BETWEEN_DATES_END_SUFFIX)) {
        String realKeyWithUpperLimit = key.substring(0, key.length() - BETWEEN_DATES_END_SUFFIX.length());
        String upperLimitAsStr = realKeyWithUpperLimit.substring(realKeyWithUpperLimit.indexOf("|") + 1);
        try {
            Date upperLimit = new Timestamp(dateFormat.parse(upperLimitAsStr).getTime());
            String realKey = realKeyWithUpperLimit.substring(0, realKeyWithUpperLimit.indexOf("|"));
            criteria.add(Restrictions.between(realKey, new Timestamp(((Date) filter).getTime()), upperLimit));
        } catch (ParseException e) {
            throw new IllegalArgumentException("for the key '" + key + "' the date '" + upperLimitAsStr
                    + "' can't be parsed according to the format '" + dateFormatAsStr, e);
        }
    } else if (key.endsWith(EVERYTHING_EXCEPT_END_SUFFIX)) {
        criteria.add(Restrictions.or(
                Restrictions.ne(key.substring(0, key.length() - EVERYTHING_EXCEPT_END_SUFFIX.length()), filter),
                Restrictions.isNull(key.substring(0, key.length() - EVERYTHING_EXCEPT_END_SUFFIX.length()))));
    } else if (filter == null) {
        criteria.add(Restrictions.isNull(key));
    } else if (filter instanceof Collection) {
        criteria.add(Restrictions.in(key, (Collection) filter));
    } else {
        criteria.add(Restrictions.eq(key, filter));
    }
}

From source file:py.una.pol.karaku.dao.helper.BetweenExpressionHelper.java

License:Open Source License

@Override
public Criterion getCriterion(Criteria criteria, @Nonnull Between clause,
        @Nonnull Map<String, String> aliases) {

    String aliasWithProperty = configureAlias(criteria, clause.getPath(), aliases);
    return Restrictions.between(aliasWithProperty, clause.getBegin(), clause.getEnd());
}

From source file:Repository.FacturaRepository.java

public List<TblServicioFactura> Search(String sucursal, String servicio, Date inicio, Date fin) {
    Session s = HibernateUtil.getSessionFactory().getCurrentSession();
    List<TblServicioFactura> lst = new ArrayList<TblServicioFactura>();
    try {/*from  w w  w.ja  va  2s .  co  m*/
        s.beginTransaction();
        Criteria criteria = s.createCriteria(TblServicioFactura.class);
        if (!"".equals(sucursal)) {
            criteria.add(Restrictions.eq("testIdDireccionBi", Integer.parseInt(sucursal)));
        }
        if (!"".equals(servicio)) {
            criteria.add(Restrictions.eq("tesCodigoSintesisBi", Integer.parseInt(servicio)));
        }
        if (!"".equals(inicio) && !"".equals(fin)) {
            criteria.add(Restrictions.between("tesFechaCreacionDt", inicio, fin));
        }
        lst = criteria.list();
        s.getTransaction().commit();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return lst;
}

From source file:ru.apertum.qsky.model.StatisticViewModel.java

public List<Step> loadStats(long branchId, Session ses) {
    ses.beginTransaction();/*from  www.j a va  2s . c o  m*/
    final List<Step> custs;
    try {

        final GregorianCalendar day = new GregorianCalendar();
        day.setTime(finish);
        day.set(GregorianCalendar.HOUR_OF_DAY, 23);
        day.set(GregorianCalendar.MINUTE, 59);

        custs = ses.createCriteria(Step.class).add(Restrictions.eq("branchId", branchId))
                .add(Restrictions.isNotNull("finishTime"))
                .add(Restrictions.between("standTime", start, day.getTime())).list();
    } catch (Exception ex) {
        throw new RuntimeException("Not loaded a list of steps. " + ex);
    } finally {
        ses.getTransaction().rollback();
    }
    return custs;
}