List of usage examples for org.hibernate.criterion Restrictions between
public static Criterion between(String propertyName, Object low, Object high)
From source file:org.photovault.imginfo.QueryFuzzyTimeCriteria.java
License:Open Source License
/** * Describe <code>setupQuery</code> method here. * * @param crit a <code>Criteria</code> value *///from www. j a v a 2s. c om public final void setupQuery(final Criteria crit) { log.debug("Entry: SetupQuery"); if (date == null) { log.warn("null query date"); return; } switch (strictness) { case INCLUDE_CERTAIN: log.debug("INCLUDE_CERTAIN"); /* Only certain results must be included, so the whole possible time period of object must be inside the accuracy limits. */ /* crit.addGreaterOrEqualThan( "subdate("+dateField.getName() + ", " + accuracyField.getName() + ")", date.getMinDate() ); crit.addLessOrEqualThan( "adddate("+dateField.getName() +", " + accuracyField.getName() + ")", date.getMaxDate() ); */ String gtclauseCertain = "{fn TIMESTAMPADD(SQL_TSI_SECOND, CAST( -3600*24*{alias}." + accuracyField.getColumnName() + " AS INT)" + ", {alias}." + dateField.getColumnName() + ")} >= ?"; crit.add(Restrictions.sqlRestriction(gtclauseCertain, date.getMinDate(), Hibernate.TIMESTAMP)); String ltclauseCertain = "{fn TIMESTAMPADD(SQL_TSI_SECOND, CAST( 3600*24*{alias}." + accuracyField.getColumnName() + " AS INT)" + ", {alias}." + dateField.getColumnName() + ")} <= ?"; crit.add(Restrictions.sqlRestriction(ltclauseCertain, date.getMaxDate(), Hibernate.TIMESTAMP)); break; case INCLUDE_PROBABLE: log.debug("INCLUDE_PROBABLE"); crit.add(Restrictions.between(dateField.getName(), date.getMinDate(), date.getMaxDate())); crit.add(Restrictions.le(accuracyField.getName(), new Double(date.getAccuracy()))); break; case INCLUDE_POSSIBLE: /* * Include photos whose time range intersects with the query range */ log.debug("INCLUDE_POSSIBLE"); String gtclause = "{fn TIMESTAMPADD(SQL_TSI_SECOND, CAST( 3600*24*{alias}." + accuracyField.getColumnName() + " AS INT)" + ", {alias}." + dateField.getColumnName() + ")} >= ?"; crit.add(Restrictions.sqlRestriction(gtclause, date.getMinDate(), Hibernate.TIMESTAMP)); log.debug(gtclause + " >= " + date.getMinDate()); String ltclause = "{fn TIMESTAMPADD(SQL_TSI_SECOND, CAST( -3600*24*{alias}." + accuracyField.getColumnName() + " AS INT)" + ", {alias}." + dateField.getColumnName() + ")} <= ?"; crit.add(Restrictions.sqlRestriction(ltclause, date.getMaxDate(), Hibernate.TIMESTAMP)); log.debug(ltclause + " <= " + date.getMaxDate()); break; default: log.error("Illegal value for strictness: " + strictness); } log.debug("Exit: SetupQuery"); }
From source file:org.photovault.imginfo.QueryRangeCriteria.java
License:Open Source License
public void setupQuery(Criteria crit) { if (lower != null && upper != null) { crit.add(Restrictions.between(field.getName(), lower, upper)); } else if (lower != null) { crit.add(Restrictions.ge(field.getName(), lower)); } else if (upper != null) { crit.add(Restrictions.le(field.getName(), upper)); }/*from w ww. ja v a 2s . co m*/ }
From source file:org.projectforge.business.fibu.AuftragDao.java
License:Open Source License
private List<AuftragDO> getList(final BaseSearchFilter filter, final boolean checkAccess) { final AuftragFilter myFilter; if (filter instanceof AuftragFilter) { myFilter = (AuftragFilter) filter; } else {/*from w ww .ja v a 2 s . c o m*/ myFilter = new AuftragFilter(filter); } final QueryFilter queryFilter = new QueryFilter(myFilter); Boolean vollstaendigFakturiert = null; if (myFilter.isShowBeauftragtNochNichtVollstaendigFakturiert() == true) { queryFilter.add(Restrictions.not(Restrictions.in("auftragsStatus", new AuftragsStatus[] { AuftragsStatus.ABGELEHNT, AuftragsStatus.ERSETZT, AuftragsStatus.GELEGT, AuftragsStatus.GROB_KALKULATION, AuftragsStatus.IN_ERSTELLUNG }))); vollstaendigFakturiert = false; } else if (myFilter.isShowNochNichtVollstaendigFakturiert() == true) { queryFilter.add(Restrictions.not(Restrictions.in("auftragsStatus", new AuftragsStatus[] { AuftragsStatus.ABGELEHNT, AuftragsStatus.ERSETZT }))); vollstaendigFakturiert = false; } else if (myFilter.isShowVollstaendigFakturiert() == true) { vollstaendigFakturiert = true; } else if (myFilter.isShowAbgelehnt() == true) { queryFilter.add(Restrictions.eq("auftragsStatus", AuftragsStatus.ABGELEHNT)); } else if (myFilter.isShowAbgeschlossenNichtFakturiert() == true) { queryFilter.createAlias("positionen", "position") .createAlias("paymentSchedules", "paymentSchedule", Criteria.FULL_JOIN).add( Restrictions.or( Restrictions.or(Restrictions.eq("auftragsStatus", AuftragsStatus.ABGESCHLOSSEN), Restrictions.eq("position.status", AuftragsPositionsStatus.ABGESCHLOSSEN)), Restrictions.eq("paymentSchedule.reached", true))); vollstaendigFakturiert = false; } else if (myFilter.isShowAkquise() == true) { queryFilter.add(Restrictions.in("auftragsStatus", new AuftragsStatus[] { AuftragsStatus.GELEGT, AuftragsStatus.IN_ERSTELLUNG, AuftragsStatus.GROB_KALKULATION })); } else if (myFilter.isShowBeauftragt() == true) { queryFilter.add(Restrictions.in("auftragsStatus", new AuftragsStatus[] { AuftragsStatus.BEAUFTRAGT, AuftragsStatus.LOI, AuftragsStatus.ESKALATION })); } else if (myFilter.isShowErsetzt() == true) { queryFilter.add(Restrictions.eq("auftragsStatus", AuftragsStatus.ERSETZT)); } if (myFilter.getYear() > 1900) { final Calendar cal = DateHelper.getUTCCalendar(); cal.set(Calendar.YEAR, myFilter.getYear()); java.sql.Date lo = null; java.sql.Date hi = null; cal.set(Calendar.DAY_OF_YEAR, 1); lo = new java.sql.Date(cal.getTimeInMillis()); final int lastDayOfYear = cal.getActualMaximum(Calendar.DAY_OF_YEAR); cal.set(Calendar.DAY_OF_YEAR, lastDayOfYear); hi = new java.sql.Date(cal.getTimeInMillis()); queryFilter.add(Restrictions.between("angebotsDatum", lo, hi)); } queryFilter.addOrder(Order.desc("nummer")); final List<AuftragDO> list; if (checkAccess == true) { list = getList(queryFilter); } else { list = internalGetList(queryFilter); } if (vollstaendigFakturiert != null) { final Boolean invoiced = vollstaendigFakturiert; CollectionUtils.filter(list, new Predicate() { @Override public boolean evaluate(final Object object) { final AuftragDO auftrag = (AuftragDO) object; final boolean orderIsCompletelyInvoiced = auftrag.isVollstaendigFakturiert(); if (HibernateUtils.getDialect() != DatabaseDialect.HSQL && myFilter.isShowAbgeschlossenNichtFakturiert() == true) { // if order is completed and not all positions are completely invoiced if (auftrag.getAuftragsStatus() == AuftragsStatus.ABGESCHLOSSEN && orderIsCompletelyInvoiced == false) { return true; } // if order is completed and not completely invoiced if (auftrag.getPositionen() != null) { for (final AuftragsPositionDO pos : auftrag.getPositionen()) { if (pos.isAbgeschlossenUndNichtVollstaendigFakturiert() == true) { return true; } } } if (auftrag.getPaymentSchedules() != null) { for (final PaymentScheduleDO schedule : auftrag.getPaymentSchedules()) { if (schedule.isReached() == true && schedule.isVollstaendigFakturiert() == false) { return true; } } } return false; } return orderIsCompletelyInvoiced == invoiced; } }); } if (myFilter.getAuftragsPositionsArt() != null) { final AuftragFilter fil = myFilter; CollectionUtils.filter(list, new Predicate() { @Override public boolean evaluate(final Object object) { final AuftragDO auftrag = (AuftragDO) object; boolean match = false; if (fil.getAuftragsPositionsArt() != null) { if (CollectionUtils.isNotEmpty(auftrag.getPositionen()) == true) { for (final AuftragsPositionDO position : auftrag.getPositionen()) { if (fil.getAuftragsPositionsArt() == position.getArt()) { match = true; break; } } } } return match; } }); } return list; }
From source file:org.projectforge.business.fibu.EingangsrechnungDao.java
License:Open Source License
@Override public List<EingangsrechnungDO> getList(final BaseSearchFilter filter) { final RechnungFilter myFilter; if (filter instanceof RechnungFilter) { myFilter = (RechnungFilter) filter; } else {//from w w w . j a va2 s . c om myFilter = new RechnungFilter(filter); } final QueryFilter queryFilter = new QueryFilter(myFilter); if (myFilter.getFromDate() != null || myFilter.getToDate() != null) { if (myFilter.getFromDate() != null && myFilter.getToDate() != null) { queryFilter.add(Restrictions.between("datum", myFilter.getFromDate(), myFilter.getToDate())); } else if (myFilter.getFromDate() != null) { queryFilter.add(Restrictions.ge("datum", myFilter.getFromDate())); } else if (myFilter.getToDate() != null) { queryFilter.add(Restrictions.le("datum", myFilter.getToDate())); } } else { queryFilter.setYearAndMonth("datum", myFilter.getYear(), myFilter.getMonth()); } queryFilter.addOrder(Order.desc("datum")); queryFilter.addOrder(Order.desc("kreditor")); final List<EingangsrechnungDO> list = getList(queryFilter); if (myFilter.isShowAll() == true || myFilter.isDeleted() == true) { return list; } final List<EingangsrechnungDO> result = new ArrayList<EingangsrechnungDO>(); for (final EingangsrechnungDO rechnung : list) { if (myFilter.isShowUnbezahlt() == true) { if (rechnung.isBezahlt() == false) { result.add(rechnung); } } else if (myFilter.isShowBezahlt() == true) { if (rechnung.isBezahlt() == true) { result.add(rechnung); } } else if (myFilter.isShowUeberFaellig() == true) { if (rechnung.isUeberfaellig() == true) { result.add(rechnung); } } else { log.debug("Unknown filter setting (probably caused by serialize/de-serialize problems): " + myFilter.listType); } } return result; }
From source file:org.projectforge.business.fibu.kost.BuchungssatzDao.java
License:Open Source License
@Override public List<BuchungssatzDO> getList(final BaseSearchFilter filter) { accessChecker.checkIsLoggedInUserMemberOfGroup(ProjectForgeGroup.FINANCE_GROUP, ProjectForgeGroup.CONTROLLING_GROUP); final BuchungssatzFilter myFilter; if (filter instanceof BuchungssatzFilter) { myFilter = (BuchungssatzFilter) filter; } else {/* w w w . j av a 2 s .c o m*/ myFilter = new BuchungssatzFilter(filter); } final QueryFilter queryFilter = new QueryFilter(filter); if (validateTimeperiod(myFilter) == false) { throw new UserException("fibu.buchungssatz.error.invalidTimeperiod"); } if (myFilter.getFromMonth() < 0) { // Kein Von-Monat gesetzt. queryFilter.add(Restrictions.eq("year", myFilter.getFromYear())); queryFilter.add(Restrictions.between("month", 0, 11)); } else if (myFilter.getToYear() > 0) { if (myFilter.getFromYear() == myFilter.getToYear()) { queryFilter.add(Restrictions.eq("year", myFilter.getFromYear())); queryFilter.add(Restrictions.between("month", myFilter.getFromMonth(), myFilter.getToMonth())); } else { // between but different years queryFilter.add(Restrictions.disjunction() .add(Restrictions.and(Restrictions.eq("year", myFilter.getFromYear()), Restrictions.ge("month", myFilter.getFromMonth()))) .add(Restrictions.and(Restrictions.eq("year", myFilter.getToYear()), Restrictions.le("month", myFilter.getToMonth()))) .add(Restrictions.and(Restrictions.gt("year", myFilter.getFromYear()), Restrictions.lt("year", myFilter.getToYear())))); } } else { // Nur Von-Monat gesetzt. queryFilter.add(Restrictions.eq("year", myFilter.getFromYear())); queryFilter.add(Restrictions.eq("month", myFilter.getFromMonth())); } queryFilter.addOrder(Order.asc("year")).addOrder(Order.asc("month")).addOrder(Order.asc("satznr")); final List<BuchungssatzDO> list = getList(queryFilter); return list; }
From source file:org.projectforge.business.fibu.RechnungDao.java
License:Open Source License
@Override public List<RechnungDO> getList(final BaseSearchFilter filter) { final RechnungFilter myFilter; if (filter instanceof RechnungFilter) { myFilter = (RechnungFilter) filter; } else {//from w w w . ja va2 s .co m myFilter = new RechnungFilter(filter); } final QueryFilter queryFilter = new QueryFilter(myFilter); if (myFilter.getFromDate() != null || myFilter.getToDate() != null) { if (myFilter.getFromDate() != null && myFilter.getToDate() != null) { queryFilter.add(Restrictions.between("datum", myFilter.getFromDate(), myFilter.getToDate())); } else if (myFilter.getFromDate() != null) { queryFilter.add(Restrictions.ge("datum", myFilter.getFromDate())); } else if (myFilter.getToDate() != null) { queryFilter.add(Restrictions.le("datum", myFilter.getToDate())); } } else { queryFilter.setYearAndMonth("datum", myFilter.getYear(), myFilter.getMonth()); } queryFilter.addOrder(Order.desc("datum")); queryFilter.addOrder(Order.desc("nummer")); if (myFilter.isShowKostZuweisungStatus() == true) { queryFilter.setFetchMode("positionen.kostZuweisungen", FetchMode.JOIN); } final List<RechnungDO> list = getList(queryFilter); if (myFilter.isShowAll() == true || myFilter.isDeleted() == true) { return list; } final List<RechnungDO> result = new ArrayList<RechnungDO>(); for (final RechnungDO rechnung : list) { if (myFilter.isShowUnbezahlt() == true) { if (rechnung.isBezahlt() == false) { result.add(rechnung); } } else if (myFilter.isShowBezahlt() == true) { if (rechnung.isBezahlt() == true) { result.add(rechnung); } } else if (myFilter.isShowUeberFaellig() == true) { if (rechnung.isUeberfaellig() == true) { result.add(rechnung); } } else { log.error("Unknown filter setting: " + myFilter.listType); break; } } return result; }
From source file:org.projectforge.business.humanresources.HRPlanningDao.java
License:Open Source License
public QueryFilter buildQueryFilter(final HRPlanningFilter filter) { final QueryFilter queryFilter = new QueryFilter(filter); if (filter.getUserId() != null) { final PFUserDO user = new PFUserDO(); user.setId(filter.getUserId());//from ww w . j a va 2 s .com queryFilter.add(Restrictions.eq("user", user)); } if (filter.getStartTime() != null && filter.getStopTime() != null) { queryFilter.add(Restrictions.between("week", filter.getStartTime(), filter.getStopTime())); } else if (filter.getStartTime() != null) { queryFilter.add(Restrictions.ge("week", filter.getStartTime())); } else if (filter.getStopTime() != null) { queryFilter.add(Restrictions.le("week", filter.getStopTime())); } if (filter.getProjektId() != null) { queryFilter.add(Restrictions.eq("projekt.id", filter.getProjektId())); } queryFilter.addOrder(Order.desc("week")); if (log.isDebugEnabled() == true) { log.debug(ToStringBuilder.reflectionToString(filter)); } return queryFilter; }
From source file:org.projectforge.business.humanresources.HRPlanningEntryDao.java
License:Open Source License
public QueryFilter buildQueryFilter(final HRPlanningFilter filter) { final QueryFilter queryFilter = new QueryFilter(filter); queryFilter.createAlias("planning", "p").createAlias("p.user", "u"); if (filter.getUserId() != null) { final PFUserDO user = new PFUserDO(); user.setId(filter.getUserId());/* ww w . jav a2 s . co m*/ queryFilter.add(Restrictions.eq("p.user", user)); } if (filter.getStartTime() != null && filter.getStopTime() != null) { queryFilter.add(Restrictions.between("p.week", filter.getStartTime(), filter.getStopTime())); } else if (filter.getStartTime() != null) { queryFilter.add(Restrictions.ge("p.week", filter.getStartTime())); } else if (filter.getStopTime() != null) { queryFilter.add(Restrictions.le("p.week", filter.getStopTime())); } if (filter.getProjektId() != null) { queryFilter.add(Restrictions.eq("projekt.id", filter.getProjektId())); } queryFilter.addOrder(Order.desc("p.week")).addOrder(Order.asc("u.firstname")); if (log.isDebugEnabled() == true) { log.debug(ToStringBuilder.reflectionToString(filter)); } return queryFilter; }
From source file:org.projectforge.business.teamcal.event.TeamEventDao.java
License:Open Source License
/** * The time period of the filter will be extended by one day. This is needed due to all day events which are stored in * UTC. The additional events in the result list not matching the time period have to be removed by caller! * * @param filter/*from ww w. j a v a2 s . c o m*/ * @return */ private QueryFilter buildQueryFilter(final TeamEventFilter filter) { final QueryFilter queryFilter = new QueryFilter(filter); final Collection<Integer> cals = filter.getTeamCals(); if (CollectionUtils.isNotEmpty(cals) == true) { queryFilter.add(Restrictions.in("calendar.id", cals)); } else if (filter.getTeamCalId() != null) { queryFilter.add(Restrictions.eq("calendar.id", filter.getTeamCalId())); } // Following period extension is needed due to all day events which are stored in UTC. The additional events in the result list not // matching the time period have to be removed by caller! Date startDate = filter.getStartDate(); if (startDate != null) { startDate = new Date(startDate.getTime() - ONE_DAY); } Date endDate = filter.getEndDate(); if (endDate != null) { endDate = new Date(endDate.getTime() + ONE_DAY); } // limit events to load to chosen date view. if (startDate != null && endDate != null) { if (filter.isOnlyRecurrence() == false) { queryFilter.add(Restrictions.or( (Restrictions.or(Restrictions.between("startDate", startDate, endDate), Restrictions.between("endDate", startDate, endDate))), // get events whose duration overlap with chosen duration. (Restrictions.and(Restrictions.le("startDate", startDate), Restrictions.ge("endDate", endDate))))); } else { queryFilter.add( // "startDate" < endDate && ("recurrenceUntil" == null ||"recurrenceUntil" > startDate) (Restrictions.and(Restrictions.lt("startDate", endDate), Restrictions.or(Restrictions.isNull("recurrenceUntil"), Restrictions.gt("recurrenceUntil", startDate))))); } } else if (startDate != null) { if (filter.isOnlyRecurrence() == false) { queryFilter.add(Restrictions.ge("startDate", startDate)); } else { // This branch is reached for subscriptions and calendar downloads. queryFilter.add( // "recurrenceUntil" == null ||"recurrenceUntil" > startDate Restrictions.or(Restrictions.isNull("recurrenceUntil"), Restrictions.gt("recurrenceUntil", startDate))); } } else if (endDate != null) { queryFilter.add(Restrictions.le("startDate", endDate)); } queryFilter.addOrder(Order.desc("startDate")); if (log.isDebugEnabled() == true) { log.debug(ToStringBuilder.reflectionToString(filter)); } return queryFilter; }
From source file:org.projectforge.core.BaseDao.java
License:Open Source License
@SuppressWarnings("unchecked") private void getHistoryEntries(final Session session, final BaseSearchFilter filter, final Set<Integer> idSet, final Class<?> clazz, final boolean searchStringInHistory) { if (log.isDebugEnabled() == true) { log.debug("Searching in " + clazz); }//from www. ja v a 2 s . c om // First get all history entries matching the filter and the given class. final String className = ClassUtils.getShortClassName(clazz); if (searchStringInHistory == true) { final StringBuffer buf = new StringBuffer(); buf.append("(+className:").append(className); if (filter.getStartTimeOfModification() != null || filter.getStopTimeOfModification() != null) { final DateFormat df = new SimpleDateFormat(DateFormats.LUCENE_TIMESTAMP_MINUTE); df.setTimeZone(DateHelper.UTC); buf.append(" +timestamp:["); if (filter.getStartTimeOfModification() != null) { buf.append(df.format(filter.getStartTimeOfModification())); } else { buf.append("000000000000"); } buf.append(" TO "); if (filter.getStopTimeOfModification() != null) { buf.append(df.format(filter.getStopTimeOfModification())); } else { buf.append("999999999999"); } buf.append("]"); } if (filter.getModifiedByUserId() != null) { buf.append(" +userName:").append(filter.getModifiedByUserId()); } buf.append(") AND ("); final String searchString = buf.toString() + modifySearchString(filter.getSearchString()) + ")"; try { final FullTextSession fullTextSession = Search.getFullTextSession(getSession()); final org.apache.lucene.search.Query query = createFullTextQuery(HISTORY_SEARCH_FIELDS, null, searchString); if (query == null) { // An error occured: return; } final FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(query, HistoryEntry.class); fullTextQuery.setCacheable(true); fullTextQuery.setCacheRegion("historyItemCache"); fullTextQuery.setProjection("entityId"); final List<Object[]> result = fullTextQuery.list(); if (result != null && result.size() > 0) { for (final Object[] oa : result) { idSet.add((Integer) oa[0]); } } } catch (final Exception ex) { final String errorMsg = "Lucene error message: " + ex.getMessage() + " (for " + this.getClass().getSimpleName() + ": " + searchString + ")."; filter.setErrorMessage(errorMsg); log.info(errorMsg); } } else { final Criteria criteria = session.createCriteria(HistoryEntry.class); setCacheRegion(criteria); criteria.add(Restrictions.eq("className", className)); if (filter.getStartTimeOfModification() != null && filter.getStopTimeOfModification() != null) { criteria.add(Restrictions.between("timestamp", filter.getStartTimeOfModification(), filter.getStopTimeOfModification())); } else if (filter.getStartTimeOfModification() != null) { criteria.add(Restrictions.ge("timestamp", filter.getStartTimeOfModification())); } else if (filter.getStopTimeOfModification() != null) { criteria.add(Restrictions.le("timestamp", filter.getStopTimeOfModification())); } if (filter.getModifiedByUserId() != null) { criteria.add(Restrictions.eq("userName", filter.getModifiedByUserId().toString())); } criteria.setCacheable(true); criteria.setCacheRegion("historyItemCache"); criteria.setProjection(Projections.property("entityId")); final List<Integer> idList = criteria.list(); if (idList != null && idList.size() > 0) { for (final Integer id : idList) { idSet.add(id); } } } }