/** * Get count of available observation for this time series * * @param series Time series * @param request GetDataAvailability request * @param session Hibernate session * @return Count of available observations */ private Long getCountFor(Series series, GetDataAvailabilityRequest request, Session session) { Criteria criteria = session .createCriteria(SeriesObservationInfo.class) .add(Restrictions.eq(AbstractObservation.DELETED, false)); criteria.add(Restrictions.eq(SeriesObservationInfo.SERIES, series)); if (request.isSetOfferings()) { criteria .createCriteria(SeriesObservationTime.OFFERINGS) .add(Restrictions.in(Offering.IDENTIFIER, request.getOfferings())); } criteria.setProjection(Projections.rowCount()); return (Long) criteria.uniqueResult(); }
/** * Get time information from SeriesGetDataAvailability mapping * * @param seriesGetDataAvailabilityDAO Series GetDataAvailability DAO class * @param series Series to get information for * @param request * @param seriesMinMaxTransformer Hibernate result transformator for min/max time value * @param session Hibernate Session * @return Time period */ private TimePeriod getTimePeriodFromSeriesGetDataAvailability( SeriesObservationTimeDAO seriesGetDataAvailabilityDAO, Series series, GetDataAvailabilityRequest request, SeriesMinMaxTransformer seriesMinMaxTransformer, Session session) { Criteria criteria = seriesGetDataAvailabilityDAO.getMinMaxTimeCriteriaForSeriesGetDataAvailabilityDAO( series, request.getOfferings(), session); criteria.setResultTransformer(seriesMinMaxTransformer); LOGGER.debug( "QUERY getTimePeriodFromSeriesObservation(series): {}", HibernateHelper.getSqlString(criteria)); return (TimePeriod) criteria.uniqueResult(); }
/** * Get the result times for the timeseries * * @param seriesObservationDAO DAO * @param series time series * @param request GetDataAvailability request * @param session Hibernate session * @return List of result times * @throws OwsExceptionReport if the requested temporal filter is not supported */ private List<TimeInstant> getResultTimesFromSeriesObservation( AbstractSeriesObservationDAO seriesObservationDAO, Series series, GetDataAvailabilityRequest request, Session session) throws OwsExceptionReport { Criterion filter = null; if (hasPhenomenonTimeFilter(request.getExtensions())) { filter = TemporalRestrictions.filter(getPhenomenonTimeFilter(request.getExtensions())); } List<Date> dateTimes = seriesObservationDAO.getResultTimesForSeriesObservation( series, request.getOfferings(), filter, session); List<TimeInstant> resultTimes = Lists.newArrayList(); for (Date date : dateTimes) { resultTimes.add(new TimeInstant(date)); } return resultTimes; }