Example usage for org.hibernate.criterion Projections min

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

Introduction

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

Prototype

public static AggregateProjection min(String propertyName) 

Source Link

Document

A property minimum value projection

Usage

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

License:Open Source License

/**
 * Query the min time from series observations for series
 * //from ww  w  . ja v a2 s .co  m
 * @param series
 *            Series to get values for
 * @param session
 *            Hibernate session
 * @return Min time from series observations
 */
public DateTime getMinSeriesObservationTime(Series series, Session session) {
    Criteria criteria = createCriteriaFor(getObservationTimeClass(), series, session);
    criteria.setProjection(Projections.min(SeriesObservationTime.PHENOMENON_TIME_START));
    Object min = criteria.uniqueResult();
    if (min != null) {
        return new DateTime(min, DateTimeZone.UTC);
    }
    return null;
}

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

License:Open Source License

private void addMinMaxTimeProjection(Criteria c) {
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.min(AbstractObservationTime.PHENOMENON_TIME_START));
    projectionList.add(Projections.max(AbstractObservationTime.PHENOMENON_TIME_END));
    projectionList.add(Projections.max(AbstractObservationTime.RESULT_TIME));
    if (HibernateHelper.isColumnSupported(getSeriesValueTimeClass(), AbstractObservationTime.VALID_TIME_START)
            && HibernateHelper.isColumnSupported(getSeriesValueTimeClass(),
                    AbstractObservationTime.VALID_TIME_END)) {
        projectionList.add(Projections.min(AbstractObservationTime.VALID_TIME_START));
        projectionList.add(Projections.max(AbstractObservationTime.VALID_TIME_END));
    }// w  ww  .  jav a 2  s .  com
    c.setProjection(projectionList);
}

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

License:Open Source License

/**
 * Create criteria to get min/max time values for a series
 * /*from  w  ww.  java  2  s  . co  m*/
 * @param series
 *            Series to get time values for
 * @param session
 *            Hibernate session
 * @return Criteria for time values
 */
public Criteria getMinMaxTimeCriteriaForSeriesGetDataAvailabilityDAO(Series series,
        Collection<String> offerings, Session session) {
    Criteria criteria = createCriteriaFor(getObservationTimeClass(), series, session);
    if (CollectionHelper.isNotEmpty(offerings)) {
        criteria.createCriteria(SeriesObservationTime.OFFERINGS)
                .add(Restrictions.in(Offering.IDENTIFIER, offerings));
    }
    criteria.setProjection(
            Projections.projectionList().add(Projections.min(SeriesObservationTime.PHENOMENON_TIME_START))
                    .add(Projections.max(SeriesObservationTime.PHENOMENON_TIME_END)));
    return criteria;
}

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

License:Open Source License

/**
 * Add min/max projection to criteria/*  w w w .  j ava  2  s .c  o  m*/
 * 
 * @param criteria
 *            Hibernate Criteria to add projection
 * @param minMax
 *            Min/Max identifier
 * @param property
 *            Property to apply projection to
 */
public void addMinMaxProjection(Criteria criteria, MinMax minMax, String property) {
    // TODO move this to a better location, maybe with Java 8 in an own Interface with Multiple Inheritance
    switch (minMax) {
    case MIN:
        criteria.setProjection(Projections.min(property));
        break;
    case MAX:
        criteria.setProjection(Projections.max(property));
        break;
    }
}

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

License:Open Source License

/**
 * Query data availability information depending on supported functionality
 * //from   w w  w .  jav  a  2  s  . com
 * @param req
 *            GetDataAvailability request
 * @param session
 *            Hibernate session
 * @return Data availability information
 * @throws OwsExceptionReport
 *             If an error occurs
 */
private List<?> queryDataAvailabilityValues(GetDataAvailabilityRequest req, Session session)
        throws OwsExceptionReport {
    // check is named queries are supported
    if (checkForNamedQueries(req, session)) {
        return executeNamedQuery(req, session);
    }
    // check if series mapping is supporte
    else if (EntitiyHelper.getInstance().isSeriesSupported()) {
        return querySeriesDataAvailabilities(req, session);
    } else {
        Criteria c = getDefaultObservationInfoCriteria(session);

        if (req.isSetFeaturesOfInterest()) {
            c.createCriteria(ObservationInfo.FEATURE_OF_INTEREST)
                    .add(Restrictions.in(FeatureOfInterest.IDENTIFIER, req.getFeaturesOfInterest()));
        }
        if (req.isSetProcedures()) {
            c.createCriteria(ObservationInfo.PROCEDURE)
                    .add(Restrictions.in(Procedure.IDENTIFIER, req.getProcedures()));

        }
        if (req.isSetObservedProperties()) {
            c.createCriteria(ObservationInfo.OBSERVABLE_PROPERTY)
                    .add(Restrictions.in(ObservableProperty.IDENTIFIER, req.getObservedProperties()));
        }

        if (req.isSetOfferings()) {
            c.createCriteria(ObservationInfo.OFFERINGS)
                    .add(Restrictions.in(Offering.IDENTIFIER, req.getOfferings()));
        }

        ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.groupProperty(ObservationInfo.PROCEDURE))
                .add(Projections.groupProperty(ObservationInfo.OBSERVABLE_PROPERTY))
                .add(Projections.groupProperty(ObservationInfo.FEATURE_OF_INTEREST))
                .add(Projections.min(ObservationInfo.PHENOMENON_TIME_START))
                .add(Projections.max(ObservationInfo.PHENOMENON_TIME_END));
        if (isShowCount(req)) {
            projectionList.add(Projections.rowCount());
        }
        c.setProjection(projectionList);
        c.setResultTransformer(new DataAvailabilityTransformer(session));
        LOGGER.debug("QUERY getDataAvailability(request): {}", HibernateHelper.getSqlString(c));
        List<?> list = c.list();
        if (isIncludeResultTime(req)) {
            for (Object o : list) {
                DataAvailability dataAvailability = (DataAvailability) o;
                dataAvailability.setResultTimes(getResultTimesFromObservation(dataAvailability, req, session));
            }
        }
        return list;
    }
}

