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