From c3f4f124f1b9e45d7696f3c16f958d1c81ff280a Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 21 Apr 2011 21:46:47 -0400
Subject: [PATCH] Use markdown for welcome message.  Simplify login page appearance.

---
 src/com/gitblit/utils/JGitUtils.java |   62 +++++++++++++++++++++++-------
 1 files changed, 47 insertions(+), 15 deletions(-)

diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java
index daeb638..cd3e6ef 100644
--- a/src/com/gitblit/utils/JGitUtils.java
+++ b/src/com/gitblit/utils/JGitUtils.java
@@ -15,6 +15,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.eclipse.jgit.diff.DiffEntry;
 import org.eclipse.jgit.diff.DiffFormatter;
@@ -326,19 +327,43 @@
 		return list;
 	}
 
-	public static String getCommitDiff(Repository r, RevCommit commit, boolean outputHtml) {
-		return getCommitDiff(r, null, commit, null, outputHtml);
+	public static Map<ChangeType, AtomicInteger> getChangedPathsStats(List<PathChangeModel> paths) {
+		Map<ChangeType, AtomicInteger> stats = new HashMap<ChangeType, AtomicInteger>();
+		for (PathChangeModel path : paths) {
+			if (!stats.containsKey(path.changeType)) {
+				stats.put(path.changeType, new AtomicInteger(0));
+			}
+			stats.get(path.changeType).incrementAndGet();
+		}
+		return stats;
 	}
 
-	public static String getCommitDiff(Repository r, RevCommit commit, String path, boolean outputHtml) {
-		return getCommitDiff(r, null, commit, path, outputHtml);
+	public static enum DiffOutputType {
+		PLAIN, GITWEB, GITBLIT;
+
+		public static DiffOutputType forName(String name) {
+			for (DiffOutputType type : values()) {
+				if (type.name().equalsIgnoreCase(name)) {
+					return type;
+				}
+			}
+			return null;
+		}
 	}
 
-	public static String getCommitDiff(Repository r, RevCommit baseCommit, RevCommit commit, boolean outputHtml) {
-		return getCommitDiff(r, baseCommit, commit, null, outputHtml);
+	public static String getCommitDiff(Repository r, RevCommit commit, DiffOutputType outputType) {
+		return getCommitDiff(r, null, commit, null, outputType);
 	}
 
-	public static String getCommitDiff(Repository r, RevCommit baseCommit, RevCommit commit, String path, boolean outputHtml) {
+	public static String getCommitDiff(Repository r, RevCommit commit, String path, DiffOutputType outputType) {
+		return getCommitDiff(r, null, commit, path, outputType);
+	}
+
+	public static String getCommitDiff(Repository r, RevCommit baseCommit, RevCommit commit, DiffOutputType outputType) {
+		return getCommitDiff(r, baseCommit, commit, null, outputType);
+	}
+
+	public static String getCommitDiff(Repository r, RevCommit baseCommit, RevCommit commit, String path, DiffOutputType outputType) {
 		try {
 			RevTree baseTree;
 			if (baseCommit == null) {
@@ -362,10 +387,17 @@
 			final ByteArrayOutputStream os = new ByteArrayOutputStream();
 			RawTextComparator cmp = RawTextComparator.DEFAULT;
 			DiffFormatter df;
-			if (outputHtml) {
-				df = new HtmlDiffFormatter(os);
-			} else {
+			switch (outputType) {
+			case GITWEB:
+				df = new GitWebDiffFormatter(os);
+				break;
+			case GITBLIT:
+				df = new GitBlitDiffFormatter(os);
+				break;
+			case PLAIN:
+			default:
 				df = new DiffFormatter(os);
+				break;
 			}
 			df.setRepository(r);
 			df.setDiffComparator(cmp);
@@ -382,9 +414,9 @@
 				df.format(diffs);
 			}
 			String diff;
-			if (outputHtml) {
+			if (df instanceof GitWebDiffFormatter) {
 				// workaround for complex private methods in DiffFormatter
-				diff = ((HtmlDiffFormatter) df).getHtml();
+				diff = ((GitWebDiffFormatter) df).getHtml();
 			} else {
 				diff = os.toString();
 			}
@@ -750,21 +782,21 @@
 				df = new SimpleDateFormat("yyyy-MM");
 			}
 			walk.markStart(lastCommit);
-			
+
 			Iterable<RevCommit> revlog = walk;
 			for (RevCommit rev : revlog) {
 				Date d = getCommitDate(rev);
 				String p = df.format(d);
 				if (!metricMap.containsKey(p))
 					metricMap.put(p, new Metric(p));
-				Metric m = metricMap.get(p); 
+				Metric m = metricMap.get(p);
 				m.count++;
 				total.count++;
 				if (tagMap.containsKey(rev.getId())) {
 					m.tag++;
 					total.tag++;
 				}
-			}			
+			}
 		} catch (Throwable t) {
 			LOGGER.error("Failed to mine log history for metrics", t);
 		}

--
Gitblit v1.9.1