Example usage for org.hibernate.criterion ProjectionList add

List of usage examples for org.hibernate.criterion ProjectionList add

Introduction

In this page you can find the example usage for org.hibernate.criterion ProjectionList add.

Prototype

public ProjectionList add(Projection projection) 

Source Link

Document

Add a projection to this list of projections

Usage

From source file:org.jasig.ssp.dao.EarlyAlertResponseDao.java

License:Apache License

private ProjectionList getPersonProjection() {
    ProjectionList projections = Projections.projectionList();
    projections.add(Projections.groupProperty("person.firstName").as("ea_outcome_firstName"));
    projections.add(Projections.groupProperty("person.middleName").as("ea_outcome_middleName"));
    projections.add(Projections.groupProperty("person.lastName").as("ea_outcome_lastName"));
    projections/*from w w w .j a  v  a 2s.c  o m*/
            .add(Projections.groupProperty("person.primaryEmailAddress").as("ea_outcome_primaryEmailAddress"));
    projections.add(Projections.groupProperty("person.schoolId").as("ea_outcome_schoolId"));

    projections.add(Projections.groupProperty("coach.firstName").as("ea_outcome_coachFirstName"));
    projections.add(Projections.groupProperty("coach.middleName").as("ea_outcome_coachMiddleName"));
    projections.add(Projections.groupProperty("coach.lastName").as("ea_outcome_coachLastName"));

    return projections;
}

From source file:org.jasig.ssp.dao.EarlyAlertResponseDao.java

License:Apache License

private ProjectionList addBasicStudentProperties(ProjectionList projections, Criteria criteria) {

    criteria.createAlias("person.specialServiceGroups", "personSpecialServiceGroups", JoinType.LEFT_OUTER_JOIN);
    criteria.createAlias("person.programStatuses", "personProgramStatuses", JoinType.LEFT_OUTER_JOIN);

    projections.add(Projections.groupProperty("person.firstName").as("early_alert_response_firstName"));
    projections.add(Projections.groupProperty("person.middleName").as("early_alert_response_middleName"));
    projections.add(Projections.groupProperty("person.lastName").as("early_alert_response_lastName"));
    projections.add(Projections.groupProperty("person.schoolId").as("early_alert_response_schoolId"));
    projections.add(Projections.groupProperty("person.primaryEmailAddress")
            .as("early_alert_response_primaryEmailAddress"));
    projections.add(Projections.groupProperty("person.secondaryEmailAddress")
            .as("early_alert_response_secondaryEmailAddress"));
    projections.add(Projections.groupProperty("person.cellPhone").as("early_alert_response_cellPhone"));
    projections.add(Projections.groupProperty("person.homePhone").as("early_alert_response_homePhone"));
    projections.add(Projections.groupProperty("person.addressLine1").as("early_alert_response_addressLine1"));
    projections.add(Projections.groupProperty("person.addressLine2").as("early_alert_response_addressLine2"));
    projections.add(Projections.groupProperty("person.city").as("early_alert_response_city"));
    projections.add(Projections.groupProperty("person.state").as("early_alert_response_state"));
    projections.add(Projections.groupProperty("person.zipCode").as("early_alert_response_zipCode"));
    projections.add(Projections.groupProperty("person.id").as("early_alert_response_id"));
    criteria.createAlias("personSpecialServiceGroups.specialServiceGroup", "specialServiceGroup",
            JoinType.LEFT_OUTER_JOIN);/*from  w  ww . ja v  a  2s  . co  m*/
    projections.add(Projections.groupProperty("personSpecialServiceGroups.objectStatus")
            .as("early_alert_response_specialServiceGroupAssocObjectStatus"));
    projections.add(Projections.groupProperty("specialServiceGroup.name")
            .as("early_alert_response_specialServiceGroupName"));
    projections.add(Projections.groupProperty("specialServiceGroup.id")
            .as("early_alert_response_specialServiceGroupId"));

    criteria.createAlias("personProgramStatuses.programStatus", "programStatus", JoinType.LEFT_OUTER_JOIN);

    projections
            .add(Projections.groupProperty("programStatus.name").as("early_alert_response_programStatusName"));
    projections.add(
            Projections.groupProperty("personProgramStatuses.id").as("early_alert_response_programStatusId"));
    projections.add(Projections.groupProperty("personProgramStatuses.expirationDate")
            .as("early_alert_response_programStatusExpirationDate"));

    // Join to Student Type
    criteria.createAlias("person.studentType", "studentType", JoinType.LEFT_OUTER_JOIN);
    // add StudentTypeName Column
    projections.add(Projections.groupProperty("studentType.name").as("early_alert_response_studentTypeName"));
    projections.add(Projections.groupProperty("studentType.code").as("early_alert_response_studentTypeCode"));

    Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
    if (dialect instanceof SQLServerDialect) {
        // sql server requires all these to part of the grouping
        //projections.add(Projections.groupProperty("coach.id").as("coachId"));
        projections.add(Projections.groupProperty("coach.lastName").as("early_alert_response_coachLastName"))
                .add(Projections.groupProperty("coach.firstName").as("early_alert_response_coachFirstName"))
                .add(Projections.groupProperty("coach.middleName").as("early_alert_response_coachMiddleName"))
                .add(Projections.groupProperty("coach.schoolId").as("early_alert_response_coachSchoolId"))
                .add(Projections.groupProperty("coach.username").as("early_alert_response_coachUsername"));
    } else {
        // other dbs (postgres) don't need these in the grouping
        //projections.add(Projections.property("coach.id").as("coachId"));
        projections.add(Projections.groupProperty("coach.lastName").as("early_alert_response_coachLastName"))
                .add(Projections.groupProperty("coach.firstName").as("early_alert_response_coachFirstName"))
                .add(Projections.groupProperty("coach.middleName").as("early_alert_response_coachMiddleName"))
                .add(Projections.groupProperty("coach.schoolId").as("early_alert_response_coachSchoolId"))
                .add(Projections.groupProperty("coach.username").as("early_alert_response_coachUsername"));
    }
    return projections;
}

