From e78cd0cf41cdaaa2c45fcac4efe28d6972efe7e8 Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Fri, 20 Jun 2014 09:25:26 +0200 Subject: [PATCH] SONAR-5329 - Added reader fields for QProfileActivity --- .../org/sonar/core/activity/Activity.java | 6 ++-- .../server/activity/index/ActivityDoc.java | 5 +++ .../qualityprofile/QProfileActivity.java | 33 ++++++++++++------- .../java/org/sonar/server/search/BaseDoc.java | 2 +- .../QProfileServiceMediumTest.java | 15 +++++++-- 5 files changed, 43 insertions(+), 18 deletions(-) diff --git a/sonar-core/src/main/java/org/sonar/core/activity/Activity.java b/sonar-core/src/main/java/org/sonar/core/activity/Activity.java index 835ca8dfb1e..caf56919d96 100644 --- a/sonar-core/src/main/java/org/sonar/core/activity/Activity.java +++ b/sonar-core/src/main/java/org/sonar/core/activity/Activity.java @@ -31,12 +31,14 @@ public interface Activity { NONE, QPROFILE, SERVER } + Type type(); + + String action(); + Date time(); String author(); - String action(); - Map details(); String message(); diff --git a/sonar-server/src/main/java/org/sonar/server/activity/index/ActivityDoc.java b/sonar-server/src/main/java/org/sonar/server/activity/index/ActivityDoc.java index d38c0cb6eb1..baa7be28955 100644 --- a/sonar-server/src/main/java/org/sonar/server/activity/index/ActivityDoc.java +++ b/sonar-server/src/main/java/org/sonar/server/activity/index/ActivityDoc.java @@ -46,6 +46,11 @@ public class ActivityDoc extends BaseDoc implements Activity { return this.getNullableField(ActivityNormalizer.LogFields.AUTHOR.field()); } + @Override + public Type type() { + return Type.valueOf((String) this.getNullableField(ActivityNormalizer.LogFields.TYPE.field())); + } + @Override public String action() { return this.getNullableField(ActivityNormalizer.LogFields.ACTION.field()); diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileActivity.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileActivity.java index 5d138b14fcf..fd2c453d0f6 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileActivity.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileActivity.java @@ -19,7 +19,7 @@ */ package org.sonar.server.qualityprofile; -import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; import org.sonar.api.rule.RuleKey; import org.sonar.core.activity.Activity; import org.sonar.server.activity.index.ActivityDoc; @@ -31,36 +31,45 @@ import java.util.Map; */ public class QProfileActivity extends ActivityDoc implements Activity { + private String ruleName = "Not Yet Implemented"; + private String authorName = "Not Yet Implemented"; + protected QProfileActivity(Map fields) { super(fields); + Map details = getField("details"); + for (Map.Entry detail : details.entrySet()) { + fields.put((String) detail.getKey(), detail.getValue()); + } } public String profileKey(){ - // TODO - return null; + return getField("profileKey"); } public RuleKey ruleKey(){ - return RuleKey.parse((String) getField("details.ruleKey")); + return RuleKey.parse((String) getField("ruleKey")); } public String ruleName(){ - // TODO - return null; + return this.ruleName; } public String authorName(){ - // TODO - return null; + return this.authorName; } public String severity(){ - return (String) getField("details.severity"); + return (String) getField("severity"); } - public Map parameters(){ - // TODO - return ImmutableMap.of(); + public Map parameters() { + Map params = Maps.newHashMap(); + for (String key : fields.keySet()) { + if (key.startsWith("param_")) { + params.put(key.replace("param_", ""), (String) fields.get(key)); + } + } + return params; } } diff --git a/sonar-server/src/main/java/org/sonar/server/search/BaseDoc.java b/sonar-server/src/main/java/org/sonar/server/search/BaseDoc.java index d7b930532fc..9b1b8cd6329 100644 --- a/sonar-server/src/main/java/org/sonar/server/search/BaseDoc.java +++ b/sonar-server/src/main/java/org/sonar/server/search/BaseDoc.java @@ -27,7 +27,7 @@ import java.util.Map; */ public abstract class BaseDoc { - private final Map fields; + protected final Map fields; protected BaseDoc(Map fields) { this.fields = fields; diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileServiceMediumTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileServiceMediumTest.java index 56e41b423f1..1e6207bb3d5 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileServiceMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileServiceMediumTest.java @@ -20,7 +20,10 @@ package org.sonar.server.qualityprofile; import com.google.common.collect.Multimap; -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; @@ -129,7 +132,6 @@ public class QProfileServiceMediumTest { } @Test - @Ignore public void search_qprofile_activity() throws InterruptedException { tester.get(ActivityService.class).write(dbSession, Activity.Type.QPROFILE, ActiveRuleChange.createFor(ActiveRuleChange.Type.ACTIVATED, ActiveRuleKey.of(XOO_P1_KEY, RuleTesting.XOO_X1)) @@ -142,7 +144,14 @@ public class QProfileServiceMediumTest { assertThat(activities).hasSize(1); QProfileActivity activity = activities.get(0); + assertThat(activity.type()).isEqualTo(Activity.Type.QPROFILE); + assertThat(activity.action()).isEqualTo(ActiveRuleChange.Type.ACTIVATED.name()); assertThat(activity.ruleKey()).isEqualTo(RuleTesting.XOO_X1); - assertThat(activity.ruleName()).isEqualTo("Rule name"); + assertThat(activity.profileKey()).isEqualTo(XOO_P1_KEY); + assertThat(activity.parameters().get("max")).isEqualTo("10"); + assertThat(activity.severity()).isEqualTo(Severity.MAJOR); + //TODO Implement folding Name and Author from from service +// assertThat(activity.ruleName()).isEqualTo("Rule name"); +// assertThat(activity.authorName()).isEqualTo("me"); } } -- 2.39.5