Skip to content

Commit dfc9829

Browse files
authored
CONDEC-1028: Use commit time as comment creation time when transcribing a commit into a Jira issue comment (#698)
* Mock comment creation with date * Add documentation origin when serializing knowledge elements into JSON objects and to knowledge export
1 parent 9660326 commit dfc9829

File tree

6 files changed

+45
-26
lines changed

6 files changed

+45
-26
lines changed

src/main/java/de/uhd/ifi/se/decision/management/jira/git/CommitMessageToCommentTranscriber.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.atlassian.jira.exception.PermissionException;
1414
import com.atlassian.jira.issue.Issue;
1515
import com.atlassian.jira.issue.comments.Comment;
16+
import com.atlassian.jira.issue.comments.CommentManager;
1617
import com.atlassian.jira.user.ApplicationUser;
1718
import com.atlassian.jira.user.UserDetails;
1819

@@ -102,19 +103,20 @@ private List<Comment> postCommitsIntoJiraIssueComments(DiffForSingleRef diff) {
102103
* already posted.
103104
*/
104105
private Comment postCommitIntoJiraIssueComment(RevCommit commit, Ref branch, String uri) {
106+
CommentManager commentManager = ComponentAccessor.getCommentManager();
105107
String commentText = generateCommentString(commit, branch, uri);
106108
if (commentText.isBlank()) {
107109
LOGGER.warn("Commit messages cannot be posted to Jira issue comment because comment text would be blank.");
108110
return null;
109111
}
110-
for (Comment alreadyWrittenComment : ComponentAccessor.getCommentManager().getComments(jiraIssue)) {
111-
// if the hash of a commit is present in a comment, do not post it again
112+
for (Comment alreadyWrittenComment : commentManager.getComments(jiraIssue)) {
113+
// do not post commit if the hash of a commit is present in a comment
112114
if (alreadyWrittenComment.getBody().contains(commit.getName())) {
113115
return null;
114116
}
115117
}
116118
ApplicationUser user = getUser();
117-
return ComponentAccessor.getCommentManager().create(jiraIssue, user, commentText, true);
119+
return commentManager.create(jiraIssue, user, commentText, null, null, commit.getAuthorIdent().getWhen(), true);
118120
}
119121

120122
/**

src/main/java/de/uhd/ifi/se/decision/management/jira/model/KnowledgeElement.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,14 +379,24 @@ public void setDocumentationLocation(String documentationLocation) {
379379
}
380380

381381
/**
382-
* @return {@link Origin} that indicates the source of a knowledge element. The
383-
* origin might be different from the current
382+
* @return documentation {@link Origin} that indicates the source of a knowledge
383+
* element. The origin might be different from the current
384384
* {@link DocumentationLocation}.
385385
*/
386386
public Origin getOrigin() {
387387
return origin;
388388
}
389389

390+
/**
391+
* @return documentation {@link Origin} that indicates the source of a knowledge
392+
* element as a String. The origin might be different from the current
393+
* {@link DocumentationLocation}.
394+
*/
395+
@XmlElement(name = "origin")
396+
public String getOriginAsString() {
397+
return origin == Origin.DOCUMENTATION_LOCATION ? documentationLocation.name() : origin.name();
398+
}
399+
390400
/**
391401
* @return an URL of the knowledge element as String.
392402
*/

src/main/java/de/uhd/ifi/se/decision/management/jira/model/Origin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,4 @@ public static Origin determineOrigin(String commentBody) {
4040
}
4141
return DOCUMENTATION_LOCATION;
4242
}
43-
44-
}
43+
}

