aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-10-02 11:30:27 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-10-02 15:29:28 +0200
commitd1d86087723954a671e9e8bfa8aa2d98e0f9c9f8 (patch)
tree924108c33d4ec0ed4642a495e67cbee84a67a7a1 /server
parent5725b5108f1c1a507e3134080fa6ba2a31ec069d (diff)
downloadsonarqube-d1d86087723954a671e9e8bfa8aa2d98e0f9c9f8.tar.gz
sonarqube-d1d86087723954a671e9e8bfa8aa2d98e0f9c9f8.zip
SONAR-5658 Add a new field to index severities ordinal
Conflicts: server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java2
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java3
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java54
3 files changed, 46 insertions, 13 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java
index 33e60a89981..9e5abe2a994 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java
@@ -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)) {
diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java
index cba659090b4..531b8503264 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java
@@ -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());
diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java
index 823f7ae17f8..95b88a59bdf 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java
@@ -408,10 +408,38 @@ public class IssueIndexMediumTest {
}
@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);