diff options
author | Stephane Gamard <stephane.gamard@searchbox.com> | 2014-07-03 15:05:05 +0200 |
---|---|---|
committer | Stephane Gamard <stephane.gamard@searchbox.com> | 2014-07-03 15:15:45 +0200 |
commit | 417f1afa08fdae0c5d3d8a633c44e4e848abaead (patch) | |
tree | 0a92099bfe9b0e1abd7fcbf2d5b55ba70064e874 | |
parent | 1948b660d7b3630dc2e8c2bc4b67007c0a190e14 (diff) | |
download | sonarqube-417f1afa08fdae0c5d3d8a633c44e4e848abaead.tar.gz sonarqube-417f1afa08fdae0c5d3d8a633c44e4e848abaead.zip |
SONAR-5007 - added createdAt and updatedAt fields for ActiveRuleDto
8 files changed, 73 insertions, 48 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/Dto.java b/sonar-core/src/main/java/org/sonar/core/persistence/Dto.java index d604962cbf9..891ebcd595c 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/Dto.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/Dto.java @@ -29,19 +29,19 @@ public abstract class Dto<K extends Serializable> { public abstract K getKey(); - public void setCreatedAt(Date datetime){ + public final void setCreatedAt(Date datetime) { this.createdAt = datetime; } - public void setUpdatedAt(Date datetime){ + public final void setUpdatedAt(Date datetime) { this.updatedAt = datetime; } - public Date getCreatedAt(){ + public final Date getCreatedAt() { return this.createdAt; } - public Date getUpdatedAt(){ + public final Date getUpdatedAt() { return this.updatedAt; } } 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 ae9eab457df..b11695a519a 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 @@ -34,7 +34,6 @@ public class QualityProfileDto extends Dto<String> { private String name; private String language; private String parentKee; - private Date createdAt, updatedAt; private String rulesUpdatedAt; /** @@ -100,22 +99,6 @@ public class QualityProfileDto extends Dto<String> { 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 String getRulesUpdatedAt() { return rulesUpdatedAt; } diff --git a/sonar-core/src/main/resources/org/sonar/core/qualityprofile/db/ActiveRuleMapper.xml b/sonar-core/src/main/resources/org/sonar/core/qualityprofile/db/ActiveRuleMapper.xml index 5ff6c7c59fb..fd3c1a00fe2 100644 --- a/sonar-core/src/main/resources/org/sonar/core/qualityprofile/db/ActiveRuleMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/qualityprofile/db/ActiveRuleMapper.xml @@ -11,7 +11,9 @@ a.inheritance as "inheritance", r.plugin_rule_key as "rulefield", r.plugin_name as "repository", - qp.kee as "profileKey" + qp.kee as "profileKey", + a.created_at as "createdAt", + a.updated_at as "updatedAt" </sql> <sql id="activeRuleKeyJoin"> @@ -26,7 +28,9 @@ a.rule_id as ruleId, a.failure_level as severity, a.inheritance as inheritance, - active_rule_parent.id as parentId + active_rule_parent.id as parentId, + a.created_at as "createdAt", + a.updated_at as "updatedAt" </sql> <sql id="activeRuleJoin"> @@ -48,8 +52,8 @@ </select> <insert id="insert" parameterType="ActiveRule" keyColumn="id" useGeneratedKeys="true" keyProperty="id"> - INSERT INTO active_rules (profile_id, rule_id, failure_level, inheritance) - VALUES (#{profileId}, #{ruleId}, #{severity}, #{inheritance}) + INSERT INTO active_rules (profile_id, rule_id, failure_level, inheritance, created_at, updated_at) + VALUES (#{profileId}, #{ruleId}, #{severity}, #{inheritance}, #{createdAt}, #{updatedAt}) </insert> <update id="update" parameterType="ActiveRule"> @@ -57,7 +61,8 @@ profile_id=#{profileId}, rule_id=#{ruleId}, failure_level=#{severity}, - inheritance=#{inheritance} + inheritance=#{inheritance}, + updated_at=#{updatedAt} WHERE id=#{id} </update> @@ -78,7 +83,8 @@ </select> <select id="selectById" parameterType="int" resultType="ActiveRule"> - SELECT <include refid="activeRuleColumns"/> + SELECT + <include refid="activeRuleColumns"/> FROM active_rules a <include refid="activeRuleJoin"/> WHERE a.id=#{id} @@ -91,13 +97,14 @@ FROM active_rules a <include refid="activeRuleKeyJoin"/> WHERE - qp.kee = #{profileKey} - AND r.plugin_rule_key = #{rule} - AND r.plugin_name = #{repository} + qp.kee = #{profileKey} + AND r.plugin_rule_key = #{rule} + AND r.plugin_name = #{repository} </select> <select id="selectByProfileKey" parameterType="string" resultType="ActiveRule"> - SELECT <include refid="activeRuleKeyColumns"/> + SELECT + <include refid="activeRuleKeyColumns"/> FROM active_rules a <include refid="activeRuleKeyJoin"/> where qp.kee=#{id} @@ -171,7 +178,8 @@ </select> <select id="selectParamByActiveRuleAndKey" parameterType="map" resultType="ActiveRuleParam"> - SELECT <include refid="activeRuleParamColumns"/> + SELECT + <include refid="activeRuleParamColumns"/> FROM active_rule_parameters p <where> AND p.active_rule_id=#{activeRuleId} diff --git a/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java b/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java index b79ee901583..f14365889f8 100644 --- a/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java +++ b/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java @@ -146,7 +146,7 @@ public abstract class BaseDao<M, E extends Dto<K>, K extends Serializable> imple return doGetNullableByKey(session, key); } - public E getByKey(DbSession session, K key) { + public final E getByKey(DbSession session, K key) { E value = doGetNullableByKey(session, key); if (value == null) { throw new NotFoundException(String.format("Key '%s' not found", key)); @@ -155,14 +155,14 @@ public abstract class BaseDao<M, E extends Dto<K>, K extends Serializable> imple } @Override - public E update(DbSession session, E item) { + public final E update(DbSession session, E item) { Date now = new Date(system2.now()); update(session, item, now); return item; } @Override - public E update(DbSession session, E item, E... others) { + public final E update(DbSession session, E item, E... others) { Date now = new Date(system2.now()); update(session, item, now); for (E other : others) { @@ -172,7 +172,7 @@ public abstract class BaseDao<M, E extends Dto<K>, K extends Serializable> imple } @Override - public Collection<E> update(DbSession session, Collection<E> items) { + public final Collection<E> update(DbSession session, Collection<E> items) { Date now = new Date(system2.now()); for (E item : items) { update(session, item, now); @@ -189,13 +189,13 @@ public abstract class BaseDao<M, E extends Dto<K>, K extends Serializable> imple } @Override - public E insert(DbSession session, E item) { + public final E insert(DbSession session, E item) { insert(session, item, new Date(system2.now())); return item; } @Override - public Collection<E> insert(DbSession session, Collection<E> items) { + public final Collection<E> insert(DbSession session, Collection<E> items) { Date now = new Date(system2.now()); for (E item : items) { insert(session, item, now); @@ -204,7 +204,7 @@ public abstract class BaseDao<M, E extends Dto<K>, K extends Serializable> imple } @Override - public E insert(DbSession session, E item, E... others) { + public final E insert(DbSession session, E item, E... others) { Date now = new Date(system2.now()); insert(session, item, now); for (E other : others) { @@ -225,12 +225,12 @@ public abstract class BaseDao<M, E extends Dto<K>, K extends Serializable> imple } @Override - public void delete(DbSession session, E item) { + public final void delete(DbSession session, E item) { deleteByKey(session, item.getKey()); } @Override - public void delete(DbSession session, E item, E... others) { + public final void delete(DbSession session, E item, E... others) { delete(session, item); for (E e : others) { delete(session, e); @@ -238,14 +238,14 @@ public abstract class BaseDao<M, E extends Dto<K>, K extends Serializable> imple } @Override - public void delete(DbSession session, Collection<E> items) { + public final void delete(DbSession session, Collection<E> items) { for (E item : items) { delete(session, item); } } @Override - public void deleteByKey(DbSession session, K key) { + public final void deleteByKey(DbSession session, K key) { Preconditions.checkNotNull(key, "Missing key"); doDeleteByKey(session, key); if (hasIndex()) { @@ -253,7 +253,7 @@ public abstract class BaseDao<M, E extends Dto<K>, K extends Serializable> imple } } - protected void enqueueUpdate(Object nestedItem, K key, DbSession session) { + protected final void enqueueUpdate(Object nestedItem, K key, DbSession session) { if (hasIndex()) { session.enqueue(new EmbeddedIndexAction<K>( this.getIndexType(), IndexAction.Method.UPSERT, key, nestedItem)); diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRule.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRule.java index 5258c43bc15..649ef441a13 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRule.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRule.java @@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableList; import org.sonar.core.qualityprofile.db.ActiveRuleKey; import javax.annotation.CheckForNull; +import java.util.Date; import java.util.List; import java.util.Map; @@ -33,6 +34,10 @@ public interface ActiveRule { public static final List<Inheritance> ALL = ImmutableList.of(NONE, OVERRIDES, INHERITED); } + Date createdAt(); + + Date updatedAt(); + ActiveRuleKey key(); String severity(); diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleDoc.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleDoc.java index 24ce64dd9e4..66048c8ba45 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleDoc.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleDoc.java @@ -23,8 +23,10 @@ import com.google.common.base.Preconditions; import org.sonar.core.qualityprofile.db.ActiveRuleKey; import org.sonar.server.qualityprofile.ActiveRule; import org.sonar.server.search.BaseDoc; +import org.sonar.server.search.IndexUtils; import javax.annotation.CheckForNull; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -40,6 +42,16 @@ public class ActiveRuleDoc extends BaseDoc implements ActiveRule { } @Override + public Date createdAt() { + return IndexUtils.parseDateTime((String) getNullableField(ActiveRuleNormalizer.ActiveRuleField.CREATED_AT.field())); + } + + @Override + public Date updatedAt() { + return IndexUtils.parseDateTime((String) getNullableField(ActiveRuleNormalizer.ActiveRuleField.UPDATED_AT.field())); + } + + @Override public ActiveRuleKey key() { return this.key; } diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java index 3160acf8854..e3fa5b12271 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java @@ -37,7 +37,12 @@ import org.sonar.server.search.Indexable; import org.sonar.server.search.es.ListUpdate; import java.lang.reflect.Field; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; public class ActiveRuleNormalizer extends BaseNormalizer<ActiveRuleDto, ActiveRuleKey> { @@ -51,6 +56,9 @@ public class ActiveRuleNormalizer extends BaseNormalizer<ActiveRuleDto, ActiveRu public static final IndexField RULE_KEY = add(IndexField.Type.STRING, "ruleKey"); public static final IndexField PARAMS = addEmbedded("params", ActiveRuleParamField.ALL_FIELDS); + public static final IndexField CREATED_AT = addSortable(IndexField.Type.DATE, "createdAt"); + public static final IndexField UPDATED_AT = addSortable(IndexField.Type.DATE, UPDATED_AT_FIELD); + public static Set<IndexField> ALL_FIELDS = getAllFields(); private static Set<IndexField> getAllFields() { @@ -123,6 +131,10 @@ public class ActiveRuleNormalizer extends BaseNormalizer<ActiveRuleDto, ActiveRu activeRuleDto.getInheritance() : ActiveRule.Inheritance.NONE.name()); newRule.put(ActiveRuleField.SEVERITY.field(), activeRuleDto.getSeverityString()); + newRule.put(ActiveRuleField.KEY.field(), key.toString()); + + newRule.put(ActiveRuleField.CREATED_AT.field(), activeRuleDto.getCreatedAt()); + newRule.put(ActiveRuleField.UPDATED_AT.field(), activeRuleDto.getUpdatedAt()); DbSession session = db.openSession(false); try { diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/RuleActivatorMediumTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/RuleActivatorMediumTest.java index 83d1ff1775e..c26899f1576 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/RuleActivatorMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/RuleActivatorMediumTest.java @@ -20,7 +20,10 @@ package org.sonar.server.qualityprofile; import com.google.common.collect.ImmutableMap; -import org.junit.*; +import org.junit.After; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.RuleStatus; import org.sonar.api.rule.Severity; @@ -42,7 +45,6 @@ import org.sonar.server.search.QueryOptions; import org.sonar.server.tester.ServerTester; import javax.annotation.Nullable; - import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -52,7 +54,6 @@ import static org.fest.assertions.Assertions.assertThat; import static org.fest.assertions.Fail.fail; import static org.sonar.server.qualityprofile.QProfileTesting.*; -@Ignore public class RuleActivatorMediumTest { static final RuleKey MANUAL_RULE_KEY = RuleKey.of(RuleKey.MANUAL_REPOSITORY_KEY, "m1"); @@ -988,6 +989,10 @@ public class RuleActivatorMediumTest { assertThat(activeRule.severity()).isEqualTo(expectedSeverity); assertThat(activeRule.inheritance()).isEqualTo(expectedInheritance == null ? ActiveRule.Inheritance.NONE : ActiveRule.Inheritance.valueOf(expectedInheritance)); + // Dates should be set + assertThat(activeRule.createdAt()).isNotNull(); + assertThat(activeRule.updatedAt()).isNotNull(); + // verify parameters in es assertThat(activeRule.params()).hasSize(expectedParams.size()); for (Map.Entry<String, String> entry : expectedParams.entrySet()) { |