From 831469ba89ea8bca3bfbd1d662dbdd2c9f233798 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 12 Sep 2011 15:37:55 -0400
Subject: [PATCH] Largely completed, uber-cool federation feature.

---
 src/com/gitblit/Constants.java |   97 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 94 insertions(+), 3 deletions(-)

diff --git a/src/com/gitblit/Constants.java b/src/com/gitblit/Constants.java
index 4d9a87c..a58242b 100644
--- a/src/com/gitblit/Constants.java
+++ b/src/com/gitblit/Constants.java
@@ -41,6 +41,8 @@
 
 	public static final String ADMIN_ROLE = "#admin";
 
+	public static final String NOT_FEDERATED_ROLE = "#notfederated";
+
 	public static final String PROPERTIES_FILE = "gitblit.properties";
 
 	public static final String GIT_PATH = "/git/";
@@ -49,10 +51,20 @@
 
 	public static final String SYNDICATION_PATH = "/feed/";
 
+	public static final String FEDERATION_PATH = "/federation/";
+
 	public static final String BORDER = "***********************************************************";
 
+	public static final String FEDERATION_USER = "$gitblit";
+
+	public static final String PROPOSAL_EXT = ".json";
+
+	public static String getGitBlitVersion() {
+		return NAME + " v" + VERSION;
+	}
+
 	/**
-	 * Enumeration representing the 4 access restriction levels.
+	 * Enumeration representing the four access restriction levels.
 	 */
 	public static enum AccessRestrictionType {
 		NONE, PUSH, CLONE, VIEW;
@@ -79,7 +91,86 @@
 		}
 	}
 
-	public static String getGitBlitVersion() {
-		return NAME + " v" + VERSION;
+	/**
+	 * Enumeration representing the types of federation tokens.
+	 */
+	public static enum FederationToken {
+		ALL, USERS_AND_REPOSITORIES, REPOSITORIES;
+
+		public static FederationToken fromName(String name) {
+			for (FederationToken type : values()) {
+				if (type.name().equalsIgnoreCase(name)) {
+					return type;
+				}
+			}
+			return REPOSITORIES;
+		}
+
+		public String toString() {
+			return name();
+		}
 	}
+
+	/**
+	 * Enumeration representing the types of federation requests.
+	 */
+	public static enum FederationRequest {
+		PROPOSAL, PULL_REPOSITORIES, PULL_USERS, PULL_SETTINGS, STATUS;
+
+		public static FederationRequest fromName(String name) {
+			for (FederationRequest type : values()) {
+				if (type.name().equalsIgnoreCase(name)) {
+					return type;
+				}
+			}
+			return PULL_REPOSITORIES;
+		}
+
+		public String toString() {
+			return name();
+		}
+	}
+
+	/**
+	 * Enumeration representing the statii of federation requests.
+	 */
+	public static enum FederationPullStatus {
+		PENDING, FAILED, SKIPPED, PULLED, EXCLUDED;
+
+		public static FederationPullStatus fromName(String name) {
+			for (FederationPullStatus type : values()) {
+				if (type.name().equalsIgnoreCase(name)) {
+					return type;
+				}
+			}
+			return PENDING;
+		}
+
+		@Override
+		public String toString() {
+			return name();
+		}
+	}
+	
+	/**
+	 * Enumeration representing the federation types.
+	 */
+	public static enum FederationStrategy {
+		EXCLUDE, FEDERATE_THIS, FEDERATE_ORIGIN;
+
+		public static FederationStrategy fromName(String name) {
+			for (FederationStrategy type : values()) {
+				if (type.name().equalsIgnoreCase(name)) {
+					return type;
+				}
+			}
+			return FEDERATE_THIS;
+		}
+
+		@Override
+		public String toString() {
+			return name();
+		}
+	}
+
 }

--
Gitblit v1.9.1