private static int toInt(final TimeBucket timeBucket, final long time) { final long timeTruncatedToBucket = CommonTimeUtil.timeToBucket(time, timeBucket); switch (timeBucket) { case SECOND: return (int) (timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_SECOND); case MINUTE: return (int) (timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_MINUTE); case HOUR: return (int) (timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_HOUR); case DAY: return (int) (timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_DAY); case WEEK: return (int) (timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_DAY); case MONTH: return (int) (timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_DAY); case YEAR: return (int) (timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_DAY); default: throw new IllegalStateException("Unknown time bucket of " + timeBucket); } }
break; case WEEK: timeBucket = dateTime.with(firstDayOfWeek()).truncatedTo(DAYS).toInstant().toEpochMilli(); break; case MONTH:
private static long toLong(final TimeBucket timeBucket, final long time) { final long timeTruncatedToBucket = CommonTimeUtil.timeToBucket(time, timeBucket); switch (timeBucket) { case MILLISECOND: return timeTruncatedToBucket; case SECOND: return timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_SECOND; case MINUTE: return timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_MINUTE; case HOUR: return timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_HOUR; case DAY: return timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_DAY; case WEEK: return timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_DAY; case MONTH: return timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_DAY; case YEAR: return timeTruncatedToBucket / CommonTimeUtil.MILLISECONDS_IN_DAY; default: throw new IllegalStateException("Unknown time bucket of " + timeBucket); } }
@Override public void add(final Instant instant) { if (state.equals(State.NOT_FULL)) { rbmBackedTimestampSet.add(instant); checkSize(); } else { reservoirLongsUnion.update(CommonTimeUtil.timeToBucket(instant.toEpochMilli(), timeBucket)); } }