1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package nl.toolforge.karma.core.cmd.util;
20
21 import nl.toolforge.karma.core.cmd.Command;
22 import nl.toolforge.karma.core.cmd.event.MessageEvent;
23 import nl.toolforge.karma.core.cmd.event.SimpleMessage;
24 import org.apache.tools.ant.BuildEvent;
25 import org.apache.tools.ant.DefaultLogger;
26
27 import java.util.HashSet;
28 import java.util.Iterator;
29 import java.util.Set;
30
31 /***
32 * @author D.A. Smedes
33 * @version $Id: AntLogger.java,v 1.7 2004/11/10 23:53:09 asmedes Exp $
34 */
35 public class AntLogger extends DefaultLogger {
36
37 public static final int LEFT_COLUMN_SIZE = 16;
38
39
40
41 private static Set messagePrefixes = null;
42
43
44
45 private static Set taskNames = null;
46
47 private Command command = null;
48
49 static {
50
51 messagePrefixes = new HashSet();
52
53
54
55 messagePrefixes.add("Compiling");
56
57 taskNames = new HashSet();
58 taskNames.add("javadoc");
59 taskNames.add("javac");
60 }
61
62 public AntLogger(Command command) {
63 this.command = command;
64 }
65
66 private boolean map(BuildEvent event) {
67 if (event.getTask() != null) {
68 if (taskNames.contains(event.getTask().getTaskName())) {
69 return true;
70 }
71 }
72
73 for (Iterator i = messagePrefixes.iterator(); i.hasNext();) {
74 if (event.getMessage().startsWith((String) i.next())) {
75 return true;
76 }
77 }
78 return false;
79 }
80
81 /***
82 * Filters out very specific ant event messages and prints them. Very specific. Not all of the stuff that you
83 * normally get.
84 *
85 * @param event
86 */
87 public void messageLogged(BuildEvent event) {
88
89 int priority = event.getPriority();
90
91 if (priority <= msgOutputLevel) {
92 if (map(event)) {
93 command.getCommandResponse().addEvent(new MessageEvent(command, new SimpleMessage(event.getMessage())));
94 }
95 }
96 }
97
98 /***
99 * Overridden version.
100 *
101 * @param event
102 */
103 public void targetStarted(BuildEvent event) {}
104
105 }