James Moger
2013-01-23 661db6c2948e4848b29645c66e17cbfcaa780ae0
src/com/gitblit/models/RepositoryModel.java
@@ -17,6 +17,7 @@
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 @@
   // 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;
@@ -75,6 +76,13 @@
   public boolean allowForks;
   public Set<String> forks;
   public String originRepository;
   public boolean verifyCommitter;
   public String gcThreshold;
   public int gcPeriod;
   public int maxActivityCommits;
   public transient boolean isCollectingGarbage;
   public Date lastGC;
   
   public RepositoryModel() {
      this("", "", "", new Date(0));
@@ -83,12 +91,15 @@
   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.federationStrategy = FederationStrategy.FEDERATE_THIS;
      this.projectPath = StringUtils.getFirstPathElement(name);
      this.owners = new ArrayList<String>();
      addOwner(owner);
   }
   
   public List<String> getLocalBranches() {
@@ -121,6 +132,19 @@
   public void resetDisplayName() {
      displayName = null;
   }
   @Override
   public int hashCode() {
      return name.hashCode();
   }
   @Override
   public boolean equals(Object o) {
      if (o instanceof RepositoryModel) {
         return name.equals(((RepositoryModel) o).name);
      }
      return false;
   }
   @Override
   public String toString() {
@@ -135,12 +159,27 @@
      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) == '~';
   }
   
   public boolean isUsersPersonalRepository(String username) {
      return !StringUtils.isEmpty(projectPath) && projectPath.equalsIgnoreCase("~" + username);
   }
   public boolean allowAnonymousView() {
      return !accessRestriction.atLeast(AccessRestrictionType.VIEW);
   }
   
   public RepositoryModel cloneAs(String cloneName) {
@@ -150,8 +189,8 @@
      clone.projectPath = StringUtils.getFirstPathElement(cloneName);
      clone.isBare = true;
      clone.description = description;
      clone.accessRestriction = accessRestriction;
      clone.authorizationControl = authorizationControl;
      clone.accessRestriction = AccessRestrictionType.PUSH;
      clone.authorizationControl = AuthorizationControl.NAMED;
      clone.federationStrategy = federationStrategy;
      clone.showReadme = showReadme;
      clone.showRemoteBranches = false;
@@ -162,4 +201,37 @@
      clone.skipSummaryMetrics = skipSummaryMetrics;
      return clone;
   }
   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);
         }
      }
   }
}