1f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
2f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
3f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * This program and the accompanying materials are made available under
4f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * the terms of the Common Public License v1.0 which accompanies this distribution,
5f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * and is available at http://www.eclipse.org/legal/cpl-v10.html
6f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
7f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * $Id: SuppressableTask.java,v 1.1.1.1.2.2 2004/07/16 23:32:04 vlad_r Exp $
8f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
9f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpackage com.vladium.emma.ant;
10f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
11f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.io.File;
12f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
13f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.IAppConstants;
14f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.util.IProperties;
15f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
16f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.BuildException;
17f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.Location;
18f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.Task;
19f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------
21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/**
22f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @author Vlad Roubtsov, (C) 2003
23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpublic
25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectabstract class SuppressableTask extends Task
26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project{
27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // public: ................................................................
28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void init () throws BuildException
31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        super.init ();
33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_verbosityCfg = new VerbosityCfg ();
35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_genericCfg = new GenericCfg (this);
36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    /**
39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     * Set the optional 'enabled' attribute [defaults to 'true'].
40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     */
41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setEnabled (final boolean enabled)
42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_enabled = enabled;
44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final boolean isEnabled ()
47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_enabled;
49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
51f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // verbosity attribute:
52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setVerbosity (final VerbosityCfg.VerbosityAttribute verbosity)
54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_verbosityCfg.setVerbosity (verbosity);
56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // verbosity class filter attribute:
59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setVerbosityfilter (final String filter)
61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_verbosityCfg.setVerbosityfilter (filter);
63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // .properties file attribute:
66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setProperties (final File file)
68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_genericCfg.setProperties (file);
70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // generic property element:
73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final PropertyElement createProperty ()
75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
76f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_genericCfg.createProperty ();
77f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
78f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
79f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
80f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public static BuildException newBuildException (final String msg, final Location location)
81f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
82f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        final String prefixedMsg = ((msg == null) || (msg.length () == 0))
83f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            ? msg
84f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            : IAppConstants.APP_THROWABLE_BUILD_ID + " " + msg;
85f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
86f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return new BuildException (prefixedMsg, location);
87f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
88f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
89f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public static BuildException newBuildException (final String msg, final Throwable cause, final Location location)
90f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
91f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        final String prefixedMsg = ((msg == null) || (msg.length () == 0))
92f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            ? msg
93f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            : IAppConstants.APP_THROWABLE_BUILD_ID + " " + msg;
94f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
95f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return new BuildException (prefixedMsg, cause, location);
96f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
97f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
98f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // protected: .............................................................
99f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
100f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
101f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    protected SuppressableTask ()
102f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
103f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_enabled = true; // by default, all tasks are enabled
104f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
105f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
106f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    protected IProperties getTaskSettings ()
107f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
108f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        // (1) by default, generic settings are always more specific than any file settings
109f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
110f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        // (2) verbosity settings use dedicated attributes and hence are more specific
111f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        // than anything generic
112f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
113f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        final IProperties fileSettings = m_genericCfg.getFileSettings ();
114f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        final IProperties genericSettings = m_genericCfg.getGenericSettings ();
115f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        final IProperties verbositySettings = m_verbosityCfg.getSettings ();
116f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
117f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return IProperties.Factory.combine (verbositySettings,
118f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project               IProperties.Factory.combine (genericSettings,
119f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                            fileSettings));
120f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
121f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
122f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // package: ...............................................................
123f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
124f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // private: ...............................................................
125f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
126f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
127f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private /*final*/ VerbosityCfg m_verbosityCfg;
128f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private /*final*/ GenericCfg m_genericCfg;
129f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private boolean m_enabled;
130f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
131f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // end of class
132f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------