List of usage examples for org.hibernate.criterion Projections max
public static AggregateProjection max(String propertyName)
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; } }