1 //////////////////////////////////////////////////////////////////////////////
2 // Clirr: compares two versions of a java library for binary compatibility
3 // Copyright (C) 2003 - 2005 Lars Kühne
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 //////////////////////////////////////////////////////////////////////////////
19
20 package net.sf.clirr.ant;
21
22 import java.util.HashMap;
23 import java.util.Map;
24
25 import net.sf.clirr.core.DiffListenerAdapter;
26 import net.sf.clirr.core.Severity;
27 import net.sf.clirr.core.MessageTranslator;
28 import net.sf.clirr.core.ApiDifference;
29 import org.apache.tools.ant.Project;
30 import org.apache.tools.ant.Task;
31
32 final class AntLogger extends DiffListenerAdapter
33 {
34 private Task task;
35
36 private MessageTranslator translator = new MessageTranslator();
37
38 private Map severityPrioMap = new HashMap(3);
39
40 AntLogger(Task task)
41 {
42 this.task = task;
43 severityPrioMap.put(Severity.INFO, new Integer(Project.MSG_INFO));
44 severityPrioMap.put(Severity.WARNING, new Integer(Project.MSG_WARN));
45 severityPrioMap.put(Severity.ERROR, new Integer(Project.MSG_ERR));
46 }
47
48 public void reportDiff(ApiDifference difference)
49 {
50 final Severity severity = difference.getMaximumSeverity();
51 final Integer prio = (Integer) severityPrioMap.get(severity);
52 task.log(
53 severity.toString() + ": " + difference.getAffectedClass()
54 + ": " + difference.getReport(translator),
55 prio.intValue());
56 }
57 }