diff options
author | James Moger <james.moger@gitblit.com> | 2013-01-23 07:52:20 -0500 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2013-01-23 07:52:20 -0500 |
commit | 661db6c2948e4848b29645c66e17cbfcaa780ae0 (patch) | |
tree | c3b8289168ebdb45838391f0f4edab3849d35515 /src/com/gitblit/models/RepositoryModel.java | |
parent | fb9813874c811ae06604c30d875e9dce57df9874 (diff) | |
download | gitblit-661db6c2948e4848b29645c66e17cbfcaa780ae0.tar.gz gitblit-661db6c2948e4848b29645c66e17cbfcaa780ae0.zip |
Revised multiple owners contribution
Diffstat (limited to 'src/com/gitblit/models/RepositoryModel.java')
-rw-r--r-- | src/com/gitblit/models/RepositoryModel.java | 110 |
1 files changed, 50 insertions, 60 deletions
diff --git a/src/com/gitblit/models/RepositoryModel.java b/src/com/gitblit/models/RepositoryModel.java index a27e9fdb..320f16b5 100644 --- a/src/com/gitblit/models/RepositoryModel.java +++ b/src/com/gitblit/models/RepositoryModel.java @@ -17,20 +17,17 @@ package com.gitblit.models; import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
-import org.apache.wicket.markup.html.basic.MultiLineLabel;
-
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Constants.AuthorizationControl;
import com.gitblit.Constants.FederationStrategy;
import com.gitblit.utils.ArrayUtils;
-import com.gitblit.utils.MultiConfigUtil;
-import com.gitblit.utils.StringComparator;
import com.gitblit.utils.StringUtils;
/**
@@ -40,15 +37,14 @@ import com.gitblit.utils.StringUtils; * @author James Moger
*
*/
-public class RepositoryModel implements Serializable,
- Comparable<RepositoryModel> {
+public class RepositoryModel implements Serializable, Comparable<RepositoryModel> {
private static final long serialVersionUID = 1L;
// field names are reflectively mapped in EditRepository page
public String name;
public String description;
- private Set<String> repoAdministrators = new TreeSet<String>(new StringComparator());
+ public List<String> owners;
public Date lastChange;
public boolean hasCommits;
public boolean showRemoteBranches;
@@ -84,29 +80,28 @@ public class RepositoryModel implements Serializable, public String gcThreshold;
public int gcPeriod;
public int maxActivityCommits;
-
+
public transient boolean isCollectingGarbage;
public Date lastGC;
-
- private MultiConfigUtil multiConfigUtil = new MultiConfigUtil();
-
+
public RepositoryModel() {
this("", "", "", new Date(0));
}
- public RepositoryModel(String name, String description, String owner,
- Date lastchange) {
+ public RepositoryModel(String name, String description, String owner, Date lastchange) {
this.name = name;
- this.description = description;
- this.addRepoAdministrator(owner);
+ this.description = description;
this.lastChange = lastchange;
this.accessRestriction = AccessRestrictionType.NONE;
this.authorizationControl = AuthorizationControl.NAMED;
this.federationSets = new ArrayList<String>();
- this.federationStrategy = FederationStrategy.FEDERATE_THIS;
+ this.federationStrategy = FederationStrategy.FEDERATE_THIS;
this.projectPath = StringUtils.getFirstPathElement(name);
+ this.owners = new ArrayList<String>();
+
+ addOwner(owner);
}
-
+
public List<String> getLocalBranches() {
if (ArrayUtils.isEmpty(availableRefs)) {
return new ArrayList<String>();
@@ -119,30 +114,30 @@ public class RepositoryModel implements Serializable, }
return localBranches;
}
-
+
public void addFork(String repository) {
if (forks == null) {
forks = new TreeSet<String>();
}
forks.add(repository);
}
-
+
public void removeFork(String repository) {
if (forks == null) {
return;
}
forks.remove(repository);
}
-
+
public void resetDisplayName() {
displayName = null;
}
-
+
@Override
public int hashCode() {
return name.hashCode();
}
-
+
@Override
public boolean equals(Object o) {
if (o instanceof RepositoryModel) {
@@ -163,25 +158,30 @@ public class RepositoryModel implements Serializable, public int compareTo(RepositoryModel o) {
return StringUtils.compareRepositoryNames(name, o.name);
}
-
+
public boolean isFork() {
return !StringUtils.isEmpty(originRepository);
}
-
+
+ public boolean isOwner(String username) {
+ if (StringUtils.isEmpty(username) || ArrayUtils.isEmpty(owners)) {
+ return false;
+ }
+ return owners.contains(username.toLowerCase());
+ }
+
public boolean isPersonalRepository() {
- return !StringUtils.isEmpty(projectPath)
- && projectPath.charAt(0) == '~';
+ return !StringUtils.isEmpty(projectPath) && projectPath.charAt(0) == '~';
}
-
+
public boolean isUsersPersonalRepository(String username) {
- return !StringUtils.isEmpty(projectPath)
- && projectPath.equalsIgnoreCase("~" + username);
+ return !StringUtils.isEmpty(projectPath) && projectPath.equalsIgnoreCase("~" + username);
}
-
+
public boolean allowAnonymousView() {
return !accessRestriction.atLeast(AccessRestrictionType.VIEW);
}
-
+
public RepositoryModel cloneAs(String cloneName) {
RepositoryModel clone = new RepositoryModel();
clone.originRepository = name;
@@ -202,46 +202,36 @@ public class RepositoryModel implements Serializable, return clone;
}
- public void addRepoAdministrator(String repoAdministrator) {
- if (repoAdministrator != null && repoAdministrator.trim().length() > 0) {
- this.repoAdministrators.add(repoAdministrator.toLowerCase());
+ public void addOwner(String username) {
+ if (!StringUtils.isEmpty(username)) {
+ String name = username.toLowerCase();
+ // a set would be more efficient, but this complicates JSON
+ // deserialization so we enforce uniqueness with an arraylist
+ if (!owners.contains(name)) {
+ owners.add(name);
+ }
}
}
- public void removeRepoAdministrator(String repoAdministrator) {
- if (repoAdministrator != null && repoAdministrator.trim().length() > 0) {
- this.repoAdministrators.remove(repoAdministrator.toLowerCase());
+ public void removeOwner(String username) {
+ if (!StringUtils.isEmpty(username)) {
+ owners.remove(username.toLowerCase());
}
}
- public void addRepoAdministrators(Set<String> repoAdministrators) {
- if (repoAdministrators != null) {
- for (String admin : repoAdministrators) {
- this.addRepoAdministrator(admin);
+ public void addOwners(Collection<String> usernames) {
+ if (!ArrayUtils.isEmpty(usernames)) {
+ for (String username : usernames) {
+ addOwner(username);
}
}
}
- public void removeRepoAdministrators(Set<String> repoAdministrators) {
- if (repoAdministrators != null) {
- for (String admin : repoAdministrators) {
- this.removeRepoAdministrator(admin);
+ public void removeOwners(Collection<String> usernames) {
+ if (!ArrayUtils.isEmpty(owners)) {
+ for (String username : usernames) {
+ removeOwner(username);
}
}
}
-
- public void removeAllRepoAdministrators() {
- this.repoAdministrators.clear();
- }
-
- public Set<String> getRepoAdministrators() {
- return this.repoAdministrators;
- }
-
- public boolean isRepoAdministrator(String username) {
- if (username == null || username.trim().length() == 0) {
- return false;
- }
- return this.repoAdministrators.contains(username.toLowerCase());
- }
}
\ No newline at end of file |