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.n52.sos.ds.hibernate.dao.ProcedureDAO.java

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class ObservationConstellation and
 * offering identifier/*from  w w w.  ja va 2  s .  c  o m*/
 *
 * @param offeringIdentifier
 *            Offering identifier parameter
 * @param session
 *            Hibernate session
 * @return Detached Criteria with Procedure entities
 */
private DetachedCriteria getDetachedCriteriaProceduresForOfferingFromObservationConstellation(
        String offeringIdentifier, Session session) {
    final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class);
    detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false));
    detachedCriteria.createCriteria(ObservationConstellation.OFFERING)
            .add(Restrictions.eq(Offering.IDENTIFIER, offeringIdentifier));
    detachedCriteria
            .setProjection(Projections.distinct(Projections.property(ObservationConstellation.PROCEDURE)));
    return detachedCriteria;
}

From source file:org.n52.sos.ds.hibernate.dao.ProcedureDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
protected Set<String> getObservationIdentifiers(Session session, String procedureIdentifier) {
    if (EntitiyHelper.getInstance().isSeriesObservationInfoSupported()) {
        Criteria criteria = session.createCriteria(EntitiyHelper.getInstance().getObservationInfoEntityClass())
                .setProjection(Projections.distinct(Projections.property(SeriesObservationInfo.IDENTIFIER)))
                .add(Restrictions.isNotNull(SeriesObservationInfo.IDENTIFIER))
                .add(Restrictions.eq(SeriesObservationInfo.DELETED, false));
        Criteria seriesCriteria = criteria.createCriteria(SeriesObservationInfo.SERIES);
        seriesCriteria.createCriteria(Series.PROCEDURE)
                .add(Restrictions.eq(Procedure.IDENTIFIER, procedureIdentifier));
        LOGGER.debug("QUERY getObservationIdentifiers(procedureIdentifier): {}",
                HibernateHelper.getSqlString(criteria));
        return Sets.newHashSet(criteria.list());
    } else {//from   ww w.  ja  v  a2s . c om
        Criteria criteria = session.createCriteria(EntitiyHelper.getInstance().getObservationInfoEntityClass())
                .setProjection(Projections.distinct(Projections.property(ObservationInfo.IDENTIFIER)))
                .add(Restrictions.isNotNull(ObservationInfo.IDENTIFIER))
                .add(Restrictions.eq(ObservationInfo.DELETED, false));
        criteria.createCriteria(ObservationInfo.PROCEDURE)
                .add(Restrictions.eq(Procedure.IDENTIFIER, procedureIdentifier));
        LOGGER.debug("QUERY getObservationIdentifiers(procedureIdentifier): {}",
                HibernateHelper.getSqlString(criteria));
        return Sets.newHashSet(criteria.list());
    }
}

From source file:org.n52.sos.ds.hibernate.dao.ProcedureDescriptionFormatDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<String> getProcedureDescriptionFormat(Session session) {
    Criteria c = session.createCriteria(ProcedureDescriptionFormat.class);
    c.setProjection(Projections
            .distinct(Projections.property(ProcedureDescriptionFormat.PROCEDURE_DESCRIPTION_FORMAT)));
    c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    return c.list();
}

From source file:org.n52.sos.ds.hibernate.dao.series.AbstractSeriesObservationDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//w w w .  j  a v  a  2  s .  c o  m
public Collection<String> getObservationIdentifiers(String procedureIdentifier, Session session) {
    Criteria criteria = getDefaultObservationInfoCriteria(session)
            .setProjection(Projections.distinct(Projections.property(SeriesObservationInfo.IDENTIFIER)))
            .add(Restrictions.isNotNull(SeriesObservationInfo.IDENTIFIER))
            .add(Restrictions.eq(SeriesObservationInfo.DELETED, false));
    Criteria seriesCriteria = criteria.createCriteria(SeriesObservationInfo.SERIES);
    seriesCriteria.createCriteria(Series.PROCEDURE)
            .add(Restrictions.eq(Procedure.IDENTIFIER, procedureIdentifier));
    LOGGER.debug("QUERY getObservationIdentifiers(procedureIdentifier): {}",
            HibernateHelper.getSqlString(criteria));
    return criteria.list();
}

From source file:org.n52.sos.ds.hibernate.dao.series.AbstractSeriesObservationDAO.java

License:Open Source License

/**
 * Get the result times for this series, offerings and filters
 * /*  w  w w .  j  a v a2s  .c om*/
 * @param series
 *            Timeseries to get result times for
 * @param offerings
 *            Offerings to restrict matching result times
 * @param filter
 *            Temporal filter to restrict matching result times
 * @param session
 *            Hibernate session
 * @return Matching result times
 */
