]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4646 Deleting a user should not lead to delete its 'shared' dashboards/filters
authorJulien HENRY <julien.henry@sonarsource.com>
Fri, 27 Sep 2013 14:01:55 +0000 (16:01 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Fri, 27 Sep 2013 14:02:35 +0000 (16:02 +0200)
sonar-core/src/main/java/org/sonar/core/user/UserDao.java
sonar-core/src/main/java/org/sonar/core/user/UserMapper.java
sonar-core/src/main/resources/org/sonar/core/user/UserMapper.xml
sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/deactivate_user-result.xml
sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/deactivate_user.xml

index a3c21ea51d98eaa63f7424436f3bdf0b918a8103..08624145961d545c81d251258c2183fdce2073d0 100644 (file)
@@ -116,10 +116,10 @@ public class UserDao implements BatchComponent, ServerComponent {
 
       mapper.removeUserFromGroups(dto.getId());
       mapper.deleteUserActiveDashboards(dto.getId());
-      mapper.deleteUserDashboards(dto.getId());
-      mapper.deleteUserIssueFilters(dto.getLogin());
+      mapper.deleteUnsharedUserDashboards(dto.getId());
+      mapper.deleteUnsharedUserIssueFilters(dto.getLogin());
       mapper.deleteUserIssueFilterFavourites(dto.getLogin());
-      mapper.deleteUserMeasureFilters(dto.getId());
+      mapper.deleteUnsharedUserMeasureFilters(dto.getId());
       mapper.deleteUserMeasureFilterFavourites(dto.getId());
       mapper.deleteUserProperties(dto.getId());
       mapper.deleteUserRoles(dto.getId());
index b8d0a9b84593bf5cf99db5f8b70cc5e09c8608d2..3e5780dac56d15d70a5bdba7c8abf2ba851b2047 100644 (file)
@@ -48,13 +48,13 @@ public interface UserMapper {
 
   void deleteUserActiveDashboards(long userId);
 
-  void deleteUserDashboards(long userId);
+  void deleteUnsharedUserDashboards(long userId);
 
-  void deleteUserIssueFilters(String login);
+  void deleteUnsharedUserIssueFilters(String login);
 
   void deleteUserIssueFilterFavourites(String login);
 
-  void deleteUserMeasureFilters(long userId);
+  void deleteUnsharedUserMeasureFilters(long userId);
 
   void deleteUserMeasureFilterFavourites(long userId);
 
index 0cd5fbbce41e6a019811eec261f0648f304de569..f0368bf8bab1d68e86bd565f227f06775ae72da7 100644 (file)
     DELETE FROM properties WHERE user_id=#{id}
   </delete>
 
-  <delete id="deleteUserDashboards" parameterType="long">
-    DELETE FROM dashboards WHERE user_id=#{id}
+  <delete id="deleteUnsharedUserDashboards" parameterType="long">
+    DELETE FROM dashboards WHERE user_id=#{id} and shared &lt;&gt; ${_true}
   </delete>
 
   <delete id="deleteUserActiveDashboards" parameterType="long">
     DELETE FROM active_dashboards WHERE user_id=#{id}
   </delete>
 
-  <delete id="deleteUserMeasureFilters" parameterType="long">
-    DELETE FROM measure_filters WHERE user_id=#{id}
+  <delete id="deleteUnsharedUserMeasureFilters" parameterType="long">
+    DELETE FROM measure_filters WHERE user_id=#{id} and shared &lt;&gt; ${_true}
   </delete>
 
   <delete id="deleteUserMeasureFilterFavourites" parameterType="long">
     DELETE FROM measure_filter_favourites WHERE user_id=#{id}
   </delete>
 
-  <delete id="deleteUserIssueFilters" parameterType="String">
-    DELETE FROM issue_filters WHERE user_login=#{id}
+  <delete id="deleteUnsharedUserIssueFilters" parameterType="String">
+    DELETE FROM issue_filters WHERE user_login=#{id} and shared &lt;&gt; ${_true}
   </delete>
 
   <delete id="deleteUserIssueFilterFavourites" parameterType="String">
index 7ec29baf07df67cca1c2a4bb81c03137563f213c..1ee485b98129757c5be950822675b892ffcafcf1 100644 (file)
   <users id="101" login="jcdus" name="Jean-Claude Dus" email="jcdus@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[true]"/>
   <dashboards id="2" user_id="101" NAME="[null]" COLUMN_LAYOUT="[null]" CREATED_AT="[null]" DESCRIPTION="[null]" IS_GLOBAL="[false]" SHARED="[false]" UPDATED_AT="[null]"/>
   <active_dashboards id="2" user_id="101" dashboard_id="2" ORDER_INDEX="[null]"/>
+  <active_dashboards id="4" user_id="101" dashboard_id="3" ORDER_INDEX="[null]"/>
   <issue_filters id="2" user_login="jcdus" name="My issues" CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[false]" UPDATED_AT="[null]"/>
   <issue_filter_favourites id="2" user_login="jcdus" issue_filter_id="2" CREATED_AT="[null]"/>
+  <issue_filter_favourites id="4" user_login="jcdus" issue_filter_id="3" CREATED_AT="[null]"/>
   <measure_filters id="2" user_id="101" name="My measures" CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[false]" UPDATED_AT="[null]"/>
   <measure_filter_favourites id="2" user_id="101" measure_filter_id="2" CREATED_AT="[null]"/>
+  <measure_filter_favourites id="4" user_id="101" measure_filter_id="3" CREATED_AT="[null]"/>
   <properties id="2" user_id="101" PROP_KEY="[null]" RESOURCE_ID="[null]" TEXT_VALUE="[null]" />
   <groups_users user_id="101" group_id="200"/>
   <user_roles id="2" user_id="101" role="admin" RESOURCE_ID="[null]"/>
+
+  <!-- Not deleted because shared -->
+  <dashboards id="3" user_id="100" NAME="[null]" COLUMN_LAYOUT="[null]" CREATED_AT="[null]" DESCRIPTION="[null]" IS_GLOBAL="[false]" SHARED="[true]" UPDATED_AT="[null]"/>
+  <issue_filters id="3" user_login="marius" name="My shared issues"  CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[true]" UPDATED_AT="[null]"/>
+  <measure_filters id="3" user_id="100" name="My shared measures" CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[true]" UPDATED_AT="[null]"/>
+
+
 </dataset>
index 1b102962bcd37a91b4b5f7723590cdb6a5aa3244..e1891e18d3a19df92804aad99b677a416d759323 100644 (file)
 <dataset>
   <users id="100" login="marius" name="Marius" email="marius@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[true]"/>
   <dashboards id="1" user_id="100" NAME="[null]" COLUMN_LAYOUT="[null]" CREATED_AT="[null]" DESCRIPTION="[null]" IS_GLOBAL="[false]" SHARED="[false]" UPDATED_AT="[null]"/>
+  <dashboards id="3" user_id="100" NAME="[null]" COLUMN_LAYOUT="[null]" CREATED_AT="[null]" DESCRIPTION="[null]" IS_GLOBAL="[false]" SHARED="[true]" UPDATED_AT="[null]"/>
   <active_dashboards id="1" user_id="100" dashboard_id="1" ORDER_INDEX="[null]"/>
+  <active_dashboards id="3" user_id="100" dashboard_id="3" ORDER_INDEX="[null]"/>
   <issue_filters id="1" user_login="marius" name="My issues"  CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[false]" UPDATED_AT="[null]"/>
+  <issue_filters id="3" user_login="marius" name="My shared issues"  CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[true]" UPDATED_AT="[null]"/>
   <issue_filter_favourites id="1" user_login="marius" issue_filter_id="1" CREATED_AT="[null]"/>
+  <issue_filter_favourites id="3" user_login="marius" issue_filter_id="3" CREATED_AT="[null]"/>
   <measure_filters id="1" user_id="100" name="My measures" CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[false]" UPDATED_AT="[null]"/>
+  <measure_filters id="3" user_id="100" name="My shared measures" CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[true]" UPDATED_AT="[null]"/>
   <measure_filter_favourites id="1" user_id="100" measure_filter_id="1" CREATED_AT="[null]"/>
+  <measure_filter_favourites id="3" user_id="100" measure_filter_id="3" CREATED_AT="[null]"/>
   <properties id="1" user_id="100" PROP_KEY="[null]" RESOURCE_ID="[null]" TEXT_VALUE="[null]" />
   <groups_users user_id="100" group_id="200"/>
   <user_roles id="1" user_id="100" role="admin" RESOURCE_ID="[null]"/>
   <users id="101" login="jcdus" name="Jean-Claude Dus" email="jcdus@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[true]"/>
   <dashboards id="2" user_id="101" NAME="[null]" COLUMN_LAYOUT="[null]" CREATED_AT="[null]" DESCRIPTION="[null]" IS_GLOBAL="[false]" SHARED="[false]" UPDATED_AT="[null]"/>
   <active_dashboards id="2" user_id="101" dashboard_id="2" ORDER_INDEX="[null]"/>
+  <active_dashboards id="4" user_id="101" dashboard_id="3" ORDER_INDEX="[null]"/>
   <issue_filters id="2" user_login="jcdus" name="My issues" CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[false]" UPDATED_AT="[null]"/>
   <issue_filter_favourites id="2" user_login="jcdus" issue_filter_id="2" CREATED_AT="[null]"/>
+  <issue_filter_favourites id="4" user_login="jcdus" issue_filter_id="3" CREATED_AT="[null]"/>
   <measure_filters id="2" user_id="101" name="My measures" CREATED_AT="[null]" DATA="[null]" DESCRIPTION="[null]" SHARED="[false]" UPDATED_AT="[null]"/>
   <measure_filter_favourites id="2" user_id="101" measure_filter_id="2" CREATED_AT="[null]"/>
+  <measure_filter_favourites id="4" user_id="101" measure_filter_id="3" CREATED_AT="[null]"/>
   <properties id="2" user_id="101" PROP_KEY="[null]" RESOURCE_ID="[null]" TEXT_VALUE="[null]" />
   <groups_users user_id="101" group_id="200"/>
   <user_roles id="2" user_id="101" role="admin" RESOURCE_ID="[null]"/>