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: ReportCfg.java,v 1.1.1.1.2.1 2004/07/08 10:52:11 vlad_r Exp $ 8f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */ 9f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpackage com.vladium.emma.report; 10f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 11f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.util.ArrayList; 12f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.util.Iterator; 13f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.util.List; 14f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.util.Properties; 15f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 16f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.util.IConstants; 17f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.util.IProperties; 18f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.EMMAProperties; 19f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.ant.PropertyElement; 20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.ant.SuppressableTask; 21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.IReportEnums.DepthAttribute; 22f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.IReportEnums.UnitsTypeAttribute; 23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.BuildException; 25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.Project; 26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.Task; 27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.types.Path; 28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.types.Reference; 29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ---------------------------------------------------------------------------- 31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/** 32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * ReportCfg is a container for report type {@link ReportCfg.Element}s that are 33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * in turn containers for all properties that could be set on a <report> 34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * report type configurator (<txt>, <html>, etc). The elements provide 35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * the ability for report properties to be set either via the generic <property> 36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * nested elements or dedicated attributes. Potential conflicts between the same 37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * conceptual property being set via an attribute and a nested element are resolved 38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * by making dedicated attributes higher priority.<P> 39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * 40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * Note that ReportCfg does not handle any non-report related properties. 41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * This can be done via {@link com.vladium.emma.ant.GenericCfg}. It is also the 42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * parent's responsibility to merge any inherited report properties with 43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * ReportCfg settings. 44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * 45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @author Vlad Roubtsov, (C) 2003 46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */ 47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpublic 48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectclass ReportCfg implements IReportProperties 49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project{ 50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // public: ................................................................ 51f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public static abstract class Element implements IReportEnums, IReportProperties 54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setUnits (final UnitsTypeAttribute units) 56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (m_prefix.concat (UNITS_TYPE), units.getValue ()); 58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setDepth (final DepthAttribute depth) 61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (m_prefix.concat (DEPTH), depth.getValue ()); 63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setColumns (final String columns) 66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (m_prefix.concat (COLUMNS), columns); 68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setSort (final String sort) 71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (m_prefix.concat (SORT), sort); 73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setMetrics (final String metrics) 76f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 77f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (m_prefix.concat (METRICS), metrics); 78f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 79f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 80f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // not supported anymore: 81f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 82f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// public void setOutdir (final File dir) 83f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// { 84f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// // TODO: does ANT resolve files relative to current JVM dir or ${basedir}? 85f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// m_settings.setProperty (m_prefix.concat (OUT_DIR), dir.getAbsolutePath ()); 86f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// } 87f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 88f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setOutfile (final String fileName) 89f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 90f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (m_prefix.concat (OUT_FILE), fileName); 91f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 92f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 93f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setEncoding (final String encoding) 94f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 95f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (m_prefix.concat (OUT_ENCODING), encoding); 96f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 97f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 98f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // generic property element [don't doc this publicly]: 99f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 100f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public PropertyElement createProperty () 101f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 102f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // TODO: error out on conficting duplicate settings 103f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 104f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final PropertyElement property = new PropertyElement (); 105f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_genericSettings.add (property); 106f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 107f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return property; 108f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 109f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 110f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected abstract String getType (); 111f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 112f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 113f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project Element (final Task task, final IProperties settings) 114f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 115f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (task == null) 116f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project throw new IllegalArgumentException ("null input: task"); 117f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (settings == null) 118f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project throw new IllegalArgumentException ("null input: settings"); 119f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 120f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_task = task; 121f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings = settings; 122f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 123f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_prefix = PREFIX.concat (getType ()).concat ("."); 124f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 125f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_genericSettings = new ArrayList (); 126f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 127f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 128f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 129f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project void processGenericSettings () 130f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 131f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project for (Iterator i = m_genericSettings.iterator (); i.hasNext (); ) 132f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 133f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final PropertyElement property = (PropertyElement) i.next (); 134f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 135f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final String name = property.getName (); 136f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final String value = property.getValue () != null ? property.getValue () : ""; 137f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 138f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (name != null) 139f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 140f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final String prefixedName = m_prefix.concat (name); 141f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 142f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // generically named settings don't override report named settings: 143f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 144f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (! m_settings.isOverridden (prefixedName)) 145f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (prefixedName, value); 146f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 147f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 148f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 149f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 150f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 151f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected final Task m_task; // never null 152f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected final String m_prefix; // never null 153f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected final IProperties m_settings; // never null 154f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected final List /* PropertyElement */ m_genericSettings; // never null 155f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 156f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } // end of nested class 157f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 158f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 159f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 160f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public static class Element_HTML extends Element 161f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 162f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected final String getType () 163f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 164f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return TYPE; 165f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 166f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 167f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project Element_HTML (final Task task, final IProperties settings) 168f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 169f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project super (task, settings); 170f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 171f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 172f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 173f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project static final String TYPE = "html"; 174f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 175f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } // end of nested class 176f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 177f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 179f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public static class Element_TXT extends Element 180f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 181f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected final String getType () 182f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 183f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return TYPE; 184f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 185f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 186f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project Element_TXT (final Task task, final IProperties settings) 187f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 188f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project super (task, settings); 189f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 190f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 191f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 192f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project static final String TYPE = "txt"; 193f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 194f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } // end of nested class 195f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 196f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 197f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 1980b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock public static class Element_LCOV extends Element 1990b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock { 2000b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock protected final String getType () 2010b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock { 2020b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock return TYPE; 2030b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock } 2040b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock 2050b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock Element_LCOV (final Task task, final IProperties settings) 2060b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock { 2070b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock super (task, settings); 2080b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock } 2090b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock 2100b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock static final String TYPE = "lcov"; 2110b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock 2120b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock } // end of nested class 2130b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock 2140b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2150b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock 216f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public static class Element_XML extends Element 217f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 218f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected final String getType () 219f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 220f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return TYPE; 221f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 222f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 223f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project Element_XML (final Task task, final IProperties settings) 224f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 225f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project super (task, settings); 226f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 227f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 228f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 229f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project static final String TYPE = "xml"; 230f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 231f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } // end of nested class 232f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 233f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 234f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 235f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 236f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public ReportCfg (final Project project, final Task task) 237f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 238f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_project = project; 239f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_task = task; 240f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 241f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportTypes = new ArrayList (4); 242f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_cfgList = new ArrayList (4); 243f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings = EMMAProperties.wrap (new Properties ()); 244f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 245f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 246f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public Path getSourcepath () 247f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 248f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return m_srcpath; 249f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 250f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 251f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public String [] getReportTypes () 252f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 253f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final BuildException failure = getFailure (); 254f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 255f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (failure != null) 256f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project throw failure; 257f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project else 258f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 259f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (m_reportTypes.isEmpty ()) 260f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return IConstants.EMPTY_STRING_ARRAY; 261f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project else 262f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 263f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final String [] result = new String [m_reportTypes.size ()]; 264f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportTypes.toArray (result); 265f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 266f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return result; 267f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 268f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 269f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 270f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 271f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public IProperties getReportSettings () 272f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 273f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final BuildException failure = getFailure (); 274f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 275f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (failure != null) 276f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project throw failure; 277f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project else 278f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 279f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (! m_processed) 280f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 281f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // collect all nested elements' generic settins into m_settings: 282f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 283f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project for (Iterator i = m_cfgList.iterator (); i.hasNext (); ) 284f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 285f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final Element cfg = (Element) i.next (); 286f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project cfg.processGenericSettings (); 287f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 288f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 289f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_processed = true; 290f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 291f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 292f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return m_settings; // no clone 293f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 294f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 295f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 296f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 297f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // sourcepath attribute/element: 298f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 299f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setSourcepath (final Path path) 300f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 301f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (m_srcpath == null) 302f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_srcpath = path; 303f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project else 304f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_srcpath.append (path); 305f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 306f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 307f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setSourcepathRef (final Reference ref) 308f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 309f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project createSourcepath ().setRefid (ref); 310f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 311f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 312f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public Path createSourcepath () 313f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 314f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (m_srcpath == null) 315f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_srcpath = new Path (m_project); 316f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 317f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return m_srcpath.createPath (); 318f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 319f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 320f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 321f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // generator elements: 322f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 323f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public Element_TXT createTxt () 324f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 325f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return (Element_TXT) addCfgElement (Element_TXT.TYPE, 326f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project new Element_TXT (m_task, m_settings)); 327f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 328f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 3290b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock public Element_LCOV createLcov () 3300b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock { 3310b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock return (Element_LCOV) addCfgElement (Element_LCOV.TYPE, 3320b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock new Element_LCOV (m_task, m_settings)); 3330b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock } 3340b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock 335f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public Element_HTML createHtml () 336f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 337f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return (Element_HTML) addCfgElement (Element_HTML.TYPE, 338f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project new Element_HTML (m_task, m_settings)); 339f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 340f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 341f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public Element_XML createXml () 342f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 343f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return (Element_XML) addCfgElement (Element_XML.TYPE, 344f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project new Element_XML (m_task, m_settings)); 345f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 346f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 347f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 348f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // report properties [defaults for all report types]: 349f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 350f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setUnits (final UnitsTypeAttribute units) 351f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 352f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (PREFIX.concat (UNITS_TYPE), units.getValue ()); 353f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 354f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 355f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setDepth (final DepthAttribute depth) 356f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 357f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (PREFIX.concat (DEPTH), depth.getValue ()); 358f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 359f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 360f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setColumns (final String columns) 361f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 362f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (PREFIX.concat (COLUMNS), columns); 363f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 364f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 365f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setSort (final String sort) 366f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 367f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (PREFIX.concat (SORT), sort); 368f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 369f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 370f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setMetrics (final String metrics) 371f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 372f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (PREFIX.concat (METRICS), metrics); 373f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 374f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 375f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // not supported anymore: 376f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 377f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// public void setOutdir (final File dir) 378f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// { 379f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// // TODO: does ANT resolve files relative to current JVM dir or ${basedir}? 380f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// m_settings.setProperty (PREFIX.concat (OUT_DIR), dir.getAbsolutePath ()); 381f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// } 382f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// 383f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// public void setDestdir (final File dir) 384f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// { 385f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// // TODO: does ANT resolve files relative to current JVM dir or ${basedir}? 386f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// m_settings.setProperty (PREFIX.concat (OUT_DIR), dir.getAbsolutePath ()); 387f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// } 388f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 389f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setOutfile (final String fileName) 390f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 391f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (PREFIX.concat (OUT_FILE), fileName); 392f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 393f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 394f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void setEncoding (final String encoding) 395f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 396f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_settings.setProperty (PREFIX.concat (OUT_ENCODING), encoding); 397f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 398f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 399f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // protected: ............................................................. 400f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 401f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 402f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected Element addCfgElement (final String type, final Element cfg) 403f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 404f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (m_reportTypes.contains (type)) 405f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 406f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project setFailure ((BuildException) SuppressableTask.newBuildException (m_task.getTaskName () 407f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project + ": duplicate configuration for report type [" + type + "]" , 408f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_task.getLocation ()).fillInStackTrace ()); 409f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 410f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project else 411f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 412f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_reportTypes.add (type); 413f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_cfgList.add (cfg); 414f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 415f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 416f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return cfg; 417f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 418f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 419f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // package: ............................................................... 420f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 421f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // private: ............................................................... 422f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 423f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 424f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private void setFailure (final BuildException failure) 425f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 426f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (m_settingsFailure == null) m_settingsFailure = failure; // record the first one only 427f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 428f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 429f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private BuildException getFailure () 430f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 431f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return m_settingsFailure; 432f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 433f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 434f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 435f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private final Project m_project; 436f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private final Task m_task; 437f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 438f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private final List /* report type:String */ m_reportTypes; // using a list to keep the generation order same as configuration 439f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private final List /* Element */ m_cfgList; 440f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private final IProperties m_settings; // never null 441f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 442f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private Path m_srcpath; 443f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 444f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private transient BuildException m_settingsFailure; // can be null 445f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private transient boolean m_processed; 446f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 447f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // end of class 4480b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock// ---------------------------------------------------------------------------- 449