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.egov.services.report.ScheduleService.java

License:Open Source License

public List<Fund> getFunds() {
    final Criteria voucherHeaderCriteria = getSession().createCriteria(CVoucherHeader.class);
    final List fundIdList = voucherHeaderCriteria
            .setProjection(Projections.distinct(Projections.property("fundId.id"))).list();
    if (!fundIdList.isEmpty())
        return getSession().createCriteria(Fund.class).add(Restrictions.in("id", fundIdList)).list();
    return new ArrayList<Fund>();
}

From source file:org.eurocarbdb.action.core.SearchGlycanSequence.java

License:Open Source License

public Criteria createCriteria() {
    DetachedCriteria crit = createSerializableCriteria();
    crit.setProjection(Projections.distinct(Projections.property("glycanSequenceId")));

    Criteria criteria = getEntityManager().createQuery(GlycanSequence.class);

    criteria.add(Subqueries.propertyIn("glycanSequenceId", crit));

    if (getIndex() != null) {
        getIndex().apply(criteria);/*  w w  w . j  av  a2s. c o m*/
    }

    return criteria;
}

From source file:org.eurocarbdb.action.core.SearchGlycanSequence.java

License:Open Source License

private DetachedCriteria createSerializableCriteria() {
    // create base criteria    
    log.debug("creating GlycanSequence criteria");

    DetachedCriteria criteria;//from   www. jav  a 2s .  com

    criteria = DetachedCriteria.forClass(GlycanSequence.class);

    // create biological contexts criteria
    DetachedCriteria bc_criteria = null;
    DetachedCriteria tax_criteria = null;
    DetachedCriteria tissue_criteria = null;
    DetachedCriteria disease_criteria = null;
    DetachedCriteria perturbation_criteria = null;

    if (taxonomyName != null || tissueName != null || diseaseName != null || perturbationName != null) {
        isNewQuery = true;
        log.debug("creating Biological context criteria");
        bc_criteria = criteria.createCriteria("glycanContexts").createCriteria("biologicalContext", "bc");

        // add taxonomy criteria        
        if (taxonomyName != null) {
            log.debug("adding taxonomy query predicates for input string '" + taxonomyName + "'");
            tax_criteria = bc_criteria.createCriteria("taxonomy", "taxa")
                    .createCriteria("taxonomySupertypes", "supertax")
                    .add(Restrictions.ilike("taxon", taxonomyName, MatchMode.EXACT));
        }

        // add tissue criteria
        if (tissueName != null) {
            log.debug("adding tissue query predicates for input string '" + tissueName + "'");

            tissue_criteria = bc_criteria.createCriteria("tissueTaxonomy", "ttax")
                    .add(Restrictions.ilike("tissueTaxon", tissueName, MatchMode.EXACT));
        }

        // add disease criteria
        if (diseaseName != null) {
            log.debug("adding disease query criteria for input string '" + diseaseName + "'");

            disease_criteria = bc_criteria.createCriteria("diseaseContexts").createCriteria("disease", "dis")
                    .add(Restrictions.ilike("diseaseName", diseaseName, MatchMode.EXACT));
        }

        if (perturbationName != null) {
            log.debug("adding perturbation query criteria for input string '" + perturbationName + "'");

            perturbation_criteria = bc_criteria.createCriteria("perturbationContexts")
                    .createCriteria("perturbation", "per")
                    .add(Restrictions.ilike("perturbationName", perturbationName, MatchMode.EXACT));
        }

    }

    // add mass criteria
    boolean mass_query_is_given = false;
    boolean params_are_ok = false;

    if (exactMass > 0 && exactMassTolerance > 0) {
        isNewQuery = true;
        mass_query_is_given = true;
        lowMass = exactMass - exactMassTolerance;
        highMass = exactMass + exactMassTolerance;
        log.debug("adding predicates for exactMass=" + exactMass + " Da +/- " + exactMassTolerance + " Da (ie: "
                + lowMass + "-" + highMass + " Da)");
        params_are_ok = true;
    } else if (lowMass > 0 && highMass > 0) {
        isNewQuery = true;
        mass_query_is_given = true;
        exactMass = -1;
        exactMassTolerance = -1;
        log.debug("adding predicates for mass range=(" + lowMass + ".." + highMass + " Da)");
        params_are_ok = true;
    }

    if (mass_query_is_given) {
        if (params_are_ok) {
            isNewQuery = true;
            String property = useAvgMass ? "massAverage" : "massMonoisotopic";
            criteria.add(Restrictions.between(property, new BigDecimal(lowMass), new BigDecimal(highMass)));
        } else {
            String msg = "Insufficient mass parameters given, either "
                    + "provide an exactMass + exactMassTolerence + useAvgMass preference, "
                    + "or provide a lowMass + highMass + useAvgMass preference";

            addActionError(msg);
            log.info(msg);
        }
    }

    Glycan glycan = null;

    if (sequenceGWS != null) {
        glycan = Glycan.fromString(sequenceGWS);
        glycan.removeReducingEndModification();
        if (glycan.isEmpty()) {
            glycan = null;
            sequenceGWS = null;
        }
    }

    if (glycan != null) {
        isNewQuery = true;

        // search structure in DB
        String glycoct = glycan.toGlycoCTCondensed();
        SugarSequence seq = new SugarSequence(glycoct);
        SubstructureQuery query = new SubstructureQuery(seq);

        if (sequencePosition != null) {
            if (sequencePosition.equals("Core") || sequencePosition.equals("Core + Terminii"))
                query.setOption(Must_Include_Reducing_Terminus);

            if (sequencePosition.equals("Terminii") || sequencePosition.equals("Core + Terminii"))
                query.setOption(Must_Include_All_Non_Reducing_Terminii);
        }

        criteria.add(query.getQueryCriterion());
    }

    if (this.additionalQueries.size() > 1) {
        isNewQuery = true;
    }

    for (SavedGlycanSequenceSearch oldQuery : this.additionalQueries) {

        DetachedCriteria oldCriteria = oldQuery.getQueryCriteria();

        criteria.add(Subqueries.propertyIn("glycanSequenceId", oldCriteria));

        oldCriteria.setProjection(Projections.distinct(Projections.property("glycanSequenceId")));

        this.currentSearch = oldQuery;
    }

    return criteria;
}

