James Moger
2012-10-22 ec7ac2149ba8603ff1455c948c07037bf6ee030c
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.
@@ -30,17 +34,21 @@
   // The build script extracts this exact line so be careful editing it
   // and only use A-Z a-z 0-9 .-_ in the string.
   public static final String VERSION = "1.1.0";
   public static final String VERSION = "1.2.0-SNAPSHOT";
   // The build script extracts this exact line so be careful editing it
   // and only use A-Z a-z 0-9 .-_ in the string.
   public static final String VERSION_DATE = "2012-08-25";
   public static final String VERSION_DATE = "PENDING";
   // The build script extracts this exact line so be careful editing it
   // and only use A-Z a-z 0-9 .-_ in the string.
   public static final String JGIT_VERSION = "JGit 2.0.0 (201206130900-r)";
   public static final String JGIT_VERSION = "JGit 2.1.0 (201209190230-r)";
   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";
   
@@ -247,6 +255,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;
@@ -305,4 +314,78 @@
         return null;
      }
   }
   /**
    * The access permissions available for a repository.
    */
   public static enum AccessPermission {
      NONE("N"), VIEW("V"), CLONE("R"), PUSH("RW"), CREATE("RWC"), DELETE("RWD"), REWIND("RW+");
      public static final AccessPermission [] NEWPERMISSIONS = { 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;
   }
   @Documented
   @Retention(RetentionPolicy.RUNTIME)
   public @interface Unused {
   }
}