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.OfferingDAO.java

License:Open Source License

/**
 * Get offering identifiers for observable property identifier
 *
 * @param observablePropertyIdentifier//w  ww .  j a v a2  s  . c o  m
 *            Observable property identifier
 * @param session
 *            Hibernate session
 * @return Offering identifiers
 * @throws CodedException
 */
@SuppressWarnings("unchecked")
public Collection<String> getOfferingIdentifiersForObservableProperty(final String observablePropertyIdentifier,
        final Session session) throws OwsExceptionReport {
    final boolean flag = HibernateHelper.isEntitySupported(ObservationConstellation.class);
    Criteria c = null;
    if (flag) {
        c = session.createCriteria(Offering.class);
        c.add(Subqueries.propertyIn(Offering.ID,
                getDetachedCriteriaOfferingForObservablePropertyFromObservationConstellation(
                        observablePropertyIdentifier, session)));
        c.setProjection(Projections.distinct(Projections.property(Offering.IDENTIFIER)));
    } else {
        AbstractObservationDAO observationDAO = DaoFactory.getInstance().getObservationDAO();
        c = observationDAO.getDefaultObservationInfoCriteria(session);
        c.createCriteria(AbstractObservation.OFFERINGS)
                .setProjection(Projections.distinct(Projections.property(Offering.IDENTIFIER)));
        if (observationDAO instanceof SeriesObservationDAO) {
            Criteria seriesCriteria = c.createCriteria(SeriesObservationInfo.SERIES);
            seriesCriteria.createCriteria(Series.OBSERVABLE_PROPERTY)
                    .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier));

        } else {
            c.createCriteria(AbstractObservation.OBSERVABLE_PROPERTY)
                    .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier));
        }
    }
    LOGGER.debug(
            "QUERY getOfferingIdentifiersForObservableProperty(observablePropertyIdentifier) using ObservationContellation entitiy ({}): {}",
            flag, HibernateHelper.getSqlString(c));
    return c.list();
}

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

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class ObservationConstellation and
 * observableProperty identifier/*from w  w  w . ja va  2s.co  m*/
 *
 * @param observablePropertyIdentifier
 *            ObservableProperty identifier parameter
 * @param session
 *            Hibernate session
 * @return Detached Criteria with Offering entities as result
 */
private DetachedCriteria getDetachedCriteriaOfferingForObservablePropertyFromObservationConstellation(
        String observablePropertyIdentifier, Session session) {
    final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class);
    detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false));
    detachedCriteria.createCriteria(ObservationConstellation.OBSERVABLE_PROPERTY)
            .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier));
    detachedCriteria
            .setProjection(Projections.distinct(Projections.property(ObservationConstellation.OFFERING)));
    return detachedCriteria;
}

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

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class ObservationConstellation and
 * procedure identifier//www .j  a  v  a 2  s .  c  o  m
 *
 * @param procedureIdentifier
 *            Procedure identifier parameter
 * @param session
 *            Hibernate session
 * @return Detached Criteria with Offering entities as result
 */
private DetachedCriteria getDetachedCriteriaOfferingForProcedureFromObservationConstellation(
        String procedureIdentifier, Session session) {
    final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class);
    detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false));
    detachedCriteria.createCriteria(ObservationConstellation.PROCEDURE)
            .add(Restrictions.eq(Procedure.IDENTIFIER, procedureIdentifier));
    detachedCriteria
            .setProjection(Projections.distinct(Projections.property(ObservationConstellation.OFFERING)));
    return detachedCriteria;
}

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

License:Open Source License

@SuppressWarnings("unchecked")
private List<Object[]> getFeatureProcedureResult(Session session) {
    List<Object[]> results;
    if (HibernateHelper.isNamedQuerySupported(SQL_QUERY_GET_PROCEDURES_FOR_ALL_FEATURES_OF_INTEREST, session)) {
        Query namedQuery = session.getNamedQuery(SQL_QUERY_GET_PROCEDURES_FOR_ALL_FEATURES_OF_INTEREST);
        LOGGER.debug("QUERY getProceduresForAllFeaturesOfInterest(feature) with NamedQuery: {}",
                SQL_QUERY_GET_PROCEDURES_FOR_ALL_FEATURES_OF_INTEREST);
        results = namedQuery.list();//from  ww  w.j av a 2s .  c  o  m
    } else {
        Criteria c = null;
        if (EntitiyHelper.getInstance().isSeriesSupported()) {
            c = session.createCriteria(EntitiyHelper.getInstance().getSeriesEntityClass())
                    .createAlias(Series.FEATURE_OF_INTEREST, "f").createAlias(Series.PROCEDURE, "p")
                    .add(Restrictions.eq(Series.DELETED, false))
                    .setProjection(Projections.distinct(Projections.projectionList()
                            .add(Projections.property("f." + FeatureOfInterest.IDENTIFIER))
                            .add(Projections.property("p." + Procedure.IDENTIFIER))));
        } else {
            c = session.createCriteria(Observation.class).createAlias(Observation.FEATURE_OF_INTEREST, "f")
                    .createAlias(Observation.PROCEDURE, "p").add(Restrictions.eq(Observation.DELETED, false))
                    .setProjection(Projections.distinct(Projections.projectionList()
                            .add(Projections.property("f." + FeatureOfInterest.IDENTIFIER))
                            .add(Projections.property("p." + Procedure.IDENTIFIER))));
        }
        LOGGER.debug("QUERY getProceduresForAllFeaturesOfInterest(feature): {}",
                HibernateHelper.getSqlString(c));
        results = c.list();
    }
    return results;
}

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

