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

License:Open Source License

/**
 * Get min phenomenon time from observations
 *
 * @param session//from  w  w w.  ja v a2s.  com
 *            Hibernate session Hibernate session
 * @return min time
 */
public DateTime getMinPhenomenonTime(Session session) {
    Criteria criteria = session.createCriteria(getObservationTimeClass())
            .setProjection(Projections.min(AbstractObservation.PHENOMENON_TIME_START))
            .add(Restrictions.eq(AbstractObservation.DELETED, false));
    LOGGER.debug("QUERY getMinPhenomenonTime(): {}", HibernateHelper.getSqlString(criteria));
    Object min = criteria.uniqueResult();
    if (min != null) {
        return new DateTime(min, DateTimeZone.UTC);
    }
    return null;
}

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

License:Open Source License

/**
 * Get min result time from observations
 *
 * @param session//from  w w w . ja  v  a 2s  .  c om
 *            Hibernate session Hibernate session
 *
 * @return min time
 */
public DateTime getMinResultTime(Session session) {

    Criteria criteria = session.createCriteria(getObservationTimeClass())
            .setProjection(Projections.min(AbstractObservation.RESULT_TIME))
            .add(Restrictions.eq(AbstractObservation.DELETED, false));
    LOGGER.debug("QUERY getMinResultTime(): {}", HibernateHelper.getSqlString(criteria));
    Object min = criteria.uniqueResult();
    if (min != null) {
        return new DateTime(min, DateTimeZone.UTC);
    }
    return null;
}

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

License:Open Source License

/**
 * Get global temporal bounding box//from  w ww  . j  a  va2 s . c o m
 *
 * @param session
 *            Hibernate session the session
 *
 * @return the global getEqualRestiction bounding box over all observations,
 *         or <tt>null</tt>
 */
