Clover coverage report - Ant Coverage
Coverage timestamp: Tue Apr 8 2003 20:43:55 EST
file stats: LOC: 174   Methods: 7
NCLOC: 65   Classes: 2
 
 Source file Conditionals Statements Methods TOTAL
Echo.java 58.3% 76% 85.7% 72.7%
 1   
 /*
 2   
  * The Apache Software License, Version 1.1
 3   
  *
 4   
  * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights 
 5   
  * reserved.
 6   
  *
 7   
  * Redistribution and use in source and binary forms, with or without
 8   
  * modification, are permitted provided that the following conditions
 9   
  * are met:
 10   
  *
 11   
  * 1. Redistributions of source code must retain the above copyright
 12   
  *    notice, this list of conditions and the following disclaimer.
 13   
  *
 14   
  * 2. Redistributions in binary form must reproduce the above copyright
 15   
  *    notice, this list of conditions and the following disclaimer in
 16   
  *    the documentation and/or other materials provided with the
 17   
  *    distribution.
 18   
  *
 19   
  * 3. The end-user documentation included with the redistribution, if
 20   
  *    any, must include the following acknowlegement:
 21   
  *       "This product includes software developed by the
 22   
  *        Apache Software Foundation (http://www.apache.org/)."
 23   
  *    Alternately, this acknowlegement may appear in the software itself,
 24   
  *    if and wherever such third-party acknowlegements normally appear.
 25   
  *
 26   
  * 4. The names "Ant" and "Apache Software
 27   
  *    Foundation" must not be used to endorse or promote products derived
 28   
  *    from this software without prior written permission. For written
 29   
  *    permission, please contact apache@apache.org.
 30   
  *
 31   
  * 5. Products derived from this software may not be called "Apache"
 32   
  *    nor may "Apache" appear in their names without prior written
 33   
  *    permission of the Apache Group.
 34   
  *
 35   
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 36   
  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 37   
  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 38   
  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 39   
  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 40   
  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 41   
  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 42   
  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 43   
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 44   
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 45   
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 46   
  * SUCH DAMAGE.
 47   
  * ====================================================================
 48   
  *
 49   
  * This software consists of voluntary contributions made by many
 50   
  * individuals on behalf of the Apache Software Foundation.  For more
 51   
  * information on the Apache Software Foundation, please see
 52   
  * <http://www.apache.org/>.
 53   
  */
 54   
 
 55   
 package org.apache.tools.ant.taskdefs;
 56   
 
 57   
 import java.io.File;
 58   
 import java.io.FileWriter;
 59   
 import java.io.IOException;
 60   
 import org.apache.tools.ant.BuildException;
 61   
 import org.apache.tools.ant.Project;
 62   
 import org.apache.tools.ant.Task;
 63   
 import org.apache.tools.ant.types.EnumeratedAttribute;
 64   
 /**
 65   
  * Writes a message to the Ant logging facilities.
 66   
  *
 67   
  * @author costin@dnt.ro
 68   
  *
 69   
  * @since Ant 1.1
 70   
  *
 71   
  * @ant.task category="utility"
 72   
  */
 73   
 public class Echo extends Task {
 74   
     protected String message = ""; // required
 75   
     protected File file = null;
 76   
     protected boolean append = false;
 77   
     
 78   
     // by default, messages are always displayed
 79   
     protected int logLevel = Project.MSG_WARN;   
 80   
     
 81   
     /**
 82   
      * Does the work.
 83   
      *
 84   
      * @exception BuildException if someting goes wrong with the build
 85   
      */
 86  132
     public void execute() throws BuildException {
 87  132
         if (file == null) {
 88  117
             log(message, logLevel);
 89   
         } else {
 90  15
             FileWriter out = null;
 91  15
             try {
 92  15
                 out = new FileWriter(file.getAbsolutePath(), append);
 93  15
                 out.write(message, 0, message.length());
 94   
             } catch (IOException ioe) {
 95  0
                 throw new BuildException(ioe, getLocation());
 96   
             } finally {
 97  15
                 if (out != null) {
 98  15
                     try {
 99  15
                         out.close();
 100   
                     } catch (IOException ioex) {}
 101   
                 }
 102   
             }
 103   
         }
 104   
     }
 105   
 
 106   
     /**
 107   
      * Message to write.
 108   
      *
 109   
      * @param msg Sets the value for the message variable.
 110   
      */
 111  75
     public void setMessage(String msg) {
 112  75
         this.message = msg;
 113   
     }
 114   
 
 115   
     /**
 116   
      * File to write to.
 117   
      */
 118  15
     public void setFile(File file) {
 119  15
         this.file = file;
 120   
     }
 121   
 
 122   
     /**
 123   
      * If true, append to existing file.
 124   
      */
 125  0
     public void setAppend(boolean append) {
 126  0
         this.append = append;
 127   
     }
 128   
 
 129   
     /**
 130   
      * Set a multiline message.
 131   
      */
 132  53
     public void addText(String msg) {
 133  53
         message += getProject().replaceProperties(msg);
 134   
     }
 135   
 
 136   
     /**
 137   
      * Set the logging level. Level should be one of
 138   
      * <ul>
 139   
      *  <li>error</li>
 140   
      *  <li>warning</li>
 141   
      *  <li>info</li>
 142   
      *  <li>verbose</li>
 143   
      *  <li>debug</li>
 144   
      * </ul>
 145   
      * <p>The default is &quot;warning&quot; to ensure that messages are
 146   
      * displayed by default when using the -quiet command line option.</p>
 147   
      */
 148  4
     public void setLevel(EchoLevel echoLevel) {
 149  4
         String option = echoLevel.getValue();
 150  4
         if (option.equals("error")) {
 151  0
             logLevel = Project.MSG_ERR;
 152  4
         } else if (option.equals("warning")) {
 153  0
             logLevel = Project.MSG_WARN;
 154  4
         } else if (option.equals("info")) {
 155  0
             logLevel = Project.MSG_INFO;
 156  4
         } else if (option.equals("verbose")) {
 157  4
             logLevel = Project.MSG_VERBOSE;
 158   
         } else {
 159   
             // must be "debug"
 160  0
             logLevel = Project.MSG_DEBUG;
 161   
         }
 162   
     }
 163   
 
 164   
     public static class EchoLevel extends EnumeratedAttribute {
 165   
         /**
 166   
          * @see EnumeratedAttribute#getValues
 167   
          */
 168  4
         public String[] getValues() {
 169  4
             return new String[] {"error", "warning", "info", 
 170   
                                  "verbose", "debug"};
 171   
         }
 172   
     }
 173   
 }
 174