Example usage for org.hibernate.criterion Projections max

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

Introduction

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

Prototype

public static AggregateProjection max(String propertyName) 

Source Link

Document

A property maximum value projection

Usage

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

License:Open Source License

/**
 * Get projection for {@link SosIndeterminateTime} value
 * /*  www .  j av  a 2s  . c o 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/*  w ww  .  j a  v  a 2s . 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//from   w w  w  .  j  ava  2  s .c  o 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/*w  ww .  j a v a 2  s .c  om*/
 * @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  ww w .j  a  v  a2 s.co 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   w  w 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;
}

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

License:Open Source License

/**
 * Query the max time from series observations for series
 * //from w w  w. ja va 2s.  c o m
 * @param series
 *            Series to get values for
 * @param session
 *            Hibernate session
 * @return Max time from series observations
 */
public DateTime getMaxSeriesObservationTime(Series series, Session session) {
    Criteria criteria = createCriteriaFor(getObservationTimeClass(), series, session);
    criteria.setProjection(Projections.max(SeriesObservationTime.PHENOMENON_TIME_END));
    Object max = criteria.uniqueResult();
    if (max != null) {
        return new DateTime(max, 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));
    }/*from w ww . j av  a2 s .  c  om*/
    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 w  w  .  java 2s .c o 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//from  w w w.  j  av  a2 s . co  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;
    }
}