Example usage for org.hibernate.criterion DetachedCriteria setProjection

List of usage examples for org.hibernate.criterion DetachedCriteria setProjection

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria setProjection.

Prototype

public DetachedCriteria setProjection(Projection projection) 

Source Link

Document

Set the projection to use.

Usage

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;
}