Example usage for org.hibernate.criterion Projections distinct

List of usage examples for org.hibernate.criterion Projections distinct

Introduction

In this page you can find the example usage for org.hibernate.criterion Projections distinct.

Prototype

public static Projection distinct(Projection projection) 

Source Link

Document

Create a distinct projection from a projection.

Usage

From source file:org.openmrs.module.patientaccesscontrol.api.db.hibernate.HibernateRolePatientDAO.java

License:Open Source License

/**
 * @see org.openmrs.module.patientaccesscontrol.api.RolePatientService#getRoles(Patient)
 *//*from   w w  w. j a  va  2 s. com*/
@Override
@SuppressWarnings("unchecked")
public List<Role> getRoles(Patient patient) throws DAOException {
    return sessionFactory.getCurrentSession().createCriteria(RolePatient.class)
            .add(Restrictions.eq("patient", patient))
            .setProjection(Projections.distinct(Projections.property("role"))).list();
}

From source file:org.openmrs.module.patientaccesscontrol.api.db.hibernate.HibernateRolePatientDAO.java

License:Open Source License

/**
 * @see //  w w  w  .  j  ava  2  s . co m
 *      org.openmrs.module.patientaccesscontrol.api.RolePatientService#getExcludedPatients(Set<Role
 *      >)
 */
@SuppressWarnings("unchecked")
@Override
public List<Integer> getExcludedPatients(Set<Role> roles) {
    DetachedCriteria subquery = DetachedCriteria.forClass(RolePatient.class).add(Restrictions.in("role", roles))
            .setProjection(Projections.distinct(Projections.property("patient")));

    return sessionFactory.getCurrentSession().createCriteria(RolePatient.class)
            .add(Subqueries.propertyNotIn("patient", subquery)).createAlias("patient", "p")
            .setProjection(Projections.distinct(Projections.property("p.patientId"))).list();
}

From source file:org.openmrs.module.patientaccesscontrol.api.db.hibernate.HibernateRolePatientDAO.java

License:Open Source License

/**
 * @see //www  .  j a va 2 s . c  o  m
 *      org.openmrs.module.patientaccesscontrol.api.RolePatientService#getExcludedPatients(Set<Role
 *      >)
 */
@SuppressWarnings("unchecked")
@Override
public List<Integer> getExplicitlyIncludedPatients(Set<Role> roles) {
    return sessionFactory.getCurrentSession().createCriteria(RolePatient.class)
            .add(Restrictions.in("role", roles)).createAlias("patient", "p")
            .setProjection(Projections.distinct(Projections.property("p.patientId"))).list();
}

From source file:org.openmrs.module.patientaccesscontrol.api.db.hibernate.HibernateRoleProgramDAO.java

License:Open Source License

/**
 * @see org.openmrs.module.patientaccesscontrol.api.RoleProgramService#getRoles(Program)
 *///from  w  w w. j  a  v  a  2 s  . co m
@Override
@SuppressWarnings("unchecked")
public List<Role> getRoles(Program program) throws DAOException {
    if (program == null) {
        return sessionFactory.getCurrentSession().createCriteria(RoleProgram.class)
                .add(Restrictions.isNull("program"))
                .setProjection(Projections.distinct(Projections.property("role"))).list();
    } else {
        return sessionFactory.getCurrentSession().createCriteria(RoleProgram.class)
                .add(Restrictions.eq("program", program))
                .setProjection(Projections.distinct(Projections.property("role"))).list();
    }
}

From source file:org.openmrs.module.patientaccesscontrol.api.db.hibernate.HibernateRoleProgramDAO.java

License:Open Source License

/**
 * @see org.openmrs.module.patientaccesscontrol.api.RoleProgramService#getPrograms()
 *///w  ww.  j av a  2s.co  m
@SuppressWarnings("unchecked")
@Override
public List<Program> getPrograms(Set<Role> roles) throws DAOException {
    return sessionFactory.getCurrentSession().createCriteria(RoleProgram.class).createAlias("role", "role")
            .createAlias("program", "program").add(Restrictions.in("role", roles))
            .setProjection(Projections.distinct(Projections.property("program"))).list();
}

From source file:org.openmrs.module.patientaccesscontrol.api.db.hibernate.HibernateRoleProgramDAO.java

License:Open Source License

/**
 * @see PatientAccessControlDAO#getPatients(String, String, List, boolean, Integer, Integer,
 *      boolean)//from   w  w w  .  ja va 2  s.com
 */
