public UserTaskInstance merge()

in data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/UserTaskInstanceAttachmentDataEventMerger.java [38:71]


    public UserTaskInstance merge(UserTaskInstance userTaskInstance, UserTaskInstanceDataEvent<?> data) {
        UserTaskInstanceAttachmentDataEvent event = (UserTaskInstanceAttachmentDataEvent) data;
        UserTaskInstanceAttachmentEventBody body = event.getData();

        List<Attachment> attachments = userTaskInstance.getAttachments();
        if (attachments == null) {
            attachments = new ArrayList<>();
            userTaskInstance.setAttachments(attachments);
        }

        switch (body.getEventType()) {
            case UserTaskInstanceAttachmentEventBody.EVENT_TYPE_ADDED:
            case UserTaskInstanceAttachmentEventBody.EVENT_TYPE_CHANGE:
                Optional<Attachment> found = attachments.stream().filter(e -> e.getId().equals(body.getAttachmentId())).findAny();
                Attachment attachment;
                if (found.isEmpty()) {
                    attachment = new Attachment();
                    attachments.add(attachment);
                } else {
                    attachment = found.get();
                }
                attachment.setId(body.getAttachmentId());
                attachment.setName(body.getAttachmentName());
                attachment.setContent(body.getAttachmentURI().toString());
                attachment.setUpdatedBy(body.getEventUser() != null ? body.getEventUser() : "unknown");
                attachment.setUpdatedAt(DateTimeUtils.toZonedDateTime(body.getEventDate()));

                break;
            case UserTaskInstanceAttachmentEventBody.EVENT_TYPE_DELETED:
                attachments.removeIf(e -> e.getId().equals(body.getAttachmentId()));
                break;
        }
        return userTaskInstance;
    }