From 3d293a9d1194bd98beb624f1bb0b047cb4467a93 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 21 Oct 2011 08:32:27 -0400
Subject: [PATCH] Log calculation time of repository sizes. (issue 27)

---
 src/com/gitblit/GitBlit.java                         |   20 ++++++++++++++++----
 src/com/gitblit/wicket/GitBlitWebApp.properties      |    4 +++-
 src/com/gitblit/wicket/pages/EditRepositoryPage.java |    1 +
 src/com/gitblit/models/RepositoryModel.java          |    1 +
 src/com/gitblit/client/EditRepositoryDialog.java     |    6 ++++++
 src/com/gitblit/wicket/pages/EditRepositoryPage.html |    9 +++++----
 6 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index 1727038..50eeb9e 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -470,6 +470,20 @@
 				repositories.add(model);
 			}
 		}
+		if (getBoolean(Keys.web.showRepositorySizes, true)) {
+			int repoCount = 0;
+			long startTime = System.currentTimeMillis();
+			ByteFormat byteFormat = new ByteFormat();
+			for (RepositoryModel model : repositories) {
+				if (!model.skipSizeCalculation) {
+					repoCount++;
+					model.size = byteFormat.format(calculateSize(model));
+				}
+			}
+			long duration = System.currentTimeMillis() - startTime;
+			logger.info(MessageFormat.format("{0} repository sizes calculated in {1} msecs",
+					repoCount, duration));
+		}
 		return repositories;
 	}
 
@@ -523,6 +537,7 @@
 			model.showRemoteBranches = getConfig(config, "showRemoteBranches", false);
 			model.isFrozen = getConfig(config, "isFrozen", false);
 			model.showReadme = getConfig(config, "showReadme", false);
+			model.skipSizeCalculation = getConfig(config, "skipSizeCalculation", false);
 			model.federationStrategy = FederationStrategy.fromName(getConfig(config,
 					"federationStrategy", null));
 			model.federationSets = new ArrayList<String>(Arrays.asList(config.getStringList(
@@ -531,10 +546,6 @@
 			model.origin = config.getString("remote", "origin", "url");
 		}
 		r.close();
-		if (getBoolean(Keys.web.showRepositorySizes, true)) {
-			ByteFormat byteFormat = new ByteFormat();
-			model.size = byteFormat.format(calculateSize(model));			
-		}
 		return model;
 	}
 
@@ -707,6 +718,7 @@
 		config.setBoolean("gitblit", null, "showRemoteBranches", repository.showRemoteBranches);
 		config.setBoolean("gitblit", null, "isFrozen", repository.isFrozen);
 		config.setBoolean("gitblit", null, "showReadme", repository.showReadme);
+		config.setBoolean("gitblit", null, "skipSizeCalculation", repository.skipSizeCalculation);
 		config.setStringList("gitblit", null, "federationSets", repository.federationSets);
 		config.setString("gitblit", null, "federationStrategy",
 				repository.federationStrategy.name());
diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java
index 9fc8e5c..93330cd 100644
--- a/src/com/gitblit/client/EditRepositoryDialog.java
+++ b/src/com/gitblit/client/EditRepositoryDialog.java
@@ -81,6 +81,8 @@
 
 	private JCheckBox showReadme;
 
+	private JCheckBox skipSizeCalculation;
+
 	private JCheckBox isFrozen;
 
 	private JComboBox accessRestriction;
@@ -143,6 +145,8 @@
 				anRepository.showRemoteBranches);
 		showReadme = new JCheckBox(Translation.get("gb.showReadmeDescription"),
 				anRepository.showReadme);
+		skipSizeCalculation = new JCheckBox(Translation.get("gb.skipSizeCalculationDescription"),
+				anRepository.skipSizeCalculation);
 		isFrozen = new JCheckBox(Translation.get("gb.isFrozenDescription"), anRepository.isFrozen);
 
 		accessRestriction = new JComboBox(AccessRestrictionType.values());
@@ -171,6 +175,7 @@
 		fieldsPanel
 				.add(newFieldPanel(Translation.get("gb.showRemoteBranches"), showRemoteBranches));
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.showReadme"), showReadme));
+		fieldsPanel.add(newFieldPanel(Translation.get("gb.skipSizeCalculation"), skipSizeCalculation));
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.isFrozen"), isFrozen));
 
 		usersPalette = new JPalette<String>();
@@ -307,6 +312,7 @@
 		repository.useDocs = useDocs.isSelected();
 		repository.showRemoteBranches = showRemoteBranches.isSelected();
 		repository.showReadme = showReadme.isSelected();
+		repository.skipSizeCalculation = skipSizeCalculation.isSelected();
 		repository.isFrozen = isFrozen.isSelected();
 
 		repository.accessRestriction = (AccessRestrictionType) accessRestriction.getSelectedItem();