@Override
@SuppressWarnings("unchecked")
public List<Integer> getIncludedPatients(String name, String identifier,
        List<PatientIdentifierType> identifierTypes, boolean matchIdentifierExactly,
        List<Program> includePrograms) throws DAOException {
    if (includePrograms.isEmpty()) {
        return new ArrayList<Integer>();
    }
    Criteria criteria = createPatientCriteria(includePrograms);

    criteria = new PatientSearchCriteria(sessionFactory, criteria)
            .prepareCriteria(name, identifier, identifierTypes, matchIdentifierExactly, false)
            .setProjection(Projections.distinct(Projections.property("patientId")));

    return criteria.list();
}

From source file:org.openmrs.module.patientaccesscontrol.api.db.hibernate.HibernateRoleProgramDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*from   ww  w .ja va 2 s.  c o m*/
public List<Integer> getExcludedPatients(Collection<Program> programs) {
    if (programs.isEmpty()) {
        return sessionFactory.getCurrentSession().createCriteria(PatientProgram.class)
                .createAlias("patient", "p")
                .setProjection(Projections.distinct(Projections.property("p.patientId"))).list();
    } else {
        DetachedCriteria subquery = DetachedCriteria.forClass(PatientProgram.class)
                .add(Restrictions.in("program", programs))
                .setProjection(Projections.distinct(Projections.property("patient")));

        return sessionFactory.getCurrentSession().createCriteria(PatientProgram.class)
                .add(Subqueries.propertyNotIn("patient", subquery)).createAlias("patient", "p")
                .setProjection(Projections.distinct(Projections.property("p.patientId"))).list();
    }
}

From source file:org.openmrs.module.patientaccesscontrol.api.db.hibernate.HibernateUserPatientDAO.java

License:Open Source License

/**
 * @see org.openmrs.module.patientaccesscontrol.api.UserPatientService#getUsers(Patient)
 *//* w  w w  .ja v  a 2  s .  co  m*/
@Override
@SuppressWarnings("unchecked")
public List<User> getUsers(Patient patient) throws DAOException {
    return sessionFactory.getCurrentSession().createCriteria(UserPatient.class)
            .add(Restrictions.eq("patient", patient))
            .setProjection(Projections.distinct(Projections.property("user"))).list();
}

From source file:org.openmrs.module.patientaccesscontrol.api.db.hibernate.HibernateUserPatientDAO.java

License:Open Source License

/**
 * @see org.openmrs.module.patientaccesscontrol.api.UserPatientService#getExcludedPatients(user)
 *//*w  w w  .j a v  a2 s.  co m*/
@SuppressWarnings("unchecked")
@Override
public List<Integer> getIncludedPatients(User user) {
    return sessionFactory.getCurrentSession().createCriteria(UserPatient.class)
            .add(Restrictions.eq("user", user)).createAlias("patient", "p")
            .setProjection(Projections.distinct(Projections.property("p.patientId"))).list();
}

From source file:org.openmrs.module.rwandasphstudyreports.api.db.hibernate.HibernateCDCReportsDAO.java

License:Open Source License

@Override
public List<Patient> getHIVPositivePatientsOnARVTreatment() {
    String hivStatus = Context.getAdministrationService()
            .getGlobalProperty(GlobalPropertyConstants.HIV_STATUS_CONCEPTID);
    String hivPositive = Context.getAdministrationService()
            .getGlobalProperty(GlobalPropertyConstants.HIV_POSITIVE_CONCEPTID);
    List<Person> obsList = getSessionFactory().getCurrentSession().createCriteria(Obs.class)
            .add(Restrictions.eq("concept",
                    StringUtils.isNotBlank(hivStatus)
                            ? Context.getConceptService().getConcept(Integer.parseInt(hivStatus))
                            : Context.getConceptService().getConcept(2169)))
            .add(Restrictions.eq("valueCoded",
                    StringUtils.isNotBlank(hivPositive)
                            ? Context.getConceptService().getConcept(Integer.parseInt(hivPositive))
                            : Context.getConceptService().getConcept(703)))
            .setProjection(Projections.distinct(Projections.property("person")))
            .setFetchMode("Order", FetchMode.JOIN).add(Restrictions.in("concept", getHIVDrugsConcepts()))
            .list();/*from   w w w.  ja  va  2 s . c o  m*/

    List<Patient> pList = new ArrayList<Patient>();

    for (Person p : obsList)
        pList.add(new Patient(p));

    return pList;
}