From 73f1adb2e84b8b9cd4045bcdd7d9afa72d3875b5 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 27 Nov 2012 17:13:03 -0500
Subject: [PATCH] Added short commit id column to log and history tables (issue 168)

---
 src/com/gitblit/Constants.java |   95 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 95 insertions(+), 0 deletions(-)

diff --git a/src/com/gitblit/Constants.java b/src/com/gitblit/Constants.java
index c53119b..8a3ec98 100644
--- a/src/com/gitblit/Constants.java
+++ b/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";
 	
@@ -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 {
+	}
 }

--
Gitblit v1.9.1