[jboss-svn-commits] JBL Code SVN: r6032 - labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 30 14:54:10 EDT 2006


Author: wrzep
Date: 2006-08-30 14:54:05 -0400 (Wed, 30 Aug 2006)
New Revision: 6032

Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesEvaluator.java
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesPlugin.java
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesTotalPlugin.java
Log:
JBLAB-751 (Improve performance of CodeLinesPlugin)
Finding revision that is the oldest valid revision - rough
implementation.
-Pawel


Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesEvaluator.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesEvaluator.java	2006-08-30 18:35:16 UTC (rev 6031)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesEvaluator.java	2006-08-30 18:54:05 UTC (rev 6032)
@@ -27,6 +27,7 @@
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.HashMap;
 
@@ -87,10 +88,8 @@
 			return 0;
 		}
 			
-		SVNRevision fromRev = SVNRevision.create(0);
-										  //TODO Here we should know
-										  // first revision for given url.
-										  // 0 doest NOT stand for it :(
+		SVNRevision fromRev = getFirstRevision(repository);
+										
 		long ret = 0;
 		
 		try {
@@ -102,6 +101,48 @@
         return ret;
 	}
 
+	private static SVNRevision getFirstRevision(SVNRepository repository) {
+		
+		long left = 0;
+		long right;
+		
+		try {
+			right = repository.getLatestRevision();
+		} catch (SVNException e1) {
+			e1.printStackTrace();
+			return null;
+		}
+		long mid;
+		
+	    while (left <= right) {
+	    	
+	    	System.out.println("l: " + left + " r: " + right);
+	    	
+	    	mid = Math.round(Math.floor((left+right)/2));
+	    
+	    	if (isValidRevision(repository, mid)) {
+	    		right = mid - 1;
+	    	} else {
+	    		left = mid;
+	    	}
+	    }
+		
+	    return SVNRevision.create(left);		
+	}
+
+	private static boolean isValidRevision(SVNRepository repository,
+												long rev) {
+		
+		try {
+			repository.getDir(".", rev, false, new HashSet());
+		} catch (SVNException e) {
+			System.out.println(rev + " is NOT valid revision (" + e.getMessage() + ")");
+			return false;
+		}
+		
+		return true;
+	}
+
 	/**
 	 * Evaluates number of code lines in files located in anonymus SVN repository.
 	 * 

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesPlugin.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesPlugin.java	2006-08-30 18:35:16 UTC (rev 6031)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesPlugin.java	2006-08-30 18:54:05 UTC (rev 6032)
@@ -57,6 +57,8 @@
 	@Override
 	public long getValue(String projectId) {
 		
+		projectId = "shotoku"; //DBG
+		
 		if (!cachedValues.containsKey(projectId)) {
 			
 			long cl = 0;

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesTotalPlugin.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesTotalPlugin.java	2006-08-30 18:35:16 UTC (rev 6031)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesTotalPlugin.java	2006-08-30 18:54:05 UTC (rev 6032)
@@ -36,12 +36,12 @@
 			return CodeLinesEvaluator.getCodeLinesNumber(url, userName, password);
 		}
 	
-		long ret = CodeLinesEvaluator.getCodeLinesNumber(url);
+		//long ret = CodeLinesEvaluator.getCodeLinesNumber(url);
 	
-		//long ret0 = CodeLinesEvaluator.getCodeLinesNumberFast(url);
-		//System.out.println("clt: " + ret + " " + ret0);
+		long ret0 = CodeLinesEvaluator.getCodeLinesNumberFast(url);
+		System.out.println("CodeLinesTotal (URL: " + url + ")" + ": " + ret0);
 		
-		return ret;
+		return ret0;
 	}
 	
 }




More information about the jboss-svn-commits mailing list