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;
}