public List getContributorsPerExtension()

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


    public List<CommitsPerExtension> getContributorsPerExtension() {
        int thresholdCommits = configuration.getContributorThresholdCommits();
        Map<String, CommitsPerExtension> commitsPerExtensions = new HashMap<>();

        getAllExtension().forEach(extension -> {
            commitsPerExtensions.put(extension, new CommitsPerExtension(extension));
        });

        getFilteredProjectAnalysisResults().forEach(projectAnalysisResults -> {
            List<CommitsPerExtension> projectData = projectAnalysisResults.getAnalysisResults().getContributorsAnalysisResults().getCommitsPerExtensions();

            projectData.forEach(projectExtData -> {
                String extension = projectExtData.getExtension();
                if (commitsPerExtensions.containsKey(extension)) {
                    CommitsPerExtension commitsPerExtension = commitsPerExtensions.get(extension);
                    commitsPerExtension.setCommitsCount(commitsPerExtension.getCommitsCount() + projectExtData.getCommitsCount());

                    commitsPerExtension.setCommitsCount30Days(commitsPerExtension.getCommitsCount30Days() + projectExtData.getCommitsCount30Days());
                    commitsPerExtension.setCommitsCount90Days(commitsPerExtension.getCommitsCount90Days() + projectExtData.getCommitsCount90Days());

                    commitsPerExtension.setFilesCount(commitsPerExtension.getFilesCount() + projectExtData.getFilesCount());
                    commitsPerExtension.setFilesCount30Days(commitsPerExtension.getFilesCount30Days() + projectExtData.getFilesCount30Days());
                    commitsPerExtension.setFilesCount90Days(commitsPerExtension.getFilesCount90Days() + projectExtData.getFilesCount90Days());

                    projectExtData.getCommitters().forEach(email -> {
                        if (!commitsPerExtension.getCommitters().contains(email)) {
                            commitsPerExtension.getCommitters().add(email);
                        }
                    });
                    projectExtData.getCommitters30Days().forEach(email -> {
                        if (!commitsPerExtension.getCommitters30Days().contains(email)) {
                            commitsPerExtension.getCommitters30Days().add(email);
                        }
                    });
                    projectExtData.getCommitters90Days().forEach(email -> {
                        if (!commitsPerExtension.getCommitters90Days().contains(email)) {
                            commitsPerExtension.getCommitters90Days().add(email);
                        }
                    });
                }
            });
        });

        ArrayList<CommitsPerExtension> list = new ArrayList<>(commitsPerExtensions.values());
        Collections.sort(list, (a, b) -> b.getCommitters30Days().size() - a.getCommitters30Days().size());

        return list;
    }