From source file:org.jasig.ssp.dao.JournalEntryDao.java

License:Apache License

@SuppressWarnings("unchecked")
public PagingWrapper<JournalStepStudentReportTO> getJournalStepStudentReportTOsFromCriteria(
        JournalStepSearchFormTO personSearchForm, SortingAndPaging sAndP) {
    final Criteria criteria = createCriteria(sAndP);

    setPersonCriteria(criteria, personSearchForm);

    if (personSearchForm.getCreateDateFrom() != null) {
        criteria.add(Restrictions.ge("createdDate", personSearchForm.getCreateDateFrom()));
    }/*from w w  w .j a  va  2  s. co  m*/

    if (personSearchForm.getCreateDateTo() != null) {
        criteria.add(Restrictions.le("createdDate", personSearchForm.getCreateDateTo()));
    }

    if (personSearchForm.getGetStepDetails()) {
        JoinType joinType = JoinType.INNER_JOIN;
        criteria.createAlias("journalEntryDetails", "journalEntryDetails", joinType);
        criteria.createAlias("journalEntryDetails.journalStepJournalStepDetail", "journalStepJournalStepDetail",
                joinType);
        criteria.createAlias("journalStepJournalStepDetail.journalStepDetail", "journalStepDetail", joinType);

        if (personSearchForm.getJournalStepDetailIds() != null
                && !personSearchForm.getJournalStepDetailIds().isEmpty()) {
            criteria.add(Restrictions.in("journalStepDetail.id", personSearchForm.getJournalStepDetailIds()));
            criteria.add(Restrictions.eq("journalEntryDetails.objectStatus", sAndP.getStatus()));
            criteria.add(Restrictions.eq("journalStepJournalStepDetail.objectStatus", sAndP.getStatus()));
        }
    } else {
        criteria.createAlias("journalEntryDetails", "journalEntryDetails", JoinType.LEFT_OUTER_JOIN);
        criteria.createAlias("journalEntryDetails.journalStepJournalStepDetail", "journalStepJournalStepDetail",
                JoinType.LEFT_OUTER_JOIN);
        criteria.createAlias("journalStepJournalStepDetail.journalStepDetail", "journalStepDetail",
                JoinType.LEFT_OUTER_JOIN);

        if (personSearchForm.getJournalStepDetailIds() != null
                && !personSearchForm.getJournalStepDetailIds().isEmpty()) {
            Criterion isNotIds = Restrictions
                    .not(Restrictions.in("journalStepDetail.id", personSearchForm.getJournalStepDetailIds()));
            Criterion isNull = Restrictions.isNull("journalStepDetail.id");
            criteria.add(Restrictions.or(isNotIds, isNull));
        } else {
            criteria.add(Restrictions.isNull("journalStepDetail.id"));
        }
    }

    ProjectionList projections = Projections.projectionList();
    projections.add(Projections.distinct(
            Projections.groupProperty("journalEntryDetails.id").as("journalentry_journalEntryDetailId")));
    addBasicStudentProperties(projections, criteria);

    projections
            .add(Projections.groupProperty("journalStepDetail.name").as("journalentry_journalStepDetailName"));
    criteria.setProjection(projections);
    criteria.setResultTransformer(
            new NamespacedAliasToBeanResultTransformer(JournalStepStudentReportTO.class, "journalentry_"));
    if (criteria.list().size() > 1) {
        List<JournalStepStudentReportTO> reports = criteria.list();
        Map<UUID, JournalStepStudentReportTO> cleanReports = new HashMap<UUID, JournalStepStudentReportTO>();
        for (JournalStepStudentReportTO report : reports) {
            if (!cleanReports.containsKey(report.getJournalEntryDetailId())) {
                cleanReports.put(report.getJournalEntryDetailId(), report);
            }
        }
        List<JournalStepStudentReportTO> sortReports = Lists.newArrayList(cleanReports.values());
        Collections.sort(sortReports, new Comparator<JournalStepStudentReportTO>() {
            public int compare(JournalStepStudentReportTO o1, JournalStepStudentReportTO o2) {
                JournalStepStudentReportTO p1 = (JournalStepStudentReportTO) o1;
                JournalStepStudentReportTO p2 = (JournalStepStudentReportTO) o2;
                int value = p1.getLastName().compareToIgnoreCase(p2.getLastName());
                if (value != 0)
                    return value;

                value = p1.getFirstName().compareToIgnoreCase(p2.getFirstName());
                if (value != 0)
                    return value;
                if (p1.getMiddleName() == null && p2.getMiddleName() == null)
                    return 0;
                if (p1.getMiddleName() == null)
                    return -1;
                if (p2.getMiddleName() == null)
                    return 1;
                return p1.getMiddleName().compareToIgnoreCase(p2.getMiddleName());
            }
        });
        return new PagingWrapper<JournalStepStudentReportTO>(sortReports.size(), sortReports);
    }
    return new PagingWrapper<JournalStepStudentReportTO>(criteria.list().size(),
            (List<JournalStepStudentReportTO>) criteria.list());
}