diff --git a/src/com/gitblit/models/RepositoryModel.java b/src/com/gitblit/models/RepositoryModel.java
index d70866f..6909f1a 100644
--- a/src/com/gitblit/models/RepositoryModel.java
+++ b/src/com/gitblit/models/RepositoryModel.java
@@ -50,6 +50,7 @@
 	public FederationStrategy federationStrategy;
 	public List<String> federationSets;
 	public boolean isFederated;
+	public boolean skipSizeCalculation;
 	public String frequency;
 	public String origin;
 	public String size;
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.properties b/src/com/gitblit/wicket/GitBlitWebApp.properties
index 109f933..6d713e3 100644
--- a/src/com/gitblit/wicket/GitBlitWebApp.properties
+++ b/src/com/gitblit/wicket/GitBlitWebApp.properties
@@ -158,4 +158,6 @@
 gb.general = general
 gb.settings = settings
 gb.manage = manage
-gb.lastLogin = last login
\ No newline at end of file
+gb.lastLogin = last login
+gb.skipSizeCalculation = skip size calculation
+gb.skipSizeCalculationDescription = do not calculate the repository size
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.html b/src/com/gitblit/wicket/pages/EditRepositoryPage.html
index 7f09f75..cb21687 100644
--- a/src/com/gitblit/wicket/pages/EditRepositoryPage.html
+++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.html
@@ -18,14 +18,15 @@
 				<tr><th><wicket:message key="gb.enableDocs"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useDocs" tabindex="6" /> &nbsp;<i><wicket:message key="gb.useDocsDescription"></wicket:message></i></td></tr>
 				<tr><th><wicket:message key="gb.showRemoteBranches"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="showRemoteBranches" tabindex="7" /> &nbsp;<i><wicket:message key="gb.showRemoteBranchesDescription"></wicket:message></i></td></tr>
 				<tr><th><wicket:message key="gb.showReadme"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="showReadme" tabindex="8" /> &nbsp;<i><wicket:message key="gb.showReadmeDescription"></wicket:message></i></td></tr>
-				<tr><th><wicket:message key="gb.isFrozen"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="isFrozen" tabindex="9" /> &nbsp;<i><wicket:message key="gb.isFrozenDescription"></wicket:message></i></td></tr>
+				<tr><th><wicket:message key="gb.skipSizeCalculation"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="skipSizeCalculation" tabindex="9" /> &nbsp;<i><wicket:message key="gb.skipSizeCalculationDescription"></wicket:message></i></td></tr>
+				<tr><th><wicket:message key="gb.isFrozen"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="isFrozen" tabindex="10" /> &nbsp;<i><wicket:message key="gb.isFrozenDescription"></wicket:message></i></td></tr>
 				<tr><td colspan="2"><hr></hr></td></tr>
-				<tr><th><wicket:message key="gb.accessRestriction"></wicket:message></th><td class="edit"><select class="span6" wicket:id="accessRestriction" tabindex="10" /></td></tr>				
+				<tr><th><wicket:message key="gb.accessRestriction"></wicket:message></th><td class="edit"><select class="span6" wicket:id="accessRestriction" tabindex="11" /></td></tr>				
 				<tr><th style="vertical-align: top;"><wicket:message key="gb.permittedUsers"></wicket:message></th><td style="padding:2px;"><span wicket:id="users"></span></td></tr>
 				<tr><td colspan="2"><hr></hr></td></tr>		
-				<tr><th><wicket:message key="gb.federationStrategy"></wicket:message></th><td class="edit"><select class="span6" wicket:id="federationStrategy" tabindex="11" /></td></tr>
+				<tr><th><wicket:message key="gb.federationStrategy"></wicket:message></th><td class="edit"><select class="span6" wicket:id="federationStrategy" tabindex="12" /></td></tr>
 				<tr><th style="vertical-align: top;"><wicket:message key="gb.federationSets"></wicket:message></th><td style="padding:2px;"><span wicket:id="federationSets"></span></td></tr>
-				<tr><th></th><td class="editButton"><input class="btn" type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="12" /> &nbsp; <input class="btn primary" type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" tabindex="13" /> </td></tr>
+				<tr><th></th><td class="editButton"><input class="btn" type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="13" /> &nbsp; <input class="btn primary" type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" tabindex="14" /> </td></tr>
 			</tbody>
 		</table>
 	</form>	
diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java
index 4212a85..ee79d50 100644
--- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java
+++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java
@@ -212,6 +212,7 @@
 		form.add(new CheckBox("useDocs"));
 		form.add(new CheckBox("showRemoteBranches"));
 		form.add(new CheckBox("showReadme"));
+		form.add(new CheckBox("skipSizeCalculation"));
 		form.add(usersPalette);
 		form.add(federationSetsPalette);
 

--
Gitblit v1.9.1