List of usage examples for org.hibernate.criterion Restrictions not
public static Criterion not(Criterion expression)
From source file:org.rebioma.server.services.OccurrenceDbImpl.java
License:Apache License
/** * Adds a {@link Set} of search {@link OccurrenceFilter} to the * {@link Criteria}//from w w w .j a v a 2 s . com * * @param criteria {@link Criteria} to be added with filters * @param user an id of a user in db. * @param searchFilters a filters that use for find Occurrences. * @param resultFilter the {@link ResultFilter} to determine what public * filter is added. * @param tryCount TODO * @return {@link Set} of string filters was added to criteria. */ private Set<String> addCreterionByFilters(Criteria criteria, User user, Set<OccurrenceFilter> searchFilters, ResultFilter resultFilter, int tryCount) { Set<String> queryFilters = new HashSet<String>(); // if (userId != null) { // } // Adds restrictions for each query filter: boolean isMyOccurrence = false; String ownerField = getOccurrencePropertyName("ownerEmail"); List<Criterion> disjunctionCriterions = new ArrayList<Criterion>(); for (OccurrenceFilter filter : searchFilters) { if ((filter.getOperator() != Operator.IS_EMPTY && filter.getOperator() != Operator.IS_NOT_EMPTY) && filter.value instanceof String && ((String) filter.value).equals("")) { continue; } if (filter.column.equalsIgnoreCase(ownerField)) { isMyOccurrence = true; } String queryFilter = null; Criterion criterion = null; // if filter column is "quickSearch" then this is a simple search if (filter.column.equalsIgnoreCase(filter.getPropertyName("quickSearch"))) { Criterion acceptedSpeciesCri = null; Criterion verbatimSpeciesCri = null; Criterion scientificNameCri = null; String acceptedSpecies = filter.getPropertyName("acceptedSpecies"); String verbatimSpecies = filter.getPropertyName("verbatimSpecies"); String scientificName = filter.getPropertyName("scientificName"); if (tryCount == 1) { acceptedSpeciesCri = Restrictions.ilike(acceptedSpecies, filter.getValue().toString(), MatchMode.START); verbatimSpeciesCri = Restrictions.ilike(verbatimSpecies, filter.getValue().toString(), MatchMode.START); scientificNameCri = Restrictions.ilike(scientificName, filter.getValue().toString(), MatchMode.START); queryFilter = acceptedSpecies + " like '" + filter.getValue() + "%' or " + verbatimSpecies + " like '" + filter.getValue() + "%' or " + scientificName + " like '" + filter.getValue() + "%'"; } else if (tryCount == 2) { acceptedSpeciesCri = Restrictions.ilike(acceptedSpecies, filter.getValue().toString(), MatchMode.ANYWHERE); verbatimSpeciesCri = Restrictions.ilike(verbatimSpecies, filter.getValue().toString(), MatchMode.ANYWHERE); scientificNameCri = Restrictions.ilike(scientificName, filter.getValue().toString(), MatchMode.ANYWHERE); queryFilter = acceptedSpecies + " like '%" + filter.getValue() + "%' or " + verbatimSpecies + " like '%" + filter.getValue() + "%' or " + scientificName + " like '%" + filter.getValue() + "%'"; } criterion = Restrictions.or(scientificNameCri, Restrictions.or(acceptedSpeciesCri, verbatimSpeciesCri)); } else { Operator op = filter.getOperator(); String value; switch (op) { case CONTAIN: value = (String) filter.getValue(); criterion = Restrictions.ilike(filter.column, value, MatchMode.ANYWHERE); break; case EQUAL: criterion = null; if (filter.column.equals(filter.getPropertyName("sex"))) { value = (String) filter.getValue(); if (value.equalsIgnoreCase("unknown")) { Object[] filters = getComplexCriterion( new String[] { "male", "female", "hermaphroditic" }, filter.column, "!="); criterion = (Criterion) filters[0]; queryFilter = filters[1].toString(); // criterion = Restrictions.or(Restrictions., rhs) } else { criterion = Restrictions.eq(filter.column, value); } } else if (filter.column.equals(filter.getPropertyName("BasisOfRecord"))) { value = (String) filter.getValue(); if (value.equalsIgnoreCase("Non-standardSpecimen")) { Object[] filters = getComplexCriterion(VALID_BASIS_OF_RECORDS, filter.column, "!="); criterion = (Criterion) filters[0]; queryFilter = filters[1].toString(); } else { criterion = Restrictions.eq(filter.column, value); } } else { // {wd} on utilise "upper()" si type column = String if (StringUtil.isType(Occurrence.class, filter.column, String.class)) criterion = Restrictions.sqlRestriction("upper({alias}." + StringUtil.columnName(Occurrence.class, filter.column) + ") = upper(?)", filter.getValue(), Hibernate.STRING); else criterion = Restrictions.eq(filter.column, filter.getValue()); } break; case NOT_CONTAIN: value = (String) filter.getValue(); criterion = Restrictions.not(Restrictions.ilike(filter.column, value, MatchMode.ANYWHERE)); break; case NOT_EQUAL: criterion = null; if (filter.column.equals(filter.getPropertyName("sex"))) { value = (String) filter.getValue(); if (value.equalsIgnoreCase("unknown")) { Object[] filters = getComplexCriterion( new String[] { "male", "female", "hermaphroditic" }, filter.column, "="); criterion = (Criterion) filters[0]; queryFilter = filters[1].toString(); // criterion = Restrictions.or(Restrictions., rhs) } else { criterion = Restrictions.ne(filter.column, value); } } else if (filter.column.equals(filter.getPropertyName("BasisOfRecord"))) { value = (String) filter.getValue(); if (value.equalsIgnoreCase("Non-standardSpecimen")) { Object[] filters = getComplexCriterion(VALID_BASIS_OF_RECORDS, filter.column, "="); criterion = (Criterion) filters[0]; queryFilter = filters[1].toString(); } else { criterion = Restrictions.ne(filter.column, value); } } else { criterion = Restrictions.ne(filter.column, filter.getValue()); } break; case START_WITH: value = (String) filter.getValue(); criterion = Restrictions.ilike(filter.column, value, MatchMode.START); break; case NOT_START_WITH: value = (String) filter.getValue(); criterion = Restrictions.not(Restrictions.ilike(filter.column, value, MatchMode.START)); break; case LESS: criterion = Restrictions.lt(filter.column, filter.getValue()); break; case GREATER: criterion = Restrictions.gt(filter.column, filter.getValue()); break; case LESS_EQUAL: criterion = Restrictions.le(filter.column, filter.getValue()); break; case GREATER_EQUAL: criterion = Restrictions.ge(filter.column, filter.getValue()); break; case IN: if (filter.getValue() instanceof Collection<?>) { criterion = Restrictions.in(filter.column, (Collection<?>) filter.getValue()); //{WD } else if (StringUtil.isType(Occurrence.class, filter.column, Integer.class)) { Object values[] = filter.getIntegerValues(); criterion = Restrictions.in(filter.column, values); //} } else { String values[] = filter.getCollectionValues(); criterion = Restrictions.in(filter.column, values); } break; case NOT_IN: //{WD if (StringUtil.isType(Occurrence.class, filter.column, Integer.class)) { Object arryValues[] = filter.getIntegerValues(); criterion = Restrictions.not(Restrictions.in(filter.column, arryValues)); //} } else { String arryValues[] = filter.getCollectionValues(); criterion = Restrictions.not(Restrictions.in(filter.column, arryValues)); } break; case IS_EMPTY: if (StringUtil.isString(Occurrence.class, filter.column)) { // System.out.println(filter.column + "null and empty"); criterion = Restrictions.or(Restrictions.isNull(filter.column), Restrictions.eq(filter.column, "")); } else { // System.out.println(filter.column + "null"); criterion = Restrictions.isNull(filter.column); } // System.out.println(criterion); break; case IS_NOT_EMPTY: criterion = Restrictions.and(Restrictions.isNotNull(filter.column), Restrictions.ne(filter.column, "")); System.out.println(criterion); break; } } if (criterion != null) { if (queryFilter == null) { queryFilter = filter.toString(); } queryFilters.add(queryFilter); if (filter.isDisjunction()) { disjunctionCriterions.add(criterion); } else { criteria.add(criterion); } } } Set<String> filtersString = new HashSet<String>(); Criterion publicCriterion = getPublicCriterion(user, resultFilter, isMyOccurrence, filtersString); if (publicCriterion != null) { criteria.add(publicCriterion); queryFilters.addAll(filtersString); } Criterion disjunctionCriterion = null; for (Criterion c : disjunctionCriterions) { if (disjunctionCriterion == null) { disjunctionCriterion = Restrictions.disjunction().add(c); } else { disjunctionCriterion = Restrictions.or(disjunctionCriterion, c); } } if (disjunctionCriterion != null) { criteria.add(disjunctionCriterion); } return queryFilters; }
From source file:org.remus.marketplace.controller.admin.CategoryAdminController.java
License:Open Source License
@Override protected Map referenceData(HttpServletRequest request) throws Exception { String parameter = request.getParameter("categoryId"); Category findById = categoryDao.findById(Integer.parseInt(parameter)); List<Integer> ids = new ArrayList<Integer>(); Set<Node> nodes = findById.getNodes(); for (Node node : nodes) { ids.add(node.getId());//w w w.j a v a 2s. com } AdvancedCriteria adv = AdvancedCriteria.EMPTY_READONLY_INSTANCE; if (ids.size() > 0) { adv = new AdvancedCriteria().addRestriction(Restrictions.not(Restrictions.in(Node.ID, ids))); } List<Node> find = nodeDao.find(adv); Map<String, Object> response = new HashMap<String, Object>(); response.put("category", findById); response.put("availableSolutions", find); return response; }
From source file:org.remus.marketplace.controller.admin.MarketAdminController.java
License:Open Source License
@Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { List<Market> find = marketDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE); List<Object> query = nodeDao.query(new AdvancedCriteria() .setProjection(Projections.projectionList().add(Projections.groupProperty(Node.ID), "cat_node") .add(Projections.alias(Projections.rowCount(), "catCount"))) .addSubCriteria(new AdvancedCriteria().setAssosication(Node.CATEGORIES))); List<Node> orphans = new ArrayList<Node>(); List<Integer> nonOrphan = new ArrayList<Integer>(); for (Object object : query) { nonOrphan.add((Integer) ((Object[]) object)[0]); }/*w w w . ja va 2 s.c om*/ if (nonOrphan.size() == 0) { orphans = nodeDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE); } else { orphans = nodeDao.find( new AdvancedCriteria().addRestriction(Restrictions.not(Restrictions.in(Node.ID, nonOrphan)))); } List<Category> categories = categoryDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE); List<Platform> platforms = platformDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE); List<Node> nodes = nodeDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE); Map<String, Object> response = new HashMap<String, Object>(); response.put("markets", find); response.put("orphans", orphans); response.put("platforms", platforms); response.put("categories", categories); response.put("solutions", nodes); return new ModelAndView("admin/markets", response); }
From source file:org.sakaiproject.genericdao.hibernate.HibernateBasicGenericDao.java
License:Apache License
/** * Build the Criteria object here to reduce code duplication * @param entityClass// w ww . j a v a 2s . c o m * @param search a Search object (possibly only partially complete) * @return a DetachedCriteria object */ private DetachedCriteria buildCriteria(Class<?> entityClass, Search search) { // Checks to see if the required params are set and throws exception if not if (search == null) { throw new IllegalArgumentException("search cannot be null"); } // Build the criteria object DetachedCriteria criteria = DetachedCriteria.forClass(entityClass); // Only add in restrictions if there are some to add if (search.getRestrictions() != null && search.getRestrictions().length > 0) { Junction junction = Expression.conjunction(); // AND if (!search.conjunction) { // set to use disjunction junction = Expression.disjunction(); // OR } criteria.add(junction); // put in the restrictions for (int i = 0; i < search.getRestrictions().length; i++) { String property = search.getRestrictions()[i].property; Object value = search.getRestrictions()[i].value; if (property == null || value == null) { throw new IllegalArgumentException("restrictions property and value cannot be null or empty"); } if (value.getClass().isArray()) { // special handling for "in" type comparisons Object[] objectArray = (Object[]) value; if (objectArray.length == 1) { value = objectArray[0]; } else if (objectArray.length > 1) { if (Restriction.NOT_EQUALS == search.getRestrictions()[i].comparison) { junction.add(Restrictions.not(Restrictions.in(property, objectArray))); } else { junction.add(Restrictions.in(property, objectArray)); } } else { // do nothing for now, this is slightly invalid but not worth dying over } } if (!value.getClass().isArray()) { switch (search.getRestrictions()[i].comparison) { case Restriction.EQUALS: junction.add(Restrictions.eq(property, value)); break; case Restriction.GREATER: junction.add(Restrictions.gt(property, value)); break; case Restriction.LESS: junction.add(Restrictions.lt(property, value)); break; case Restriction.LIKE: junction.add(Restrictions.like(property, value)); break; case Restriction.NULL: junction.add(Restrictions.isNull(property)); break; case Restriction.NOT_NULL: junction.add(Restrictions.isNotNull(property)); break; case Restriction.NOT_EQUALS: junction.add(Restrictions.ne(property, value)); break; } } } } // handle the sorting (sort param can be null for no sort) if (search.getOrders() != null) { for (int i = 0; i < search.getOrders().length; i++) { if (search.getOrders()[i].ascending) { criteria.addOrder(org.hibernate.criterion.Order.asc(search.getOrders()[i].property)); } else { criteria.addOrder(org.hibernate.criterion.Order.desc(search.getOrders()[i].property)); } } } return criteria; }
From source file:org.sakaiproject.sitestats.impl.event.detailed.DetailedEventsManagerImpl.java
License:Educational Community License
private Optional<Criteria> basicCriteriaForTrackingParams(Session session, final TrackingParams params) { Criteria crit = session.createCriteria(DetailedEventImpl.class); if (StringUtils.isNotBlank(params.siteId)) { crit.add(Restrictions.eq(SITE_ID_COL, params.siteId)); }//ww w. j av a2 s . c o m if (!params.events.isEmpty()) { crit.add(Restrictions.in(EVENT_ID_COL, params.events)); } // Filter out any users who do not have the can be tracked permission in the site List<String> filtered = params.userIds.stream().filter(u -> statsAuthz.canUserBeTracked(params.siteId, u)) .collect(Collectors.toList()); // must have at least one user if (filtered.isEmpty()) { return Optional.empty(); } crit.add(Restrictions.in(USER_ID_COL, filtered)); if (!TrackingParams.NO_DATE.equals(params.startDate)) { crit.add(Restrictions.ge(EVENT_DATE_COL, Date.from(params.startDate))); } if (!TrackingParams.NO_DATE.equals(params.endDate)) { crit.add(Restrictions.lt(EVENT_DATE_COL, Date.from(params.endDate))); } // filter out anonymous events Set<String> anonEvents = regServ.getAnonymousEventIds(); if (!anonEvents.isEmpty()) { crit.add(Restrictions.not(Restrictions.in(EVENT_ID_COL, anonEvents))); } return Optional.of(crit); }
From source file:org.sculptor.framework.accessimpl.jpahibernate.JpaHibFindByConditionAccessImpl.java
License:Apache License
private Criterion makeCriterion(ConditionalCriteria crit) { if (crit == null) { return null; }/*w w w. j a v a 2 s .c om*/ ConditionalCriteria.Operator operator = crit.getOperator(); if (Operator.Equal.equals(operator)) { return Restrictions.eq(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.IgnoreCaseEqual.equals(operator)) { return Restrictions.eq(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()) .ignoreCase(); } else if (Operator.LessThan.equals(operator)) { return Restrictions.lt(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.LessThanOrEqual.equals(operator)) { return Restrictions.le(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.GreatThan.equals(operator)) { return Restrictions.gt(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.GreatThanOrEqual.equals(operator)) { return Restrictions.ge(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant()); } else if (Operator.Like.equals(operator)) { // Hibernate bug HHH-5339 + PostgreSQL missing 'number like string' conversion return new NumericLikeExpression(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant().toString(), false); } else if (Operator.IgnoreCaseLike.equals(operator)) { // Hibernate bug HHH-5339 + PostgreSQL missing 'number like string' conversion return new NumericLikeExpression(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant().toString(), true); } else if (Operator.IsNull.equals(operator)) { return Restrictions.isNull(makePathWithAlias(crit.getPropertyFullName())); } else if (Operator.IsNotNull.equals(operator)) { return Restrictions.isNotNull(makePathWithAlias(crit.getPropertyFullName())); } else if (Operator.IsEmpty.equals(operator)) { return Restrictions.isEmpty(makePathWithAlias(crit.getPropertyFullName())); } else if (Operator.IsNotEmpty.equals(operator)) { return Restrictions.isNotEmpty(makePathWithAlias(crit.getPropertyFullName())); } else if (Operator.Not.equals(operator)) { return Restrictions.not(makeCriterion((ConditionalCriteria) crit.getFirstOperant())); } else if (Operator.Or.equals(operator) && crit.getFirstOperant() instanceof List<?>) { Disjunction disj = Restrictions.disjunction(); List<?> disjList = (List<?>) crit.getFirstOperant(); for (Object disjPart : disjList) { disj.add(makeCriterion((ConditionalCriteria) disjPart)); } return disj; } else if (Operator.Or.equals(operator)) { return Restrictions.or(makeCriterion((ConditionalCriteria) crit.getFirstOperant()), makeCriterion((ConditionalCriteria) crit.getSecondOperant())); } else if (Operator.And.equals(operator) && crit.getFirstOperant() instanceof List<?>) { Conjunction conj = Restrictions.conjunction(); List<?> conjList = (List<?>) crit.getFirstOperant(); for (Object conjPart : conjList) { conj.add(makeCriterion((ConditionalCriteria) conjPart)); } return conj; } else if (Operator.And.equals(operator)) { return Restrictions.and(makeCriterion((ConditionalCriteria) crit.getFirstOperant()), makeCriterion((ConditionalCriteria) crit.getSecondOperant())); } else if (Operator.In.equals(operator)) { if (crit.getFirstOperant() instanceof Collection<?>) { return Restrictions.in(makePathWithAlias(crit.getPropertyFullName()), (Collection<?>) crit.getFirstOperant()); } else { return Restrictions.in(makePathWithAlias(crit.getPropertyFullName()), (Object[]) crit.getFirstOperant()); } } else if (Operator.Between.equals(operator)) { return Restrictions.between(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant(), crit.getSecondOperant()); } else if (Operator.DistinctRoot.equals(operator)) { realDistinctRoot = true; return null; } else if (Operator.ProjectionRoot.equals(operator)) { resultTransformer = Criteria.PROJECTION; return null; } else if (Operator.EqualProperty.equals(operator)) { return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else if (Operator.LessThanProperty.equals(operator)) { return Restrictions.ltProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else if (Operator.LessThanOrEqualProperty.equals(operator)) { return Restrictions.leProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else if (Operator.GreatThanProperty.equals(operator)) { return Restrictions.gtProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else if (Operator.GreatThanOrEqualProperty.equals(operator)) { return Restrictions.geProperty(makePathWithAlias(crit.getPropertyFullName()), (String) crit.getFirstOperant()); } else { return null; } }
From source file:org.semtix.db.DBHandlerPerson.java
License:Open Source License
/** * Liefert eine Liste von Personen die seit i Semestern KEINEN Antrag gestellt haben. Wenn i==0, dann sind das Personen, die noch NIE einen Antrag gestellt haben. * @param i Wieviele Semester// w w w. j a v a2 s . c o m * @return Liste der Personen die in i Semestern KEINEN Antrag gestellt haben */ public List<Person> getListePersonenSeitSemesternOhneAntrag(int i) { //Letzte i Semester in einer Liste: Set<Integer> semesterIDs = bestimmeLetzteSemester(i); Session session = HibernateUtil.getSessionFactory().openSession(); Criteria critAntrag = session.createCriteria(Antrag.class); if (null != semesterIDs && semesterIDs.size() > 0) { Property semesterId = Property.forName("semesterID"); critAntrag.add(semesterId.in(semesterIDs)); } //ntig weil sonst outer join doppelte resultate critAntrag.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); List<Antrag> antraegeDerSemester = critAntrag.list(); //Personen und Antrge HashSet<Integer> personIds = new HashSet<>(); for (Antrag a : antraegeDerSemester) { personIds.add(a.getPersonID()); } //We are looking for persons that are not in the list: Criteria critPerson = session.createCriteria(Person.class); critPerson.add(Restrictions.eq("uni", UniConf.aktuelleUni)); critPerson.add(Restrictions.not(Restrictions.in("personID", personIds))); critPerson.addOrder(Order.asc("nachname")); critAntrag.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); List<Person> personsNotInList = critPerson.list(); session.close(); return personsNotInList; }
From source file:org.squashtest.tm.domain.search.CUFBridge.java
License:Open Source License
@SuppressWarnings("unchecked") private List<CustomFieldValue> findCufValuesForType(Session session, Object value) { BindableEntity entityType = null;// w ww. j av a 2s .co m Long id = null; if ("testcase".equals(type)) { TestCase testcase = (TestCase) value; id = testcase.getId(); entityType = BindableEntity.TEST_CASE; } else if ("requirement".equals(type)) { RequirementVersion requirement = (RequirementVersion) value; id = requirement.getId(); entityType = BindableEntity.REQUIREMENT_VERSION; } Criteria crit = session.createCriteria(CustomFieldValue.class).createAlias("binding", "binding") .createAlias("binding.customField", "cuf"); crit.add(Restrictions.eq("boundEntityId", id)).add(Restrictions.eq("boundEntityType", entityType)); SimpleExpression typeDropDownList = Restrictions.eq("cuf.inputType", InputType.DROPDOWN_LIST); if (inputType != null && inputType.equals(InputType.DROPDOWN_LIST.name())) { crit.add(typeDropDownList); } else { crit.add(Restrictions.not(typeDropDownList)); } return crit.list(); }
From source file:org.web4thejob.orm.DataReaderServiceImpl.java
License:Open Source License
private org.hibernate.criterion.Criterion toHibernateCriterion(Criterion criterion, String alias) { org.hibernate.criterion.Criterion hibernate_criterion; String propertyName = criterion.getPropertyPath().getLastStep().getName(); if (alias != null) { propertyName = alias + "." + propertyName; }/*from w w w.ja v a 2 s . co m*/ if (criterion.getCondition().equals(Condition.EQ)) { hibernate_criterion = Property.forName(propertyName).eq(criterion.getValue()); } else if (criterion.getCondition().equals(Condition.NE)) { hibernate_criterion = Property.forName(propertyName).ne(criterion.getValue()); } else if (criterion.getCondition().equals(Condition.GT)) { hibernate_criterion = Property.forName(propertyName).gt(criterion.getValue()); } else if (criterion.getCondition().equals(Condition.GTE)) { hibernate_criterion = Property.forName(propertyName).ge(criterion.getValue()); } else if (criterion.getCondition().equals(Condition.LT)) { hibernate_criterion = Property.forName(propertyName).lt(criterion.getValue()); } else if (criterion.getCondition().equals(Condition.LTE)) { hibernate_criterion = Property.forName(propertyName).le(criterion.getValue()); } else if (criterion.getCondition().equals(Condition.NL)) { hibernate_criterion = Property.forName(propertyName).isNull(); } else if (criterion.getCondition().equals(Condition.NNL)) { hibernate_criterion = Property.forName(propertyName).isNotNull(); } else if (criterion.getCondition().equals(Condition.SW)) { hibernate_criterion = Property.forName(propertyName).like(criterion.getValue().toString(), MatchMode.START); } else if (criterion.getCondition().equals(Condition.NSW)) { hibernate_criterion = Restrictions .not(Property.forName(propertyName).like(criterion.getValue().toString(), MatchMode.START)); } else if (criterion.getCondition().equals(Condition.CN)) { hibernate_criterion = Property.forName(propertyName).like(criterion.getValue().toString(), MatchMode.ANYWHERE); } else if (criterion.getCondition().equals(Condition.NCN)) { hibernate_criterion = Restrictions .not(Property.forName(propertyName).like(criterion.getValue().toString(), MatchMode.ANYWHERE)); } else if (criterion.getCondition().equals(Condition.EW)) { hibernate_criterion = Property.forName(propertyName).like(criterion.getValue().toString(), MatchMode.END); } else if (criterion.getCondition().equals(Condition.NEW)) { hibernate_criterion = Restrictions .not(Property.forName(propertyName).like(criterion.getValue().toString(), MatchMode.END)); } else if (criterion.getCondition().equals(Condition.IN)) { hibernate_criterion = Restrictions.in(propertyName, (Collection) criterion.getValue()); } else if (criterion.getCondition().equals(Condition.NIN)) { hibernate_criterion = Restrictions .not(Restrictions.in(propertyName, (Collection) criterion.getValue())); } else if (criterion.getCondition().equals(Condition.EX) || criterion.getCondition().equals(Condition.NEX)) { EntityMetadata target = criterion.getPropertyPath().getLastStep().getAssociatedEntityMetadata(); Subquery subquery; if (criterion.getCondition().equals(Condition.EX)) { subquery = new Subquery(Subquery.SubqueryType.TYPE_EXISTS, target); } else { subquery = new Subquery(Subquery.SubqueryType.TYPE_NOT_EXISTS, target); } for (PropertyMetadata propertyMetadata : target.getPropertiesMetadata()) { if (criterion.getPropertyPath().getLastStep().isAssociatedWith(propertyMetadata)) { subquery.addCriterion( ContextUtil.getMRS().getPropertyPath(target.getEntityType(), new Path(propertyMetadata.getName())), Condition.EQ, Subquery.MASTER_ID_PLACEHOLDER); break; } } if (subquery.getCriteria().isEmpty()) { throw new RuntimeException("subquery failed: " + criterion.toString()); } hibernate_criterion = toHibernateSubcriterion( alias + "." + criterion.getPropertyPath().getLastStep().getName(), alias, subquery); } else { throw new RuntimeException("unknown condition encountered: " + criterion.getCondition().toString()); } return hibernate_criterion; }
From source file:org.webcurator.core.report.impl.CrawlerActivityReport.java
License:Apache License
/** * Generate the Crawler Activity Report/*from ww w . j a va 2 s .c o m*/ * * @param startDate Start date<br>Is inclusive and value is mandatory * @param endDate End date.<br> Is inclusive and value is mandatory * @param agencyName Name of Agency<br><code>null</code> value is accepted * @param userName Username<br><code>null</code> value is accepted * @return A <code>List</code> of <code>ResultSet</code> */ @SuppressWarnings("unchecked") protected List<ResultSet> runReport(final Date startDate, final Date endDate, final String agencyName, final String userName) { List results = (List) getHibernateTemplate().execute(new HibernateCallback() { @SuppressWarnings("unchecked") public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria query = session.createCriteria(TargetInstance.class); Criteria owner = null; if (userName != null && !userName.equals("All users")) { owner = query.createCriteria("owner").add(Restrictions.eq("username", userName)); } if (owner == null) { if (agencyName != null && !agencyName.equals("All agencies")) { query.createCriteria("owner").createCriteria("agency") .add(Restrictions.eq("name", agencyName)); } } else { if (agencyName != null && !agencyName.equals("All agencies")) { owner.createCriteria("agency").add(Restrictions.eq("name", agencyName)); } } query.add(Restrictions.ge("actualStartTime", startDate)); query.add(Restrictions.lt("actualStartTime", endDate)); query.add(Restrictions.not(Restrictions.in("state", new Object[] { TargetInstance.STATE_QUEUED, TargetInstance.STATE_SCHEDULED }))); query.addOrder(Order.asc("actualStartTime")); List<TargetInstance> results = query.list(); List realResults = new ArrayList<CrawlerActivityReportResultSet>(results.size()); for (TargetInstance ti : results) { Date endDate = null; // Target has finished, calculate the end date; otherwise leave it as null. if (!"Running".equals(ti.getState()) && !"Stopping".equals(ti.getState()) && ti.getActualStartTime() != null && ti.getStatus() != null) { endDate = new Date(ti.getActualStartTime().getTime() + ti.getStatus().getElapsedTime()); } realResults.add(new CrawlerActivityReportResultSet(ti.getOid(), ti.getTarget().getName(), ti.getState(), ti.getActualStartTime(), endDate, ti.getStatus().getElapsedTime(), ti.getStatus().getDataDownloaded(), ti.getHarvestServer())); } return realResults; } }); return results; }