KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > uk > ac > roe > antigen > ant > TaskTreeCalcuator


1 /*
2  * Created on 19-Nov-2004
3  *
4  * TODO To change the template for this generated file go to
5  * Window - Preferences - Java - Code Style - Code Templates
6  */

7 package uk.ac.roe.antigen.ant;
8
9 import java.util.logging.Level JavaDoc;
10 import java.util.logging.Logger JavaDoc;
11
12 import java.util.ArrayList JavaDoc;
13 import java.util.Arrays JavaDoc;
14 import java.util.Enumeration JavaDoc;
15 import java.util.HashMap JavaDoc;
16 import java.util.HashSet JavaDoc;
17 import java.util.Hashtable JavaDoc;
18 import java.util.Iterator JavaDoc;
19 import java.util.List JavaDoc;
20 import java.util.Map JavaDoc;
21 import java.util.Set JavaDoc;
22
23 import org.apache.tools.ant.Project;
24 import org.apache.tools.ant.Target;
25 import org.apache.tools.ant.Task;
26
27 /**
28  * Given a starting target, traverse the tree
29  * and work out the total number of tasks and targets to be run
30  * @author jdt
31  */

32 public class TaskTreeCalcuator {
33     /**
34      * Logger for this class
35      */

36     private static final Logger JavaDoc logger = Logger.getLogger(TaskTreeCalcuator.class.getName());
37
38
39     Map JavaDoc namesToTargets = new HashMap JavaDoc();
40     private Hashtable JavaDoc targets;
41     public TaskTreeCalcuator(Project project) {
42         targets = project.getTargets();
43     }
44     
45     public Set JavaDoc getUniqueDependencies(final Target root) {
46         //System.out.println("starting with "+root.getName());
47
Enumeration JavaDoc dependencies = root.getDependencies();
48         Set JavaDoc totalDependencies = new HashSet JavaDoc();
49         while (dependencies.hasMoreElements()) {
50           String JavaDoc dependencyName = (String JavaDoc) dependencies.nextElement();
51           Target dependency = (Target) targets.get(dependencyName);
52           totalDependencies.add(dependency);
53           totalDependencies.addAll(getUniqueDependencies(dependency));
54         }
55         return totalDependencies;
56     }
57     
58     public int getNumberOfTargetsToRun(final Target root) {
59         return getUniqueDependencies(root).size()+1;//include root itself
60
}
61     
62     public List JavaDoc getTasksToRun(final Target root) {
63       Set JavaDoc targets = getUniqueDependencies(root);
64       Iterator JavaDoc it = targets.iterator();
65       List JavaDoc allTasks = new ArrayList JavaDoc();
66       allTasks.addAll(Arrays.asList(root.getTasks()));
67       while (it.hasNext()) {
68         // System.out.println(target1.getClass());
69
Target target = (Target) it.next();
70          Task[] tasks = target.getTasks();
71         logger.fine("getTasksToRun(Target) - target " + target.getName()
72                 + " has " + tasks.length + " tasks");
73          allTasks.addAll(Arrays.asList(tasks));
74       }
75       return allTasks;
76     }
77     
78     public int getNumberOfTasksToRun(final Target root) {
79       return getTasksToRun(root).size();
80     }
81
82     /**
83      * @param defaultTargetName
84      * @return
85      */

86     public int getNumberOfTasksToRun(String JavaDoc defaultTargetName) {
87         Target target = (Target) targets.get(defaultTargetName);
88         return getNumberOfTasksToRun(target);
89     }
90 }
91
Popular Tags