From: Teryk Bellahsene Date: Mon, 12 Sep 2016 15:47:51 +0000 (+0200) Subject: SONAR-8028 WS issues/search from and to inclusive for date and date+time X-Git-Tag: 6.1-RC1~109 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3a565770afd3c74140d74b4f66e0ecfe4d3c14ba;p=sonarqube.git SONAR-8028 WS issues/search from and to inclusive for date and date+time --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/IssueQueryService.java b/server/sonar-server/src/main/java/org/sonar/server/issue/IssueQueryService.java index 4ffc976929a..08d0f6db3e2 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/IssueQueryService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/IssueQueryService.java @@ -122,7 +122,7 @@ public class IssueQueryService { .hideRules(RubyUtils.toBoolean(params.get(IssueFilterParameters.HIDE_RULES))) .createdAt(RubyUtils.toDate(params.get(IssueFilterParameters.CREATED_AT))) .createdAfter(buildCreatedAfterFromDates(RubyUtils.toDate(params.get(CREATED_AFTER)), (String) params.get(CREATED_IN_LAST))) - .createdBefore(RubyUtils.toDate(params.get(IssueFilterParameters.CREATED_BEFORE))); + .createdBefore(RubyUtils.toDate(buildCreatedBefore((String) params.get(IssueFilterParameters.CREATED_BEFORE)))); Set allComponentUuids = Sets.newHashSet(); boolean effectiveOnComponentOnly = mergeDeprecatedComponentParameters(session, @@ -165,6 +165,7 @@ public class IssueQueryService { } } + @CheckForNull private Date buildCreatedAfterFromDates(@Nullable Date createdAfter, @Nullable String createdInLast) { checkArgument(createdAfter == null || createdInLast == null, format("%s and %s cannot be set simultaneously", CREATED_AFTER, CREATED_IN_LAST)); @@ -192,7 +193,7 @@ public class IssueQueryService { .types(request.getTypes()) .assigned(request.getAssigned()) .createdAt(parseAsDateTime(request.getCreatedAt())) - .createdBefore(parseAsDateTime(request.getCreatedBefore())) + .createdBefore(buildCreatedBefore(request.getCreatedBefore())) .facetMode(request.getFacetMode()); Set allComponentUuids = Sets.newHashSet(); @@ -246,6 +247,18 @@ public class IssueQueryService { return buildCreatedAfterFromDates(createdAfterFromSnapshot, createdInLast); } + @CheckForNull + private static Date buildCreatedBefore(String stringDate) { + Date date = DateUtils.parseDateTimeQuietly(stringDate); + if (date != null) { + return date; + } + + date = DateUtils.parseDateQuietly(stringDate); + + return date == null ? null : DateUtils.addDays(date, 1); + } + @CheckForNull private Date findCreatedAfterFromComponentUuid(DbSession dbSession, String uuid) { ComponentDto component = checkFoundWithOptional(componentService.getByUuid(uuid), "Component with id '%s' not found", uuid); diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueQueryServiceTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueQueryServiceTest.java index becabf75163..d80e0a407c9 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueQueryServiceTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueQueryServiceTest.java @@ -160,6 +160,18 @@ public class IssueQueryServiceTest { assertThat(query.asc()).isTrue(); } + @Test + public void dates_are_inclusive() { + SearchWsRequest request = new SearchWsRequest() + .setCreatedAfter("2013-04-16") + .setCreatedBefore("2013-04-17"); + + IssueQuery query = underTest.createFromRequest(request); + + assertThat(query.createdAfter()).isEqualTo(DateUtils.parseDate("2013-04-16")); + assertThat(query.createdBefore()).isEqualTo(DateUtils.parseDate("2013-04-18")); + } + @Test public void add_unknown_when_no_component_found() { Map map = newHashMap();