From 95eabd8a0a1b89c319f3e05cc163b88cc561f00d Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Fri, 20 Jun 2014 00:44:14 +0200 Subject: [PATCH] SONAR-5007 add RULES_PROFILES.CREATED_AT, UPDATED_AT and RULES_UPDATED_AT --- .../core/persistence/DatabaseVersion.java | 2 +- .../migration/v44/Migration44Mapper.java | 7 +- .../qualityprofile/db/QualityProfileDto.java | 18 +++++ .../db/QualityProfileMapper.java | 2 +- .../migration/v44/Migration44Mapper.xml | 10 ++- .../org/sonar/core/persistence/rows-h2.sql | 2 + .../org/sonar/core/persistence/schema-h2.ddl | 5 +- .../migration/v44/ProfileMeasureTest.java | 37 +++++++++ .../QualityProfileDaoTest/delete-result.xml | 3 +- .../db/QualityProfileDaoTest/inheritance.xml | 18 +++-- .../QualityProfileDaoTest/insert-result.xml | 9 ++- .../db/QualityProfileDaoTest/projects.xml | 6 +- .../select_all_is_sorted_by_profile_name.xml | 9 ++- .../select_by_language.xml | 8 +- .../db/QualityProfileDaoTest/shared.xml | 6 +- .../QualityProfileDaoTest/update-result.xml | 6 +- ...umberOfRulesOfACategoryForGivenPlugins.xml | 14 ---- ...uleParametersFromARuleParameter-result.xml | 20 ----- ...ActiveRuleParametersFromARuleParameter.xml | 19 ----- .../shouldDeleteActiveRules-result.xml | 17 ---- .../RulesDaoTest/shouldDeleteActiveRules.xml | 21 ----- .../dao/RulesDaoTest/shouldGetActiveRules.xml | 17 ---- .../dao/RulesDaoTest/shouldGetRuleParams.xml | 17 ---- .../shouldGetRuleWithRuleKeyAndPluginKey.xml | 6 -- .../jpa/dao/RulesDaoTest/shouldGetRules.xml | 13 ---- .../db/migrations/DatabaseMigrations.java | 6 +- .../v44/FeedQProfileDatesMigration.java | 78 +++++++++++++++++++ ...on.java => FeedQProfileKeysMigration.java} | 6 +- ...file_keys.rb => 549_feed_qprofile_keys.rb} | 4 +- .../migrate/550_convert_profile_measures.rb | 2 +- .../migrate/551_update_logs_to_activities.rb | 2 +- .../db/migrate/552_add_qprofile_dates.rb | 32 ++++++++ .../db/migrate/553_feed_qprofile_dates.rb | 30 +++++++ .../v44/FeedQProfileDatesMigrationTest.java | 67 ++++++++++++++++ .../feed_created_at_and_updated_at.xml | 21 +++++ .../feed_created_at_and_updated_at_result.xml | 21 +++++ .../FeedQProfileDatesMigrationTest/schema.sql | 30 +++++++ .../use_default_dates_when_no_changes.xml | 12 +++ ...e_default_dates_when_no_changes_result.xml | 12 +++ 39 files changed, 432 insertions(+), 183 deletions(-) create mode 100644 sonar-core/src/test/java/org/sonar/core/persistence/migration/v44/ProfileMeasureTest.java delete mode 100644 sonar-core/src/test/resources/org/sonar/jpa/dao/RulesDaoTest/shouldCountNumberOfRulesOfACategoryForGivenPlugins.xml delete mode 100644 sonar-core/src/test/resources/org/sonar/jpa/dao/RulesDaoTest/shouldDeleteActiveRuleParametersFromARuleParameter-result.xml delete mode 100644 sonar-core/src/test/resources/org/sonar/jpa/dao/RulesDaoTest/shouldDeleteActiveRuleParametersFromARuleParameter.xml delete mode 100644 sonar-core/src/test/resources/org/sonar/jpa/dao/RulesDaoTest/shouldDeleteActiveRules-result.xml delete mode 100644 sonar-core/src/test/resources/org/sonar/jpa/dao/RulesDaoTest/shouldDeleteActiveRules.xml delete mode 100644 sonar-core/src/test/resources/org/sonar/jpa/dao/RulesDaoTest/shouldGetActiveRules.xml delete mode 100644 sonar-core/src/test/resources/org/sonar/jpa/dao/RulesDaoTest/shouldGetRuleParams.xml delete mode 100644 sonar-core/src/test/resources/org/sonar/jpa/dao/RulesDaoTest/shouldGetRuleWithRuleKeyAndPluginKey.xml delete mode 100644 sonar-core/src/test/resources/org/sonar/jpa/dao/RulesDaoTest/shouldGetRules.xml create mode 100644 sonar-server/src/main/java/org/sonar/server/db/migrations/v44/FeedQProfileDatesMigration.java rename sonar-server/src/main/java/org/sonar/server/db/migrations/v44/{QProfileKeyMigration.java => FeedQProfileKeysMigration.java} (95%) rename sonar-server/src/main/webapp/WEB-INF/db/migrate/{549_set_qprofile_keys.rb => 549_feed_qprofile_keys.rb} (86%) create mode 100644 sonar-server/src/main/webapp/WEB-INF/db/migrate/552_add_qprofile_dates.rb create mode 100644 sonar-server/src/main/webapp/WEB-INF/db/migrate/553_feed_qprofile_dates.rb create mode 100644 sonar-server/src/test/java/org/sonar/server/db/migrations/v44/FeedQProfileDatesMigrationTest.java create mode 100644 sonar-server/src/test/resources/org/sonar/server/db/migrations/v44/FeedQProfileDatesMigrationTest/feed_created_at_and_updated_at.xml create mode 100644 sonar-server/src/test/resources/org/sonar/server/db/migrations/v44/FeedQProfileDatesMigrationTest/feed_created_at_and_updated_at_result.xml create mode 100644 sonar-server/src/test/resources/org/sonar/server/db/migrations/v44/FeedQProfileDatesMigrationTest/schema.sql create mode 100644 sonar-server/src/test/resources/org/sonar/server/db/migrations/v44/FeedQProfileDatesMigrationTest/use_default_dates_when_no_changes.xml create mode 100644 sonar-server/src/test/resources/org/sonar/server/db/migrations/v44/FeedQProfileDatesMigrationTest/use_default_dates_when_no_changes_result.xml diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java index 0a449c778c4..e873c66cd80 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java @@ -33,7 +33,7 @@ import java.util.List; */ public class DatabaseVersion implements BatchComponent, ServerComponent { - public static final int LAST_VERSION = 551; + public static final int LAST_VERSION = 553; public static enum Status { UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/migration/v44/Migration44Mapper.java b/sonar-core/src/main/java/org/sonar/core/persistence/migration/v44/Migration44Mapper.java index 2a514ff2d54..d27b8c95c4e 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/migration/v44/Migration44Mapper.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/migration/v44/Migration44Mapper.java @@ -30,12 +30,13 @@ public interface Migration44Mapper { // migration of measures "profile" and "profile_version" List selectProfileMeasures(); int selectProfileVersion(long snapshotId); - @CheckForNull Date selectProfileVersionDate(@Param("profileId") long profileId, @Param("profileVersion") int profileVersion); + @CheckForNull Date selectProfileVersionDate(@Param("profileId") int profileId, @Param("profileVersion") int profileVersion); void updateProfileMeasure(@Param("measureId") long measureId, @Param("json") String json); // creation of columns RULES_PROFILES.CREATED_AT and UPDATED_AT - @CheckForNull Date selectProfileCreatedAt(long profileId); - @CheckForNull Date selectProfileUpdatedAt(long profileId); + @CheckForNull Date selectProfileCreatedAt(int profileId); + @CheckForNull Date selectProfileUpdatedAt(int profileId); + void updateProfileDates(@Param("profileId") int profileId, @Param("createdAt") Date createdAt, @Param("updatedAt") Date updatedAt); // migrate changeLog to Activities List selectActiveRuleChange(@Param("enabled") Boolean enabled); diff --git a/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileDto.java b/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileDto.java index 992b8a7f57a..bc7224a5fc3 100644 --- a/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileDto.java +++ b/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileDto.java @@ -24,6 +24,7 @@ import org.sonar.core.persistence.Dto; import javax.annotation.CheckForNull; import javax.annotation.Nullable; +import java.util.Date; public class QualityProfileDto extends Dto { @@ -32,6 +33,7 @@ public class QualityProfileDto extends Dto { private String name; private String language; private String parentKee; + private Date createdAt, updatedAt, rulesUpdatedAt; /** * @deprecated use {@link #createFor(String)} @@ -96,6 +98,22 @@ public class QualityProfileDto extends Dto { return this; } + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + public static QualityProfileDto createFor(String key) { return new QualityProfileDto().setKee(key); } diff --git a/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileMapper.java b/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileMapper.java index 3acfe871727..cef07f9a24a 100644 --- a/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileMapper.java @@ -33,7 +33,7 @@ public interface QualityProfileMapper { void update(QualityProfileDto dto); - void delete(Integer id); + void delete(int id); List selectAll(); diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/migration/v44/Migration44Mapper.xml b/sonar-core/src/main/resources/org/sonar/core/persistence/migration/v44/Migration44Mapper.xml index 150df88078d..4484a1111e6 100644 --- a/sonar-core/src/main/resources/org/sonar/core/persistence/migration/v44/Migration44Mapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/persistence/migration/v44/Migration44Mapper.xml @@ -29,16 +29,22 @@ where id=#{measureId} - select max(change_date) from active_rule_changes where profile_id=#{id} - select min(change_date) from active_rule_changes where profile_id=#{id} + + update rules_profiles + set created_at=#{createdAt}, updated_at=#{updatedAt}, rules_updated_at=#{updatedAt} + where id=#{profileId} + +