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; 190b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstockimport com.vladium.emma.report.ReportCfg.Element_LCOV; 20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.ReportCfg.Element_TXT; 21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.ReportCfg.Element_XML; 22f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ---------------------------------------------------------------------------- 24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/** 25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @author Vlad Roubtsov, (C) 2003 26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */ 27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpublic 28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectfinal class reportTask extends FileTask implements IReportProperties, IReportEnums 29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project{ 30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public reportTask (final SuppressableTask parent) 31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project super (parent); 33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void init () throws BuildException 36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project super.init (); 38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportCfg = new ReportCfg (getProject (), this); 40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void execute () throws BuildException 44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (isEnabled ()) 46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final String [] reportTypes = m_reportCfg.getReportTypes (); 48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if ((reportTypes == null) || (reportTypes.length == 0)) // no "txt" default for report processor 50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project throw (BuildException) newBuildException (getTaskName () 51536663200dc497eb27df655d205bfa32f057340bTim Baverstock + ": no report types specified: provide at least one of <txt>, <html>, <lcov>, <xml> nested elements", location).fillInStackTrace (); 52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project String [] files = getDataPath (true); 54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if ((files == null) || (files.length == 0)) 55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project throw (BuildException) newBuildException (getTaskName () 56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project + ": no valid input data files have been specified", location).fillInStackTrace (); 57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final Path srcpath = m_reportCfg.getSourcepath (); 59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // combine report and all generic settings: 61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final IProperties settings; 62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final IProperties taskSettings = getTaskSettings (); 64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final IProperties reportSettings = m_reportCfg.getReportSettings (); 65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // named report settings override generic named settings and file 67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // settings have lower priority than any explicitly named overrides: 68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project settings = IProperties.Factory.combine (reportSettings, taskSettings); 69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final ReportProcessor processor = ReportProcessor.create (); 72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project processor.setDataPath (files); files = null; 74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project processor.setSourcePath (srcpath != null ? srcpath.list () : null); 75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project processor.setReportTypes (reportTypes); 76f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project processor.setPropertyOverrides (settings); 77f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 78f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project processor.run (); 79f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 80f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 81f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 82f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 83f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // sourcepath attribute/element: 84f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 85f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setSourcepath (final Path path) 86f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 87f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportCfg.setSourcepath (path); 88f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 89f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 90f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setSourcepathRef (final Reference ref) 91f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 92f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportCfg.setSourcepathRef (ref); 93f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 94f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 95f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public Path createSourcepath () 96f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 97f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return m_reportCfg.createSourcepath (); 98f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 99f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 100f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 101f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // generator elements: 102f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 103f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public Element_TXT createTxt () 104f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 105f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return m_reportCfg.createTxt (); 106f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 107f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 1080b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock public Element_LCOV createLcov () 1090b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock { 1100b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock return m_reportCfg.createLcov (); 1110b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock } 1120b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock 113f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public Element_HTML createHtml () 114f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 115f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return m_reportCfg.createHtml (); 116f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 117f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 118f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public Element_XML createXml () 119f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 120f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return m_reportCfg.createXml (); 121f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 122f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 123f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 124f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // report properties [defaults for all report types]: 125f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 126f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setUnits (final UnitsTypeAttribute units) 127f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 128f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportCfg.setUnits (units); 129f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 130f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 131f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setDepth (final DepthAttribute depth) 132f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 133f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportCfg.setDepth (depth); 134f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 135f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 136f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setColumns (final String columns) 137f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 138f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportCfg.setColumns (columns); 139f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 140f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 141f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setSort (final String sort) 142f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 143f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportCfg.setSort (sort); 144f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 145f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 146f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setMetrics (final String metrics) 147f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 148f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportCfg.setMetrics (metrics); 149f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 150f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 151f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // not supported anymore: 152f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 153f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// public void setOutdir (final File dir) 154f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// { 155f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// m_reportCfg.setOutdir (dir); 156f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// } 157f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// 158f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// public void setDestdir (final File dir) 159f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// { 160f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// m_reportCfg.setDestdir (dir); 161f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// } 162f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 163f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // should not be set at the global level: 164f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 165f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// public void setOutfile (final String fileName) 166f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// { 167f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// m_reportCfg.setOutfile (fileName); 168f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// } 169f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 170f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setEncoding (final String encoding) 171f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 172f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportCfg.setEncoding (encoding); 173f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 174f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 175f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // protected: ............................................................. 176f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 177f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // package: ............................................................... 178f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 179f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // private: ............................................................... 180f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 181f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 182f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private ReportCfg m_reportCfg; 183f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 184f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // end of class 185536663200dc497eb27df655d205bfa32f057340bTim Baverstock// ---------------------------------------------------------------------------- 186