From source file:org.jasig.ssp.dao.JournalEntryDao.java

License:Apache License

private ProjectionList addBasicStudentProperties(ProjectionList projections, Criteria criteria) {

    criteria.createAlias("person.staffDetails", "personStaffDetails", JoinType.LEFT_OUTER_JOIN);

    projections.add(Projections.groupProperty("person.firstName").as("journalentry_firstName"));
    projections.add(Projections.groupProperty("person.middleName").as("journalentry_middleName"));
    projections.add(Projections.groupProperty("person.lastName").as("journalentry_lastName"));
    projections.add(Projections.groupProperty("person.schoolId").as("journalentry_schoolId"));
    projections.add(// www .ja v a2 s .c  om
            Projections.groupProperty("person.primaryEmailAddress").as("journalentry_primaryEmailAddress"));
    projections.add(
            Projections.groupProperty("person.secondaryEmailAddress").as("journalentry_secondaryEmailAddress"));
    projections.add(Projections.groupProperty("person.cellPhone").as("journalentry_cellPhone"));
    projections.add(Projections.groupProperty("person.homePhone").as("journalentry_homePhone"));
    projections.add(Projections.groupProperty("person.addressLine1").as("journalentry_addressLine1"));
    projections.add(Projections.groupProperty("person.addressLine2").as("journalentry_addressLine2"));
    projections.add(Projections.groupProperty("person.city").as("journalentry_city"));
    projections.add(Projections.groupProperty("person.state").as("journalentry_state"));
    projections.add(Projections.groupProperty("person.zipCode").as("journalentry_zipCode"));
    projections.add(Projections.groupProperty("person.id").as("journalentry_id"));

    criteria.createAlias("personSpecialServiceGroups.specialServiceGroup", "specialServiceGroup",
            JoinType.LEFT_OUTER_JOIN);
    projections.add(Projections.groupProperty("personSpecialServiceGroups.objectStatus")
            .as("journalentry_specialServiceGroupAssocObjectStatus"));
    criteria.createAlias("personProgramStatuses.programStatus", "programStatus", JoinType.LEFT_OUTER_JOIN);

    projections
            .add(Projections.groupProperty("specialServiceGroup.id").as("journalentry_specialServiceGroupId"));
    projections.add(
            Projections.groupProperty("specialServiceGroup.name").as("journalentry_specialServiceGroupName"));

    projections.add(Projections.groupProperty("programStatus.name").as("journalentry_programStatusName"));
    projections.add(Projections.groupProperty("personProgramStatuses.id").as("journalentry_programStatusId"));
    projections.add(Projections.groupProperty("personProgramStatuses.expirationDate")
            .as("journalentry_programStatusExpirationDate"));

    // Join to Student Type
    criteria.createAlias("person.studentType", "studentType", JoinType.LEFT_OUTER_JOIN);
    // add StudentTypeName Column
    projections.add(Projections.groupProperty("studentType.name").as("journalentry_studentTypeName"));
    projections.add(Projections.groupProperty("studentType.code").as("journalentry_studentTypeCode"));

    Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
    if (dialect instanceof SQLServerDialect) {
        // sql server requires all these to part of the grouping
        //projections.add(Projections.groupProperty("coach.id").as("coachId"));
        projections.add(Projections.groupProperty("coach.lastName").as("journalentry_coachLastName"))
                .add(Projections.groupProperty("coach.firstName").as("journalentry_coachFirstName"))
                .add(Projections.groupProperty("coach.middleName").as("journalentry_coachMiddleName"))
                .add(Projections.groupProperty("coach.schoolId").as("journalentry_coachSchoolId"))
                .add(Projections.groupProperty("coach.username").as("journalentry_coachUsername"));
    } else {
        // other dbs (postgres) don't need these in the grouping
        //projections.add(Projections.property("coach.id").as("coachId"));
        projections.add(Projections.groupProperty("coach.lastName").as("journalentry_coachLastName"))
                .add(Projections.groupProperty("coach.firstName").as("journalentry_coachFirstName"))
                .add(Projections.groupProperty("coach.middleName").as("journalentry_coachMiddleName"))
                .add(Projections.groupProperty("coach.schoolId").as("journalentry_coachSchoolId"))
                .add(Projections.groupProperty("coach.username").as("journalentry_coachUsername"));
    }
    return projections;
}

