aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-09-24 18:31:41 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-09-25 15:07:41 +0200
commit4f66d4501b0d907958f941fb5c65705f94fd7233 (patch)
treee4ea3ba47b0b165211083a236a5b52f40745589b
parentf508ef05e43fef5189a86182a080b7a3d59155b7 (diff)
downloadsonarqube-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.java10
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java62
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)