Skip to content

Commit 312b495

Browse files
committed
Add dates to the comments/description
1 parent c1d16d4 commit 312b495

File tree

6 files changed

+43
-4
lines changed

6 files changed

+43
-4
lines changed

src/main/java/org/hibernate/infra/replicate/jira/JiraConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,12 @@ interface Formatting {
110110
*/
111111
@WithDefault("upstream-%s")
112112
String labelTemplate();
113+
114+
/**
115+
* Specify how {@link java.time.ZonedDateTime} is formatted to string.
116+
*/
117+
@WithDefault("EEEE, MMMM dd, yyyy 'at' HH:mm:ss z(Z)")
118+
String timestampFormat();
113119
}
114120

115121
interface EventProcessing {

src/main/java/org/hibernate/infra/replicate/jira/service/jira/HandlerProjectContext.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.hibernate.infra.replicate.jira.service.jira;
22

3+
import java.time.ZonedDateTime;
4+
import java.time.format.DateTimeFormatter;
35
import java.util.Map;
46
import java.util.Optional;
57
import java.util.concurrent.atomic.AtomicLong;
@@ -39,6 +41,7 @@ public final class HandlerProjectContext implements AutoCloseable {
3941

4042
private final Map<String, HandlerProjectContext> allProjectsContextMap;
4143
private final Pattern sourceLabelPattern;
44+
private final DateTimeFormatter formatter;
4245

4346
public HandlerProjectContext(String projectName, String projectGroupName, JiraRestClient sourceJiraClient,
4447
JiraRestClient destinationJiraClient, HandlerProjectGroupContext projectGroupContext,
@@ -59,6 +62,7 @@ public HandlerProjectContext(String projectName, String projectGroupName, JiraRe
5962
this.allProjectsContextMap = allProjectsContextMap;
6063
this.sourceLabelPattern = Pattern
6164
.compile(projectGroupContext.projectGroup().formatting().labelTemplate().formatted(".+"));
65+
this.formatter = DateTimeFormatter.ofPattern(projectGroupContext.projectGroup().formatting().timestampFormat());
6266
}
6367

6468
public JiraConfig.JiraProject project() {
@@ -225,4 +229,8 @@ public Optional<HandlerProjectContext> contextForProjectInSameGroup(String proje
225229
public boolean isSourceLabel(String label) {
226230
return sourceLabelPattern.matcher(label).matches();
227231
}
232+
233+
public String formatTimestamp(ZonedDateTime time) {
234+
return time != null ? time.format(formatter) : "";
235+
}
228236
}

src/main/java/org/hibernate/infra/replicate/jira/service/jira/handler/JiraCommentUpsertEventHandler.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,19 @@ private JiraComment prepareComment(JiraIssue issue, JiraComment source) {
5757
private String prepareCommentQuote(JiraIssue issue, JiraComment comment) {
5858
URI jiraCommentUri = createJiraCommentUri(issue, comment);
5959
UserData userData = userData(comment.self, comment.author, "the user %s");
60+
UserData editUserData = userData(comment.self, comment.updateAuthor, "the user %s");
6061
String content = """
61-
{quote}This [comment|%s] was posted by [%s|%s].{quote}
62+
{quote}This [comment|%s] was posted by [%s|%s] on %s.%s{quote}
6263
6364
64-
""".formatted(jiraCommentUri, userData.name(), userData.uri());
65+
""".formatted(jiraCommentUri, userData.name(), userData.uri(), context.formatTimestamp(comment.created),
66+
comment.isUpdatedSameAsCreated()
67+
? ""
68+
: """
69+
70+
[%s|%s] edited the comment on %s.
71+
""".formatted(editUserData.name(), editUserData.uri(),
72+
context.formatTimestamp(comment.updated)));
6573
return truncateContent(content);
6674
}
6775

src/main/java/org/hibernate/infra/replicate/jira/service/jira/handler/JiraIssueAbstractEventHandler.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,13 +244,19 @@ private String prepareDescriptionQuote(JiraIssue issue) {
244244
245245
Reported by: %s.
246246
247-
Upstream status: %s.{quote}
247+
Upstream status: %s.
248+
249+
Created: %s.
250+
251+
Last updated: %s.{quote}
248252
249253
250254
""".formatted(issue.key, issueUri,
251255
assignee == null ? " Unassigned" : "[%s|%s]".formatted(assignee.name(), assignee.uri()),
252256
reporter == null ? " Unknown" : "[%s|%s]".formatted(reporter.name(), reporter.uri()),
253-
issue.fields.status != null ? issue.fields.status.name : "Unknown");
257+
issue.fields.status != null ? issue.fields.status.name : "Unknown",
258+
context.formatTimestamp(issue.fields.created),
259+
context.formatTimestamp(issue.fields.updated != null ? issue.fields.updated : issue.fields.created));
254260
}
255261

256262
}

src/main/java/org/hibernate/infra/replicate/jira/service/jira/model/rest/JiraComment.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.hibernate.infra.replicate.jira.service.jira.model.rest;
22

33
import java.net.URI;
4+
import java.time.ZonedDateTime;
45

56
import org.hibernate.infra.replicate.jira.service.jira.model.JiraBaseObject;
67

@@ -9,12 +10,19 @@ public class JiraComment extends JiraBaseObject {
910
public String id;
1011
public URI self;
1112
public JiraUser author = new JiraUser();
13+
public JiraUser updateAuthor;
1214
public String body;
15+
public ZonedDateTime created;
16+
public ZonedDateTime updated;
1317

1418
public JiraComment() {
1519
}
1620

1721
public JiraComment(String id) {
1822
this.id = id;
1923
}
24+
25+
public boolean isUpdatedSameAsCreated() {
26+
return updated != null && updated.equals(created);
27+
}
2028
}

src/main/java/org/hibernate/infra/replicate/jira/service/jira/model/rest/JiraFields.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.hibernate.infra.replicate.jira.service.jira.model.rest;
22

3+
import java.time.ZonedDateTime;
34
import java.util.List;
45

56
import org.hibernate.infra.replicate.jira.service.jira.model.JiraBaseObject;
@@ -22,6 +23,8 @@ public class JiraFields extends JiraBaseObject {
2223
public List<JiraIssueLink> issuelinks;
2324
public JiraComments comment;
2425
public JiraIssue parent;
26+
public ZonedDateTime created;
27+
public ZonedDateTime updated;
2528

2629
@Override
2730
public String toString() {

0 commit comments

Comments
 (0)