List of usage examples for org.hibernate.criterion Restrictions not
public static Criterion not(Criterion expression)
From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java
License:Open Source License
/** * Filter processes by workpiece./*from w w w .ja v a 2 s . c o m*/ * * @param tok * part of filter string to use */ protected static void filterWorkpiece(Conjunction con, String tok, boolean negate) { /* filter according signature */ String[] ts = tok.substring(tok.indexOf(":") + 1).split(":"); if (!negate) { if (ts.length > 1) { con.add(Restrictions.and(Restrictions.like("werkeig.value", "%" + ts[1] + "%"), Restrictions.like("werkeig.title", "%" + ts[0] + "%"))); } else { con.add(Restrictions.like("werkeig.value", "%" + ts[0] + "%")); } } else { if (ts.length > 1) { con.add(Restrictions.not(Restrictions.and(Restrictions.like("werkeig.value", "%" + ts[1] + "%"), Restrictions.like("werkeig.title", "%" + ts[0] + "%")))); } else { con.add(Restrictions.not(Restrictions.like("werkeig.value", "%" + ts[0] + "%"))); } } }
From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java
License:Open Source License
/** * This method builds a criteria depending on a filter string and some other * parameters passed on along the initial criteria. The filter is parsed and * depending on which data structures are used for applying filtering * restrictions conjunctions are formed and collect the restrictions and * then will be applied on the corresponding criteria. A criteria is only * added if needed for the presence of filters applying to it. * * @param inFilter/*from w w w . ja v a 2 s . c om*/ * String * @param crit * PaginatingCriteria object * @param isTemplate * Boolean * @param returnParameters * Object containing values which need to be set and returned to * UserDefinedFilter * @param userAssignedStepsOnly * Boolean * @param stepOpenOnly * boolean * @return String used to pass on error messages about errors in the filter * expression */ public static String criteriaBuilder(Session session, String inFilter, PaginatingCriteria crit, Boolean isTemplate, Parameters returnParameters, Boolean stepOpenOnly, Boolean userAssignedStepsOnly, boolean clearSession) { if (ConfigCore.getBooleanParameter("DatabaseAutomaticRefreshList", true) && clearSession) { session.clear(); } // for ordering the lists there are some // criteria, which needs to be added even no // restrictions apply, to avoid multiple analysis // of the criteria it is only done here once and // to set flags which are subsequently used Boolean flagSteps = false; Boolean flagProcesses = false; @SuppressWarnings("unused") Boolean flagSetCritProjects = false; String filterPrefix = ""; if (crit.getClassName().equals(Process.class.getName())) { flagProcesses = true; filterPrefix = "steps."; } if (crit.getClassName().equals(Task.class.getName())) { flagSteps = true; } // keeping a reference to the passed criteria Criteria inCrit = crit; @SuppressWarnings("unused") Criteria critProject = null; Criteria critProcess = null; // to collect and return feedback about erroneous use of filter // expressions String message = ""; StrTokenizer tokenizer = new StrTokenizer(inFilter, ' ', '\"'); // conjunctions collecting conditions Conjunction conjWorkPiece = null; Conjunction conjProjects = null; Conjunction conjSteps = null; Conjunction conjProcesses = null; Conjunction conjTemplates = null; Conjunction conjUsers = null; Conjunction conjProcessProperties = null; Conjunction conjBatches = null; // this is needed if we filter processes if (flagProcesses) { conjProjects = Restrictions.conjunction(); limitToUserAccessRights(conjProjects); // in case nothing is set here it needs to be removed again // happens if user has admin rights if (conjProjects.toString().equals("()")) { conjProjects = null; flagSetCritProjects = true; } } // this is needed if we filter steps if (flagSteps) { conjSteps = Restrictions.conjunction(); limitToUserAssignedSteps(conjSteps, stepOpenOnly, userAssignedStepsOnly); // in case nothing is set here conjunction needs to be set to null // again if (conjSteps.toString().equals("()")) { conjSteps = null; } } // this is needed for the template filter (true) and the undefined // processes filter (false) in any other case it needs to be null if (isTemplate != null) { conjProcesses = Restrictions.conjunction(); if (!isTemplate) { conjProcesses.add(Restrictions.eq("template", Boolean.FALSE)); } else { conjProcesses.add(Restrictions.eq("template", Boolean.TRUE)); } } // this is needed for evaluating a filter string while (tokenizer.hasNext()) { String tok = tokenizer.nextToken().trim(); String tokLowerCase = tok.toLowerCase(Locale.GERMANY); if (tokLowerCase.startsWith(FilterString.PROCESSPROPERTY) || tokLowerCase.startsWith(FilterString.PROZESSEIGENSCHAFT)) { if (conjProcessProperties == null) { conjProcessProperties = Restrictions.conjunction(); } FilterHelper.filterProcessProperty(conjProcessProperties, tok, false); } // search over steps // original filter, is left here for compatibility reason // doesn't fit into new keyword scheme else if (tokLowerCase.startsWith(FilterString.STEP) || tokLowerCase.startsWith(FilterString.SCHRITT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + createHistoricFilter(conjSteps, tok, flagSteps); } else if (tokLowerCase.startsWith(FilterString.STEPINWORK) || tokLowerCase.startsWith(FilterString.SCHRITTINARBEIT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.INWORK, false, filterPrefix)); // new keyword stepLocked implemented } else if (tokLowerCase.startsWith(FilterString.STEPLOCKED) || tokLowerCase.startsWith(FilterString.SCHRITTINARBEIT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.LOCKED, false, filterPrefix)); // new keyword stepOpen implemented } else if (tokLowerCase.startsWith(FilterString.STEPOPEN) || tokLowerCase.startsWith(FilterString.SCHRITTOFFEN)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.OPEN, false, filterPrefix)); // new keyword stepDone implemented } else if (tokLowerCase.startsWith(FilterString.STEPDONE) || tokLowerCase.startsWith(FilterString.SCHRITTABGESCHLOSSEN)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.DONE, false, filterPrefix)); // new keyword stepDoneTitle implemented, replacing so far // undocumented } else if (tokLowerCase.startsWith(FilterString.STEPDONETITLE) || tokLowerCase.startsWith(FilterString.ABGESCHLOSSENERSCHRITTTITEL)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } String stepTitel = tok.substring(tok.indexOf(":") + 1); FilterHelper.filterStepName(conjSteps, stepTitel, TaskStatus.DONE, false, filterPrefix); } else if ((tokLowerCase.startsWith(FilterString.STEPDONEUSER) || tokLowerCase.startsWith(FilterString.ABGESCHLOSSENERSCHRITTBENUTZER)) && ConfigCore.getBooleanParameter("withUserStepDoneSearch")) { if (conjUsers == null) { conjUsers = Restrictions.conjunction(); } FilterHelper.filterStepDoneUser(conjUsers, tok); } else if (tokLowerCase.startsWith(FilterString.STEPAUTOMATIC) || tokLowerCase.startsWith(FilterString.SCHRITTAUTOMATISCH)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } FilterHelper.filterAutomaticSteps(conjSteps, tok, flagSteps); } else if (tokLowerCase.startsWith(FilterString.PROJECT) || tokLowerCase.startsWith(FilterString.PROJEKT)) { if (conjProjects == null) { conjProjects = Restrictions.conjunction(); } FilterHelper.filterProject(conjProjects, tok, false); } else if (tokLowerCase.startsWith(FilterString.TEMPLATE) || tokLowerCase.startsWith(FilterString.VORLAGE)) { if (conjTemplates == null) { conjTemplates = Restrictions.conjunction(); } FilterHelper.filterScanTemplate(conjTemplates, tok, false); } else if (tokLowerCase.startsWith(FilterString.ID)) { if (conjProcesses == null) { conjProcesses = Restrictions.conjunction(); } FilterHelper.filterIds(conjProcesses, tok); } else if (tokLowerCase.startsWith(FilterString.PROCESS) || tokLowerCase.startsWith(FilterString.PROZESS)) { if (conjProcesses == null) { conjProcesses = Restrictions.conjunction(); } conjProcesses .add(Restrictions.like("title", "%" + "proc:" + tok.substring(tok.indexOf(":") + 1) + "%")); } else if (tokLowerCase.startsWith(FilterString.BATCH) || tokLowerCase.startsWith(FilterString.GRUPPE)) { if (conjBatches == null) { conjBatches = Restrictions.conjunction(); } int value = Integer.parseInt(tok.substring(tok.indexOf(":") + 1)); conjBatches.add(Restrictions.eq("bat.id", value)); } else if (tokLowerCase.startsWith(FilterString.WORKPIECE) || tokLowerCase.startsWith(FilterString.WERKSTUECK)) { if (conjWorkPiece == null) { conjWorkPiece = Restrictions.conjunction(); } FilterHelper.filterWorkpiece(conjWorkPiece, tok, false); } else if (tokLowerCase.startsWith("-" + FilterString.PROCESSPROPERTY) || tokLowerCase.startsWith("-" + FilterString.PROZESSEIGENSCHAFT)) { if (conjProcessProperties == null) { conjProcessProperties = Restrictions.conjunction(); } FilterHelper.filterProcessProperty(conjProcessProperties, tok, true); } else if (tokLowerCase.startsWith("-" + FilterString.STEPINWORK) || tokLowerCase.startsWith("-" + FilterString.SCHRITTINARBEIT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.INWORK, true, filterPrefix)); // new keyword stepLocked implemented } else if (tokLowerCase.startsWith("-" + FilterString.STEPLOCKED) || tokLowerCase.startsWith("-" + FilterString.SCHRITTGESPERRT)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.LOCKED, true, filterPrefix)); // new keyword stepOpen implemented } else if (tokLowerCase.startsWith("-" + FilterString.STEPOPEN) || tokLowerCase.startsWith("-" + FilterString.SCHRITTOFFEN)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.OPEN, true, filterPrefix)); // new keyword stepDone implemented } else if (tokLowerCase.startsWith("-" + FilterString.STEPDONE) || tokLowerCase.startsWith("-" + FilterString.SCHRITTABGESCHLOSSEN)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.DONE, true, filterPrefix)); // new keyword stepDoneTitle implemented, replacing so far // undocumented } else if (tokLowerCase.startsWith("-" + FilterString.STEPDONETITLE) || tokLowerCase.startsWith("-" + FilterString.ABGESCHLOSSENERSCHRITTTITEL)) { if (conjSteps == null) { conjSteps = Restrictions.conjunction(); } String stepTitel = tok.substring(tok.indexOf(":") + 1); FilterHelper.filterStepName(conjSteps, stepTitel, TaskStatus.DONE, true, filterPrefix); } else if (tokLowerCase.startsWith("-" + FilterString.PROJECT) || tokLowerCase.startsWith("-" + FilterString.PROJEKT)) { if (conjProjects == null) { conjProjects = Restrictions.conjunction(); } FilterHelper.filterProject(conjProjects, tok, true); } else if (tokLowerCase.startsWith("-" + FilterString.TEMPLATE) || tokLowerCase.startsWith("-" + FilterString.VORLAGE)) { if (conjTemplates == null) { conjTemplates = Restrictions.conjunction(); } FilterHelper.filterScanTemplate(conjTemplates, tok, true); } else if (tokLowerCase.startsWith("-" + FilterString.WORKPIECE) || tokLowerCase.startsWith("-" + FilterString.WERKSTUECK)) { if (conjWorkPiece == null) { conjWorkPiece = Restrictions.conjunction(); } FilterHelper.filterWorkpiece(conjWorkPiece, tok, true); } else if (tokLowerCase.startsWith("-")) { if (conjProcesses == null) { conjProcesses = Restrictions.conjunction(); } conjProcesses.add(Restrictions.not(Restrictions.like("title", "%" + tok.substring(1) + "%"))); } else { /* standard-search parameter */ if (conjProcesses == null) { conjProcesses = Restrictions.conjunction(); } conjProcesses.add(IlikeExpression.ilike("title", "*" + tok + "*", '!')); } } if (conjProcesses != null || flagSteps) { if (!flagProcesses) { critProcess = crit.createCriteria("process", "proc"); if (conjProcesses != null) { critProcess.add(conjProcesses); } } else { if (conjProcesses != null) { inCrit.add(conjProcesses); } } } if (flagSteps) { critProject = critProcess.createCriteria("project", "proj"); if (conjProjects != null) { inCrit.add(conjProjects); } } else { inCrit.createCriteria("project", "proj"); if (conjProjects != null) { inCrit.add(conjProjects); } } if (conjSteps != null) { if (!flagSteps) { crit.createCriteria("tasks", "steps"); crit.add(conjSteps); } else { inCrit.add(conjSteps); } } if (conjTemplates != null) { if (flagSteps) { critProcess.createCriteria("templates", "vorl"); critProcess.createAlias("vorl.eigenschaften", "vorleig"); critProcess.add(conjTemplates); } else { crit.createCriteria("templates", "vorl"); crit.createAlias("vorl.eigenschaften", "vorleig"); inCrit.add(conjTemplates); } } if (conjProcessProperties != null) { if (flagSteps) { critProcess.createAlias("proc.eigenschaften", "prozesseig"); critProcess.add(conjProcessProperties); } else { inCrit.createAlias("properties", "prozesseig"); inCrit.add(conjProcessProperties); } } if (conjWorkPiece != null) { if (flagSteps) { critProcess.createCriteria("workpiece", "werk"); critProcess.createAlias("werk.eigenschaften", "werkeig"); critProcess.add(conjWorkPiece); } else { inCrit.createCriteria("workpiece", "werk"); inCrit.createAlias("werk.eigenschaften", "werkeig"); inCrit.add(conjWorkPiece); } } if (conjUsers != null) { if (flagSteps) { critProcess.createCriteria("processingUser", "processingUser"); critProcess.add(conjUsers); } else { inCrit.createAlias("steps.processingUser", "processingUser"); inCrit.add(conjUsers); } } if (conjBatches != null) { if (flagSteps) { critProcess.createCriteria("batches", "bat"); critProcess.add(conjBatches); } else { crit.createCriteria("batches", "bat"); inCrit.add(conjBatches); } } return message; }
From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java
License:Open Source License
/** * Create historic filer./*from w w w . j a v a 2 s. c o m*/ * * @param conjSteps * Conjunction object * @param filterPart * String * @return empty string */ private static String createHistoricFilter(Conjunction conjSteps, String filterPart, Boolean stepCriteria) { /* filtering by a certain minimal status */ Integer stepReihenfolge; String stepTitle = filterPart.substring(filterPart.indexOf(":") + 1); // if the criteria is build on steps the table need not be identified String tableIdentifier; if (stepCriteria) { tableIdentifier = ""; } else { tableIdentifier = "steps."; } try { stepReihenfolge = Integer.parseInt(stepTitle); } catch (NumberFormatException e) { stepTitle = filterPart.substring(filterPart.indexOf(":") + 1); if (stepTitle.startsWith("-")) { stepTitle = stepTitle.substring(1); conjSteps.add(Restrictions.and( Restrictions.not(Restrictions.like(tableIdentifier + "title", "%" + stepTitle + "%")), Restrictions.ge(tableIdentifier + "processingStatus", TaskStatus.OPEN.getValue()))); return ""; } else { conjSteps.add(Restrictions.and(Restrictions.like(tableIdentifier + "title", "%" + stepTitle + "%"), Restrictions.ge(tableIdentifier + "processingStatus", TaskStatus.OPEN.getValue()))); return ""; } } conjSteps.add(Restrictions.and(Restrictions.eq(tableIdentifier + "ordering", stepReihenfolge), Restrictions.ge(tableIdentifier + "processingStatus", TaskStatus.OPEN.getValue()))); return ""; }
From source file:org.grails.datastore.gorm.hibernate.query.HibernateQuery.java
License:Apache License
@Override public Junction negation() { final org.hibernate.criterion.Disjunction disjunction = Restrictions.disjunction(); criteria.add(Restrictions.not(disjunction)); return new HibernateJunction(disjunction); }
From source file:org.headsupdev.agile.storage.HibernateStorage.java
License:Open Source License
protected Criteria getProjectCriteria(Session session, boolean disabled, Set<String> ids) { Criteria criteria = session.createCriteria(Project.class); criteria.add(Restrictions.not(Restrictions.eq("id", Project.ALL_PROJECT_ID))); criteria.add(Restrictions.isNull("parent")); if (!disabled) { criteria.add(Restrictions.or(Restrictions.isNull("disabled"), Restrictions.eq("disabled", false))); }// ww w. j a va 2 s. c o m if (ids != null) { criteria.add(Restrictions.in("id", ids)); } criteria.addOrder(Order.asc("name")); return criteria; }
From source file:org.hoteia.qalingo.core.dao.ProductDao.java
License:Apache License
public List<ProductSku> findProductSkusNotInThisVirtualCatalogCategoryId(final Long categoryId, Object... params) {//w w w . j a va 2s. c om Criteria criteriaSubListId = createDefaultCriteria(ProductSku.class); criteriaSubListId.createAlias("catalogCategoryVirtualProductSkuRels", "catalogCategoryProductSkuRel", JoinType.LEFT_OUTER_JOIN); criteriaSubListId .add(Restrictions.eq("catalogCategoryProductSkuRel.pk.catalogCategoryVirtual.id", categoryId)); // criteriaSubListId.setProjection(Projections.property("id")); @SuppressWarnings("unchecked") List<ProductSku> subProductSkus = criteriaSubListId.list(); List<Long> productSkuIds = new ArrayList<Long>(); for (Iterator<ProductSku> iterator = subProductSkus.iterator(); iterator.hasNext();) { ProductSku productSku = (ProductSku) iterator.next(); productSkuIds.add(productSku.getId()); } Criteria criteria = createDefaultCriteria(ProductSku.class); handleSpecificProductSkuFetchMode(criteria, params); criteria.add(Restrictions.not(Restrictions.in("id", productSkuIds))); criteria.addOrder(Order.asc("id")); @SuppressWarnings("unchecked") List<ProductSku> productSkus = criteria.list(); return productSkus; }
From source file:org.hsqldb.hibernate.geomajas.layer.hibernate.CriteriaVisitor.java
License:Open Source License
/** {@inheritDoc} */ public Object visit(Not filter, Object userData) { Criterion c = (Criterion) filter.getFilter().accept(this, userData); return Restrictions.not(c); }
From source file:org.hsqldb.hibernate.geomajas.layer.hibernate.CriteriaVisitor.java
License:Open Source License
/** {@inheritDoc} */ public Object visit(ExcludeFilter filter, Object userData) { return Restrictions.not(Restrictions.conjunction()); }
From source file:org.hyperic.hq.authz.server.session.AuthzSubjectDAO.java
License:Open Source License
public Collection findAll_order(boolean isRoot, String col, boolean asc, Collection excludes) { Criteria criteria = createCriteria(); if (isRoot) { Disjunction disjunctions = Restrictions.disjunction(); disjunctions.add(Restrictions.eq("system", Boolean.FALSE)); disjunctions.add(Restrictions.eq("id", AuthzConstants.rootSubjectId)); criteria.add(disjunctions);/*from w ww . j av a2s .c om*/ } else { criteria.add(Restrictions.eq("system", Boolean.FALSE)); } criteria.addOrder(asc ? Order.asc(col) : Order.desc(col)); if (excludes != null && excludes.size() > 0) { criteria.add(Restrictions.not(Restrictions.in("id", excludes))); } return criteria.list(); }
From source file:org.infoglue.calendar.controllers.EventController.java
License:Open Source License
/** * Gets a list of all events available for a particular user. * @return List of Event/*from w w w . j a va 2 s . c om*/ * @throws Exception */ public Set getEventList(java.util.Calendar startDate, java.util.Calendar endDate, String userName, List roles, List groups, Integer stateId, boolean includeLinked, boolean includeEventsCreatedByUser, Session session) throws Exception { List result = new ArrayList(); if (includeLinked == true) { String rolesSQL = getRoleSQL(roles); log.info("groups:" + groups.size()); String groupsSQL = getGroupsSQL(groups); log.info("groupsSQL:" + groupsSQL); String sql = "select c from Calendar c, Role cr, Group g where cr.calendar = c AND g.calendar = c " + (rolesSQL != null ? " AND cr.name IN " + rolesSQL : "") + (groupsSQL != null ? " AND g.name IN " + groupsSQL : "") + " order by c.id"; //String sql = "select distinct c from Calendar c, Role cr, Group g where cr.calendar = c AND g.calendar = c " + (rolesSQL != null ? " AND cr.name IN " + rolesSQL : "") + (groupsSQL != null ? " AND g.name IN " + groupsSQL : "") + " order by c.id"; log.info("sql:" + sql); Query q = session.createQuery(sql); setRoleNames(0, q, roles); setGroupNames(roles.size(), q, groups); List calendars = q.list(); Object[] calendarIdArray = new Object[calendars.size()]; int i = 0; Iterator calendarsIterator = calendars.iterator(); while (calendarsIterator.hasNext()) { Calendar calendar = (Calendar) calendarsIterator.next(); log.info("calendar: " + calendar.getName()); calendarIdArray[i] = calendar.getId(); i++; } if (calendarIdArray.length > 0) { Criteria criteria = session.createCriteria(Event.class); criteria.add(Restrictions.eq("stateId", stateId)); criteria.add(Expression.gt("endDateTime", startDate)); criteria.addOrder(Order.asc("startDateTime")); /* criteria.add(Expression.gt("endDateTime", endDate)); criteria.add(Expression.lt("startDateTime", startDate)); */ criteria.createCriteria("owningCalendar") .add(Restrictions.not(Restrictions.in("id", calendarIdArray))); criteria.createCriteria("calendars").add(Restrictions.in("id", calendarIdArray)); result = criteria.list(); } } else { String rolesSQL = getRoleSQL(roles); log.info("groups:" + groups.size()); String groupsSQL = getGroupsSQL(groups); log.info("groupsSQL:" + groupsSQL); String sql = "select event from Event event, Calendar c, Role cr, Group g where event.owningCalendar = c AND cr.calendar = c AND g.calendar = c AND event.stateId = ? AND event.endDateTime >= ? " + (rolesSQL != null ? " AND cr.name IN " + rolesSQL : "") + (groupsSQL != null ? " AND g.name IN " + groupsSQL : "") + " order by event.startDateTime"; //String sql = "select distinct event from Event event, Calendar c, Role cr, Group g where event.owningCalendar = c AND cr.calendar = c AND g.calendar = c AND event.stateId = ? AND event.endDateTime >= ? " + (rolesSQL != null ? " AND cr.name IN " + rolesSQL : "") + (groupsSQL != null ? " AND g.name IN " + groupsSQL : "") + " order by event.startDateTime"; log.info("sql:" + sql); Query q = session.createQuery(sql); q.setInteger(0, stateId.intValue()); q.setCalendar(1, startDate); log.info("startDate:" + startDate.getTime()); setRoleNames(2, q, roles); /* q.setCalendar(1, startDate); q.setCalendar(2, endDate); setRoleNames(3, q, roles); */ setGroupNames(roles.size() + 2, q, groups); result = q.list(); } log.info("result:" + result.size()); Set set = new LinkedHashSet(); set.addAll(result); if (includeEventsCreatedByUser) { Criteria criteria = session.createCriteria(Event.class); criteria.add(Restrictions.eq("stateId", stateId)); criteria.add(Restrictions.eq("creator", userName)); criteria.add(Expression.gt("endDateTime", startDate)); criteria.addOrder(Order.asc("startDateTime")); /* criteria.add(Expression.gt("endDateTime", endDate)); criteria.add(Expression.lt("startDateTime", startDate)); */ set.addAll(criteria.list()); } List sortedList = new ArrayList(); sortedList.addAll(set); Collections.sort(sortedList, new EventComparator()); set.clear(); set.addAll(sortedList); return set; }