summaryrefslogtreecommitdiff
path: root/ant/ant14/com/vladium/emma/report/reportTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'ant/ant14/com/vladium/emma/report/reportTask.java')
-rw-r--r--ant/ant14/com/vladium/emma/report/reportTask.java179
1 files changed, 179 insertions, 0 deletions
diff --git a/ant/ant14/com/vladium/emma/report/reportTask.java b/ant/ant14/com/vladium/emma/report/reportTask.java
new file mode 100644
index 0000000..b726753
--- /dev/null
+++ b/ant/ant14/com/vladium/emma/report/reportTask.java
@@ -0,0 +1,179 @@
+/* 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_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>, <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_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
+// ---------------------------------------------------------------------------- \ No newline at end of file