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:ubc.pavlab.aspiredb.server.dao.PhenotypeDaoImpl.java

License:Apache License

@Override
@Transactional(readOnly = true)//from   w  w  w. j  a  va  2  s . c o m
public List<String> getListOfPossibleValuesByName(Collection<Long> projectIds, String name) {
    Session session = currentSession();

    Criteria criteria = session.createCriteria(Phenotype.class);
    criteria.add(Restrictions.eq("name", name));
    criteria.setProjection(Projections.distinct(Projections.property("value")));
    criteria.createAlias("subject", "subject").createAlias("subject.project", "project")
            .add(Restrictions.in("project.id", projectIds));

    return criteria.list();
}

From source file:ubc.pavlab.aspiredb.server.dao.PhenotypeDaoImpl.java

License:Apache License

@Override
@Transactional(readOnly = true)//from   w w w. j av a 2 s  . c o  m
public List<String> getListOfPossibleValuesByUri(Collection<Long> projectIds, String uri) {
    Session session = currentSession();

    Criteria criteria = session.createCriteria(Phenotype.class).createAlias("subject", "subject");
    criteria.add(Restrictions.eq("uri", uri));

    criteria.createCriteria("subject.project").add(Restrictions.in("id", projectIds));
    criteria.setProjection(Projections.distinct(Projections.property("value")));

    return criteria.list();
}

From source file:ubc.pavlab.aspiredb.server.dao.PhenotypeDaoImpl.java

License:Apache License

@Override
@Transactional(readOnly = true)/*from   w  w  w  .ja  va2  s  . c  om*/
public Collection<Phenotype> loadAllByProjectIds(Collection<Long> projectIds) {
    Session session = currentSession();

    Criteria criteria = session.createCriteria(Phenotype.class).createAlias("subject", "subject");
    criteria.createCriteria("subject.project").add(Restrictions.in("id", projectIds));
    criteria.setProjection(Projections.distinct(Projections.id()));

    List<Long> ids = criteria.list();

    return this.load(ids);
}

From source file:ubc.pavlab.aspiredb.server.dao.SubjectDaoImpl.java

License:Apache License

@Override
public Collection<String> suggestValuesForEntityProperty(Property property,
        SuggestionContext suggestionContext) {
    Session session = currentSession();//w w  w . j a  va  2  s. c om

    Criteria criteria = session.createCriteria(Subject.class);
    if (suggestionContext.getValuePrefix() != null) {
        String valuePrefix = suggestionContext.getValuePrefix();
        String valueWildcard = valuePrefix.replaceAll("_", "\\_") + "%";

        criteria.add(Restrictions.like(property.getName(), valueWildcard));
    }
    criteria.setProjection(Projections.distinct(Projections.property(property.getName())))
            .createAlias("project", "project")
            .add(Restrictions.in("project.id", suggestionContext.getActiveProjectIds()));

    return criteria.list();
}

From source file:ubc.pavlab.aspiredb.server.dao.SubjectDaoImpl.java

License:Apache License

private List<Long> findIds(AspireDbFilterConfig filter)
        throws BioMartServiceException, NeurocartaServiceException {

    if (filter instanceof ProjectOverlapFilterConfig) {

        List<Long> variantIds = variantDao.getProjectOverlapVariantIds((ProjectOverlapFilterConfig) filter);

        Collection<Subject> subjects = this.loadByVariantIds(variantIds);

        ArrayList<Long> subjectIds = new ArrayList<Long>();

        for (Subject s : subjects) {
            subjectIds.add(s.getId());/*  w ww . ja  v  a  2 s . c  o  m*/
        }

        return subjectIds;

    } else if (filter instanceof PhenotypeFilterConfig) {
        Collection<Subject> subjects = findByPhenotype((PhenotypeFilterConfig) filter);

        ArrayList<Long> subjectIds = new ArrayList<Long>();

        for (Subject s : subjects) {
            subjectIds.add(s.getId());
        }

        return subjectIds;
    }

    Session session = this.getSessionFactory().getCurrentSession();
    Criteria criteria = session.createCriteria(Subject.class);
    addSingleFilter(filter, criteria);
    criteria.setProjection(Projections.distinct(Projections.id()));
    return criteria.list();
}

From source file:ubc.pavlab.aspiredb.server.dao.VariantDaoBaseImpl.java

License:Apache License

