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