diff options
Diffstat (limited to 'ant/ant14/com/vladium/emma/ant/SuppressableTask.java')
-rw-r--r-- | ant/ant14/com/vladium/emma/ant/SuppressableTask.java | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/ant/ant14/com/vladium/emma/ant/SuppressableTask.java b/ant/ant14/com/vladium/emma/ant/SuppressableTask.java new file mode 100644 index 0000000..ff90e58 --- /dev/null +++ b/ant/ant14/com/vladium/emma/ant/SuppressableTask.java @@ -0,0 +1,132 @@ +/* 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: SuppressableTask.java,v 1.1.1.1.2.2 2004/07/16 23:32:04 vlad_r Exp $ + */ +package com.vladium.emma.ant; + +import java.io.File; + +import com.vladium.emma.IAppConstants; +import com.vladium.util.IProperties; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Location; +import org.apache.tools.ant.Task; + +// ---------------------------------------------------------------------------- +/** + * @author Vlad Roubtsov, (C) 2003 + */ +public +abstract class SuppressableTask extends Task +{ + // public: ................................................................ + + + public void init () throws BuildException + { + super.init (); + + m_verbosityCfg = new VerbosityCfg (); + m_genericCfg = new GenericCfg (this); + } + + /** + * Set the optional 'enabled' attribute [defaults to 'true']. + */ + public final void setEnabled (final boolean enabled) + { + m_enabled = enabled; + } + + public final boolean isEnabled () + { + return m_enabled; + } + + // verbosity attribute: + + public void setVerbosity (final VerbosityCfg.VerbosityAttribute verbosity) + { + m_verbosityCfg.setVerbosity (verbosity); + } + + // verbosity class filter attribute: + + public void setVerbosityfilter (final String filter) + { + m_verbosityCfg.setVerbosityfilter (filter); + } + + // .properties file attribute: + + public final void setProperties (final File file) + { + m_genericCfg.setProperties (file); + } + + // generic property element: + + public final PropertyElement createProperty () + { + return m_genericCfg.createProperty (); + } + + + public static BuildException newBuildException (final String msg, final Location location) + { + final String prefixedMsg = ((msg == null) || (msg.length () == 0)) + ? msg + : IAppConstants.APP_THROWABLE_BUILD_ID + " " + msg; + + return new BuildException (prefixedMsg, location); + } + + public static BuildException newBuildException (final String msg, final Throwable cause, final Location location) + { + final String prefixedMsg = ((msg == null) || (msg.length () == 0)) + ? msg + : IAppConstants.APP_THROWABLE_BUILD_ID + " " + msg; + + return new BuildException (prefixedMsg, cause, location); + } + + // protected: ............................................................. + + + protected SuppressableTask () + { + m_enabled = true; // by default, all tasks are enabled + } + + protected IProperties getTaskSettings () + { + // (1) by default, generic settings are always more specific than any file settings + + // (2) verbosity settings use dedicated attributes and hence are more specific + // than anything generic + + final IProperties fileSettings = m_genericCfg.getFileSettings (); + final IProperties genericSettings = m_genericCfg.getGenericSettings (); + final IProperties verbositySettings = m_verbosityCfg.getSettings (); + + return IProperties.Factory.combine (verbositySettings, + IProperties.Factory.combine (genericSettings, + fileSettings)); + } + + // package: ............................................................... + + // private: ............................................................... + + + private /*final*/ VerbosityCfg m_verbosityCfg; + private /*final*/ GenericCfg m_genericCfg; + private boolean m_enabled; + +} // end of class +// ----------------------------------------------------------------------------
\ No newline at end of file |