private static void appendSnapshotsToDelete(Interval interval, List<PurgeableAnalysisDto> toDelete) { if (interval.count() > 1) { List<PurgeableAnalysisDto> deletables = Lists.newArrayList(); List<PurgeableAnalysisDto> toKeep = Lists.newArrayList(); for (PurgeableAnalysisDto snapshot : interval.get()) { if (isDeletable(snapshot)) { deletables.add(snapshot); } else { toKeep.add(snapshot); } } if (!toKeep.isEmpty()) { toDelete.addAll(deletables); } else if (deletables.size() > 1) { // keep last snapshot toDelete.addAll(deletables.subList(0, deletables.size() - 1)); } } }
static int calendarField(Interval interval, int field) { if (interval.count() == 0) { return -1; } PurgeableAnalysisDto first = interval.get().iterator().next(); GregorianCalendar cal = new GregorianCalendar(); cal.setTime(first.getDate()); return cal.get(field); }
@Test public void shouldIgnoreTimeWhenGroupingByIntervals() { List<PurgeableAnalysisDto> snapshots = Arrays.asList( DbCleanerTestUtils.createAnalysisWithDateTime("u1", "2011-05-25T00:16:48+0100"), DbCleanerTestUtils.createAnalysisWithDateTime("u2", "2012-01-26T00:16:48+0100"), DbCleanerTestUtils.createAnalysisWithDateTime("u3", "2012-01-27T00:16:48+0100") ); List<Interval> intervals = Interval.group(snapshots, DateUtils.parseDateTime("2011-05-25T00:00:00+0100"), DateUtils.parseDateTime("2012-01-26T00:00:00+0100"), Calendar.MONTH); assertThat(intervals.size()).isEqualTo(1); assertThat(intervals.get(0).count()).isEqualTo(1); assertThat(intervals.get(0).get().get(0).getAnalysisUuid()).isEqualTo(("u2")); } }
private void appendSnapshotsToDelete(Interval interval, List<PurgeableAnalysisDto> toDelete) { if (interval.count() > 1) { List<PurgeableAnalysisDto> deletables = Lists.newArrayList(); List<PurgeableAnalysisDto> toKeep = Lists.newArrayList(); for (PurgeableAnalysisDto snapshot : interval.get()) { if (isDeletable(snapshot)) { deletables.add(snapshot); } else { toKeep.add(snapshot); } } if (!toKeep.isEmpty()) { toDelete.addAll(deletables); } else if (deletables.size() > 1) { // keep last snapshot toDelete.addAll(deletables.subList(0, deletables.size() - 1)); } } }