From source file:org.jasig.ssp.dao.PersonDao.java

License:Apache License

public PagingWrapper<Person> getAllAssignedCoaches(SortingAndPaging sAndP) {

    DetachedCriteria coach_ids = DetachedCriteria.forClass(Person.class, "coach_ids");
    final ProjectionList projections = Projections.projectionList();
    projections.add(Projections.distinct(Projections.property("coach.id")));
    coach_ids.setProjection(projections);
    coach_ids.add(Restrictions.isNotNull("coach"));

    Criteria criteria = createCriteria().add(Subqueries.propertiesIn(new String[] { "id" }, coach_ids));

    if (sAndP != null && sAndP.isFilteredByStatus()) {
        sAndP.addStatusFilterToCriteria(criteria);
    }/*w  w w .  j  a va 2s  .  c om*/

    // item count
    Long totalRows = 0L;
    if ((sAndP != null) && sAndP.isPaged()) {
        totalRows = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
    }

    criteria.setProjection(null);

    if (sAndP == null || !(sAndP.isSorted())) {
        criteria.addOrder(Order.asc("lastName")).addOrder(Order.asc("firstName"));
    } else {
        if (sAndP.isSorted()) {
            sAndP.addSortingToCriteria(criteria);
        }
        sAndP.addPagingToCriteria(criteria);
    }

    return new PagingWrapper<Person>(totalRows, criteria.list());

}

