public BoardSummaryUi summary()

in tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/board/BoardService.java [98:180]


    public BoardSummaryUi summary(ICredentialsProv creds, String baseBranch) {
        issuesToDefectsLater();

        Map<Integer, Future<FatBuildCompacted>> allBuildsMap = new HashMap<>();

        List<DefectCompacted> defects = defectStorage.loadAllDefects();

        BoardSummaryUi res = new BoardSummaryUi();
        boolean admin = userStorage.getUser(creds.getPrincipalId()).isAdmin();
        for (DefectCompacted next : defects) {
            BoardDefectSummaryUi defectUi = new BoardDefectSummaryUi(next, compactor);

            if (baseBranch != null && !baseBranch.equals("") && !defectUi.getTrackedBranch().equals(baseBranch))
                continue;

            defectUi.setForceResolveAllowed(admin);

            String srvCode = next.tcSrvCode(compactor);

            if (!creds.hasAccess(srvCode))
                continue;

            ITeamcityIgnited tcIgn = tcProv.server(srvCode, creds);

            ITcServerConfig cfg = tcIgn.config();

            List<BlameCandidate> candidates = next.blameCandidates();

            Map<Integer, DefectFirstBuild> build = next.buildsInvolved();
            for (DefectFirstBuild cause : build.values()) {
                FatBuildCompacted firstBuild = cause.build();
                FatBuildCompacted fatBuild = fatBuildDao.getFatBuild(next.tcSrvId(), firstBuild.id());

                // In case the build was removed from the cache, but the defect was not yet
                if (fatBuild == null)
                    continue;

                List<Future<FatBuildCompacted>> futures = buildChainProcessor.replaceWithRecent(fatBuild, allBuildsMap, tcIgn);

                Stream<FatBuildCompacted> results = FutureUtil.getResults(futures);
                List<FatBuildCompacted> freshRebuild = results.collect(toList());

                Optional<FatBuildCompacted> rebuild;

                rebuild = !freshRebuild.isEmpty() ? freshRebuild.stream().findFirst() : Optional.empty();

                Set<String> tags = SingleBuildRunCtx.getBuildTagsFromParameters(cfg, compactor, firstBuild);

                for (DefectIssue issue : cause.issues()) {
                    BoardDefectIssueUi issueUi = processIssue(tcIgn, rebuild, issue, firstBuild.buildTypeId());

                    issueUi.setTcSrvId(next.tcSrvId());

                    if (defectUi.getAllIssues().stream().anyMatch(issueUi0 -> {
                        return issueUi0.getNameId() == issueUi.getNameId() &&
                            issueUi0.getTcSrvId() == issueUi.getTcSrvId() &&
                            issueUi0.getIssueTypeCode() == issueUi.getIssueTypeCode();

                    }))
                        continue;

                    if (issueUi.status() != IssueResolveStatus.FIXED)
                        defectUi.addTags(tags);

                    MutedIssueKey issueKey = new MutedIssueKey(next.tcSrvId(), issue.testNameCid(),
                        fatBuild.branchName(), IssueType.valueOf(compactor.getStringFromId(issue.issueTypeCode())));

                    MutedIssueInfo mutedIssueInfo = mutedIssuesDao.getMutedIssue(issueKey);

                    if (mutedIssueInfo != null)
                        issueUi.setStatus(BOT_MUTED);

                    defectUi.addIssue(issueUi);
                }
            }

            defectUi.branch = next.tcBranch(compactor);

            res.addDefect(defectUi);
        }

        return res;
    }