public List getAllContributors()

in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/landscape/analysis/LandscapeAnalysisResults.java [227:278]


    public List<ContributorProject> getAllContributors() {
        List<ContributorProject> list = new ArrayList<>();
        Map<String, ContributorProject> map = new HashMap<>();

        getFilteredProjectAnalysisResults().forEach(projectAnalysisResults -> {
            ContributorsAnalysisResults contributorsAnalysisResults = projectAnalysisResults.getAnalysisResults().getContributorsAnalysisResults();
            contributorsAnalysisResults.getContributors().forEach(contributor -> {
                String contributorId = contributor.getEmail();
                int projectCommits = contributor.getCommitsCount();
                int projectCommits30Days = contributor.getCommitsCount30Days();
                int projectCommits90Days = contributor.getCommitsCount90Days();

                if (map.containsKey(contributorId)) {
                    ContributorProject existingContributor = map.get(contributorId);
                    existingContributor.getContributor().setCommitsCount(existingContributor.getContributor().getCommitsCount() + projectCommits);

                    existingContributor.getContributor().setCommitsCount30Days(
                            existingContributor.getContributor().getCommitsCount30Days() + projectCommits30Days);

                    existingContributor.getContributor().setCommitsCount90Days(
                            existingContributor.getContributor().getCommitsCount30Days() + projectCommits90Days);

                    existingContributor.addProject(projectAnalysisResults, projectCommits);
                    if (contributor.getFirstCommitDate().compareTo(existingContributor.getContributor().getFirstCommitDate()) < 0) {
                        existingContributor.getContributor().setFirstCommitDate(contributor.getFirstCommitDate());
                    }
                    if (contributor.getLatestCommitDate().compareTo(existingContributor.getContributor().getLatestCommitDate()) > 0) {
                        existingContributor.getContributor().setLatestCommitDate(contributor.getLatestCommitDate());
                    }
                } else {
                    Contributor newContributor = new Contributor();

                    newContributor.setEmail(contributor.getEmail());
                    newContributor.setCommitsCount(projectCommits);
                    newContributor.setCommitsCount30Days(projectCommits30Days);
                    newContributor.setCommitsCount90Days(projectCommits90Days);
                    newContributor.setFirstCommitDate(contributor.getFirstCommitDate());
                    newContributor.setLatestCommitDate(contributor.getLatestCommitDate());

                    ContributorProject newContributorWithProjects = new ContributorProject(newContributor);
                    newContributorWithProjects.addProject(projectAnalysisResults, projectCommits);

                    map.put(contributorId, newContributorWithProjects);
                    list.add(newContributorWithProjects);
                }
            });
        });

        Collections.sort(list, (a, b) -> b.getContributor().getCommitsCount() - a.getContributor().getCommitsCount());

        return list;
    }