From source file:org.jasig.ssp.dao.PersonDao.java

License:Apache License

public PagingWrapper<CoachPersonLiteTO> getAllAssignedCoachesLite(SortingAndPaging sAndP,
        String homeDepartment) {//  www.  jav  a 2s . c  o m

    DetachedCriteria coach_ids = DetachedCriteria.forClass(Person.class, "coach_ids");
    final ProjectionList projections = Projections.projectionList();
    projections.add(Projections.distinct(Projections.property("coach.id")));
    coach_ids.setProjection(projections);
    coach_ids.add(Restrictions.isNotNull("coach"));

    Criteria criteria = createCriteria().add(Subqueries.propertiesIn(new String[] { "id" }, coach_ids));

    if (sAndP != null && sAndP.isFilteredByStatus()) {
        sAndP.addStatusFilterToCriteria(criteria);
    }

    if (homeDepartment != null && homeDepartment.length() >= 0) {
        criteria.createAlias("staffDetails", "personStaffDetails");
        criteria.add(Restrictions.eq("personStaffDetails.departmentName", homeDepartment));
    } else {
        criteria.createAlias("staffDetails", "personStaffDetails", JoinType.LEFT_OUTER_JOIN);
    }

    // item count
    Long totalRows = 0L;
    if ((sAndP != null) && sAndP.isPaged()) {
        totalRows = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
    }

    criteria.setProjection(null);
    criteria.setProjection(Projections.projectionList().add(Projections.property("id").as("person_id"))
            .add(Projections.property("firstName").as("person_firstName"))
            .add(Projections.property("lastName").as("person_lastName"))
            .add(Projections.property("primaryEmailAddress").as("person_primaryEmailAddress"))
            .add(Projections.property("workPhone").as("person_workPhone"))
            .add(Projections.property("personStaffDetails.departmentName").as("person_departmentName")))
            .setResultTransformer(
                    new NamespacedAliasToBeanResultTransformer(CoachPersonLiteTO.class, "person_"));

    return new PagingWrapper<CoachPersonLiteTO>(totalRows, criteria.list());

}

From source file:org.jasig.ssp.dao.PersonDao.java

License:Apache License

