]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5658 Add a new field to index severities ordinal
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 2 Oct 2014 09:30:27 +0000 (11:30 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 2 Oct 2014 13:29:28 +0000 (15:29 +0200)
Conflicts:
server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java

server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java
server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java

index 33e60a8998111de891d05cb665615fd60cf63311..9e5abe2a994cf222141e004c43003ea01990d3f0 100644 (file)
@@ -294,6 +294,8 @@ public class IssueIndex extends BaseIndex<Issue, IssueDto, String> {
   private IndexField toIndexField(String sort) {
     if (IssueQuery.SORT_BY_ASSIGNEE.equals(sort)) {
       return IssueNormalizer.IssueField.ASSIGNEE;
+    } else if (IssueQuery.SORT_BY_SEVERITY.equals(sort)) {
+      return IssueNormalizer.IssueField.SEVERITY_VALUE;
     } else if (IssueQuery.SORT_BY_CREATION_DATE.equals(sort)) {
       return IssueNormalizer.IssueField.ISSUE_CREATED_AT;
     } else if (IssueQuery.SORT_BY_UPDATE_DATE.equals(sort)) {
index cba659090b48189a3e303e15372d9f37496e8b0a..531b8503264a6901d217dbf592d2ff8f1b6181e2 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.server.issue.index;
 
 import com.google.common.collect.ImmutableList;
 import org.elasticsearch.action.update.UpdateRequest;
+import org.sonar.api.rule.Severity;
 import org.sonar.core.issue.db.IssueDto;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.search.BaseNormalizer;
@@ -65,6 +66,7 @@ public class IssueNormalizer extends BaseNormalizer<IssueDto, String> {
     public static final IndexField REPORTER = add(IndexField.Type.STRING, "reporter");
     public static final IndexField STATUS = addSortable(IndexField.Type.STRING, "status");
     public static final IndexField SEVERITY = add(IndexField.Type.STRING, "severity");
+    public static final IndexField SEVERITY_VALUE = addSortable(IndexField.Type.NUMERIC, "severityValue");
     public static final IndexField LANGUAGE = add(IndexField.Type.STRING, "language");
     public static final IndexField RULE_KEY = add(IndexField.Type.STRING, "ruleKey");
 
@@ -119,6 +121,7 @@ public class IssueNormalizer extends BaseNormalizer<IssueDto, String> {
     update.put(IssueField.REPORTER.field(), dto.getReporter());
     update.put(IssueField.STATUS.field(), dto.getStatus());
     update.put(IssueField.SEVERITY.field(), dto.getSeverity());
+    update.put(IssueField.SEVERITY_VALUE.field(), Severity.ALL.indexOf(dto.getSeverity()));
     update.put(IssueField.DEBT.field(), dto.getDebt());
     update.put(IssueField.LANGUAGE.field(), dto.getLanguage());
     update.put(IssueField.RULE_KEY.field(), dto.getRuleKey().toString());
index 823f7ae17f8dd90ba3d7386052620565e2f486ea..95b88a59bdfeae44b9aa465ecfd56f06b9bf7063 100644 (file)
@@ -407,11 +407,39 @@ public class IssueIndexMediumTest {
     assertThat(result.getHits()).hasSize(500);
   }
 
+  @Test
+  public void sort_by_severity() throws Exception {
+    db.issueDao().insert(session,
+      IssueTesting.newDto(rule, file, project).setSeverity(Severity.BLOCKER),
+      IssueTesting.newDto(rule, file, project).setSeverity(Severity.INFO),
+      IssueTesting.newDto(rule, file, project).setSeverity(Severity.MINOR),
+      IssueTesting.newDto(rule, file, project).setSeverity(Severity.CRITICAL),
+      IssueTesting.newDto(rule, file, project).setSeverity(Severity.MAJOR)
+    );
+    session.commit();
+
+    IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_SEVERITY).asc(true);
+    Result<Issue> result = index.search(query.build(), new QueryContext());
+    assertThat(result.getHits().get(0).severity()).isEqualTo(Severity.INFO);
+    assertThat(result.getHits().get(1).severity()).isEqualTo(Severity.MINOR);
+    assertThat(result.getHits().get(2).severity()).isEqualTo(Severity.MAJOR);
+    assertThat(result.getHits().get(3).severity()).isEqualTo(Severity.CRITICAL);
+    assertThat(result.getHits().get(4).severity()).isEqualTo(Severity.BLOCKER);
+
+    query = IssueQuery.builder().sort(IssueQuery.SORT_BY_SEVERITY).asc(false);
+    result = index.search(query.build(), new QueryContext());
+    assertThat(result.getHits().get(0).severity()).isEqualTo(Severity.BLOCKER);
+    assertThat(result.getHits().get(1).severity()).isEqualTo(Severity.CRITICAL);
+    assertThat(result.getHits().get(2).severity()).isEqualTo(Severity.MAJOR);
+    assertThat(result.getHits().get(3).severity()).isEqualTo(Severity.MINOR);
+    assertThat(result.getHits().get(4).severity()).isEqualTo(Severity.INFO);
+  }
+
   @Test
   public void sort_by_assignee() throws Exception {
-    IssueDto issue1 = IssueTesting.newDto(rule, file, project).setAssignee("steph");
-    IssueDto issue2 = IssueTesting.newDto(rule, file, project).setAssignee("simon");
-    db.issueDao().insert(session, issue1, issue2);
+    db.issueDao().insert(session,
+      IssueTesting.newDto(rule, file, project).setAssignee("steph"),
+      IssueTesting.newDto(rule, file, project).setAssignee("simon"));
     session.commit();
 
     IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_ASSIGNEE).asc(true);
@@ -429,9 +457,9 @@ public class IssueIndexMediumTest {
 
   @Test
   public void sort_by_creation_date() throws Exception {
-    IssueDto issue1 = IssueTesting.newDto(rule, file, project).setIssueCreationDate(DateUtils.parseDate("2014-09-23"));
-    IssueDto issue2 = IssueTesting.newDto(rule, file, project).setIssueCreationDate(DateUtils.parseDate("2014-09-24"));
-    db.issueDao().insert(session, issue1, issue2);
+    db.issueDao().insert(session,
+      IssueTesting.newDto(rule, file, project).setIssueCreationDate(DateUtils.parseDate("2014-09-23")),
+      IssueTesting.newDto(rule, file, project).setIssueCreationDate(DateUtils.parseDate("2014-09-24")));
     session.commit();
 
     IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_CREATION_DATE).asc(true);
@@ -449,9 +477,9 @@ public class IssueIndexMediumTest {
 
   @Test
   public void sort_by_update_date() throws Exception {
-    IssueDto issue1 = IssueTesting.newDto(rule, file, project).setIssueUpdateDate(DateUtils.parseDate("2014-09-23"));
-    IssueDto issue2 = IssueTesting.newDto(rule, file, project).setIssueUpdateDate(DateUtils.parseDate("2014-09-24"));
-    db.issueDao().insert(session, issue1, issue2);
+    db.issueDao().insert(session,
+      IssueTesting.newDto(rule, file, project).setIssueUpdateDate(DateUtils.parseDate("2014-09-23")),
+      IssueTesting.newDto(rule, file, project).setIssueUpdateDate(DateUtils.parseDate("2014-09-24")));
     session.commit();
 
     IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_UPDATE_DATE).asc(true);
@@ -469,10 +497,10 @@ public class IssueIndexMediumTest {
 
   @Test
   public void sort_by_close_date() throws Exception {
-    IssueDto issue1 = IssueTesting.newDto(rule, file, project).setIssueCloseDate(DateUtils.parseDate("2014-09-23"));
-    IssueDto issue2 = IssueTesting.newDto(rule, file, project).setIssueCloseDate(DateUtils.parseDate("2014-09-24"));
-    IssueDto issue3 = IssueTesting.newDto(rule, file, project).setIssueCloseDate(null);
-    db.issueDao().insert(session, issue1, issue2, issue3);
+    db.issueDao().insert(session,
+      IssueTesting.newDto(rule, file, project).setIssueCloseDate(DateUtils.parseDate("2014-09-23")),
+      IssueTesting.newDto(rule, file, project).setIssueCloseDate(DateUtils.parseDate("2014-09-24")),
+      IssueTesting.newDto(rule, file, project).setIssueCloseDate(null));
     session.commit();
 
     IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_CLOSE_DATE).asc(true);