James Moger
2013-01-23 661db6c2948e4848b29645c66e17cbfcaa780ae0
src/com/gitblit/models/RepositoryModel.java
@@ -17,20 +17,17 @@
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 @@
 * @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;
@@ -88,23 +84,22 @@
   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.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() {
@@ -168,14 +163,19 @@
      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() {
@@ -202,46 +202,36 @@
      return clone;
   }
   public void addRepoAdministrator(String repoAdministrator) {
      if (repoAdministrator != null && repoAdministrator.trim().length() > 0) {
         this.repoAdministrators.add(repoAdministrator.toLowerCase());
      }
   }
   public void removeRepoAdministrator(String repoAdministrator) {
      if (repoAdministrator != null && repoAdministrator.trim().length() > 0) {
         this.repoAdministrators.remove(repoAdministrator.toLowerCase());
      }
   }
   public void addRepoAdministrators(Set<String> repoAdministrators) {
      if (repoAdministrators != null) {
         for (String admin : repoAdministrators) {
            this.addRepoAdministrator(admin);
   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 removeRepoAdministrators(Set<String> repoAdministrators) {
      if (repoAdministrators != null) {
         for (String admin : repoAdministrators) {
            this.removeRepoAdministrator(admin);
   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 removeAllRepoAdministrators() {
      this.repoAdministrators.clear();
   public void removeOwners(Collection<String> usernames) {
      if (!ArrayUtils.isEmpty(owners)) {
         for (String username : usernames) {
            removeOwner(username);
   }
   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());
   }
}