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