blob: eb578735edd0f6446e5f4d0a4799b2ef567625dd [file] [log] [blame]
/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
*
* This program and the accompanying materials are made available under
* the terms of the Common Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/cpl-v10.html
*
* $Id: reportTask.java,v 1.1.1.1.2.1 2004/07/08 10:52:11 vlad_r Exp $
*/
package com.vladium.emma.report;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
import com.vladium.util.IProperties;
import com.vladium.emma.ant.FileTask;
import com.vladium.emma.ant.SuppressableTask;
import com.vladium.emma.report.ReportCfg.Element_HTML;
import com.vladium.emma.report.ReportCfg.Element_LCOV;
import com.vladium.emma.report.ReportCfg.Element_TXT;
import com.vladium.emma.report.ReportCfg.Element_XML;
// ----------------------------------------------------------------------------
/**
* @author Vlad Roubtsov, (C) 2003
*/
public
final class reportTask extends FileTask implements IReportProperties, IReportEnums
{
public reportTask (final SuppressableTask parent)
{
super (parent);
}
public void init () throws BuildException
{
super.init ();
m_reportCfg = new ReportCfg (getProject (), this);
}
public void execute () throws BuildException
{
if (isEnabled ())
{
final String [] reportTypes = m_reportCfg.getReportTypes ();
if ((reportTypes == null) || (reportTypes.length == 0)) // no "txt" default for report processor
throw (BuildException) newBuildException (getTaskName ()
+ ": no report types specified: provide at least one of <txt>, <html>, <lcov>, <xml> nested elements", location).fillInStackTrace ();
String [] files = getDataPath (true);
if ((files == null) || (files.length == 0))
throw (BuildException) newBuildException (getTaskName ()
+ ": no valid input data files have been specified", location).fillInStackTrace ();
final Path srcpath = m_reportCfg.getSourcepath ();
// combine report and all generic settings:
final IProperties settings;
{
final IProperties taskSettings = getTaskSettings ();
final IProperties reportSettings = m_reportCfg.getReportSettings ();
// named report settings override generic named settings and file
// settings have lower priority than any explicitly named overrides:
settings = IProperties.Factory.combine (reportSettings, taskSettings);
}
final ReportProcessor processor = ReportProcessor.create ();
processor.setDataPath (files); files = null;
processor.setSourcePath (srcpath != null ? srcpath.list () : null);
processor.setReportTypes (reportTypes);
processor.setPropertyOverrides (settings);
processor.run ();
}
}
// sourcepath attribute/element:
public void setSourcepath (final Path path)
{
m_reportCfg.setSourcepath (path);
}
public void setSourcepathRef (final Reference ref)
{
m_reportCfg.setSourcepathRef (ref);
}
public Path createSourcepath ()
{
return m_reportCfg.createSourcepath ();
}
// generator elements:
public Element_TXT createTxt ()
{
return m_reportCfg.createTxt ();
}
public Element_LCOV createLcov ()
{
return m_reportCfg.createLcov ();
}
public Element_HTML createHtml ()
{
return m_reportCfg.createHtml ();
}
public Element_XML createXml ()
{
return m_reportCfg.createXml ();
}
// report properties [defaults for all report types]:
public void setUnits (final UnitsTypeAttribute units)
{
m_reportCfg.setUnits (units);
}
public void setDepth (final DepthAttribute depth)
{
m_reportCfg.setDepth (depth);
}
public void setColumns (final String columns)
{
m_reportCfg.setColumns (columns);
}
public void setSort (final String sort)
{
m_reportCfg.setSort (sort);
}
public void setMetrics (final String metrics)
{
m_reportCfg.setMetrics (metrics);
}
// not supported anymore:
// public void setOutdir (final File dir)
// {
// m_reportCfg.setOutdir (dir);
// }
//
// public void setDestdir (final File dir)
// {
// m_reportCfg.setDestdir (dir);
// }
// should not be set at the global level:
// public void setOutfile (final String fileName)
// {
// m_reportCfg.setOutfile (fileName);
// }
public void setEncoding (final String encoding)
{
m_reportCfg.setEncoding (encoding);
}
// protected: .............................................................
// package: ...............................................................
// private: ...............................................................
private ReportCfg m_reportCfg;
} // end of class
// ----------------------------------------------------------------------------