From 22b181154c11cb250a2f7ad9eb7820a462cf3079 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 01 Oct 2012 22:29:42 -0400
Subject: [PATCH] Method to generate fork network graph

---
 src/com/gitblit/build/Build.java |   41 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/src/com/gitblit/build/Build.java b/src/com/gitblit/build/Build.java
index 4134441..5788b25 100644
--- a/src/com/gitblit/build/Build.java
+++ b/src/com/gitblit/build/Build.java
@@ -20,6 +20,7 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileWriter;
+import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.RandomAccessFile;
@@ -92,6 +93,7 @@
 		downloadFromApache(MavenObject.LUCENE, BuildType.RUNTIME);
 		downloadFromApache(MavenObject.LUCENE_HIGHLIGHTER, BuildType.RUNTIME);
 		downloadFromApache(MavenObject.LUCENE_MEMORY, BuildType.RUNTIME);
+		downloadFromApache(MavenObject.LUCENE_QUERIES, BuildType.RUNTIME);
 		downloadFromApache(MavenObject.JAKARTA_REGEXP, BuildType.RUNTIME);
 		downloadFromApache(MavenObject.UNBOUND_ID, BuildType.RUNTIME);
 		downloadFromApache(MavenObject.IVY, BuildType.RUNTIME);
@@ -126,6 +128,7 @@
 		downloadFromApache(MavenObject.LUCENE, BuildType.COMPILETIME);
 		downloadFromApache(MavenObject.LUCENE_HIGHLIGHTER, BuildType.COMPILETIME);
 		downloadFromApache(MavenObject.LUCENE_MEMORY, BuildType.COMPILETIME);
+		downloadFromApache(MavenObject.LUCENE_QUERIES, BuildType.COMPILETIME);
 		downloadFromApache(MavenObject.JAKARTA_REGEXP, BuildType.COMPILETIME);
 		downloadFromApache(MavenObject.UNBOUND_ID, BuildType.COMPILETIME);
 		downloadFromApache(MavenObject.IVY, BuildType.COMPILETIME);
@@ -149,6 +152,7 @@
 		downloadFromApache(MavenObject.LUCENE, BuildType.RUNTIME);
 		downloadFromApache(MavenObject.LUCENE_HIGHLIGHTER, BuildType.RUNTIME);
 		downloadFromApache(MavenObject.LUCENE_MEMORY, BuildType.RUNTIME);
+		downloadFromApache(MavenObject.LUCENE_QUERIES, BuildType.RUNTIME);
 		downloadFromApache(MavenObject.JAKARTA_REGEXP, BuildType.RUNTIME);
 
 		downloadFromEclipse(MavenObject.JGIT, BuildType.RUNTIME);
@@ -376,6 +380,7 @@
 			
 			if (targetFile.exists()) {
 				downloads.add(targetFile);
+				removeObsoleteArtifacts(mo, type, targetFile.getParentFile());
 				continue;
 			}
 			String expectedSHA1 = mo.getSHA1(jar);
@@ -451,8 +456,40 @@
 				throw new RuntimeException("Error writing to file " + targetFile, e);
 			}
 			downloads.add(targetFile);
+			
+			removeObsoleteArtifacts(mo, type, targetFile.getParentFile());
 		}
 		return downloads;
+	}
+	
+	private static void removeObsoleteArtifacts(final MavenObject mo, final BuildType type, File folder) {
+		File [] removals = folder.listFiles(new FilenameFilter() {
+			@Override
+			public boolean accept(File dir, String name) {
+				String n = name.toLowerCase();
+				String dep = mo.artifact.toLowerCase();
+				if (n.startsWith(dep)) {
+					String suffix = "-" + mo.version;
+					if (type.equals(BuildType.COMPILETIME)) {
+						suffix += "-sources.jar";
+					} else {
+						suffix += ".jar";
+					}
+					if (!n.endsWith(suffix)) {
+						return true;
+					}
+				}
+				return false;
+			}
+		});
+		
+		// delete any matches
+		if (removals != null) {
+			for (File file : removals) {
+				System.out.println("deleting " + file);
+				file.delete();
+			}
+		}
 	}
 
 	private static void updateDownload(float progress, File file) {
@@ -620,6 +657,10 @@
 				"3.6.1", 30000, 23000, 0, "8c7ca5572edea50973dc0d26cf75c27047eebe7e",
 				"2e291e96d25132e002b1c8240e361d1272d113e1", "");
 
+		public static final MavenObject LUCENE_QUERIES = new MavenObject("lucene queries", "org/apache/lucene", "lucene-queries",
+				"3.6.1", 47400, 48600, 0, "4ed6022dd4aa80b932a1546e7e39e3b8bbe7acb7",
+				"dc425c75d988e4975d314772035a46b6a17dcc8d", "");
+
 		public static final MavenObject JAKARTA_REGEXP = new MavenObject("jakarta regexp", "jakarta-regexp", "jakarta-regexp",
 				"1.4", 28500, 0, 0, "0ea514a179ac1dd7e81c7e6594468b9b9910d298",
 				null, "");

--
Gitblit v1.9.1