public UserTaskInstance merge()

in data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/UserTaskInstanceCommentDataEventMerger.java [37:67]


    public UserTaskInstance merge(UserTaskInstance userTaskInstance, UserTaskInstanceDataEvent<?> data) {
        UserTaskInstanceCommentDataEvent event = (UserTaskInstanceCommentDataEvent) data;
        UserTaskInstanceCommentEventBody body = event.getData();
        List<Comment> comments = userTaskInstance.getComments();
        if (comments == null) {
            comments = new ArrayList<>();
            userTaskInstance.setComments(comments);
        }
        switch (body.getEventType()) {
            case UserTaskInstanceCommentEventBody.EVENT_TYPE_ADDED:
            case UserTaskInstanceCommentEventBody.EVENT_TYPE_CHANGE:
                Optional<Comment> found = comments.stream().filter(e -> e.getId().equals(body.getCommentId())).findAny();
                Comment comment;
                if (found.isEmpty()) {
                    comment = new Comment();
                    comments.add(comment);
                } else {
                    comment = found.get();
                }
                comment.setId(body.getCommentId());
                comment.setContent(body.getCommentContent());
                comment.setUpdatedBy(body.getEventUser() != null ? body.getEventUser() : "unknown");
                comment.setUpdatedAt(DateTimeUtils.toZonedDateTime(body.getEventDate()));

                break;
            case UserTaskInstanceCommentEventBody.EVENT_TYPE_DELETED:
                comments.removeIf(e -> e.getId().equals(body.getCommentId()));
                break;
        }
        return userTaskInstance;
    }