private ObjectNode getUserTaskJson()

in data-index/data-index-service/data-index-service-common/src/main/java/org/kie/kogito/index/service/json/UserTaskInstanceMetaMapper.java [66:149]


    private ObjectNode getUserTaskJson(UserTaskInstanceDataEvent<?> event) {
        ObjectNode json = getObjectMapper().createObjectNode();
        json.put(ID, event.getKogitoUserTaskInstanceId());
        json.put("processInstanceId", event.getKogitoProcessInstanceId());
        json.put("state", event.getKogitoUserTaskInstanceState());
        json.put(LAST_UPDATE, event.getTime() == null ? null : event.getTime().toInstant().toEpochMilli());

        if (event instanceof UserTaskInstanceStateDataEvent) {

            UserTaskInstanceStateDataEvent data = (UserTaskInstanceStateDataEvent) event;
            json.put("actualOwner", data.getData().getActualOwner());

            if (!isNullOrEmpty(data.getData().getUserTaskDescription())) {
                json.put("description", data.getData().getUserTaskDescription());
            }
            if (!isNullOrEmpty(data.getData().getUserTaskName())) {
                json.put("name", data.getData().getUserTaskName());
            }
            if (!isNullOrEmpty(data.getData().getUserTaskPriority())) {
                json.put("priority", data.getData().getUserTaskPriority());
            }

            if (data.getData().getState() != null && data.getData().getState().equals("Completed")) {
                json.put("completed", data.getData().getEventDate().toInstant().toEpochMilli());
            }
            List<String> events = List.of("Ready", "InProgress");
            if (data.getData().getState() != null && events.contains(data.getData().getState())) {
                json.put("started", data.getData().getEventDate().toInstant().toEpochMilli());
            }
        } else if (event instanceof UserTaskInstanceAssignmentDataEvent) {
            UserTaskInstanceAssignmentDataEvent data = (UserTaskInstanceAssignmentDataEvent) event;
            UserTaskInstanceAssignmentEventBody body = data.getData();
            switch (body.getAssignmentType()) {
                case "USER_OWNERS":
                    mapArray("potentialUsers", new HashSet<>(body.getUsers()), json);
                    break;
                case "USER_GROUPS":
                    mapArray("potentialGroups", new HashSet<>(body.getUsers()), json);
                    break;
                case "USERS_EXCLUDED":
                    mapArray("excludedUsers", new HashSet<>(body.getUsers()), json);
                    break;
                case "ADMIN_GROUPS":
                    mapArray("adminUsers", new HashSet<>(body.getUsers()), json);
                    break;
                case "ADMIN_USERS":
                    mapArray("adminGroups", new HashSet<>(body.getUsers()), json);
                    break;
            }

        } else if (event instanceof UserTaskInstanceAttachmentDataEvent) {
            UserTaskInstanceAttachmentDataEvent data = (UserTaskInstanceAttachmentDataEvent) event;
            UserTaskInstanceAttachmentEventBody body = data.getData();
            Map<String, Object> attachment = new HashMap<>();
            attachment.put("id", body.getAttachmentId());
            attachment.put("name", body.getAttachmentName());
            attachment.put("content", body.getAttachmentURI() != null ? body.getAttachmentURI().toString() : "");
            attachment.put("updatedBy", body.getEventUser());
            attachment.put("updatedAt", body.getEventDate());

            if (body.getEventType() == UserTaskInstanceAttachmentEventBody.EVENT_TYPE_DELETED) {
                attachment.put("remove", true);
            }

            ArrayNode arrayNode = json.withArray("attachments");
            arrayNode.add(getObjectMapper().valueToTree(attachment));

        } else if (event instanceof UserTaskInstanceCommentDataEvent) {
            UserTaskInstanceCommentDataEvent data = (UserTaskInstanceCommentDataEvent) event;
            UserTaskInstanceCommentEventBody body = data.getData();
            Map<String, Object> comment = new HashMap<>();
            comment.put("id", body.getCommentId());
            comment.put("content", body.getCommentContent());
            comment.put("updatedBy", body.getEventUser());
            comment.put("updatedAt", body.getEventDate());
            if (body.getEventType() == UserTaskInstanceCommentEventBody.EVENT_TYPE_DELETED) {
                comment.put("remove", true);
            }
            ArrayNode arrayNode = json.withArray("comments");
            arrayNode.add(getObjectMapper().valueToTree(comment));
        }

        return json;
    }