From 0ed45530370c950a14069a97194c7d5a0b57220d Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Mon, 30 Jan 2012 17:39:03 +0100 Subject: [PATCH] Do not delete snapshots with events --- .../dbcleaner/period/KeepOneFilter.java | 2 +- .../dbcleaner/period/KeepOneFilterTest.java | 4 ++-- .../java/org/sonar/core/purge/PurgeDao.java | 4 ++-- .../org/sonar/core/purge/PurgeMapper.java | 4 ++-- .../core/purge/PurgeableSnapshotDto.java | 10 +++++----- .../org/sonar/core/purge/PurgeMapper.xml | 20 +++++++++---------- .../org/sonar/core/purge/PurgeDaoTest.java | 10 +++++----- .../shouldSelectPurgeableSnapshots.xml | 11 ++++------ 8 files changed, 31 insertions(+), 34 deletions(-) diff --git a/plugins/sonar-dbcleaner-plugin/src/main/java/org/sonar/plugins/dbcleaner/period/KeepOneFilter.java b/plugins/sonar-dbcleaner-plugin/src/main/java/org/sonar/plugins/dbcleaner/period/KeepOneFilter.java index 2ca34f0aeaa..c667bd1be59 100644 --- a/plugins/sonar-dbcleaner-plugin/src/main/java/org/sonar/plugins/dbcleaner/period/KeepOneFilter.java +++ b/plugins/sonar-dbcleaner-plugin/src/main/java/org/sonar/plugins/dbcleaner/period/KeepOneFilter.java @@ -82,7 +82,7 @@ class KeepOneFilter extends Filter { @VisibleForTesting static boolean isDeletable(PurgeableSnapshotDto snapshot) { - return !snapshot.isLast() && !snapshot.hasReadOnlyEvents(); + return !snapshot.isLast() && !snapshot.hasEvents(); } } diff --git a/plugins/sonar-dbcleaner-plugin/src/test/java/org/sonar/plugins/dbcleaner/period/KeepOneFilterTest.java b/plugins/sonar-dbcleaner-plugin/src/test/java/org/sonar/plugins/dbcleaner/period/KeepOneFilterTest.java index 2229a39c0e8..b2f7d483131 100644 --- a/plugins/sonar-dbcleaner-plugin/src/test/java/org/sonar/plugins/dbcleaner/period/KeepOneFilterTest.java +++ b/plugins/sonar-dbcleaner-plugin/src/test/java/org/sonar/plugins/dbcleaner/period/KeepOneFilterTest.java @@ -60,7 +60,7 @@ public class KeepOneFilterTest { List toDelete = filter.filter(Arrays.asList( createSnapshotWithDate(1L, "2011-05-01"), // to be deleted createSnapshotWithDate(2L, "2011-05-02").setLast(true), - createSnapshotWithDate(3L, "2011-05-19").setHasReadOnlyEvents(true).setLast(false), + createSnapshotWithDate(3L, "2011-05-19").setHasEvents(true).setLast(false), createSnapshotWithDate(4L, "2011-05-23") // to be deleted )); @@ -73,6 +73,6 @@ public class KeepOneFilterTest { public void test_isDeletable() { assertThat(KeepOneFilter.isDeletable(createSnapshotWithDate(1L, "2011-05-01")), is(true)); assertThat(KeepOneFilter.isDeletable(createSnapshotWithDate(1L, "2011-05-01").setLast(true)), is(false)); - assertThat(KeepOneFilter.isDeletable(createSnapshotWithDate(1L, "2011-05-01").setHasReadOnlyEvents(true)), is(false)); + assertThat(KeepOneFilter.isDeletable(createSnapshotWithDate(1L, "2011-05-01").setHasEvents(true)), is(false)); } } diff --git a/sonar-core/src/main/java/org/sonar/core/purge/PurgeDao.java b/sonar-core/src/main/java/org/sonar/core/purge/PurgeDao.java index 32561f1c583..de93c7b503b 100644 --- a/sonar-core/src/main/java/org/sonar/core/purge/PurgeDao.java +++ b/sonar-core/src/main/java/org/sonar/core/purge/PurgeDao.java @@ -89,8 +89,8 @@ public class PurgeDao { try { PurgeMapper mapper = session.getMapper(PurgeMapper.class); List result = Lists.newArrayList(); - result.addAll(mapper.selectPurgeableSnapshotsWithReadOnlyEvents(resourceId)); - result.addAll(mapper.selectPurgeableSnapshotsWithoutReadOnlyEvents(resourceId)); + result.addAll(mapper.selectPurgeableSnapshotsWithEvents(resourceId)); + result.addAll(mapper.selectPurgeableSnapshotsWithoutEvents(resourceId)); Collections.sort(result);// sort by date return result; } finally { diff --git a/sonar-core/src/main/java/org/sonar/core/purge/PurgeMapper.java b/sonar-core/src/main/java/org/sonar/core/purge/PurgeMapper.java index 350c115bb7e..4aa251a7437 100644 --- a/sonar-core/src/main/java/org/sonar/core/purge/PurgeMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/purge/PurgeMapper.java @@ -73,7 +73,7 @@ public interface PurgeMapper { void closeResourceReviews(long resourceId); - List selectPurgeableSnapshotsWithReadOnlyEvents(long resourceId); + List selectPurgeableSnapshotsWithEvents(long resourceId); - List selectPurgeableSnapshotsWithoutReadOnlyEvents(long resourceId); + List selectPurgeableSnapshotsWithoutEvents(long resourceId); } diff --git a/sonar-core/src/main/java/org/sonar/core/purge/PurgeableSnapshotDto.java b/sonar-core/src/main/java/org/sonar/core/purge/PurgeableSnapshotDto.java index 20d4ab1f829..a9aceeacbdf 100644 --- a/sonar-core/src/main/java/org/sonar/core/purge/PurgeableSnapshotDto.java +++ b/sonar-core/src/main/java/org/sonar/core/purge/PurgeableSnapshotDto.java @@ -27,7 +27,7 @@ import java.util.Date; public class PurgeableSnapshotDto implements Comparable { private Date date; private long snapshotId; - private boolean hasReadOnlyEvents; + private boolean hasEvents; private boolean isLast; public Date getDate() { @@ -38,8 +38,8 @@ public class PurgeableSnapshotDto implements Comparable { return snapshotId; } - public boolean hasReadOnlyEvents() { - return hasReadOnlyEvents; + public boolean hasEvents() { + return hasEvents; } public boolean isLast() { @@ -55,8 +55,8 @@ public class PurgeableSnapshotDto implements Comparable { return this; } - public PurgeableSnapshotDto setHasReadOnlyEvents(boolean b) { - this.hasReadOnlyEvents = b; + public PurgeableSnapshotDto setHasEvents(boolean b) { + this.hasEvents = b; return this; } diff --git a/sonar-core/src/main/resources/org/sonar/core/purge/PurgeMapper.xml b/sonar-core/src/main/resources/org/sonar/core/purge/PurgeMapper.xml index 002a448873a..28745b85272 100644 --- a/sonar-core/src/main/resources/org/sonar/core/purge/PurgeMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/purge/PurgeMapper.xml @@ -48,18 +48,18 @@ - + select s.id as "snapshotId", s.created_at as "date", ${_true} as "hasEvents", islast as "isLast" from + snapshots s where + s.project_id=#{id} and s.status='P' and s.qualifier <> 'LIB' and + exists(select e.id from events e where e.snapshot_id=s.id) - + select s.id as "snapshotId", s.created_at as "date", ${_false} as "hasEvents", islast as "isLast" from + snapshots s where + s.project_id=#{id} and s.status='P' and s.qualifier <> 'LIB' and + not exists(select e.id from events e where e.snapshot_id=s.id)