summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit/models/RepositoryModel.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-01-23 07:58:51 -0500
committerJames Moger <james.moger@gitblit.com>2013-01-23 07:58:51 -0500
commit1613f4067028b73e05544b55d45b6e136ce0238d (patch)
treec3361286e2adc9252c2e3a22ec4e62eb2ec71cce /src/com/gitblit/models/RepositoryModel.java
parent16c59e8186ee10d59cfb7063f8383882e49c35d6 (diff)
parent661db6c2948e4848b29645c66e17cbfcaa780ae0 (diff)
downloadgitblit-1613f4067028b73e05544b55d45b6e136ce0238d.tar.gz
gitblit-1613f4067028b73e05544b55d45b6e136ce0238d.zip
Merged multiple owners (pull request #63)
Diffstat (limited to 'src/com/gitblit/models/RepositoryModel.java')
-rw-r--r--src/com/gitblit/models/RepositoryModel.java47
1 files changed, 43 insertions, 4 deletions
diff --git a/src/com/gitblit/models/RepositoryModel.java b/src/com/gitblit/models/RepositoryModel.java
index 022fd200..a2dab3c5 100644
--- a/src/com/gitblit/models/RepositoryModel.java
+++ b/src/com/gitblit/models/RepositoryModel.java
@@ -17,6 +17,7 @@ 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;
@@ -43,7 +44,7 @@ public class RepositoryModel implements Serializable, Comparable<RepositoryModel
// field names are reflectively mapped in EditRepository page
public String name;
public String description;
- public String owner;
+ public List<String> owners;
public Date lastChange;
public boolean hasCommits;
public boolean showRemoteBranches;
@@ -91,13 +92,15 @@ public class RepositoryModel implements Serializable, Comparable<RepositoryModel
public RepositoryModel(String name, String description, String owner, Date lastchange) {
this.name = name;
this.description = description;
- this.owner = owner;
this.lastChange = lastchange;
this.accessRestriction = AccessRestrictionType.NONE;
this.authorizationControl = AuthorizationControl.NAMED;
this.federationSets = new ArrayList<String>();
this.federationStrategy = FederationStrategy.FEDERATE_THIS;
this.projectPath = StringUtils.getFirstPathElement(name);
+ this.owners = new ArrayList<String>();
+
+ addOwner(owner);
}
public List<String> getLocalBranches() {
@@ -162,7 +165,10 @@ public class RepositoryModel implements Serializable, Comparable<RepositoryModel
}
public boolean isOwner(String username) {
- return owner != null && username != null && owner.equalsIgnoreCase(username);
+ if (StringUtils.isEmpty(username) || ArrayUtils.isEmpty(owners)) {
+ return false;
+ }
+ return owners.contains(username.toLowerCase());
}
public boolean isPersonalRepository() {
@@ -201,4 +207,37 @@ public class RepositoryModel implements Serializable, Comparable<RepositoryModel
clone.sparkleshareId = sparkleshareId;
return clone;
}
-} \ No newline at end of file
+
+ 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 removeOwner(String username) {
+ if (!StringUtils.isEmpty(username)) {
+ owners.remove(username.toLowerCase());
+ }
+ }
+
+ public void addOwners(Collection<String> usernames) {
+ if (!ArrayUtils.isEmpty(usernames)) {
+ for (String username : usernames) {
+ addOwner(username);
+ }
+ }
+ }
+
+ public void removeOwners(Collection<String> usernames) {
+ if (!ArrayUtils.isEmpty(owners)) {
+ for (String username : usernames) {
+ removeOwner(username);
+ }
+ }
+ }
+}