private Pair<Map<Interval, String>, Map<Interval, List<DataSegment>>> getMaxCreateDateAndBaseSegments( List<Pair<DataSegment, String>> snapshot ) { Interval maxAllowedToBuildInterval = snapshot.parallelStream() .map(pair -> pair.lhs) .map(DataSegment::getInterval) .max(Comparators.intervalsByStartThenEnd()) .get(); Map<Interval, String> maxCreatedDate = new HashMap<>(); Map<Interval, List<DataSegment>> segments = new HashMap<>(); for (Pair<DataSegment, String> entry : snapshot) { DataSegment segment = entry.lhs; String createDate = entry.rhs; Interval interval = segment.getInterval(); if (!hasEnoughLag(interval, maxAllowedToBuildInterval)) { continue; } maxCreatedDate.put( interval, DateTimes.max( DateTimes.of(createDate), DateTimes.of(maxCreatedDate.getOrDefault(interval, DateTimes.MIN.toString())) ).toString() ); segments.putIfAbsent(interval, new ArrayList<>()); segments.get(interval).add(segment); } return new Pair<>(maxCreatedDate, segments); }
private static Iterable<Interval> splitInterval(Interval interval, Period period) { if (interval.getEndMillis() == interval.getStartMillis()) { return Collections.singletonList(interval); } List<Interval> intervals = new ArrayList<>(); Iterator<Interval> timestamps = new PeriodGranularity(period, null, null).getIterable(interval).iterator(); DateTime start = DateTimes.max(timestamps.next().getStart(), interval.getStart()); while (timestamps.hasNext()) { DateTime end = timestamps.next().getStart(); intervals.add(new Interval(start, end)); start = end; } if (start.compareTo(interval.getEnd()) < 0) { intervals.add(new Interval(start, interval.getEnd())); } return intervals; }
maxTime = DateTimes.max(maxTime, dataSegment.getInterval().getEnd());
private Pair<Map<Interval, String>, Map<Interval, List<DataSegment>>> getMaxCreateDateAndBaseSegments( List<Pair<DataSegment, String>> snapshot ) { Interval maxAllowedToBuildInterval = snapshot.parallelStream() .map(pair -> pair.lhs) .map(DataSegment::getInterval) .max(Comparators.intervalsByStartThenEnd()) .get(); Map<Interval, String> maxCreatedDate = Maps.newHashMap(); Map<Interval, List<DataSegment>> segments = Maps.newHashMap(); for (Pair<DataSegment, String> entry : snapshot) { DataSegment segment = entry.lhs; String createDate = entry.rhs; Interval interval = segment.getInterval(); if (!hasEnoughLag(interval, maxAllowedToBuildInterval)) { continue; } maxCreatedDate.put( interval, DateTimes.max( DateTimes.of(createDate), DateTimes.of(maxCreatedDate.getOrDefault(interval, DateTimes.MIN.toString())) ).toString() ); segments.putIfAbsent(interval, Lists.newArrayList()); segments.get(interval).add(segment); } return new Pair<>(maxCreatedDate, segments); }
private static Iterable<Interval> splitInterval(Interval interval, Period period) { if (interval.getEndMillis() == interval.getStartMillis()) { return Collections.singletonList(interval); } List<Interval> intervals = Lists.newArrayList(); Iterator<Interval> timestamps = new PeriodGranularity(period, null, null).getIterable(interval).iterator(); DateTime start = DateTimes.max(timestamps.next().getStart(), interval.getStart()); while (timestamps.hasNext()) { DateTime end = timestamps.next().getStart(); intervals.add(new Interval(start, end)); start = end; } if (start.compareTo(interval.getEnd()) < 0) { intervals.add(new Interval(start, interval.getEnd())); } return intervals; }
maxTime = DateTimes.max(maxTime, dataSegment.getInterval().getEnd());