package gov.nysenate.openleg.dao.updates; import com.google.common.collect.Range; import gov.nysenate.openleg.dao.base.LimitOffset; import gov.nysenate.openleg.dao.base.PaginatedList; import gov.nysenate.openleg.dao.base.SortOrder; import gov.nysenate.openleg.model.updates.UpdateContentType; import gov.nysenate.openleg.model.updates.UpdateDigest; import gov.nysenate.openleg.model.updates.UpdateToken; import gov.nysenate.openleg.model.updates.UpdateType; import java.time.LocalDateTime; import java.util.Map; import java.util.Properties; import java.util.Set; public interface AggregateUpdatesDao { /** * Gets an aggregation of update tokens that report the last update for all content items of the * requested types, that fall within the given time range. Updates can be retrieved by published or processed time. * * @param dateTimeRange Range<LocalDateTime> - restrict the date time range of returned update tokens * @param types Set<UpdateContentType> - return updates for the content types specified in this set * @param updateType UpdateType - specifies whether updates are retrieved based on published or processed date time * @param order SortOrder - determines update sort order based on the update type * @param limitOffset LimitOffset - Limit the response * @return PaginatedList<UpdateToken<Properties>> */ public PaginatedList<UpdateToken<Map<String, String>>> getUpdateTokens(Range<LocalDateTime> dateTimeRange, Set<UpdateContentType> types, UpdateType updateType, SortOrder order, LimitOffset limitOffset); /** * Gets an aggregation of update digests that report all updates for each content item of the * requested types, that fall within the given time range. If detailed digests are requested, the updated data * is displayed. Updates can be retrieved by published or processed time. * * @param dateTimeRange Range<LocalDateTime> - restrict the date time range of returned update digests * @param types Set<UpdateContentType> - return updates for the content types specified in this set * @param updateType UpdateType - specifies whether updates are retrieved based on published or processed date time * @param order SortOrder - determines update sort order based on the update type * @param limitOffset LimitOffset - Limit the response * @param detail boolean - will return detailed update digests if set to true * @return PaginatedList<UpdateToken<Properties>> */ public PaginatedList<UpdateDigest<Map<String, String>>> getUpdateDigests(Range<LocalDateTime> dateTimeRange, Set<UpdateContentType> types, UpdateType updateType, SortOrder order, LimitOffset limitOffset, boolean detail); /** * An override of getUpdateDigests that does not return detailed digests * @see #getUpdateDigests */ public default PaginatedList<UpdateDigest<Map<String, String>>> getUpdateDigests(Range<LocalDateTime> dateTimeRange, Set<UpdateContentType> types, UpdateType updateType, SortOrder order, LimitOffset limitOffset) { return getUpdateDigests(dateTimeRange, types, updateType, order, limitOffset, false); } }