License:Open Source License

/**
 * Get procedure identifiers for FOI//from  w  w  w  .  ja va2  s  .c om
 *
 * @param session
 *            Hibernate session
 * @param feature
 *            FOI object
 *
 * @return Related procedure identifiers
 * @throws CodedException
 */
@SuppressWarnings("unchecked")
public List<String> getProceduresForFeatureOfInterest(final Session session, final FeatureOfInterest feature)
        throws OwsExceptionReport {
    if (HibernateHelper.isNamedQuerySupported(SQL_QUERY_GET_PROCEDURES_FOR_FEATURE_OF_INTEREST, session)) {
        Query namedQuery = session.getNamedQuery(SQL_QUERY_GET_PROCEDURES_FOR_FEATURE_OF_INTEREST);
        namedQuery.setParameter(FEATURE, feature.getIdentifier());
        LOGGER.debug("QUERY getProceduresForFeatureOfInterest(feature) with NamedQuery: {}",
                SQL_QUERY_GET_PROCEDURES_FOR_FEATURE_OF_INTEREST);
        return namedQuery.list();
    } else {
        Criteria c = null;
        if (EntitiyHelper.getInstance().isSeriesSupported()) {
            c = getDefaultCriteria(session);
            c.add(Subqueries.propertyIn(Procedure.ID,
                    getDetachedCriteriaProceduresForFeatureOfInterestFromSeries(feature, session)));
            c.setProjection(Projections.distinct(Projections.property(Procedure.IDENTIFIER)));
        } else {
            AbstractObservationDAO observationDAO = DaoFactory.getInstance().getObservationDAO();
            c = observationDAO.getDefaultObservationInfoCriteria(session);
            c.createCriteria(AbstractObservation.FEATURE_OF_INTEREST)
                    .add(Restrictions.eq(FeatureOfInterest.IDENTIFIER, feature.getIdentifier()));
            c.createCriteria(AbstractObservation.PROCEDURE)
                    .setProjection(Projections.distinct(Projections.property(Procedure.IDENTIFIER)));

        }
        LOGGER.debug("QUERY getProceduresForFeatureOfInterest(feature): {}", HibernateHelper.getSqlString(c));
        return (List<String>) c.list();
    }
}

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

License:Open Source License

/**
 * Get procedure identifiers for offering identifier
 *
 * @param offeringIdentifier//from   ww w .ja  va2 s  .c  o  m
 *            Offering identifier
 * @param session
 *            Hibernate session
 * @return Procedure identifiers
 * @throws CodedException
 *             If an error occurs
 */
@SuppressWarnings("unchecked")
public List<String> getProcedureIdentifiersForOffering(final String offeringIdentifier, final Session session)
        throws OwsExceptionReport {
    final boolean obsConstSupported = HibernateHelper.isEntitySupported(ObservationConstellation.class);
    Criteria c = null;

    if (obsConstSupported) {
        c = getDefaultCriteria(session);
        c.add(Subqueries.propertyIn(Procedure.ID,
                getDetachedCriteriaProceduresForOfferingFromObservationConstellation(offeringIdentifier,
                        session)));
        c.setProjection(Projections.distinct(Projections.property(Procedure.IDENTIFIER)));
    } else {
        AbstractObservationDAO observationDAO = DaoFactory.getInstance().getObservationDAO();
        c = observationDAO.getDefaultObservationInfoCriteria(session);
        if (observationDAO instanceof SeriesObservationDAO) {
            Criteria seriesCriteria = c.createCriteria(SeriesObservationInfo.SERIES);
            seriesCriteria.createCriteria(Series.PROCEDURE)
                    .setProjection(Projections.distinct(Projections.property(Procedure.IDENTIFIER)));

        } else {
            c.createCriteria(AbstractObservation.PROCEDURE)
                    .setProjection(Projections.distinct(Projections.property(Procedure.IDENTIFIER)));
        }
        new OfferingDAO().addOfferingRestricionForObservation(c, offeringIdentifier);
    }
    LOGGER.debug(
            "QUERY getProcedureIdentifiersForOffering(offeringIdentifier) using ObservationContellation entitiy ({}): {}",
            obsConstSupported, HibernateHelper.getSqlString(c));
    return c.list();
}

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

