String dateString = notification.getFieldValue("projectDate");
if (projectKey != null && dateString != null) {
Date date = DateUtils.parseDateTime(dateString);
- String url = String.format("%s/issues/search?componentRoots=%s&createdAfter=%s",
+ String url = String.format("%s/issues/search?componentRoots=%s&createdAtOrAfter=%s",
settings.getServerBaseURL(), encode(projectKey), encode(DateUtils.formatDateTime(date)));
sb.append("\n").append("See it in SonarQube: ").append(url).append("\n");
}
"Project: Struts\n" +
"32 new issues\n" +
"\n" +
- "See it in SonarQube: http://nemo.sonarsource.org/issues/search?componentRoots=org.apache%3Astruts&createdAfter=2010-05-18T16%3A50%3A45%2B0200\n");
+ "See it in SonarQube: http://nemo.sonarsource.org/issues/search?componentRoots=org.apache%3Astruts&createdAtOrAfter=2010-05-18T16%3A50%3A45%2B0200\n");
}
@Test
<if test="query.createdAfter() != null">
and i.issue_creation_date > #{query.createdAfter}
</if>
+ <if test="query.createdAtOrAfter() != null">
+ and i.issue_creation_date >= #{query.createdAtOrAfter}
+ </if>
<if test="query.createdBefore() != null">
and i.issue_creation_date < #{query.createdBefore}
</if>
public void should_select_by_date_creation() {
setupData("shared", "should_select_by_date_creation");
- IssueQuery query = IssueQuery.builder().createdAfter(DateUtils.parseDate("2013-04-15")).requiredRole("user").build();
+ IssueQuery query = IssueQuery.builder().createdAfter(DateUtils.parseDate("2013-04-15")).build();
assertThat(dao.selectIssueIds(query)).hasSize(1);
+ assertThat(dao.selectIssueIds(query).get(0).getId()).isEqualTo(100L);
+
+ query = IssueQuery.builder().createdAtOrAfter(DateUtils.parseDate("2013-04-15")).build();
+ assertThat(dao.selectIssueIds(query)).hasSize(1);
+ assertThat(dao.selectIssueIds(query).get(0).getId()).isEqualTo(100L);
query = IssueQuery.builder().createdBefore(DateUtils.parseDate("2013-04-17")).requiredRole("user").build();
assertThat(dao.selectIssueIds(query)).hasSize(2);
assignee="perceval"
author_login="[null]"
issue_attributes="JIRA=FOO-1234"
- issue_creation_date="2013-04-16"
+ issue_creation_date="2013-04-16 15:50:45"
issue_update_date="2013-04-16"
issue_close_date="2013-04-16"
created_at="2013-04-16"
private final Boolean assigned;
private final Boolean planned;
private final Boolean resolved;
+ private final Date createdAtOrAfter;
private final Date createdAfter;
private final Date createdBefore;
private final String sort;
this.assigned = builder.assigned;
this.planned = builder.planned;
this.resolved = builder.resolved;
+ this.createdAtOrAfter = builder.createdAtOrAfter;
this.createdAfter = builder.createdAfter;
this.createdBefore = builder.createdBefore;
this.sort = builder.sort;
return (createdAfter == null ? null : new Date(createdAfter.getTime()));
}
+ @CheckForNull
+ public Date createdAtOrAfter() {
+ return (createdAtOrAfter == null ? null : new Date(createdAtOrAfter.getTime()));
+ }
+
@CheckForNull
public Date createdBefore() {
return (createdBefore == null ? null : new Date(createdBefore.getTime()));
private Boolean assigned = null;
private Boolean planned = null;
private Boolean resolved = null;
+ private Date createdAtOrAfter;
private Date createdAfter;
private Date createdBefore;
private String sort;
return this;
}
+ public Builder createdAtOrAfter(@Nullable Date d) {
+ this.createdAtOrAfter = (d == null ? null : new Date(d.getTime()));
+ return this;
+ }
+
public Builder createdAfter(@Nullable Date d) {
this.createdAfter = (d == null ? null : new Date(d.getTime()));
return this;
* <li>'reporters': list of reporter logins. Note that reporters are defined only on "manual" issues.</li>
* <li>'assignees': list of assignee logins.</li>
* <li>'assigned': true to get only assigned issues, false to get only unassigned issues. By default no filtering is done.</li>
- * <li>'createdAfter': match all the issues created after the given date (inclusive).
+ * <li>'createdAfter': match all the issues created after the given date (strictly).
+ * Both date and datetime ISO formats are supported: 2013-05-18 or 2010-05-18T15:50:45+0100</li>
+ * <li>'createdAtOrAfter': match all the issues created after the given date (inclusive).
* Both date and datetime ISO formats are supported: 2013-05-18 or 2010-05-18T15:50:45+0100</li>
* <li>'createdBefore': match all the issues created before the given date (exclusive).
* Both date and datetime ISO formats are supported: 2013-05-18 or 2010-05-18T15:50:45+0100</li>
public static final String ASSIGNED = "assigned";
public static final String PLANNED = "planned";
public static final String CREATED_AFTER = "createdAfter";
+ public static final String CREATED_AT_OR_AFTER = "createdAtOrAfter";
public static final String CREATED_BEFORE = "createdBefore";
public static final String PAGE_SIZE = "pageSize";
public static final String PAGE_INDEX = "pageIndex";
.assignees(RubyUtils.toStrings(props.get(IssueFilterParameters.ASSIGNEES)))
.assigned(RubyUtils.toBoolean(props.get(IssueFilterParameters.ASSIGNED)))
.planned(RubyUtils.toBoolean(props.get(IssueFilterParameters.PLANNED)))
+ .createdAtOrAfter(RubyUtils.toDate(props.get(IssueFilterParameters.CREATED_AT_OR_AFTER)))
.createdAfter(RubyUtils.toDate(props.get(IssueFilterParameters.CREATED_AFTER)))
.createdBefore(RubyUtils.toDate(props.get(IssueFilterParameters.CREATED_BEFORE)))
.pageSize(RubyUtils.toInteger(props.get(IssueFilterParameters.PAGE_SIZE)))