Coverage Report - net.objectlab.qalab.m2.util.Utils
 
Classes in this File Line Coverage Branch Coverage Complexity
Utils
88% 
100% 
3
 
 1  
 ////////////////////////////////////////////////////////////////////////////////
 2  
 //
 3  
 //                  ObjectLab is sponsoring QALab
 4  
 //
 5  
 // Based in London, we are world leaders in the design and development
 6  
 // of bespoke applications for the Securities Financing markets.
 7  
 //
 8  
 // <a href="http://www.objectlab.co.uk/open">Click here to learn more</a>
 9  
 //           ___  _     _           _   _          _
 10  
 //          / _ \| |__ (_) ___  ___| |_| |    __ _| |__
 11  
 //         | | | | '_ \| |/ _ \/ __| __| |   / _` | '_ \
 12  
 //         | |_| | |_) | |  __/ (__| |_| |__| (_| | |_) |
 13  
 //          \___/|_.__// |\___|\___|\__|_____\__,_|_.__/
 14  
 //                   |__/
 15  
 //
 16  
 //                   http://www.ObjectLab.co.uk
 17  
 // ---------------------------------------------------------------------------
 18  
 //
 19  
 //QALab is released under the GNU General Public License.
 20  
 //
 21  
 //QALab: Collects QA Statistics from your build over time.
 22  
 //2005+, ObjectLab Ltd
 23  
 //
 24  
 //This library is free software; you can redistribute it and/or
 25  
 //modify it under the terms of the GNU General Public
 26  
 //License as published by the Free Software Foundation; either
 27  
 //version 2.1 of the License, or (at your option) any later version.
 28  
 //
 29  
 //This library is distributed in the hope that it will be useful,
 30  
 //but WITHOUT ANY WARRANTY; without even the implied warranty of
 31  
 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 32  
 //General Public License for more details.
 33  
 //
 34  
 //You should have received a copy of the GNU General Public
 35  
 //License along with this library; if not, write to the Free Software
 36  
 //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 37  
 //
 38  
 ////////////////////////////////////////////////////////////////////////////////
 39  
 package net.objectlab.qalab.m2.util;
 40  
 
 41  
 import java.io.File;
 42  
 import java.io.IOException;
 43  
 import java.io.FileNotFoundException;
 44  
 import java.io.InputStream;
 45  
 
 46  
 import java.text.SimpleDateFormat;
 47  
 import java.util.Calendar;
 48  
 import java.util.Locale;
 49  
 
 50  
 /**
 51  
  * Some handy utils for the QALab maven 2 plugin.
 52  
  * @author <a href="http://www.davesag.com">Dave Sag</a>.
 53  
  */
 54  98
 public final class Utils {
 55  
 
 56  
     /**
 57  
      * private contructor as this is a utils class.
 58  
      */
 59  0
     private Utils() {
 60  
         // does nothing.
 61  0
     }
 62  
 
 63  
     /**
 64  
      * performs a simple check that the file is real and readable.
 65  
      * @param aFile the file to check
 66  
      * @param aParamName the name of the input param - used for error reporting.
 67  
      * @throws IOException if the file was null or not readable.
 68  
      */
 69  
     public static void checkFile(final File aFile, final String aParamName)
 70  
              throws IOException {
 71  147
         if (aFile == null) {
 72  49
             throw new FileNotFoundException(aParamName
 73  
                     + " is mandatory");
 74  
         }
 75  
 
 76  98
         if (!aFile.exists()) {
 77  49
             throw new FileNotFoundException(aFile
 78  
                     + " does not exist.");
 79  
         }
 80  
 
 81  49
         if (!aFile.canRead()) {
 82  0
             throw new IOException("Unable to read from '"
 83  
                     + aFile + "' while processing value for param "
 84  
                     + aParamName);
 85  
         }
 86  
 
 87  49
     }
 88  
 
 89  
     /**
 90  
      * extract an input stream from the supplied resource file. The resource is
 91  
      * presumed to be somewhere on the classpath for this app.
 92  
      * @param aResourcePath the path to the resource we need the
 93  
      *        actual system path for. Must not be empty or null.
 94  
      * @return an input stream pointing at the named resource.
 95  
      * @throws IOException if the resource path was not readable.
 96  
      */
 97  
     public static InputStream extractAsInputStream(final String aResourcePath)
 98  
             throws IOException {
 99  
 
 100  392
         assert aResourcePath != null : "The supplied path was null";
 101  343
         assert !"".equals(aResourcePath) : "The supplied path was empty";
 102  
 
 103  294
         final ClassLoader l = Utils.class.getClassLoader();
 104  294
         final InputStream res = l.getResourceAsStream(aResourcePath);
 105  294
         if (res == null) {
 106  49
             throw new FileNotFoundException(
 107  
                     "could not find resource at " + aResourcePath);
 108  
         }
 109  245
         return res;
 110  
     }
 111  
 
 112  
     /**
 113  
      * Generate a yyyy-MM-dd date based on now less the number of hours
 114  
      * to offset.
 115  
      * @param anOffset the number of hours to subtract from now.
 116  
      * @return a yyyy-MM-dd formatted string representing now less the offset.
 117  
      */
 118  
     public static String formatDateBasedOnOffset(final String anOffset) {
 119  147
         assert anOffset != null : "offset supplied must not be null";
 120  98
         final int hours = Integer.parseInt(anOffset);
 121  49
         assert hours > 0 : "offset supplied must be positive";
 122  
 
 123  49
         final Calendar c = Calendar.getInstance();
 124  49
         c.add(Calendar.HOUR, -hours);
 125  
 
 126  49
         final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd",
 127  
                 Locale.getDefault());
 128  49
         return df.format(c.getTime());
 129  
     }
 130  
 }
 131  
 /*
 132  
  *                   ObjectLab is sponsoring QALab
 133  
  * 
 134  
  * Based in London, we are world leaders in the design and development 
 135  
  * of bespoke applications for the securities financing markets.
 136  
  * 
 137  
  * <a href="http://www.objectlab.co.uk/open">Click here to learn more about us</a>
 138  
  *           ___  _     _           _   _          _
 139  
  *          / _ \| |__ (_) ___  ___| |_| |    __ _| |__
 140  
  *         | | | | '_ \| |/ _ \/ __| __| |   / _` | '_ \
 141  
  *         | |_| | |_) | |  __/ (__| |_| |__| (_| | |_) |
 142  
  *          \___/|_.__// |\___|\___|\__|_____\__,_|_.__/
 143  
  *                   |__/
 144  
  *
 145  
  *                     www.ObjectLab.co.uk
 146  
  */