License:Open Source License

/**
 * Get procedure identifiers for observable property identifier
 *
 * @param observablePropertyIdentifier/*from   w  w  w  .  j  av  a  2s. c o m*/
 *            Observable property identifier
 * @param session
 *            Hibernate session
 * @return Procedure identifiers
 * @throws CodedException 
 */
@SuppressWarnings("unchecked")
public Collection<String> getProcedureIdentifiersForObservableProperty(
        final String observablePropertyIdentifier, final Session session) throws CodedException {
    final boolean flag = HibernateHelper.isEntitySupported(ObservationConstellation.class);
    Criteria c = null;
    if (flag) {
        c = getDefaultCriteria(session);
        c.setProjection(Projections.distinct(Projections.property(Procedure.IDENTIFIER)));
        c.add(Subqueries.propertyIn(Procedure.ID,
                getDetachedCriteriaProceduresForObservablePropertyFromObservationConstellation(
                        observablePropertyIdentifier, session)));
    } else {
        if (EntitiyHelper.getInstance().isSeriesSupported()) {
            c = getDefaultCriteria(session);
            c.setProjection(Projections.distinct(Projections.property(Procedure.IDENTIFIER)));
            c.add(Subqueries.propertyIn(Procedure.ID,
                    getDetachedCriteriaProceduresForObservablePropertyFromSeries(observablePropertyIdentifier,
                            session)));
        } else {
            c = session.createCriteria(ObservationInfo.class)
                    .add(Restrictions.eq(ObservationInfo.DELETED, false));
            c.createCriteria(ObservationInfo.PROCEDURE)
                    .setProjection(Projections.distinct(Projections.property(Procedure.IDENTIFIER)));
            c.createCriteria(ObservationInfo.OBSERVABLE_PROPERTY)
                    .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier));
        }
    }
    LOGGER.debug(
            "QUERY getProcedureIdentifiersForObservableProperty(observablePropertyIdentifier) using ObservationContellation entitiy ({}): {}",
            flag, HibernateHelper.getSqlString(c));
    return c.list();
}

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

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class Series and featureOfInterest
 * identifier/*from www .  ja  va 2  s  . c o  m*/
 *
 * @param featureOfInterest
 *            FeatureOfInterest identifier parameter
 * @param session
 *            Hibernate session
 * @return Hiberante Detached Criteria with Procedure entities
 * @throws CodedException 
 */
private DetachedCriteria getDetachedCriteriaProceduresForFeatureOfInterestFromSeries(
        FeatureOfInterest featureOfInterest, Session session) throws CodedException {
    final DetachedCriteria detachedCriteria = DetachedCriteria
            .forClass(DaoFactory.getInstance().getSeriesDAO().getClass());
    detachedCriteria.add(Restrictions.eq(Series.DELETED, false));
    detachedCriteria.add(Restrictions.eq(Series.FEATURE_OF_INTEREST, featureOfInterest));
    detachedCriteria.setProjection(Projections.distinct(Projections.property(Series.PROCEDURE)));
    return detachedCriteria;
}

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

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class ObservationConstellation and
 * observableProperty identifier/*from   w  w  w.  j  a  v a 2s  .  co m*/
 *
 * @param observablePropertyIdentifier
 *            ObservableProperty identifier parameter
 * @param session
 *            Hibernate session
 * @return Hiberante Detached Criteria with Procedure entities
 */
private DetachedCriteria getDetachedCriteriaProceduresForObservablePropertyFromObservationConstellation(
        String observablePropertyIdentifier, Session session) {
    final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class);
    detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false));
    detachedCriteria.createCriteria(ObservationConstellation.OBSERVABLE_PROPERTY)
            .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier));
    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

/**
 * Get Hibernate Detached Criteria for class Series and observableProperty
 * identifier/*from ww  w  . java2  s . c  o  m*/
 *
 * @param observablePropertyIdentifier
 *            ObservableProperty identifier parameter
 * @param session
 *            Hibernate session
 * @return Hiberante Detached Criteria with Procedure entities
 * @throws CodedException 
 */
private DetachedCriteria getDetachedCriteriaProceduresForObservablePropertyFromSeries(
        String observablePropertyIdentifier, Session session) throws CodedException {
    final DetachedCriteria detachedCriteria = DetachedCriteria
            .forClass(DaoFactory.getInstance().getSeriesDAO().getClass());
    detachedCriteria.add(Restrictions.eq(Series.DELETED, false));
    detachedCriteria.createCriteria(Series.OBSERVABLE_PROPERTY)
            .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier));
    detachedCriteria.setProjection(Projections.distinct(Projections.property(Series.PROCEDURE)));
    return detachedCriteria;
}