Coverage Report - net.objectlab.kit.datecalc.joda.YearMonthDayForwardUnlessNegativeHandler
 
Classes in this File Line Coverage Branch Coverage Complexity
YearMonthDayForwardUnlessNegativeHandler
100%
9/9
100%
4/4
1.667
 
 1  
 /*
 2  
  * ObjectLab, http://www.objectlab.co.uk/open is sponsoring the ObjectLab Kit.
 3  
  * 
 4  
  * Based in London, we are world leaders in the design and development 
 5  
  * of bespoke applications for the securities financing markets.
 6  
  * 
 7  
  * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a>
 8  
  *           ___  _     _           _   _          _
 9  
  *          / _ \| |__ (_) ___  ___| |_| |    __ _| |__
 10  
  *         | | | | '_ \| |/ _ \/ __| __| |   / _` | '_ \
 11  
  *         | |_| | |_) | |  __/ (__| |_| |__| (_| | |_) |
 12  
  *          \___/|_.__// |\___|\___|\__|_____\__,_|_.__/
 13  
  *                   |__/
 14  
  *
 15  
  *                     www.ObjectLab.co.uk
 16  
  *
 17  
  * $Id: YearMonthDayForwardHandler.java 203 2006-10-11 12:53:07Z benoitx $
 18  
  * 
 19  
  * Copyright 2006 the original author or authors.
 20  
  *
 21  
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 22  
  * use this file except in compliance with the License. You may obtain a copy of
 23  
  * the License at
 24  
  *
 25  
  * http://www.apache.org/licenses/LICENSE-2.0
 26  
  *
 27  
  * Unless required by applicable law or agreed to in writing, software
 28  
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 29  
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 30  
  * License for the specific language governing permissions and limitations under
 31  
  * the License.
 32  
  */
 33  
 package net.objectlab.kit.datecalc.joda;
 34  
 
 35  
 import net.objectlab.kit.datecalc.common.DateCalculator;
 36  
 import net.objectlab.kit.datecalc.common.HolidayHandler;
 37  
 import net.objectlab.kit.datecalc.common.HolidayHandlerType;
 38  
 
 39  
 import org.joda.time.YearMonthDay;
 40  
 
 41  
 /**
 42  
  * A Forward handler will move the date forward if it falls on a non working
 43  
  * day.
 44  
  * 
 45  
  * @author Benoit Xhenseval
 46  
  * @author $LastChangedBy: benoitx $
 47  
  * @version $Revision: 203 $ $Date: 2006-10-11 13:53:07 +0100 (Wed, 11 Oct 2006) $
 48  
  * 
 49  
  */
 50  464
 public class YearMonthDayForwardUnlessNegativeHandler implements HolidayHandler<YearMonthDay> {
 51  
 
 52  
     /**
 53  
      * If the current date of the give calculator is a non-working day, it will
 54  
      * be moved according to the algorithm implemented.
 55  
      * 
 56  
      * @param calculator
 57  
      *            the calculator
 58  
      * @return the date which may have moved.
 59  
      */
 60  
     public YearMonthDay moveCurrentDate(final DateCalculator<YearMonthDay> calculator) {
 61  368
         return move(calculator, 1);
 62  
     }
 63  
 
 64  
     // -----------------------------------------------------------------------
 65  
     //
 66  
     //    ObjectLab, world leaders in the design and development of bespoke 
 67  
     //          applications for the securities financing markets.
 68  
     //                         www.ObjectLab.co.uk
 69  
     //
 70  
     // -----------------------------------------------------------------------
 71  
 
 72  
     protected YearMonthDay move(final DateCalculator<YearMonthDay> calculator, final int step) {
 73  368
         YearMonthDay date = calculator.getCurrentBusinessDate();
 74  519
         while (calculator.isNonWorkingDay(date)) {
 75  151
             if (calculator.getCurrentIncrement() < 0) {
 76  
                 // act as a Backward calendar
 77  7
                 date = date.minusDays(step);
 78  
             } else {
 79  
                 // move forward by a day!
 80  144
                 date = date.plusDays(step);
 81  
             }
 82  
         }
 83  368
         return date;
 84  
     }
 85  
 
 86  
     /**
 87  
      * Give the type name for this algorithm.
 88  
      * 
 89  
      * @return algorithm name.
 90  
      */
 91  
     public String getType() {
 92  131
         return HolidayHandlerType.FORWARD_UNLESS_MOVING_BACK;
 93  
     }
 94  
 }
 95  
 
 96  
 /*
 97  
  * ObjectLab, http://www.objectlab.co.uk/open is sponsoring the ObjectLab Kit.
 98  
  * 
 99  
  * Based in London, we are world leaders in the design and development 
 100  
  * of bespoke applications for the securities financing markets.
 101  
  * 
 102  
  * <a href="http://www.objectlab.co.uk/open">Click here to learn more about us</a>
 103  
  *           ___  _     _           _   _          _
 104  
  *          / _ \| |__ (_) ___  ___| |_| |    __ _| |__
 105  
  *         | | | | '_ \| |/ _ \/ __| __| |   / _` | '_ \
 106  
  *         | |_| | |_) | |  __/ (__| |_| |__| (_| | |_) |
 107  
  *          \___/|_.__// |\___|\___|\__|_____\__,_|_.__/
 108  
  *                   |__/
 109  
  *
 110  
  *                     www.ObjectLab.co.uk
 111  
  */