KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > fr > jayasoft > ivy > tools > analyser > JarJarDependencyAnalyser


1 package fr.jayasoft.ivy.tools.analyser;
2
3 import java.io.BufferedReader JavaDoc;
4 import java.io.File JavaDoc;
5 import java.io.IOException JavaDoc;
6 import java.io.InputStreamReader JavaDoc;
7 import java.util.Date JavaDoc;
8 import java.util.HashMap JavaDoc;
9 import java.util.Map JavaDoc;
10
11 import fr.jayasoft.ivy.DefaultDependencyDescriptor;
12 import fr.jayasoft.ivy.DefaultModuleDescriptor;
13 import fr.jayasoft.ivy.ModuleDescriptor;
14 import fr.jayasoft.ivy.util.Message;
15
16 public class JarJarDependencyAnalyser implements DependencyAnalyser {
17     private File JavaDoc _jarjarjarLocation;
18     
19     public JarJarDependencyAnalyser(File JavaDoc jarjarjarLocation) {
20         _jarjarjarLocation = jarjarjarLocation;
21     }
22
23
24     public ModuleDescriptor[] analyze(JarModule[] modules) {
25         
26         StringBuffer JavaDoc jarjarCmd = new StringBuffer JavaDoc("java -jar \"").append(_jarjarjarLocation.getAbsolutePath()).append("\" --find --level=jar ");
27         Map JavaDoc jarModulesMap = new HashMap JavaDoc();
28         Map JavaDoc mds = new HashMap JavaDoc();
29
30         for (int i = 0; i < modules.length; i++) {
31             jarModulesMap.put(modules[i].getJar().getAbsolutePath(), modules[i]);
32             DefaultModuleDescriptor md = DefaultModuleDescriptor.newBasicInstance(modules[i].getMrid(), new Date JavaDoc(modules[i].getJar().lastModified()));
33             mds.put(modules[i].getMrid(), md);
34             jarjarCmd.append("\"").append(modules[i].getJar().getAbsolutePath()).append("\"");
35             if (i+1 < modules.length) {
36                 jarjarCmd.append(File.pathSeparator);
37             }
38         }
39         
40         Message.verbose("jarjar command: "+jarjarCmd);
41         
42         try {
43             Process JavaDoc p = Runtime.getRuntime().exec(jarjarCmd.toString());
44             BufferedReader JavaDoc r = new BufferedReader JavaDoc(new InputStreamReader JavaDoc(p.getInputStream()));
45             String JavaDoc line;
46             while ((line = r.readLine()) != null) {
47                 String JavaDoc[] deps = line.split(" -> ");
48                 JarModule module = (JarModule) jarModulesMap.get(deps[0]);
49                 JarModule dependency = (JarModule) jarModulesMap.get(deps[1]);
50                 
51                 if (module.getMrid().getModuleId().equals(dependency.getMrid().getModuleId())) {
52                     continue;
53                 }
54                 Message.verbose(module.getMrid() + " depends on " + dependency.getMrid());
55
56                 DefaultModuleDescriptor md = (DefaultModuleDescriptor) mds.get(module.getMrid());
57                 
58                 DefaultDependencyDescriptor dd = new DefaultDependencyDescriptor(dependency.getMrid(), false);
59                 dd.addDependencyConfiguration(ModuleDescriptor.DEFAULT_CONFIGURATION, ModuleDescriptor.DEFAULT_CONFIGURATION);
60                 md.addDependency(dd);
61             }
62         } catch (IOException JavaDoc e) {
63             // TODO Auto-generated catch block
64
e.printStackTrace();
65         }
66         return (ModuleDescriptor[]) mds.values().toArray(new ModuleDescriptor[mds.values().size()]);
67     }
68
69     
70     public static void main(String JavaDoc[] args) {
71         JarJarDependencyAnalyser a = new JarJarDependencyAnalyser(new File JavaDoc("D:/temp/test2/jarjar-0.7.jar"));
72         a.analyze(new JarModuleFinder("D:/temp/test2/ivyrep/[organisation]/[module]/[revision]/[artifact].[ext]").findJarModules());
73     }
74 }
75
Popular Tags