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// ----------------------------------------------------------------------------