summaryrefslogtreecommitdiff
path: root/ant/ant14/com/vladium/emma/ant/SuppressableTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'ant/ant14/com/vladium/emma/ant/SuppressableTask.java')
-rw-r--r--ant/ant14/com/vladium/emma/ant/SuppressableTask.java132
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