@Override
public Collection<String> suggestValuesForEntityProperty(@SuppressWarnings("rawtypes") Property property,
        SuggestionContext suggestionContext) {
    Session session = currentSession();//from   w  w w.jav  a2s . c o  m

    Criteria criteria = session.createCriteria(this.elementClass);
    if (suggestionContext.getValuePrefix() != null) {
        // TODO: escape certain chars
        String valuePrefix = suggestionContext.getValuePrefix();
        String valueWildcard = "%" + valuePrefix + "%";
        criteria.add(Restrictions.like(property.getName(), valueWildcard));
    }
    criteria.setProjection(Projections.distinct(Projections.property(property.getName())));
    if (suggestionContext.getActiveProjectIds() != null && !suggestionContext.getActiveProjectIds().isEmpty()) {
        criteria.createAlias("subject", "subject").createAlias("subject.project", "project")
                .add(Restrictions.in("project.id", suggestionContext.getActiveProjectIds()));
    }

    return criteria.list();
}

From source file:ubc.pavlab.aspiredb.server.dao.VariantDaoBaseImpl.java

License:Apache License

private List<Long> findIds(AspireDbFilterConfig filter) {

    // for performance reasons as Criteria can be slow
    if (filter instanceof ProjectFilterConfig) {

        return this.getVariantIdsByProject((ProjectFilterConfig) filter);

        // Project overlap filter requires a little more data processing than the other filters and uses
        // precalculated database table as it doesn't quite fit the same paradigm as the other filters I am breaking
        // it off into its own method
    } else if (filter instanceof ProjectOverlapFilterConfig) {

        return this.getProjectOverlapVariantIds((ProjectOverlapFilterConfig) filter);

    } else if (filter instanceof PhenotypeFilterConfig) {
        List<Variant> variants = findByPhenotype((PhenotypeFilterConfig) filter);

        ArrayList<Long> variantIds = new ArrayList<Long>();

        for (Variant v : variants) {
            variantIds.add(v.getId());/*from   www. j  a v a  2 s . co  m*/
        }

        return variantIds;
    }

    Session session = this.getSessionFactory().getCurrentSession();
    Criteria criteria = session.createCriteria(this.elementClass);

    addSingleFilter(filter, criteria);

    criteria.setProjection(Projections.distinct(Projections.id()));

    return criteria.list();
}

From source file:uk.ac.bbsrc.tgac.miso.persistence.impl.HibernateExperimentDao.java

License:Open Source License

@Override
public Collection<Experiment> listByRun(long runId) throws IOException {
    Criteria idCriteria = currentSession().createCriteria(Experiment.class);
    idCriteria.createCriteria("runPartitions").createAlias("run", "run").add(Restrictions.eq("run.id", runId));
    idCriteria.setProjection(Projections.distinct(Projections.property("id")));
    @SuppressWarnings("unchecked")
    List<Long> ids = idCriteria.list();
    if (ids.isEmpty()) {
        return Collections.emptyList();
    }/* w w w .  ja  v a  2  s . com*/
    Criteria criteria = currentSession().createCriteria(Experiment.class);
    criteria.add(Restrictions.in("id", ids));
    @SuppressWarnings("unchecked")
    List<Experiment> results = criteria.list();
    return results;
}

From source file:uk.ac.bbsrc.tgac.miso.persistence.impl.HibernatePlatformDao.java

License:Open Source License

@Override
public List<PlatformType> listDistinctPlatformNames() throws IOException {
    Criteria criteria = currentSession().createCriteria(Platform.class);
    criteria.setProjection(Projections.distinct(Projections.property("platformType")));
    @SuppressWarnings("unchecked")
    List<PlatformType> records = criteria.list();
    return records;
}

From source file:uk.nhs.cfh.dsp.srth.expression.repository.impl.ExpressionMappingObjectDAOImpl.java

License:Apache License

/**
 * This method returns all distinct contained {@link uk.nhs.cfh.dsp.srth.expression.repository.om.ExpressionMappingObject}s,
 * in the repository, but only returns their UUIDs and compositional grammar form of their NFE.
 *
 * @return the list/*from   w  ww  . j  ava 2s.  c  o  m*/
 */
public List<ExpressionMappingObject> returnAllDistinctLiteObjects() {

    List list = this.hibernateTemplate.executeFind(new HibernateCallback() {

        public Object doInHibernate(Session session) throws HibernateException, SQLException {
            Criteria criteria = session.createCriteria(ExpressionMappingObjectImpl.class);
            ProjectionList projectionList = Projections.projectionList();
            projectionList.add(Projections.distinct(Projections.property(NFE_UUID)));
            projectionList.add(Projections.property(NFE_CGF));
            criteria.setProjection(projectionList);

            return criteria.list();
        }
    });

    return returnLiteObjects(list);
}