From cedf138f3c9afeae7bcbda5dbb0511ebec297d10 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 10 Jun 2013 18:45:32 -0400 Subject: [PATCH] Globl and per-repository setting to exclude authors form metrics (issue-251) --- src/main/java/com/gitblit/wicket/pages/DashboardPage.java | 30 ++++++++++++++++++++++++------ 1 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/DashboardPage.java b/src/main/java/com/gitblit/wicket/pages/DashboardPage.java index 39771ae..66bbf73 100644 --- a/src/main/java/com/gitblit/wicket/pages/DashboardPage.java +++ b/src/main/java/com/gitblit/wicket/pages/DashboardPage.java @@ -34,6 +34,7 @@ import java.util.Map; import java.util.Set; import java.util.TimeZone; +import java.util.TreeSet; import org.apache.wicket.Component; import org.apache.wicket.PageParameters; @@ -187,7 +188,20 @@ // add the nifty charts if (!ArrayUtils.isEmpty(pushes)) { - GoogleCharts charts = createCharts(pushes); + // aggregate author exclusions + Set<String> authorExclusions = new TreeSet<String>(); + for (String author : GitBlit.getStrings(Keys.web.metricAuthorExclusions)) { + authorExclusions.add(author.toLowerCase()); + } + for (RepositoryModel model : feedSources) { + if (!ArrayUtils.isEmpty(model.metricAuthorExclusions)) { + for (String author : model.metricAuthorExclusions) { + authorExclusions.add(author.toLowerCase()); + } + } + } + + GoogleCharts charts = createCharts(pushes, authorExclusions); add(new HeaderContributor(charts)); } @@ -359,7 +373,7 @@ * @param recentPushes * @return */ - private GoogleCharts createCharts(List<PushLogEntry> recentPushes) { + private GoogleCharts createCharts(List<PushLogEntry> recentPushes, Set<String> authorExclusions) { // activity metrics Map<String, Metric> repositoryMetrics = new HashMap<String, Metric>(); Map<String, Metric> authorMetrics = new HashMap<String, Metric>(); @@ -375,11 +389,15 @@ repositoryMetrics.get(repository).count += 1; for (RepositoryCommit commit : push.getCommits()) { - String author = commit.getAuthorIdent().getName(); - if (!authorMetrics.containsKey(author)) { - authorMetrics.put(author, new Metric(author)); + String author = StringUtils.removeNewlines(commit.getAuthorIdent().getName()); + String authorName = author.toLowerCase(); + String authorEmail = StringUtils.removeNewlines(commit.getAuthorIdent().getEmailAddress()).toLowerCase(); + if (!authorExclusions.contains(authorName) && !authorExclusions.contains(authorEmail)) { + if (!authorMetrics.containsKey(author)) { + authorMetrics.put(author, new Metric(author)); + } + authorMetrics.get(author).count += 1; } - authorMetrics.get(author).count += 1; } } -- Gitblit v1.9.1