public TimePeriod getGlobalTemporalBoundingBox(Session session) {
    if (session != null) {
        Criteria criteria = session.createCriteria(getObservationTimeClass());
        criteria.add(Restrictions.eq(AbstractObservation.DELETED, false));
        criteria.setProjection(
                Projections.projectionList().add(Projections.min(AbstractObservation.PHENOMENON_TIME_START))
                        .add(Projections.max(AbstractObservation.PHENOMENON_TIME_START))
                        .add(Projections.max(AbstractObservation.PHENOMENON_TIME_END)));
        LOGGER.debug("QUERY getGlobalTemporalBoundingBox(): {}", HibernateHelper.getSqlString(criteria));
        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.dao.AbstractObservationDAO.java

License:Open Source License

/**
 * Get projection for {@link SosIndeterminateTime} value
 *
 * @param indetTime/*from ww  w.  j  a  v  a2s.  c o  m*/
 *            Value to get projection for
 * @return Projection to use to determine indeterminate time extrema
 */
protected Projection getIndeterminateTimeExtremaProjection(final SosIndeterminateTime indetTime) {
    if (indetTime.equals(SosIndeterminateTime.first)) {
        return Projections.min(AbstractObservation.PHENOMENON_TIME_START);
    } else if (indetTime.equals(SosIndeterminateTime.latest)) {
        return Projections.max(AbstractObservation.PHENOMENON_TIME_END);
    }
    return null;
}

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

License:Open Source License

/**
 * Get projection for {@link SosIndeterminateTime} value
 * //  w w w . jav a  2  s  .  co  m
 * @param indetTime
 *            Value to get projection for
 * @return Projection to use to determine indeterminate time extrema
 */
protected Projection getIndeterminateTimeExtremaProjection(final SosIndeterminateTime indetTime) {
    if (indetTime.equals(SosIndeterminateTime.first)) {
        return Projections.min(AbstractValue.PHENOMENON_TIME_START);
    } else if (indetTime.equals(SosIndeterminateTime.latest)) {
        return Projections.max(AbstractValue.PHENOMENON_TIME_END);
    }
    return null;
}

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

License:Open Source License

/**
 * Get offering time extrema/*from w ww  . j  a v a2  s  .c o  m*/
 *
 * @param identifiers
 *            Optional collection of offering identifiers to fetch. If null, all offerings are returned.
 * @param session
 *            Hibernate session Hibernate session
 * @return Map of offering time extrema, keyed by offering identifier
 * @throws CodedException
 */
@SuppressWarnings("unchecked")
public Map<String, OfferingTimeExtrema> getOfferingTimeExtrema(final Collection<String> identifiers,
        final Session session) throws OwsExceptionReport {
    List<Object[]> results = null;
    if (HibernateHelper.isNamedQuerySupported(SQL_QUERY_OFFERING_TIME_EXTREMA, session)) {
        Query namedQuery = session.getNamedQuery(SQL_QUERY_OFFERING_TIME_EXTREMA);
        if (CollectionHelper.isNotEmpty(identifiers)) {
            namedQuery.setParameterList("identifiers", identifiers);
        }
        LOGGER.debug("QUERY getOfferingTimeExtrema() with NamedQuery: {}", SQL_QUERY_OFFERING_TIME_EXTREMA);
        results = namedQuery.list();
    } else {
        Criteria criteria = DaoFactory.getInstance().getObservationDAO()
                .getDefaultObservationInfoCriteria(session).createAlias(AbstractObservation.OFFERINGS, "off")
                .setProjection(Projections.projectionList()
                        .add(Projections.groupProperty("off." + Offering.IDENTIFIER))
                        .add(Projections.min(AbstractObservation.PHENOMENON_TIME_START))
                        .add(Projections.max(AbstractObservation.PHENOMENON_TIME_START))
                        .add(Projections.max(AbstractObservation.PHENOMENON_TIME_END))
                        .add(Projections.min(AbstractObservation.RESULT_TIME))
                        .add(Projections.max(AbstractObservation.RESULT_TIME)));
        if (CollectionHelper.isNotEmpty(identifiers)) {
            criteria.add(Restrictions.in(Offering.IDENTIFIER, identifiers));
        }
        LOGGER.debug("QUERY getOfferingTimeExtrema(): {}", HibernateHelper.getSqlString(criteria));
        results = criteria.list();
    }

    Map<String, OfferingTimeExtrema> map = Maps.newHashMap();
    for (Object[] result : results) {
        String offering = (String) result[0];
        OfferingTimeExtrema ote = new OfferingTimeExtrema();
        ote.setMinPhenomenonTime(DateTimeHelper.makeDateTime(result[1]));
        DateTime maxPhenStart = DateTimeHelper.makeDateTime(result[2]);
        DateTime maxPhenEnd = DateTimeHelper.makeDateTime(result[3]);
        ote.setMaxPhenomenonTime(DateTimeHelper.max(maxPhenStart, maxPhenEnd));
        ote.setMinResultTime(DateTimeHelper.makeDateTime(result[4]));
        ote.setMaxResultTime(DateTimeHelper.makeDateTime(result[5]));
        map.put(offering, ote);
    }
    return map;
}

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

License:Open Source License

/**
 * Get temporal bounding box for each offering
 *
 * @param session/*www.  j  av a  2 s  .co m*/
 *            Hibernate session
 * @return a Map containing the temporal bounding box for each offering
 * @throws CodedException
 */
public Map<String, TimePeriod> getTemporalBoundingBoxesForOfferings(final Session session)
        throws OwsExceptionReport {
    if (session != null) {
        Criteria criteria = DaoFactory.getInstance().getObservationDAO()
                .getDefaultObservationInfoCriteria(session);
        criteria.createAlias(AbstractObservation.OFFERINGS, "off");
        criteria.setProjection(
                Projections.projectionList().add(Projections.min(AbstractObservation.PHENOMENON_TIME_START))
                        .add(Projections.max(AbstractObservation.PHENOMENON_TIME_START))
                        .add(Projections.max(AbstractObservation.PHENOMENON_TIME_END))
                        .add(Projections.groupProperty("off." + Offering.IDENTIFIER)));
        LOGGER.debug("QUERY getTemporalBoundingBoxesForOfferings(): {}",
                HibernateHelper.getSqlString(criteria));
        final List<?> temporalBoundingBoxes = criteria.list();
        if (!temporalBoundingBoxes.isEmpty()) {
            final HashMap<String, TimePeriod> temporalBBoxMap = new HashMap<String, TimePeriod>(
                    temporalBoundingBoxes.size());
            for (final Object recordObj : temporalBoundingBoxes) {
                if (recordObj instanceof Object[]) {
                    final Object[] record = (Object[]) recordObj;
                    final 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.dao.ProcedureDAO.java

License:Open Source License

/**
 * Query procedure time extrema for the provided procedure identifier
 *
 * @param session/*from   w  w w  .  j  a  va 2 s. c  o m*/
 * @param procedureIdentifier
 * @return ProcedureTimeExtrema
 * @throws CodedException
 */
public TimeExtrema getProcedureTimeExtrema(final Session session, String procedureIdentifier)
        throws OwsExceptionReport {
    Object[] result;
    if (isProcedureTimeExtremaNamedQuerySupported(session)) {
        return getProcedureTimeExtremaFromNamedQuery(session, procedureIdentifier);
    }
    AbstractObservationDAO observationDAO = DaoFactory.getInstance().getObservationDAO();
    Criteria criteria = observationDAO.getDefaultObservationInfoCriteria(session);
    if (observationDAO instanceof AbstractSeriesObservationDAO) {
        criteria.createAlias(SeriesObservationInfo.SERIES, "s");
        criteria.createAlias("s." + Series.PROCEDURE, "p");
    } else {
        criteria.createAlias(ObservationInfo.PROCEDURE, "p");
    }
    criteria.add(Restrictions.eq("p." + Procedure.IDENTIFIER, procedureIdentifier));
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.groupProperty("p." + Procedure.IDENTIFIER));
    projectionList.add(Projections.min(AbstractObservation.PHENOMENON_TIME_START));
    projectionList.add(Projections.max(AbstractObservation.PHENOMENON_TIME_START));
    projectionList.add(Projections.max(AbstractObservation.PHENOMENON_TIME_END));
    criteria.setProjection(projectionList);

    LOGGER.debug("QUERY getProcedureTimeExtrema(procedureIdentifier): {}",
            HibernateHelper.getSqlString(criteria));
    result = (Object[]) criteria.uniqueResult();

    return parseProcedureTimeExtremaResult(result);
}

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

License:Open Source License

public TimeExtrema getProcedureTimeExtrema(Session session, String procedure) {
    Criteria c = getDefaultSeriesCriteria(session);
    addProcedureToCriteria(c, procedure);
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.min(Series.FIRST_TIME_STAMP));
    projectionList.add(Projections.max(Series.LAST_TIME_STAMP));
    c.setProjection(projectionList);//from   www. j  ava  2  s  .c  o m
    LOGGER.debug("QUERY getProcedureTimeExtrema(procedureIdentifier): {}", HibernateHelper.getSqlString(c));
    Object[] result = (Object[]) c.uniqueResult();

    TimeExtrema pte = new TimeExtrema();
    if (result != null) {
        pte.setMinTime(DateTimeHelper.makeDateTime(result[0]));
        pte.setMaxTime(DateTimeHelper.makeDateTime(result[1]));
    }
    return pte;
}

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

License:Open Source License

/**
 * Create criteria to query min/max time for series from series observation
 * /*from ww  w  .j  a  v a  2 s.  c o m*/
 * @param series
 *            Series to get values for
 * @param list
 * @param session
 *            Hibernate session
 * @return Criteria to get min/max time values for series
 */
public Criteria getMinMaxTimeCriteriaForSeriesObservation(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;
}