diff options
Diffstat (limited to 'src/main/java/com/gitblit/models')
-rw-r--r-- | src/main/java/com/gitblit/models/DailyLogEntry.java | 59 | ||||
-rw-r--r-- | src/main/java/com/gitblit/models/PushLogEntry.java | 17 |
2 files changed, 76 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/models/DailyLogEntry.java b/src/main/java/com/gitblit/models/DailyLogEntry.java new file mode 100644 index 00000000..db605268 --- /dev/null +++ b/src/main/java/com/gitblit/models/DailyLogEntry.java @@ -0,0 +1,59 @@ +/* + * Copyright 2013 gitblit.com. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gitblit.models; + +import java.io.Serializable; +import java.util.Date; + +import org.eclipse.jgit.lib.PersonIdent; + +/** + * Model class to simulate a push for presentation in the push log news feed + * for a repository that does not have a Gitblit push log. Commits are grouped + * by date and may be additionally split by ref. + * + * @author James Moger + */ +public class DailyLogEntry extends PushLogEntry implements Serializable { + + private static final long serialVersionUID = 1L; + + public DailyLogEntry(String repository, Date date) { + super(repository, date, new UserModel("digest")); + } + + public DailyLogEntry(String repository, Date date, UserModel user) { + super(repository, date, user); + } + + @Override + public PersonIdent getCommitterIdent() { + if (getAuthorCount() == 1) { + return getCommits().get(0).getCommitterIdent(); + } + + return super.getCommitterIdent(); + } + + @Override + public PersonIdent getAuthorIdent() { + if (getAuthorCount() == 1) { + return getCommits().get(0).getAuthorIdent(); + } + + return super.getAuthorIdent(); + } +} diff --git a/src/main/java/com/gitblit/models/PushLogEntry.java b/src/main/java/com/gitblit/models/PushLogEntry.java index d8f0b091..8b006d96 100644 --- a/src/main/java/com/gitblit/models/PushLogEntry.java +++ b/src/main/java/com/gitblit/models/PushLogEntry.java @@ -54,6 +54,8 @@ public class PushLogEntry implements Serializable, Comparable<PushLogEntry> { private final Map<String, ReceiveCommand.Type> refUpdates;
private final Map<String, String> refIdChanges;
+
+ private int authorCount;
/**
* Constructor for specified duration of push from start date.
@@ -72,6 +74,7 @@ public class PushLogEntry implements Serializable, Comparable<PushLogEntry> { this.commits = new LinkedHashSet<RepositoryCommit>();
this.refUpdates = new HashMap<String, ReceiveCommand.Type>();
this.refIdChanges = new HashMap<String, String>();
+ this.authorCount = -1;
}
/**
@@ -152,6 +155,7 @@ public class PushLogEntry implements Serializable, Comparable<PushLogEntry> { public RepositoryCommit addCommit(String branch, RevCommit commit) {
RepositoryCommit commitModel = new RepositoryCommit(repository, branch, commit);
if (commits.add(commitModel)) {
+ authorCount = -1;
return commitModel;
}
return null;
@@ -165,6 +169,7 @@ public class PushLogEntry implements Serializable, Comparable<PushLogEntry> { */
public void addCommits(List<RepositoryCommit> list) {
commits.addAll(list);
+ authorCount = -1;
}
/**
@@ -254,6 +259,18 @@ public class PushLogEntry implements Serializable, Comparable<PushLogEntry> { return list;
}
+ public int getAuthorCount() {
+ if (authorCount == -1) {
+ Set<String> authors = new HashSet<String>();
+ for (RepositoryCommit commit : commits) {
+ String name = commit.getAuthorIdent().getName();
+ authors.add(name);
+ }
+ authorCount = authors.size();
+ }
+ return authorCount;
+ }
+
/**
* The total number of commits in the push.
*
|