@SuppressWarnings("unchecked")
public List<Date> getResultTimesForSeriesObservation(Series series, List<String> offerings, Criterion filter,
        Session session) {
    Criteria criteria = createCriteriaFor(getObservationTimeClass(), series, session);
    if (CollectionHelper.isNotEmpty(offerings)) {
        criteria.createCriteria(SeriesObservationTime.OFFERINGS)
                .add(Restrictions.in(Offering.IDENTIFIER, offerings));
    }
    if (filter != null) {
        criteria.add(filter);
    }
    criteria.setProjection(Projections.distinct(Projections.property(SeriesObservationTime.RESULT_TIME)));
    criteria.addOrder(Order.asc(SeriesObservationTime.RESULT_TIME));
    LOGGER.debug("QUERY getResultTimesForSeriesObservation({}): {}", HibernateHelper.getSqlString(criteria));
    return criteria.list();
}

From source file:org.n52.sos.ds.hibernate.GetDataAvailabilityDAO.java

License:Open Source License

/**
 * Get the result times for the timeseries
 * /* w  w  w  .  j av a  2  s  .c om*/
 * @param dataAvailability
 *            Timeseries to get result times for
 * @param request
 *            GetDataAvailability request
 * @param session
 *            Hibernate session
 * @return List of result times
 * @throws OwsExceptionReport
 *             if the requested temporal filter is not supported
 */
@SuppressWarnings("unchecked")
private List<TimeInstant> getResultTimesFromObservation(DataAvailability dataAvailability,
        GetDataAvailabilityRequest request, Session session) throws OwsExceptionReport {
    Criteria c = getDefaultObservationInfoCriteria(session);
    c.createCriteria(ObservationInfo.FEATURE_OF_INTEREST).add(
            Restrictions.eq(FeatureOfInterest.IDENTIFIER, dataAvailability.getFeatureOfInterest().getHref()));
    c.createCriteria(ObservationInfo.PROCEDURE)
            .add(Restrictions.eq(Procedure.IDENTIFIER, dataAvailability.getProcedure().getHref()));
    c.createCriteria(ObservationInfo.OBSERVABLE_PROPERTY).add(
            Restrictions.eq(ObservableProperty.IDENTIFIER, dataAvailability.getObservedProperty().getHref()));
    if (request.isSetOfferings()) {
        c.createCriteria(ObservationInfo.OFFERINGS)
                .add(Restrictions.in(Offering.IDENTIFIER, request.getOfferings()));
    }
    if (hasPhenomenonTimeFilter(request.getExtensions())) {
        c.add(TemporalRestrictions.filter(getPhenomenonTimeFilter(request.getExtensions())));
    }
    c.setProjection(Projections.distinct(Projections.property(ObservationInfo.RESULT_TIME)));
    c.addOrder(Order.asc(ObservationInfo.RESULT_TIME));
    LOGGER.debug("QUERY getResultTimesFromObservation({}): {}", HibernateHelper.getSqlString(c));
    List<TimeInstant> resultTimes = Lists.newArrayList();
    for (Date date : (List<Date>) c.list()) {
        resultTimes.add(new TimeInstant(date));
    }
    return resultTimes;
}

From source file:org.n52.sos.ds.hibernate.GetFeatureOfInterestDAO.java

License:Open Source License

/**
 * Get featureOfInterest identifiers for requested parameters
 *
 * @param req/*from  w  ww .  j a  va 2s .c om*/
 *            GetFeatureOfInterest request
 * @param session
 *            Hibernate session
 * @return Resulting FeatureOfInterest identifiers list
 * @throws OwsExceptionReport
 *             If an error occurs during processing
 */
@SuppressWarnings("unchecked")
private List<String> queryFeatureIdentifiersForParameter(final GetFeatureOfInterestRequest req,
        final Session session) throws OwsExceptionReport {
    if (req.hasNoParameter()) {
        return new FeatureOfInterestDAO().getFeatureOfInterestIdentifiers(session);
    }
    if (req.containsOnlyFeatureParameter() && req.isSetFeatureOfInterestIdentifiers()) {
        final Criteria c = session.createCriteria(FeatureOfInterest.class)
                .setProjection(Projections.distinct(Projections.property(FeatureOfInterest.IDENTIFIER)));
        final Collection<String> features = getFeatureIdentifiers(req.getFeatureIdentifiers());
        if (features != null && !features.isEmpty()) {
            c.add(Restrictions.in(FeatureOfInterest.IDENTIFIER, features));
        }
        LOGGER.debug("QUERY queryFeatureIdentifiersForParameter(request): {}", HibernateHelper.getSqlString(c));
        return c.list();
    }
    if (checkForNamedQueries(req, session)) {
        return executeNamedQuery(req, session);
    }
    if (isSos100(req)) {
        return queryFeatureIdentifiersForParameterForSos100(req, session);
    }
    if (EntitiyHelper.getInstance().isSeriesSupported()) {
        return queryFeatureIdentifiersForParameterForSeries(req, session);
    }
    return queryFeatureIdentifiersOfParameterFromOldObservations(req, session);
}