@SuppressWarnings("unchecked")
public PagingWrapper<DisabilityServicesReportTO> getDisabilityReport(PersonSearchFormTO form,
        final SortingAndPaging sAndP) throws ObjectNotFoundException {

    List<UUID> ids = getStudentUUIDs(form);
    if (ids.size() == 0)
        return null;
    BatchProcessor<UUID, DisabilityServicesReportTO> processor = new BatchProcessor<UUID, DisabilityServicesReportTO>(
            ids, sAndP);//from  ww w.  j a va  2  s.c  o m
    do {
        final Criteria criteria = createCriteria();

        // don't bring back any non-students, there will likely be a better way
        // to do this later

        final ProjectionList projections = Projections.projectionList();

        criteria.setProjection(projections);

        addBasicStudentProperties(projections, criteria, sAndP.getStatus());

        Criteria demographics = criteria.createAlias("demographics", "demographics", JoinType.LEFT_OUTER_JOIN);
        demographics.createAlias("demographics.ethnicity", "ethnicity", JoinType.LEFT_OUTER_JOIN);
        demographics.createAlias("demographics.race", "race", JoinType.LEFT_OUTER_JOIN);
        demographics.createAlias("demographics.veteranStatus", "veteranStatus", JoinType.LEFT_OUTER_JOIN);

        criteria.createAlias("disabilityAgencies", "disabilityAgencies", JoinType.LEFT_OUTER_JOIN);

        criteria.createAlias("disabilityAgencies.disabilityAgency", "disabilityAgency",
                JoinType.LEFT_OUTER_JOIN);

        criteria.createAlias("disabilityTypes", "personDisabilityTypes", JoinType.LEFT_OUTER_JOIN);

        criteria.createAlias("personDisabilityTypes.disabilityType", "disabilityType",
                JoinType.LEFT_OUTER_JOIN);
        criteria.createAlias("disability", "personDisability");

        criteria.createAlias("personDisability.disabilityStatus", "disabilityStatus", JoinType.LEFT_OUTER_JOIN);

        criteria.createAlias("educationGoal", "educationGoal", JoinType.LEFT_OUTER_JOIN);

        Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
        if (dialect instanceof SQLServerDialect) {

            projections.add(Projections.groupProperty("ethnicity.name").as("ethnicity"));
            projections.add(Projections.groupProperty("race.name").as("race"));
            projections.add(Projections.groupProperty("veteranStatus.name").as("veteranStatus"));
            projections.add(Projections.groupProperty("disabilityAgency.name").as("disabilityAgencyName"));
            projections.add(Projections.groupProperty("disabilityType.name").as("disabilityType"));
            projections.add(Projections.groupProperty("disabilityAgency.createdDate")
                    .as("disabilityAgencyCreatedDate"));
            projections.add(Projections.groupProperty("educationGoal.plannedMajor").as("major"));
            projections.add(Projections.groupProperty("disabilityStatus.name").as("odsStatus"));
            projections
                    .add(Projections.groupProperty("personDisability.createdDate").as("odsRegistrationDate"));
            projections
                    .add(Projections.groupProperty("personDisability.noDocumentation").as("noDocumentation"));
            projections.add(Projections.groupProperty("personDisability.inadequateDocumentation")
                    .as("inadequateDocumentation"));
            projections.add(Projections.groupProperty("personDisability.noDisability").as("noDisability"));
            projections.add(Projections.groupProperty("personDisability.noSpecialEd").as("noSpecialEd"));
        } else {
            projections.add(Projections.groupProperty("ethnicity.name").as("ethnicity"));
            projections.add(Projections.groupProperty("race.name").as("race"));
            projections.add(Projections.groupProperty("veteranStatus.name").as("veteranStatus"));
            projections.add(Projections.groupProperty("disabilityType.name").as("disabilityType"));
            projections.add(Projections.groupProperty("disabilityAgency.name").as("disabilityAgencyName"));
            projections.add(Projections.groupProperty("disabilityAgency.createdDate")
                    .as("disabilityAgencyCreatedDate"));
            projections.add(Projections.groupProperty("educationGoal.plannedMajor").as("major"));
            projections.add(Projections.groupProperty("disabilityStatus.name").as("odsStatus"));
            projections
                    .add(Projections.groupProperty("personDisability.createdDate").as("odsRegistrationDate"));
            projections
                    .add(Projections.groupProperty("personDisability.noDocumentation").as("noDocumentation"));
            projections.add(Projections.groupProperty("personDisability.inadequateDocumentation")
                    .as("inadequateDocumentation"));
            projections.add(Projections.groupProperty("personDisability.noDisability").as("noDisability"));
            projections.add(Projections.groupProperty("personDisability.noSpecialEd").as("noSpecialEd"));
        }

        criteria.setResultTransformer(new AliasToBeanResultTransformer(DisabilityServicesReportTO.class));
        processor.process(criteria, "id");
    } while (processor.moreToProcess());

    return new PagingWrapper<DisabilityServicesReportTO>(ids.size(),
            processor.getSortedAndPagedResultsAsList());

}

