private DashboardRowDTO convert()

in server/src/main/java/com/epam/indigoeln/core/service/dashboard/DashboardService.java [288:347]


    private DashboardRowDTO convert(
            Triple<Document, Document, Document> t,
            Map<Object, Document> components,
            Map<Object, Document> users,
            Map<String, SignatureService.Document> documents) {
        val project = t.getLeft();
        val notebook = t.getMiddle();
        val experiment = t.getRight();

        val result = new DashboardRowDTO();

        result.setProjectId(SequenceIdUtil.extractShortId(String.valueOf(project.get("_id"))));
        result.setNotebookId(SequenceIdUtil.extractShortId(String.valueOf(notebook.get("_id"))));
        result.setExperimentId(SequenceIdUtil.extractShortId(String.valueOf(experiment.get("_id"))));
        result.setId(notebook.get("name") + "-" + experiment.get("name"));
        result.setStatus(ExperimentStatus.fromValue(String.valueOf(experiment.get("status"))));
        result.setProject(String.valueOf(project.get("name")));

        result.setCreationDate(JSR310DateConverters.DateToZonedDateTimeConverter.INSTANCE.convert((Date) experiment.get("creationDate")));
        result.setLastEditDate(JSR310DateConverters.DateToZonedDateTimeConverter.INSTANCE.convert((Date) experiment.get("lastEditDate")));

        val title = getExperimentDetailsValue(experiment, Arrays.asList("reactionDetails", "conceptDetails"), "title", components);
        result.setName(title == null ? null : String.valueOf(title));

        val reactionImage = getExperimentDetailsValue(experiment, Collections.singletonList("reaction"), "image", components);
        result.setReactionImage(reactionImage == null ? null : String.valueOf(reactionImage));

        if (documents != null && experiment.get("documentId") != null) {
            val document = documents.get(experiment.get("documentId"));
            if (document != null) {
                result.setWitnesses(
                        document.getWitnesses().stream()
                                .map(u -> new DashboardRowDTO.UserDTO(u.getFirstName(), u.getLastName()))
                                .collect(Collectors.toList()));

                result.setComments(
                        document.getWitnesses().stream()
                                .map(SignatureService.User::getComment)
                                .collect(Collectors.toList()));
            }
        }

        result.setAuthor(getUserDTO(experiment, "author", users));
        result.setSubmitter(getUserDTO(experiment, "submittedBy", users));

        val coAuthors = getExperimentDetailsValue(experiment, Arrays.asList("reactionDetails", "conceptDetails"), "coAuthors", components);
        if (coAuthors instanceof Iterable) {
            val ca = new ArrayList<String>();

            ((Iterable) coAuthors).forEach(c -> {
                if (c != null) {
                    ca.add(String.valueOf(c));
                }
            });

            result.setCoAuthors(ca);
        }

        return result;
    }