From source file:org.n52.sos.ds.hibernate.GetFeatureOfInterestDAO.java

License:Open Source License

/**
 * Get Hibernate Criteria for query FeatureOfInterest identifiers for old
 * observation concept/*from   ww w .j ava 2s  .  c  o  m*/
 *
 * @param req
 *            GetFeatureOfInterest request
 * @param session
 *            Hibernate Sesstion
 * @return Hibernate Criteria
 */
private Criteria getCriteriaForFeatureIdentifiersOfParameterFromOldObservations(GetFeatureOfInterestRequest req,
        Session session) {
    final Criteria c = session.createCriteria(ObservationInfo.class);
    final Criteria fc = c.createCriteria(ObservationInfo.FEATURE_OF_INTEREST);
    fc.setProjection(Projections.distinct(Projections.property(FeatureOfInterest.IDENTIFIER)));

    // relates to observations.
    if (req.isSetFeatureOfInterestIdentifiers()) {
        final Collection<String> features = getFeatureIdentifiers(req.getFeatureIdentifiers());
        if (features != null && !features.isEmpty()) {
            fc.add(Restrictions.in(FeatureOfInterest.IDENTIFIER, features));
        }
    }
    // observableProperties
    if (req.isSetObservableProperties()) {
        c.createCriteria(ObservationInfo.OBSERVABLE_PROPERTY)
                .add(Restrictions.in(ObservableProperty.IDENTIFIER, req.getObservedProperties()));
    }
    // procedures
    if (req.isSetProcedures()) {
        c.createCriteria(ObservationInfo.PROCEDURE)
                .add(Restrictions.in(Procedure.IDENTIFIER, req.getProcedures()));
    }
    return c;
}

From source file:org.n52.sos.ds.hibernate.GetFeatureOfInterestDAO.java

License:Open Source License

/**
 * Query FeatureOfInterest identifiers for series concept
 *
 * @param req/*from w  w w.  j  a  v a2s. c om*/
 *            GetFeatureOfInterest request
 * @param session
 *            Hibernate Sesstion
 * @return Resulting FeatureOfInterest identifiers list
 * @throws CodedException If an error occurs during processing
 */
@SuppressWarnings("unchecked")
private List<String> queryFeatureIdentifiersForParameterForSeries(GetFeatureOfInterestRequest req,
        Session session) throws CodedException {
    final Criteria c = session.createCriteria(FeatureOfInterest.class);
    if (req.isSetFeatureOfInterestIdentifiers()) {
        c.add(Restrictions.in(FeatureOfInterest.IDENTIFIER, req.getFeatureIdentifiers()));
    }
    c.add(Subqueries.propertyIn(FeatureOfInterest.ID,
            getDetachedCriteriaForSeriesWithProcedureObservableProperty(req, session)));
    c.setProjection(Projections.distinct(Projections.property(FeatureOfInterest.IDENTIFIER)));
    LOGGER.debug("QUERY queryFeatureIdentifiersForParameterForSeries(request): {}",
            HibernateHelper.getSqlString(c));
    return c.list();
}

From source file:org.n52.sos.ds.hibernate.GetFeatureOfInterestDAO.java

License:Open Source License

/**
 * Get Hibernate Criteria for query FeatureOfInterest identifiers for series
 * observation concept (SOS 1.0.0)//  ww w.  j a  v a2  s. c o  m
 *
 * @param req
 *            GetFeatureOfInterest request
 * @param session
 *            Hibernate Sesstion
 * @return Hibernate Criteria
 * @throws OwsExceptionReport
 *             If an error occurs during processing
 */
private Criteria getCriteriaForFeatureIdentifiersOfParameterFromSeriesObservations(
        GetFeatureOfInterestRequest req, Session session) throws OwsExceptionReport {
    final Criteria c = session.createCriteria(FeatureOfInterest.class);
    if (req.isSetFeatureOfInterestIdentifiers()) {
        c.add(Restrictions.in(FeatureOfInterest.IDENTIFIER, req.getFeatureIdentifiers()));
    }
    c.add(Subqueries.propertyIn(FeatureOfInterest.ID,
            getDetachedCriteriaForFeautreOfInterestForSeries(req, session)));
    c.setProjection(Projections.distinct(Projections.property(FeatureOfInterest.IDENTIFIER)));
    return c;
}