From source file:org.jasig.ssp.dao.PersonDao.java

License:Apache License

private ProjectionList addBasicStudentProperties(ProjectionList projections, Criteria criteria,
        ObjectStatus status) {/*w w w .  ja v  a  2 s. c om*/

    projections.add(Projections.groupProperty("firstName").as("firstName"));
    projections.add(Projections.groupProperty("middleName").as("middleName"));
    projections.add(Projections.groupProperty("lastName").as("lastName"));
    projections.add(Projections.groupProperty("schoolId").as("schoolId"));
    projections.add(Projections.groupProperty("primaryEmailAddress").as("primaryEmailAddress"));
    projections.add(Projections.groupProperty("secondaryEmailAddress").as("secondaryEmailAddress"));
    projections.add(Projections.groupProperty("cellPhone").as("cellPhone"));
    projections.add(Projections.groupProperty("homePhone").as("homePhone"));
    projections.add(Projections.groupProperty("addressLine1").as("addressLine1"));
    projections.add(Projections.groupProperty("addressLine2").as("addressLine2"));
    projections.add(Projections.groupProperty("city").as("city"));
    projections.add(Projections.groupProperty("state").as("state"));
    projections.add(Projections.groupProperty("zipCode").as("zipCode"));
    projections.add(Projections.groupProperty("actualStartTerm").as("actualStartTerm"));
    projections.add(Projections.groupProperty("actualStartYear").as("actualStartYear"));
    projections.add(Projections.groupProperty("id").as("id"));

    criteria.createAlias("programStatuses", "personProgramStatuses", JoinType.LEFT_OUTER_JOIN);
    criteria.createAlias("specialServiceGroups", "personSpecialServiceGroups", JoinType.LEFT_OUTER_JOIN);
    criteria.createAlias("personSpecialServiceGroups.specialServiceGroup", "specialServiceGroup",
            JoinType.LEFT_OUTER_JOIN);

    projections.add(Projections.groupProperty("specialServiceGroup.id").as("specialServiceGroupId"));
    projections.add(Projections.groupProperty("specialServiceGroup.name").as("specialServiceGroupName"));
    projections.add(Projections.groupProperty("personSpecialServiceGroups.objectStatus")
            .as("specialServiceGroupAssocObjectStatus"));
    criteria.createAlias("personProgramStatuses.programStatus", "programStatus", JoinType.LEFT_OUTER_JOIN);

    projections.add(Projections.groupProperty("programStatus.name").as("programStatusName"));
    projections.add(Projections.groupProperty("programStatus.id").as("programStatusId"));
    projections.add(Projections.groupProperty("personProgramStatuses.expirationDate")
            .as("programStatusExpirationDate"));

    // Join to Student Type
    criteria.createAlias("studentType", "studentType", JoinType.LEFT_OUTER_JOIN);
    // add StudentTypeName Column
    projections.add(Projections.groupProperty("studentType.name").as("studentTypeName"));
    projections.add(Projections.groupProperty("studentType.code").as("studentTypeCode"));

    criteria.createAlias("coach", "c");
    criteria.createAlias("watchers", "watcher", JoinType.LEFT_OUTER_JOIN);

    Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
    if (dialect instanceof SQLServerDialect) {
        // sql server requires all these to part of the grouping
        //projections.add(Projections.groupProperty("c.id").as("coachId"));
        projections.add(Projections.groupProperty("c.lastName").as("coachLastName"))
                .add(Projections.groupProperty("c.firstName").as("coachFirstName"))
                .add(Projections.groupProperty("c.middleName").as("coachMiddleName"))
                .add(Projections.groupProperty("c.schoolId").as("coachSchoolId"))
                .add(Projections.groupProperty("c.username").as("coachUsername"));
    } else {
        // other dbs (postgres) don't need these in the grouping
        //projections.add(Projections.property("c.id").as("coachId"));
        projections.add(Projections.groupProperty("c.lastName").as("coachLastName"))
                .add(Projections.groupProperty("c.firstName").as("coachFirstName"))
                .add(Projections.groupProperty("c.middleName").as("coachMiddleName"))
                .add(Projections.groupProperty("c.schoolId").as("coachSchoolId"))
                .add(Projections.groupProperty("c.username").as("coachUsername"));
    }
    return projections;
}