src/main/resources/js/condec.export.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,26 +70,27 @@
7070
var table = "<table><tr>";
7171
table += "<th>Type</th><th>Summary</th><th>Description</th><th>Decision Groups</th><th>Status</th>";
7272
table += "<th>Creator</th><th>Creation Date</th><th>Latest Author</th><th>Latest Update</th>";
73-
table += "<th>Key</th></tr>";
74-
for (element of elements) {
73+
table += "<th>Documentation Origin</th><th>Key</th></tr>";
74+
for (const element of elements) {
7575
table += "<tr color='#FF0000'>";
76-
table += "<td>" + element["type"] + "</td>";
77-
table += "<td>" + element["summary"] + "</td>";
78-
table += "<td>" + element["description"] + "</td>";
79-
table += "<td>" + element["groups"] + "</td>";
76+
table += `<td> ${element["type"]} </td>`;
77+
table += `<td> ${element["summary"]} </td>`;
78+
table += `<td> ${element["description"]} </td>`;
79+
table += `<td> ${element["groups"]} </td>`;
8080
var status = element["status"] !== "undefined" ? element["status"] : "";
81-
table += "<td>" + status + "</td>";
82-
table += "<td>" + element["creator"] + "</td>";
81+
table += `<td> ${status} </td>`;
82+
table += `<td> ${element["creator"]} </td>`;
8383
table += "<td>" + new Date(element["creationDate"]) + "</td>";
84-
table += "<td>" + element["latestAuthor"] + "</td>";
84+
table += `<td> ${element["latestAuthor"]} </td>`;
8585
table += "<td>" + new Date(element["latestUpdatingDate"]) + "</td>";
86-
table += "<td><a href='" + element["url"] + "'>" + element["key"] + "</a></td>";
86+
table += `<td> ${element["origin"]} </td>`;
87+
table += `<td><a href='${element["url"]}'> ${element["key"]} </a></td>`;
8788
table += "</tr>";
8889
}
8990
table += "</table>";
9091

9192
var styleString = "table{font-family:arial,sans-serif;border-collapse:collapse;width:100%}td,th{border:1px solid #ddd;text-align:left;padding:8px}tr:nth-child(even){background-color:#ddd}";
92-
var htmlString = $("<html>").html("<head><style>" + styleString + "</style></head><body>" + table + "</body>")
93+
var htmlString = $("<html>").html(`<head><style> ${styleString} </style></head><body> ${table} </body>`)
9394
.html();
9495
return htmlString;
9596
}

src/test/java/de/uhd/ifi/se/decision/management/jira/mocks/MockCommentManager.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,8 @@ public List<Comment> getComments(Issue issue) {
6666
}
6767

6868
@Override
69-
public Comment create(Issue issue, ApplicationUser applicationUser, String string, boolean dispatchEvent) {
70-
Comment comment = new MockComment((long) 1337, applicationUser.getName(), string, null, null, new Date(),
71-
issue);
72-
comments.add(comment);
73-
return comment;
69+
public Comment create(Issue issue, ApplicationUser applicationUser, String commentBody, boolean dispatchEvent) {
70+
return create(issue, applicationUser, commentBody, null, null, new Date(), dispatchEvent);
7471
}
7572

7673
@Override
@@ -89,9 +86,12 @@ public Comment create(Issue issue, String s, String s1, String s2, Long aLong, b
8986
}
9087

9188
@Override
92-
public Comment create(Issue issue, ApplicationUser applicationUser, String s, String s1, Long aLong, Date date,
93-
boolean b) {
94-
return null;
89+
public Comment create(Issue issue, ApplicationUser applicationUser, String commentBody, String groupLevel,
90+
Long roleLevelId, Date date, boolean dispatchEvent) {
91+
Comment comment = new MockComment((long) 1337, applicationUser.getName(), commentBody, groupLevel, roleLevelId,
92+
date, issue);
93+
comments.add(comment);
94+
return comment;
9595
}
9696

9797
@Override

src/test/java/de/uhd/ifi/se/decision/management/jira/model/knowledgeelement/TestKnowledgeElementStrings.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.junit.Test;
1111

1212
import de.uhd.ifi.se.decision.management.jira.TestSetUp;
13+
import de.uhd.ifi.se.decision.management.jira.git.model.DecisionKnowledgeElementInCommitMessage;
1314
import de.uhd.ifi.se.decision.management.jira.model.DocumentationLocation;
1415
import de.uhd.ifi.se.decision.management.jira.model.KnowledgeElement;
1516
import de.uhd.ifi.se.decision.management.jira.model.KnowledgeStatus;
@@ -141,6 +142,12 @@ public void testGetOrigin() {
141142
assertEquals(Origin.DOCUMENTATION_LOCATION, element.getOrigin());
142143
}
143144

145+
@Test
146+
public void testGetOriginAsString() {
147+
assertEquals("JIRAISSUE", element.getOriginAsString());
148+
assertEquals("COMMIT", new DecisionKnowledgeElementInCommitMessage().getOriginAsString());
149+
}
150+
144151
@Test
145152
public void isLinked() {
146153
assertEquals(0, element.isLinked());

0 commit comments

Comments
 (0)