List of usage examples for org.hibernate.criterion Restrictions between
public static Criterion between(String propertyName, Object low, Object high)
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; }