From a502d96a860456ec5e8c96761db70f7cabb74751 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 30 Apr 2016 04:19:14 -0400 Subject: [PATCH] Merge pull request #1073 from gitblit/1062-DocEditorUpdates --- src/main/java/com/gitblit/models/Activity.java | 64 ++++++++++++++++++++++++------- 1 files changed, 49 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/gitblit/models/Activity.java b/src/main/java/com/gitblit/models/Activity.java index 59405c7..ff0920c 100644 --- a/src/main/java/com/gitblit/models/Activity.java +++ b/src/main/java/com/gitblit/models/Activity.java @@ -17,6 +17,7 @@ import java.io.Serializable; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -24,6 +25,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeSet; import org.eclipse.jgit.revwalk.RevCommit; @@ -33,7 +35,7 @@ /** * Model class to represent the commit activity across many repositories. This * class is used by the Activity page. - * + * * @author James Moger */ public class Activity implements Serializable, Comparable<Activity> { @@ -50,9 +52,11 @@ private final Map<String, Metric> repositoryMetrics; + private final Set<String> authorExclusions; + /** * Constructor for one day of activity. - * + * * @param date */ public Activity(Date date) { @@ -61,7 +65,7 @@ /** * Constructor for specified duration of activity from start date. - * + * * @param date * the start date of the activity * @param duration @@ -73,12 +77,24 @@ commits = new LinkedHashSet<RepositoryCommit>(); authorMetrics = new HashMap<String, Metric>(); repositoryMetrics = new HashMap<String, Metric>(); + authorExclusions = new TreeSet<String>(); + } + + /** + * Exclude the specified authors from the metrics. + * + * @param authors + */ + public void excludeAuthors(Collection<String> authors) { + for (String author : authors) { + authorExclusions.add(author.toLowerCase()); + } } /** * Adds a commit to the activity object as long as the commit is not a * duplicate. - * + * * @param repository * @param branch * @param commit @@ -87,26 +103,44 @@ */ public RepositoryCommit addCommit(String repository, String branch, RevCommit commit) { RepositoryCommit commitModel = new RepositoryCommit(repository, branch, commit); - if (commits.add(commitModel)) { - if (!repositoryMetrics.containsKey(repository)) { - repositoryMetrics.put(repository, new Metric(repository)); - } - repositoryMetrics.get(repository).count++; + return addCommit(commitModel); + } - String author = StringUtils.removeNewlines(commit.getAuthorIdent().getEmailAddress()).toLowerCase(); - if (!authorMetrics.containsKey(author)) { - authorMetrics.put(author, new Metric(author)); + /** + * Adds a commit to the activity object as long as the commit is not a + * duplicate. + * + * @param repository + * @param branch + * @param commit + * @return a RepositoryCommit, if one was added. Null if this is duplicate + * commit + */ + public RepositoryCommit addCommit(RepositoryCommit commitModel) { + if (commits.add(commitModel)) { + String author = StringUtils.removeNewlines(commitModel.getAuthorIdent().getName()); + String authorName = author.toLowerCase(); + String authorEmail = StringUtils.removeNewlines(commitModel.getAuthorIdent().getEmailAddress()).toLowerCase(); + if (!repositoryMetrics.containsKey(commitModel.repository)) { + repositoryMetrics.put(commitModel.repository, new Metric(commitModel.repository)); } - authorMetrics.get(author).count++; + repositoryMetrics.get(commitModel.repository).count++; + + if (!authorExclusions.contains(authorName) && !authorExclusions.contains(authorEmail)) { + if (!authorMetrics.containsKey(author)) { + authorMetrics.put(author, new Metric(author)); + } + authorMetrics.get(author).count++; + } return commitModel; } return null; } - + public int getCommitCount() { return commits.size(); } - + public List<RepositoryCommit> getCommits() { List<RepositoryCommit> list = new ArrayList<RepositoryCommit>(commits); Collections.sort(list); -- Gitblit v1.9.1