From source file:org.n52.sos.ds.hibernate.util.HibernateCriteriaQueryUtilities.java

License:Open Source License

/**
 * Get min phenomenon time from observations
 * //from   w ww. jav a2 s .  c  o m
 * @param session
 *            Hibernate session
 * @return min time
 */
@Deprecated
public static DateTime getMinPhenomenonTime(Session session) {
    Object min = session.createCriteria(Observation.class)
            .setProjection(Projections.min(Observation.PHENOMENON_TIME_START))
            .add(Restrictions.eq(Observation.DELETED, false)).uniqueResult();
    if (min != null) {
        return new DateTime(min);
    }
    return null;
}

From source file:org.n52.sos.ds.hibernate.util.HibernateCriteriaQueryUtilities.java

License:Open Source License

/**
 * Get min result time from observations
 * //  w ww . jav  a 2s. c o  m
 * @param session
 *            Hibernate session
 * 
 * @return min time
 */
@Deprecated
public static DateTime getMinResultTime(Session session) {
    Object min = session.createCriteria(Observation.class)
            .setProjection(Projections.min(Observation.RESULT_TIME))
            .add(Restrictions.eq(Observation.DELETED, false)).uniqueResult();
    if (min != null) {
        return new DateTime(min);
    }
    return null;
}

From source file:org.n52.sos.ds.hibernate.util.HibernateCriteriaQueryUtilities.java

License:Open Source License

/**
 * @param session//from  w ww  . j a  v a2  s .  c  o  m
 *            the session
 * 
 * @return the global getEqualRestiction bounding box over all observations,
 *         or <tt>null</tt>
 */
@Deprecated
public static TimePeriod getGlobalTemporalBoundingBox(Session session) {
    if (session != null) {
        Criteria criteria = session.createCriteria(Observation.class);
        criteria.add(Restrictions.eq(Observation.DELETED, false));
        criteria.setProjection(
                Projections.projectionList().add(Projections.min(Observation.PHENOMENON_TIME_START))
                        .add(Projections.max(Observation.PHENOMENON_TIME_START))
                        .add(Projections.max(Observation.PHENOMENON_TIME_END)));
        Object temporalBoundingBox = criteria.uniqueResult();
        if (temporalBoundingBox instanceof Object[]) {
            Object[] record = (Object[]) temporalBoundingBox;
            TimePeriod bBox = createTimePeriod((Timestamp) record[0], (Timestamp) record[1],
                    (Timestamp) record[2]);
            return bBox;
        }
    }
    return null;
}

From source file:org.n52.sos.ds.hibernate.util.HibernateCriteriaQueryUtilities.java

License:Open Source License

/**
 * @return a Map containing the bounding box for each offering
 *//*  ww  w.j ava  2  s .c o  m*/
@Deprecated
public static Map<String, TimePeriod> getTemporalBoundingBoxesForOfferings(Session session) {
    if (session != null) {
        Criteria criteria = session.createCriteria(Observation.class)
                .add(Restrictions.eq(Observation.DELETED, false));
        criteria.createAlias(Observation.OFFERINGS, "off");
        criteria.setProjection(
                Projections.projectionList().add(Projections.min(Observation.PHENOMENON_TIME_START))
                        .add(Projections.max(Observation.PHENOMENON_TIME_START))
                        .add(Projections.max(Observation.PHENOMENON_TIME_END))
                        .add(Projections.groupProperty("off." + Offering.IDENTIFIER)));

        List<?> temporalBoundingBoxes = criteria.list();
        if (!temporalBoundingBoxes.isEmpty()) {
            HashMap<String, TimePeriod> temporalBBoxMap = new HashMap<String, TimePeriod>(
                    temporalBoundingBoxes.size());
            for (Object recordObj : temporalBoundingBoxes) {
                if (recordObj instanceof Object[]) {
                    Object[] record = (Object[]) recordObj;
                    TimePeriod value = createTimePeriod((Timestamp) record[0], (Timestamp) record[1],
                            (Timestamp) record[2]);
                    temporalBBoxMap.put((String) record[3], value);
                }
            }
            LOGGER.debug(temporalBoundingBoxes.toString());
            return temporalBBoxMap;
        }
    }
    return new HashMap<String, TimePeriod>(0);
}

From source file:org.n52.sos.ds.hibernate.util.HibernateCriteriaQueryUtilities.java

License:Open Source License

/**
 * Get min time from observations for offering
 * //w  w  w  . j  a  v a2  s  .com
 * @param offering
 *            Offering identifier
 * @param session
 *            Hibernate session
 * @return min time for offering
 */
@Deprecated
public static DateTime getMinDate4Offering(String offering, Session session) {
    Criteria criteria = session.createCriteria(Observation.class)
            .setProjection(Projections.min(Observation.PHENOMENON_TIME_START))
            .add(Restrictions.eq(Observation.DELETED, false)).createCriteria(Observation.OFFERINGS)
            .add(Restrictions.eq(Offering.IDENTIFIER, offering));
    Object min = criteria.uniqueResult();
    if (min != null) {
        return new DateTime(min);
    }
    return null;
}