From source file:org.faster.orm.service.hibernate.with.property.HibernateGenericServiceWithName.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//from  ww  w  .  j  a v  a  2  s  .c  om
public List<String> projectNameByCriteria(DetachedCriteria dc) {
    dc.setProjection(Projections.distinct(Projections.property(getFieldNameOfName())));
    return fetchAll(dc);
}

From source file:org.fornax.cartridges.sculptor.framework.accessimpl.jpahibernate.JpaHibFindByConditionAccessImpl.java

License:Apache License

private void addProjection(Criteria criteria) throws PersistenceException {
    // Prepare projection
    // All orderBy fields has to be in result - SQL limitation
    ProjectionList proj = Projections.projectionList().add(Projections.id());
    for (ConditionalCriteria crit : cndCriterias) {
        if (Operator.OrderAsc.equals(crit.getOperator()) || Operator.OrderDesc.equals(crit.getOperator())) {
            if (crit.getPropertyPath() != null && crit.getPropertyPath().length > 0) {
                throw new PersistenceException("Can't create distinct condition order by foreign field '"
                        + crit.getPropertyFullName() + "'");
            }//  w  ww . j a  v a2 s  .c om
            proj.add(Projections.property(crit.getPropertyFullName()));
        }
    }
    criteria.setProjection(Projections.distinct(proj));
}

From source file:org.freequiz.www.dao.hibernate.HibernateQuestionDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<String> findAllGradeLevels() {
    Criteria crit = HibernateUtil.getSession().createCriteria(getPersistentClass());

    crit.setProjection(Projections.distinct(Projections.property("gradeLevel")));
    //      crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    return crit.list();
}

From source file:org.generationcp.middleware.dao.CharacterDataDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<Integer> getObservationUnitIdsByTraitScaleMethodAndValueCombinations(
        List<TraitCombinationFilter> filters, int start, int numOfRows) throws MiddlewareQueryException {
    try {//  www .j a va  2s.c  o  m
        Criteria criteria = getSession().createCriteria(CharacterData.class);
        criteria.createAlias("variate", "variate");
        criteria.setProjection(Projections.distinct(Projections.property("id.observationUnitId")));

        // keeps track if at least one filter was added
        boolean filterAdded = false;

        for (TraitCombinationFilter combination : filters) {
            Object value = combination.getValue();

            // accept only String values
            if (value instanceof String) {
                criteria.add(Restrictions.eq("variate.traitId", combination.getTraitId()));
                criteria.add(Restrictions.eq("variate.scaleId", combination.getScaleId()));
                criteria.add(Restrictions.eq("variate.methodId", combination.getMethodId()));
                criteria.add(Restrictions.eq("value", value));

                filterAdded = true;
            }
        }

        if (filterAdded) {
            // if there is at least one filter, execute query and return results
            criteria.setFirstResult(start);
            criteria.setMaxResults((numOfRows));
            return criteria.list();
        } else {
            // return empty list if no filter was added
            return new ArrayList<Integer>();
        }
    } catch (HibernateException e) {
        throw new MiddlewareQueryException(
                "Error with getObservationUnitIdsByTraitScaleMethodAndValueCombinations(filters=" + filters
                        + ") query from CharacterData: " + e.getMessage(),
                e);
    }
}