From source file:org.jasig.ssp.dao.report.DisabilityServiceReportDao.java

License:Apache License

private ProjectionList addBasicStudentProperties(ProjectionList projections, Criteria criteria) {

    projections.add(Projections.property("id").as("personId"));
    projections.add(Projections.property("firstName").as("firstName"));
    projections.add(Projections.property("middleName").as("middleName"));
    projections.add(Projections.property("lastName").as("lastName"));
    projections.add(Projections.property("schoolId").as("schoolId"));
    projections.add(Projections.property("primaryEmailAddress").as("primaryEmailAddress"));
    projections.add(Projections.property("secondaryEmailAddress").as("secondaryEmailAddress"));

    // Join to Student Type
    criteria.createAlias("studentType", "studentType", JoinType.LEFT_OUTER_JOIN);
    // add StudentTypeName Column
    projections.add(Projections.property("studentType.name").as("studentType"));

    Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
    if (dialect instanceof SQLServerDialect) {
        // sql server requires all these to part of the grouping
        projections.add(Projections.groupProperty("c.lastName").as("coachLastName"))
                .add(Projections.groupProperty("c.firstName").as("coachFirstName"))
                .add(Projections.groupProperty("c.middleName").as("coachMiddleName"))
                .add(Projections.groupProperty("c.schoolId").as("coachSchoolId"))
                .add(Projections.groupProperty("c.username").as("coachUsername"));
    } else {/*from   w  w w .  j  a  v  a 2  s . c o m*/
        // other dbs (postgres) don't need these in the grouping
        projections.add(Projections.property("c.lastName").as("coachLastName"))
                .add(Projections.property("c.firstName").as("coachFirstName"))
                .add(Projections.property("c.middleName").as("coachMiddleName"))
                .add(Projections.property("c.schoolId").as("coachSchoolId"))
                .add(Projections.property("c.username").as("coachUsername"));
    }
    return projections;
}

From source file:org.LexGrid.LexBIG.caCore.dao.orm.translators.GridCQLToDetachedCriteria.java

License:Open Source License

private DetachedCriteria handleQueryOptions(DetachedCriteria criteria, QueryModifier modifiers) {
    if (modifiers == null) {
        return criteria;
    }//from www .  j  a v  a  2 s. c  om

    ProjectionList projectionList = Projections.projectionList();

    String[] projectionProperties = modifiers.getAttributeNames();

    if (projectionProperties != null) {
        for (String prop : projectionProperties) {
            projectionList.add(Projections.property(prop));
        }
    }

    String distinctAttribute = modifiers.getDistinctAttribute();
    if (distinctAttribute != null) {
        projectionList.add(Projections.distinct(Projections.property(distinctAttribute)));
    }

    boolean isCount = modifiers.isCountOnly();
    if (isCount) {
        projectionList.add(Projections.rowCount());
    }

    //Only add the Projection List if it was populated with something.
    if (projectionList.getLength() > 0) {
        criteria.setProjection(projectionList);
    }
    return criteria;
}