use of de.catma.document.comment.Reply in project catma by forTEXT.
the class GitlabManagerRestricted method getCommentReplies.
@Override
public List<Reply> getCommentReplies(String projectId, Comment comment) throws IOException {
String resourceId = comment.getDocumentId();
String projectPath = projectId + "/" + resourceId;
NotesApi notesApi = restrictedGitLabApi.getNotesApi();
List<Reply> result = new ArrayList<Reply>();
try {
List<Note> notes = notesApi.getIssueNotes(projectPath, comment.getIid());
for (Note note : notes.stream().filter(n -> !n.getSystem()).collect(Collectors.toList())) {
// filter system notes
String noteBody = note.getBody();
Reply reply = null;
try {
reply = new SerializationHelper<Reply>().deserialize(noteBody, Reply.class);
reply.setCommentUuid(comment.getUuid());
reply.setId(note.getId());
reply.setUserId(note.getAuthor().getId());
reply.setUsername(note.getAuthor().getName());
} catch (Exception e) {
logger.log(Level.SEVERE, String.format("Error deserializing Reply #%1$d %2$s", note.getId(), noteBody), e);
IDGenerator idGenerator = new IDGenerator();
reply = new Reply(idGenerator.generate(), noteBody, note.getAuthor().getUsername(), note.getAuthor().getId(), comment.getUuid(), note.getId());
}
result.add(reply);
}
comment.setReplies(result);
return result;
} catch (GitLabApiException e) {
throw new IOException(String.format("Failed to retrieve Replies for Comment %1$s %2$d for resource %3$s in group %4$s!", comment.getUuid(), comment.getIid(), resourceId, projectId), e);
}
}
use of de.catma.document.comment.Reply in project catma by forTEXT.
the class TaggerView method updateReplyToComment.
public void updateReplyToComment(Optional<Comment> optionalComment, String replyUuid, int x, int y) {
if (optionalComment.isPresent()) {
Comment comment = optionalComment.get();
Reply reply = comment.getReply(replyUuid);
if (reply != null) {
CommentDialog commentDialog = new CommentDialog(reply.getBody(), true, replyBody -> {
try {
reply.setBody(replyBody);
project.updateReply(optionalComment.get(), reply);
} catch (IOException e) {
errorHandler.showAndLogError("Error updating Reply!", e);
}
});
commentDialog.show(x, y);
} else {
Notification.show("Info", "Couldn't find a Reply to edit!", Type.HUMANIZED_MESSAGE);
}
} else {
Notification.show("Info", "Couldn't find the Comment of the reply!", Type.HUMANIZED_MESSAGE);
}
}
use of de.catma.document.comment.Reply in project catma by forTEXT.
the class CommentMessageListener method uiOnMessage.
@Override
public void uiOnMessage(Message<CommentMessage> message) {
boolean autoShowcomments = (boolean) cbAutoShowComments.getData();
if (!autoShowcomments) {
return;
}
try {
CommentMessage commentMessage = message.getMessageObject();
final String documentId = commentMessage.getDocumentId();
final boolean replyMessage = commentMessage.isReplyMessage();
final int senderId = commentMessage.getSenderId();
final boolean deleted = commentMessage.isDeleted();
final SourceDocument document = documentSupplier.get();
if ((document != null) && document.getUuid().equals(documentId)) {
User user = project.getUser();
Integer receiverId = user.getUserId();
if (!receiverId.equals(senderId)) {
final Comment comment = commentMessage.toComment();
Optional<Comment> optionalExistingComment = this.comments.stream().filter(c -> c.getUuid().equals(comment.getUuid())).findFirst();
if (replyMessage) {
if (optionalExistingComment.isPresent()) {
Comment existingComment = optionalExistingComment.get();
Reply reply = commentMessage.toReply();
Reply existingReply = existingComment.getReply(reply.getUuid());
if (existingReply != null) {
if (deleted) {
existingComment.removeReply(existingReply);
tagger.removeReply(existingComment, existingReply);
} else {
existingReply.setBody(reply.getBody());
tagger.updateReply(existingComment, existingReply);
}
} else {
existingComment.addReply(reply);
tagger.addReply(existingComment, reply);
}
}
} else {
if (deleted) {
optionalExistingComment.ifPresent(existingComment -> {
this.comments.remove(existingComment);
tagger.removeComment(existingComment);
});
} else {
if (optionalExistingComment.isPresent()) {
Comment existingComment = optionalExistingComment.get();
existingComment.setBody(comment.getBody());
tagger.updateComment(existingComment);
} else {
comments.add(comment);
tagger.addComment(comment);
}
}
}
getUi().push();
}
}
} catch (Exception e) {
logger.log(Level.WARNING, "error processing an incoming Comment", e);
}
}
use of de.catma.document.comment.Reply in project catma by forTEXT.
the class CommentReplyJSONSerializer method toJSONArrayString.
public String toJSONArrayString(List<Reply> replies) throws IOException {
Collections.sort(replies, (r1, r2) -> r1.getId().compareTo(r2.getId()));
JsonNodeFactory factory = JsonNodeFactory.instance;
ArrayNode collection = factory.arrayNode(replies.size());
for (Reply reply : replies) {
collection.add(toJSONObject(reply));
}
return new ObjectMapper().writeValueAsString(collection);
}
use of de.catma.document.comment.Reply in project catma by forTEXT.
the class GitlabManagerRestricted method addReply.
@Override
public void addReply(String projectId, Comment comment, Reply reply) throws IOException {
String resourceId = comment.getDocumentId();
String projectPath = projectId + "/" + resourceId;
NotesApi notesApi = restrictedGitLabApi.getNotesApi();
try {
String noteBody = new SerializationHelper<Reply>().serialize(reply);
Note note = notesApi.createIssueNote(projectPath, comment.getIid(), noteBody);
reply.setId(note.getId());
comment.addReply(reply);
} catch (GitLabApiException e) {
throw new IOException(String.format("Failed to create Reply for Comment %1$s %2$d for resource %3$s in group %4$s!", comment.getUuid(), comment.getIid(), resourceId, projectId), e);
}
}
Aggregations