James Moger
2012-11-28 b718540114103aaad2fd2554745fdb61d1e6cd17
src/com/gitblit/Constants.java
@@ -15,6 +15,10 @@
 */
package com.gitblit;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
 * Constant values used by Gitblit.
@@ -43,6 +47,8 @@
   public static final String ADMIN_ROLE = "#admin";
   
   public static final String FORK_ROLE = "#fork";
   public static final String CREATE_ROLE = "#create";
   public static final String NOT_FEDERATED_ROLE = "#notfederated";
   
@@ -70,7 +76,7 @@
   
   public static final String ENCODING = "UTF-8";
   
   public static final int LEN_SHORTLOG = 80;
   public static final int LEN_SHORTLOG = 78;
   
   public static final int LEN_SHORTLOG_REFS = 60;
   
@@ -79,6 +85,8 @@
   public static final String CONFIG_GITBLIT = "gitblit";
   
   public static final String CONFIG_CUSTOM_FIELDS = "customFields";
   public static final String ISO8601 = "yyyy-MM-dd'T'HH:mm:ssZ";
   
   public static String getGitBlitVersion() {
      return NAME + " v" + VERSION;
@@ -249,6 +257,7 @@
      LIST_USERS, CREATE_USER, EDIT_USER, DELETE_USER, 
      LIST_TEAMS, CREATE_TEAM, EDIT_TEAM, DELETE_TEAM,
      LIST_REPOSITORY_MEMBERS, SET_REPOSITORY_MEMBERS, LIST_REPOSITORY_TEAMS, SET_REPOSITORY_TEAMS, 
      LIST_REPOSITORY_MEMBER_PERMISSIONS, SET_REPOSITORY_MEMBER_PERMISSIONS, LIST_REPOSITORY_TEAM_PERMISSIONS, SET_REPOSITORY_TEAM_PERMISSIONS,
      LIST_FEDERATION_REGISTRATIONS, LIST_FEDERATION_RESULTS, LIST_FEDERATION_PROPOSALS, LIST_FEDERATION_SETS,
      EDIT_SETTINGS, LIST_STATUS;
@@ -307,4 +316,90 @@
         return null;
      }
   }
   /**
    * The access permissions available for a repository.
    */
   public static enum AccessPermission {
      NONE("N"), EXCLUDE("X"), VIEW("V"), CLONE("R"), PUSH("RW"), CREATE("RWC"), DELETE("RWD"), REWIND("RW+"), OWNER("RW+");
      public static final AccessPermission [] NEWPERMISSIONS = { EXCLUDE, VIEW, CLONE, PUSH, CREATE, DELETE, REWIND };
      public static AccessPermission LEGACY = REWIND;
      public final String code;
      private AccessPermission(String code) {
         this.code = code;
      }
      public boolean atLeast(AccessPermission perm) {
         return ordinal() >= perm.ordinal();
      }
      public boolean exceeds(AccessPermission perm) {
         return ordinal() > perm.ordinal();
      }
      public String asRole(String repository) {
         return code + ":" + repository;
      }
      @Override
      public String toString() {
         return code;
      }
      public static AccessPermission permissionFromRole(String role) {
         String [] fields = role.split(":", 2);
         if (fields.length == 1) {
            // legacy/undefined assume full permissions
            return AccessPermission.LEGACY;
         } else {
            // code:repository
            return AccessPermission.fromCode(fields[0]);
         }
      }
      public static String repositoryFromRole(String role) {
         String [] fields = role.split(":", 2);
         if (fields.length == 1) {
            // legacy/undefined assume full permissions
            return role;
         } else {
            // code:repository
            return fields[1];
         }
      }
      public static AccessPermission fromCode(String code) {
         for (AccessPermission perm : values()) {
            if (perm.code.equalsIgnoreCase(code)) {
               return perm;
            }
         }
         return AccessPermission.NONE;
      }
   }
   public static enum RegistrantType {
      REPOSITORY, USER, TEAM;
   }
   public static enum PermissionType {
      MISSING, EXPLICIT, TEAM, REGEX, OWNER, ADMINISTRATOR;
   }
   public static enum GCStatus {
      READY, COLLECTING;
      public boolean exceeds(GCStatus s) {
         return ordinal() > s.ordinal();
      }
   }
   @Documented
   @Retention(RetentionPolicy.RUNTIME)
   public @interface Unused {
   }
}