List of usage examples for org.hibernate.criterion DetachedCriteria setProjection
public DetachedCriteria setProjection(Projection projection)
From source file:ubc.pavlab.aspiredb.server.dao.CriteriaBuilder.java
License:Apache License
private static Criterion processRestrictionExpression(SetRestriction setRestriction, EntityType target) { Property property = setRestriction.getProperty(); Operator operator = setRestriction.getOperator(); Set<Object> values = setRestriction.getValues(); log.debug("Property=" + property + "; operator=" + operator + "; values=" + StringUtils.collectionToCommaDelimitedString(values)); DetachedCriteria subquery = DetachedCriteria.forClass(target.clazz); Junction criteriaDisjunction = Restrictions.disjunction(); if (property instanceof CharacteristicProperty) { for (Object value : values) { criteriaDisjunction.add(createCharacteristicCriterion((CharacteristicProperty) property, Operator.TEXT_EQUAL, (TextValue) value, target)); }/* w w w . j a v a 2s .c om*/ } else if (property instanceof LabelProperty) { for (Object value : values) { criteriaDisjunction.add(createLabelCriterion((LabelProperty) property, Operator.TEXT_EQUAL, (LabelValueObject) value, target)); } } else if (property instanceof CNVTypeProperty) { EntityType propertyOf = EntityType.VARIANT; for (Object value : values) { criteriaDisjunction.add(createCNVTypeCriterion(Operator.TEXT_EQUAL, fullEntityPropertyName(target, propertyOf, property), (TextValue) value)); } } else if (property instanceof VariantTypeProperty) { for (Object value : values) { criteriaDisjunction.add(createVariantTypeCriterion(target, (TextValue) value)); } } else if (property instanceof ExternalSubjectIdProperty) { EntityType propertyOf = EntityType.SUBJECT; for (Object value : values) { criteriaDisjunction.add(createTextCriterion(Operator.TEXT_EQUAL, fullEntityPropertyName(target, propertyOf, property), ((TextValue) value).getValue())); } } else if (property instanceof TextProperty) { EntityType propertyOf = EntityType.VARIANT; for (Object value : values) { criteriaDisjunction.add(createTextCriterion(Operator.TEXT_EQUAL, fullEntityPropertyName(target, propertyOf, property), ((TextValue) value).getValue())); } } else if (property instanceof GenomicLocationProperty) { for (Object value : values) { criteriaDisjunction.add(overlapsGenomicRegionCriterion((GenomicRange) value)); } } else if (property instanceof GeneProperty) { for (Object value : values) { GeneValueObject gene = (GeneValueObject) value; criteriaDisjunction.add(overlapsGenomicRegionCriterion(gene.getGenomicRange())); } } else if (property instanceof NeurocartaPhenotypeProperty) { for (Object value : values) { NeurocartaPhenotypeValueObject neurocartaPhenotype = (NeurocartaPhenotypeValueObject) value; for (GeneValueObject gene : neurocartaPhenotype.getGenes()) { criteriaDisjunction.add(overlapsGenomicRegionCriterion(gene.getGenomicRange())); } } } else { throw new IllegalArgumentException("Not supported!"); } subquery.add(criteriaDisjunction); subquery.setProjection(Projections.distinct(Projections.id())); log.debug("subquery = " + subquery); switch (operator) { case IS_IN_SET: return Subqueries.propertyIn("id", subquery); case IS_NOT_IN_SET: return Subqueries.propertyNotIn("id", subquery); default: throw new IllegalArgumentException("Operator not supported."); } }
From source file:uk.org.rbc1b.roms.db.volunteer.HibernateVolunteerDao.java
License:Open Source License
private Criteria createVolunteerSearchCriteria(VolunteerSearchCriteria searchCriteria, Session session) { Criteria criteria = session.createCriteria(Volunteer.class); criteria.createAlias("Person", "person"); if (searchCriteria.getCongregationId() != null || searchCriteria.getKingdomHallId() != null) { criteria.createAlias("person.congregation", "congregation"); if (searchCriteria.getKingdomHallId() != null) { criteria.createAlias("congregation.kingdomHall", "kingdomHall"); }/*from w ww . j a v a2 s . co m*/ } else if (searchCriteria.getSearch() != null || "congregation.name".equals(searchCriteria.getSortValue())) { criteria.createAlias("person.congregation", "congregation", JoinType.LEFT_OUTER_JOIN); } if (searchCriteria.getSearch() != null) { String searchValue = "%" + searchCriteria.getSearch() + "%"; criteria.add(Restrictions.or(Restrictions.like("person.forename", searchValue), Restrictions.like("person.middleName", searchValue), Restrictions.like("person.surname", searchValue), Restrictions.like("person.email", searchValue), Restrictions.like("congregation.name", searchValue))); } // private String location; if (searchCriteria.getId() != null) { criteria.add(Restrictions.eq("personId", searchCriteria.getId())); } if (searchCriteria.getForename() != null) { criteria.add(Restrictions.like("person.forename", "%" + searchCriteria.getForename() + "%")); } if (searchCriteria.getSurname() != null) { criteria.add(Restrictions.like("person.surname", "%" + searchCriteria.getSurname() + "%")); } if (searchCriteria.getLocation() != null) { String searchValue = "%" + searchCriteria.getLocation() + "%"; criteria.add(Restrictions.or(Restrictions.like("person.address.street", searchValue), Restrictions.like("person.address.town", searchValue), Restrictions.like("person.address.county", searchValue), Restrictions.like("person.address.postcode", searchValue))); } if (searchCriteria.getCongregationId() != null) { criteria.add(Restrictions.eq("person.congregation.congregationId", searchCriteria.getCongregationId())); } if (searchCriteria.getKingdomHallId() != null) { criteria.add(Restrictions.eq("kingdomHall.kingdomHallId", searchCriteria.getKingdomHallId())); } if (searchCriteria.getSkillId() != null) { DetachedCriteria skillCriteria = DetachedCriteria.forClass(VolunteerSkill.class); skillCriteria.add(Restrictions.eq("skillId", searchCriteria.getSkillId())); skillCriteria.setProjection(Projections.property("personId")); criteria.add(Property.forName("personId").in(skillCriteria)); } if (searchCriteria.getQualificationId() != null) { DetachedCriteria qualificationCriteria = DetachedCriteria.forClass(VolunteerQualification.class); qualificationCriteria.add(Restrictions.eq("qualificationId", searchCriteria.getQualificationId())); qualificationCriteria.setProjection(Projections.property("personId")); criteria.add(Property.forName("personId").in(qualificationCriteria)); } if (searchCriteria.getDepartmentId() != null) { DetachedCriteria departmentCriteria = DetachedCriteria.forClass(Assignment.class); departmentCriteria.add(Restrictions.eq("departmentId", searchCriteria.getDepartmentId())); departmentCriteria.setProjection(Projections.property("person.personId")); criteria.add(Property.forName("personId").in(departmentCriteria)); } if (searchCriteria.getInterviewSessionId() != null) { DetachedCriteria interviewCriteria = DetachedCriteria.forClass(VolunteerInterviewSession.class); interviewCriteria.add( Restrictions.eq("interviewSession.interviewSessionId", searchCriteria.getInterviewSessionId())); interviewCriteria.setProjection(Projections.property("volunteer.personId")); criteria.add(Property.forName("personId").in(interviewCriteria)); } criteria.add(Restrictions.not(Restrictions.in("rbcStatusCode", Lists.newArrayList("DN", "IA")))); return criteria; }