John Crygier
2012-05-03 cca55e4722fa1ceba8a0933dda974162635f3955
src/com/gitblit/models/RepositoryModel.java
@@ -20,8 +20,16 @@
import java.util.Date;
import java.util.List;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.StoredConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Constants.FederationStrategy;
import com.gitblit.GitBlit;
import com.gitblit.utils.ArrayUtils;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
/**
@@ -34,6 +42,11 @@
public class RepositoryModel implements Serializable, Comparable<RepositoryModel> {
   private static final long serialVersionUID = 1L;
   public static String CUSTOM_DEFINED_PROP_SECTION = "gitblit";
   public static String CUSTOM_DEFINED_PROP_SUBSECTION = "customDefinedProperties";
   private final Logger logger = LoggerFactory.getLogger(RepositoryModel.class);
   // field names are reflectively mapped in EditRepository page
   public String name;
@@ -53,9 +66,17 @@
   public boolean skipSizeCalculation;
   public boolean skipSummaryMetrics;
   public String frequency;
   public boolean isBare;
   public String origin;
   public String HEAD;
   public List<String> availableRefs;
   public List<String> indexedBranches;
   public String size;
   public List<String> preReceiveScripts;
   public List<String> postReceiveScripts;
   public List<String> mailingLists;
   private String displayName;
   public RepositoryModel() {
      this("", "", "", new Date(0));
   }
@@ -67,12 +88,59 @@
      this.lastChange = lastchange;
      this.accessRestriction = AccessRestrictionType.NONE;
      this.federationSets = new ArrayList<String>();
      this.federationStrategy = FederationStrategy.FEDERATE_THIS;
      this.federationStrategy = FederationStrategy.FEDERATE_THIS;
   }
   public List<String> getLocalBranches() {
      if (ArrayUtils.isEmpty(availableRefs)) {
         return new ArrayList<String>();
      }
      List<String> localBranches = new ArrayList<String>();
      for (String ref : availableRefs) {
         if (ref.startsWith("refs/heads")) {
            localBranches.add(ref);
         }
      }
      return localBranches;
   }
   public String getCustomProperty(String propertyKey) {
      try {
         Repository r = GitBlit.self().getRepository(name);
         StoredConfig config = JGitUtils.readConfig(r);
         return config.getString(CUSTOM_DEFINED_PROP_SECTION, CUSTOM_DEFINED_PROP_SUBSECTION, propertyKey);
      } catch (Exception e) {
         logger.error("Error getting Custom Property", e);
         return null;
      }
   }
   public String setCustomProperty(String propertyKey, String propertyValue) {
      try {
         Repository r = GitBlit.self().getRepository(name);
         StoredConfig config = JGitUtils.readConfig(r);
         String oldValue = config.getString(CUSTOM_DEFINED_PROP_SECTION, CUSTOM_DEFINED_PROP_SUBSECTION, propertyKey);
         config.setString(CUSTOM_DEFINED_PROP_SECTION, CUSTOM_DEFINED_PROP_SUBSECTION, propertyKey, propertyValue);
         config.save();
         return oldValue;
      } catch (Exception e) {
         logger.error("Error getting Custom Property", e);
         return null;
      }
   }
   @Override
   public String toString() {
      return name;
      if (displayName == null) {
         displayName = StringUtils.stripDotGit(name);
      }
      return displayName;
   }
   @Override