reportTask.java revision f6fe897e173f4e4bda72a7dddb091b667066764a
1f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
2f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
3f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * This program and the accompanying materials are made available under
4f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * the terms of the Common Public License v1.0 which accompanies this distribution,
5f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * and is available at http://www.eclipse.org/legal/cpl-v10.html
6f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
7f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * $Id: reportTask.java,v 1.1.1.1.2.1 2004/07/08 10:52:11 vlad_r Exp $
8f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
9f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpackage com.vladium.emma.report;
10f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
11f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.BuildException;
12f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.types.Path;
13f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.types.Reference;
14f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
15f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.util.IProperties;
16f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.ant.FileTask;
17f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.ant.SuppressableTask;
18f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.ReportCfg.Element_HTML;
19f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.ReportCfg.Element_TXT;
20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.ReportCfg.Element_XML;
21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
22f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------
23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/**
24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @author Vlad Roubtsov, (C) 2003
25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpublic
27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectfinal class reportTask extends FileTask implements IReportProperties, IReportEnums
28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project{
29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public reportTask (final SuppressableTask parent)
30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        super (parent);
32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void init () throws BuildException
35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        super.init ();
37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg = new ReportCfg (getProject (), this);
39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void execute () throws BuildException
43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (isEnabled ())
45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        {
46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            final String [] reportTypes = m_reportCfg.getReportTypes ();
47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            if ((reportTypes == null) || (reportTypes.length == 0)) // no "txt" default for report processor
49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                throw (BuildException) newBuildException (getTaskName ()
50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    + ": no report types specified: provide at least one of <txt>, <html>, <xml> nested elements", location).fillInStackTrace ();
51f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            String [] files = getDataPath (true);
53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            if ((files == null) || (files.length == 0))
54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                throw (BuildException) newBuildException (getTaskName ()
55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    + ": no valid input data files have been specified", location).fillInStackTrace ();
56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            final Path srcpath = m_reportCfg.getSourcepath ();
58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // combine report and all generic settings:
60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            final IProperties settings;
61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            {
62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                final IProperties taskSettings = getTaskSettings ();
63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                final IProperties reportSettings = m_reportCfg.getReportSettings ();
64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                // named report settings override generic named settings and file
66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                // settings have lower priority than any explicitly named overrides:
67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                settings = IProperties.Factory.combine (reportSettings, taskSettings);
68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            }
69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            final ReportProcessor processor = ReportProcessor.create ();
71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            processor.setDataPath (files); files = null;
73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            processor.setSourcePath (srcpath != null ? srcpath.list () : null);
74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            processor.setReportTypes (reportTypes);
75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            processor.setPropertyOverrides (settings);
76f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
77f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            processor.run ();
78f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        }
79f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
80f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
81f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
82f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // sourcepath attribute/element:
83f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
84f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setSourcepath (final Path path)
85f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
86f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setSourcepath (path);
87f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
88f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
89f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setSourcepathRef (final Reference ref)
90f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
91f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setSourcepathRef (ref);
92f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
93f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
94f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public Path createSourcepath ()
95f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
96f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_reportCfg.createSourcepath ();
97f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
98f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
99f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
100f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // generator elements:
101f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
102f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public Element_TXT createTxt ()
103f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
104f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_reportCfg.createTxt ();
105f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
106f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
107f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public Element_HTML createHtml ()
108f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
109f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_reportCfg.createHtml ();
110f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
111f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
112f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public Element_XML createXml ()
113f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
114f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_reportCfg.createXml ();
115f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
116f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
117f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
118f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // report properties [defaults for all report types]:
119f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
120f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setUnits (final UnitsTypeAttribute units)
121f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
122f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setUnits (units);
123f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
124f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
125f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setDepth (final DepthAttribute depth)
126f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
127f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setDepth (depth);
128f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
129f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
130f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setColumns (final String columns)
131f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
132f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setColumns (columns);
133f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
134f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
135f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setSort (final String sort)
136f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
137f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setSort (sort);
138f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
139f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
140f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setMetrics (final String metrics)
141f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
142f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setMetrics (metrics);
143f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
144f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
145f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // not supported anymore:
146f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
147f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    public void setOutdir (final File dir)
148f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    {
149f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        m_reportCfg.setOutdir (dir);
150f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    }
151f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//
152f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    public void setDestdir (final File dir)
153f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    {
154f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        m_reportCfg.setDestdir (dir);
155f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    }
156f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
157f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // should not be set at the global level:
158f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
159f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    public void setOutfile (final String fileName)
160f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    {
161f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        m_reportCfg.setOutfile (fileName);
162f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    }
163f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
164f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setEncoding (final String encoding)
165f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
166f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setEncoding (encoding);
167f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
168f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
169f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // protected: .............................................................
170f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
171f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // package: ...............................................................
172f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
173f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // private: ...............................................................
174f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
175f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
176f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private ReportCfg m_reportCfg;
177f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
178f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // end of class
179f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------