From 7ba85bfa11c7fcab21ada61650fe30763aafd7b0 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 01 Nov 2012 09:12:55 -0400
Subject: [PATCH] Gracefully deal with missing repository in permissions ui (issue 155)

---
 src/com/gitblit/models/RegistrantAccessPermission.java |   50 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 45 insertions(+), 5 deletions(-)

diff --git a/src/com/gitblit/models/RegistrantAccessPermission.java b/src/com/gitblit/models/RegistrantAccessPermission.java
index 9302745..4bdc2da 100644
--- a/src/com/gitblit/models/RegistrantAccessPermission.java
+++ b/src/com/gitblit/models/RegistrantAccessPermission.java
@@ -18,6 +18,7 @@
 import java.io.Serializable;
 
 import com.gitblit.Constants.AccessPermission;
+import com.gitblit.Constants.PermissionType;
 import com.gitblit.Constants.RegistrantType;
 import com.gitblit.utils.StringUtils;
 
@@ -32,20 +33,44 @@
 
 	public String registrant;
 	public AccessPermission permission;
-	public RegistrantType type;
-
+	public RegistrantType registrantType;
+	public PermissionType permissionType;
+	public boolean mutable;
+	public String source;
+	
 	public RegistrantAccessPermission() {
 	}
+
+	public RegistrantAccessPermission(RegistrantType registrantType) {
+		this.registrantType = registrantType;
+		this.permissionType = PermissionType.EXPLICIT;
+		this.mutable = true;
+	}
 	
-	public RegistrantAccessPermission(String registrant, AccessPermission permission, RegistrantType type) {
+	public RegistrantAccessPermission(String registrant, AccessPermission permission, PermissionType permissionType, RegistrantType registrantType, String source, boolean mutable) {
 		this.registrant = registrant;
 		this.permission = permission;
-		this.type = type;
+		this.permissionType = permissionType;
+		this.registrantType = registrantType;
+		this.source = source;
+		this.mutable = mutable;
+	}
+	
+	public boolean isAdmin() {
+		return PermissionType.ADMINISTRATOR.equals(permissionType);
+	}
+
+	public boolean isOwner() {
+		return PermissionType.OWNER.equals(permissionType);
+	}
+
+	public boolean isMissing() {
+		return PermissionType.MISSING.equals(permissionType);
 	}
 	
 	@Override
 	public int compareTo(RegistrantAccessPermission p) {
-		switch (type) {
+		switch (registrantType) {
 		case REPOSITORY:
 			return StringUtils.compareRepositoryNames(registrant, p.registrant);
 		default:
@@ -54,6 +79,21 @@
 	}
 	
 	@Override
+	public int hashCode() {
+		return registrant.hashCode();
+	}
+	
+	@Override
+	public boolean equals(Object o) {
+		if (o instanceof RegistrantAccessPermission) {
+			RegistrantAccessPermission p = (RegistrantAccessPermission) o;
+			return registrant.equals(p.registrant);
+		}
+		
+		return false;
+	}
+	
+	@Override
 	public String toString() {
 		return permission.asRole(registrant);
 	}

--
Gitblit v1.9.1