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