diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-09-24 18:31:41 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-09-25 15:07:41 +0200 |
commit | 4f66d4501b0d907958f941fb5c65705f94fd7233 (patch) | |
tree | e4ea3ba47b0b165211083a236a5b52f40745589b | |
parent | f508ef05e43fef5189a86182a080b7a3d59155b7 (diff) | |
download | sonarqube-4f66d4501b0d907958f941fb5c65705f94fd7233.tar.gz sonarqube-4f66d4501b0d907958f941fb5c65705f94fd7233.zip |
SONAR-5531 Add sorts by dates
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java | 10 | ||||
-rw-r--r-- | server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java | 62 |
2 files changed, 70 insertions, 2 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 86ff17b4bdb..b71ceea1a58 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 @@ -172,7 +172,7 @@ public class IssueIndex extends BaseIndex<Issue, IssueDto, String> { FilterBuilders.boolFilter() .must(FilterBuilders.termFilter(IssueAuthorizationNormalizer.IssueAuthorizationField.PERMISSION.field(), UserRole.USER), groupsAndUser) .cache(true)) - )); + )); // Issue is assigned Filter if (BooleanUtils.isTrue(query.assigned())) { @@ -256,9 +256,15 @@ public class IssueIndex extends BaseIndex<Issue, IssueDto, String> { } } - private IndexField toIndexField(String sort){ + private IndexField toIndexField(String sort) { if (IssueQuery.SORT_BY_ASSIGNEE.equals(sort)) { return IssueNormalizer.IssueField.ASSIGNEE; + } else if (IssueQuery.SORT_BY_CREATION_DATE.equals(sort)) { + return IssueNormalizer.IssueField.ISSUE_CREATED_AT; + } else if (IssueQuery.SORT_BY_UPDATE_DATE.equals(sort)) { + return IssueNormalizer.IssueField.ISSUE_UPDATED_AT; + } else if (IssueQuery.SORT_BY_CLOSE_DATE.equals(sort)) { + return IssueNormalizer.IssueField.ISSUE_CLOSE_DATE; } throw new IllegalStateException("Unknown sort field : " + sort); } 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 a0229bee413..8555facf6bc 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 @@ -331,6 +331,68 @@ public class IssueIndexMediumTest { } @Test + public void sort_by_creation_date() throws Exception { + IssueDto issue1 = createIssue().setIssueCreationDate(DateUtils.parseDate("2014-09-23")); + IssueDto issue2 = createIssue().setIssueCreationDate(DateUtils.parseDate("2014-09-24")); + db.issueDao().insert(session, issue1, issue2); + session.commit(); + + IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_CREATION_DATE).asc(true); + Result<Issue> result = index.search(query.build(), new QueryContext()); + assertThat(result.getHits()).hasSize(2); + assertThat(result.getHits().get(0).creationDate()).isEqualTo(DateUtils.parseDate("2014-09-23")); + assertThat(result.getHits().get(1).creationDate()).isEqualTo(DateUtils.parseDate("2014-09-24")); + + query = IssueQuery.builder().sort(IssueQuery.SORT_BY_CREATION_DATE).asc(false); + result = index.search(query.build(), new QueryContext()); + assertThat(result.getHits()).hasSize(2); + assertThat(result.getHits().get(0).creationDate()).isEqualTo(DateUtils.parseDate("2014-09-24")); + assertThat(result.getHits().get(1).creationDate()).isEqualTo(DateUtils.parseDate("2014-09-23")); + } + + @Test + public void sort_by_update_date() throws Exception { + IssueDto issue1 = createIssue().setIssueUpdateDate(DateUtils.parseDate("2014-09-23")); + IssueDto issue2 = createIssue().setIssueUpdateDate(DateUtils.parseDate("2014-09-24")); + db.issueDao().insert(session, issue1, issue2); + session.commit(); + + IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_UPDATE_DATE).asc(true); + Result<Issue> result = index.search(query.build(), new QueryContext()); + assertThat(result.getHits()).hasSize(2); + assertThat(result.getHits().get(0).updateDate()).isEqualTo(DateUtils.parseDate("2014-09-23")); + assertThat(result.getHits().get(1).updateDate()).isEqualTo(DateUtils.parseDate("2014-09-24")); + + query = IssueQuery.builder().sort(IssueQuery.SORT_BY_UPDATE_DATE).asc(false); + result = index.search(query.build(), new QueryContext()); + assertThat(result.getHits()).hasSize(2); + assertThat(result.getHits().get(0).updateDate()).isEqualTo(DateUtils.parseDate("2014-09-24")); + assertThat(result.getHits().get(1).updateDate()).isEqualTo(DateUtils.parseDate("2014-09-23")); + } + + @Test + public void sort_by_close_date() throws Exception { + IssueDto issue1 = createIssue().setIssueCloseDate(DateUtils.parseDate("2014-09-23")); + IssueDto issue2 = createIssue().setIssueCloseDate(DateUtils.parseDate("2014-09-24")); + IssueDto issue3 = createIssue().setIssueCloseDate(null); + db.issueDao().insert(session, issue1, issue2, issue3); + session.commit(); + + IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_CLOSE_DATE).asc(true); + Result<Issue> result = index.search(query.build(), new QueryContext()); + assertThat(result.getHits()).hasSize(3); + assertThat(result.getHits().get(0).closeDate()).isEqualTo(DateUtils.parseDate("2014-09-23")); + assertThat(result.getHits().get(1).closeDate()).isEqualTo(DateUtils.parseDate("2014-09-24")); + assertThat(result.getHits().get(2).closeDate()).isNull(); + + query = IssueQuery.builder().sort(IssueQuery.SORT_BY_CLOSE_DATE).asc(false); + result = index.search(query.build(), new QueryContext()); + assertThat(result.getHits()).hasSize(3); + assertThat(result.getHits().get(0).closeDate()).isEqualTo(DateUtils.parseDate("2014-09-24")); + assertThat(result.getHits().get(1).closeDate()).isEqualTo(DateUtils.parseDate("2014-09-23")); + assertThat(result.getHits().get(2).closeDate()).isNull(); + } + @Test public void authorized_issues_on_groups() throws Exception { ComponentDto project1 = new ComponentDto() .setId(10L) |