From 48563f868573a21cac93c8143b36b26200f19a6c Mon Sep 17 00:00:00 2001 From: Fabrice Bellingard Date: Wed, 26 Oct 2011 11:00:45 +0200 Subject: SONAR-2919 Fix issues on the event handling - Make it impossible to create event without a category -> created "Other" category -> updated both UI and WS (actually: constraint on Event class) - Fix display issue on Chrome - Make it impossible to remove version from last snapshot - Show event widget on sub-projects - Update purge mechanism to delete events that are not attached to a snapshot or attached to an unexisting snapshot --- .../plugins/dbcleaner/purges/PurgeEventOrphans.java | 14 ++++++++++++-- .../purgeEventOrphans-result.xml | 21 ++++++++++++++++----- .../PurgeEventOrphansTest/purgeEventOrphans.xml | 15 +++++++++++++-- 3 files changed, 41 insertions(+), 9 deletions(-) (limited to 'plugins/sonar-dbcleaner-plugin') diff --git a/plugins/sonar-dbcleaner-plugin/src/main/java/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphans.java b/plugins/sonar-dbcleaner-plugin/src/main/java/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphans.java index 41ddd5e06d6..84f4ab14de1 100644 --- a/plugins/sonar-dbcleaner-plugin/src/main/java/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphans.java +++ b/plugins/sonar-dbcleaner-plugin/src/main/java/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphans.java @@ -22,6 +22,8 @@ package org.sonar.plugins.dbcleaner.purges; import org.sonar.api.batch.Event; import org.sonar.api.database.DatabaseSession; import org.sonar.api.database.model.ResourceModel; +import org.sonar.api.database.model.Snapshot; +import org.sonar.api.database.model.SnapshotSource; import org.sonar.plugins.dbcleaner.api.Purge; import org.sonar.plugins.dbcleaner.api.PurgeContext; import org.sonar.plugins.dbcleaner.api.PurgeUtils; @@ -37,8 +39,16 @@ public final class PurgeEventOrphans extends Purge { } public void purge(PurgeContext context) { - Query query = getSession().createQuery("SELECT e.id FROM " + Event.class.getSimpleName() + - " e WHERE e.resourceId IS NOT NULL AND NOT EXISTS(FROM " + ResourceModel.class.getSimpleName() + " r WHERE r.id=e.resourceId)"); + String selectEventsSql = "SELECT e.id FROM " + Event.class.getSimpleName() + " e WHERE ("; + selectEventsSql += "e.resourceId IS NOT NULL AND NOT EXISTS(FROM " + ResourceModel.class.getSimpleName() + + " r WHERE r.id=e.resourceId)"; + selectEventsSql += ") OR ("; + selectEventsSql += "e.snapshot IS NULL"; + selectEventsSql += ") OR ("; + selectEventsSql += "e.snapshot IS NOT NULL AND NOT EXISTS(FROM " + Snapshot.class.getSimpleName() + " s WHERE s.id=e.snapshot)"; + selectEventsSql += ")"; + + Query query = getSession().createQuery(selectEventsSql); final List eventIds = query.getResultList(); PurgeUtils.executeQuery(getSession(), "", eventIds, "DELETE FROM " + Event.class.getSimpleName() + " WHERE id in (:ids)"); } diff --git a/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphansTest/purgeEventOrphans-result.xml b/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphansTest/purgeEventOrphans-result.xml index 14c4f413a35..b518b72352d 100644 --- a/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphansTest/purgeEventOrphans-result.xml +++ b/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphansTest/purgeEventOrphans-result.xml @@ -4,13 +4,24 @@ description="[null]" enabled="true" language="java" copy_resource_id="[null]" profile_id="[null]"/> - - + - - + + + + + - + + + + + + + \ No newline at end of file diff --git a/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphansTest/purgeEventOrphans.xml b/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphansTest/purgeEventOrphans.xml index a552039b419..1462e72d525 100644 --- a/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphansTest/purgeEventOrphans.xml +++ b/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/purges/PurgeEventOrphansTest/purgeEventOrphans.xml @@ -4,13 +4,24 @@ description="[null]" enabled="true" language="java" copy_resource_id="[null]" profile_id="[null]"/> - + + + - + + + + + + + \ No newline at end of file -- cgit v1.2.3