James Moger
2012-10-13 c658df9e87d65b08d5482cf04489cb0532ff83dd
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";
   
@@ -305,4 +313,72 @@
         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 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;
      }
   }
   @Documented
   @Retention(RetentionPolicy.RUNTIME)
   public @interface Unused {
   }
}