diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-10-02 11:30:27 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-10-02 15:29:28 +0200 |
commit | d1d86087723954a671e9e8bfa8aa2d98e0f9c9f8 (patch) | |
tree | 924108c33d4ec0ed4642a495e67cbee84a67a7a1 /server | |
parent | 5725b5108f1c1a507e3134080fa6ba2a31ec069d (diff) | |
download | sonarqube-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')
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); |