in reports/src/main/java/nl/obren/sokrates/reports/core/ReportFileExporter.java [167:214]
public static void addContributors(RichTextReport indexReport, List<Contributor> contributors) {
Collections.sort(contributors, (a, b) -> b.getCommitsCount() - a.getCommitsCount());
int max = contributors.get(0).getCommitsCount();
int total = contributors.stream().mapToInt(c -> c.getCommitsCount()).sum();
long activeCount = contributors.stream().filter(c -> c.isActive()).count();
long rookiesCount = contributors.stream().filter(c -> c.isRookie()).count();
long veteransCount = activeCount - rookiesCount;
long historicalCount = contributors.size() - activeCount;
indexReport.startSubSection("Recent Contributors (" + activeCount
+ " = " + veteransCount + " " + (veteransCount == 1 ? "veteran" : "veterans")
+ " + " + rookiesCount + " " + (rookiesCount == 1 ? "rookie" : "rookies") + ")",
"Contributed in past 6 months (a rookie = the first contribution in past year)");
List<Contributor> contributor30Days = contributors.stream().filter(c -> c.isActive(30)).collect(Collectors.toList());
List<Contributor> contributor90Days = contributors.stream().filter(c -> c.isActive(90) && !c.isActive(30)).collect(Collectors.toList());
List<Contributor> contributor180Days = contributors.stream().filter(c -> c.isActive(180) && !c.isActive(90)).collect(Collectors.toList());
if (contributor30Days.size() > 0) {
indexReport.addParagraph("Past 30 days (" + contributor30Days.size() + "):", "font-size: 80%");
contributor30Days.forEach(contributor -> {
addContributor(indexReport, max, total, contributor);
});
} else {
indexReport.addParagraph("No contributors in past 30 days.", "font-size: 80%");
}
indexReport.addHorizontalLine();
if (contributor90Days.size() > 0) {
indexReport.addParagraph("Past 31 to 90 days (" + contributor90Days.size() + "):", "font-size: 80%");
contributor90Days.forEach(contributor -> {
addContributor(indexReport, max, total, contributor);
});
} else {
indexReport.addParagraph("No contributors in past 31 to 90 days.", "font-size: 80%");
}
indexReport.addHorizontalLine();
if (contributor180Days.size() > 0) {
indexReport.addParagraph("Past 91 to 180 days (" + contributor180Days.size() + "):", "font-size: 80%");
contributor180Days.forEach(contributor -> {
addContributor(indexReport, max, total, contributor);
});
} else {
indexReport.addParagraph("No contributors in past 91 to 180 days.", "font-size: 80%");
}
indexReport.endSection();
indexReport.startSubSection("Historical Contributors (" + historicalCount + ")", "Last contributed more than 6 months ago");
contributors.stream().filter(c -> !c.isActive()).forEach(contributor -> {
addContributor(indexReport, max, total, contributor);
});
indexReport.endSection();
}