From source file:org.generationcp.middleware.dao.dms.DmsProjectDao.java

License:Open Source License

public DatasetDTO getDatasetOfSampleList(final Integer sampleListId) {

    final DatasetDTO datasetDTO;
    try {//from  w w  w . j av a 2s . com

        final ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.property("project.projectId"), "datasetId");
        projectionList.add(Projections.property("dt.datasetTypeId"), "datasetTypeId");
        projectionList.add(Projections.property("project.name"), "name");
        projectionList.add(Projections.property("parent.projectId"), "parentDatasetId");

        final Criteria criteria = this.getSession().createCriteria(SampleList.class);
        criteria.createAlias("samples", "sample").createAlias("samples.experiment", "experiment")
                .createAlias("experiment.project", "project").createAlias("project.parent", "parent")
                .createAlias("project.datasetType", "dt").add(Restrictions.eq("id", sampleListId));
        criteria.setProjection(Projections.distinct(projectionList));
        criteria.setResultTransformer(Transformers.aliasToBean(DatasetDTO.class));
        datasetDTO = (DatasetDTO) criteria.uniqueResult();

    } catch (final HibernateException e) {
        final String errorMessage = "Error getting getDatasetOfSampleList for sampleListId =" + sampleListId
                + ":" + e.getMessage();
        DmsProjectDao.LOG.error(errorMessage, e);
        throw new MiddlewareQueryException(errorMessage, e);
    }

    return datasetDTO;

}

From source file:org.generationcp.middleware.dao.dms.PhenotypeDao.java

License:Open Source License

@SuppressWarnings("Duplicates")
public Set<Integer> getPendingVariableIds(final Integer datasetId) {
    final Criteria criteria = this.getSession().createCriteria(this.getPersistentClass());

    criteria.createAlias("experiment", "experiment");
    criteria.add(Restrictions.eq("experiment.project.projectId", datasetId));

    final Criterion draftValue = Restrictions.isNotNull("draftValue");
    final Criterion draftCValueId = Restrictions.isNotNull("draftCValueId");
    criteria.add(Restrictions.or(draftValue, draftCValueId));

    criteria.setProjection(Projections.distinct(Projections.property("observableId")));

    return new HashSet<>(criteria.list());
}

From source file:org.generationcp.middleware.dao.dms.ProjectPropertyDao.java

License:Open Source License

/**
 *
 * @param variableNames/*from  w  ww . ja v  a  2  s .c  o  m*/
 * @return a map with Property names (In UPPERCASE) as keys and a map(variableId, variableType) as Value
 */
@SuppressWarnings("unchecked")
public Map<String, Map<Integer, VariableType>> getStandardVariableIdsWithTypeByAlias(
        final List<String> variableNames, final String programUUID) {

    final List<String> propertyNamesInUpperCase = Lists.transform(variableNames,
            new Function<String, String>() {

                public String apply(final String s) {
                    return s.toUpperCase();
                }
            });

    try {
        if (!propertyNamesInUpperCase.isEmpty()) {
            final Criteria criteria = this.getSession().createCriteria(this.getPersistentClass(), "property")
                    .setProjection(Projections.distinct(Projections.projectionList()
                            .add(Projections.property("alias")).add(Projections.property("variableId"))
                            .add(Projections.property(TYPE_ID))));

            /* Exclude variables used as condition such that variable type in projectprop "Study Detail" as "Study Detail"
             * is not one of the standard categorizations in Ontology Mapping so it will lead to variable being unmapped
             */
            final List<Integer> variableTypes = VariableType.ids();
            variableTypes.remove(VariableType.STUDY_DETAIL.getId());
            criteria.add(Restrictions.in(TYPE_ID, variableTypes));

            criteria.add(Restrictions.in("alias", variableNames));
            criteria.createAlias("property.variable", "variable")
                    .add(Restrictions.eq("variable.isObsolete", 0));
            criteria.createAlias("property.project", "project")
                    .add(Restrictions.eq("project.programUUID", programUUID));
            final List<Object[]> results = criteria.list();
            return this.convertToVariablestandardVariableIdsWithTypeMap(results);
        }
    } catch (final HibernateException e) {
        final String message = "Error in getStandardVariableIdsWithTypeByPropertyNames=" + variableNames
                + " in ProjectPropertyDao: " + e.getMessage();
        ProjectPropertyDao.LOG.error(message, e);
        throw new MiddlewareQueryException(message, e);
    }

    return new HashMap<>();
}