| 
      
      
      From: <be...@us...> - 2006-09-07 14:48:48
      
     | 
| Revision: 124
          http://svn.sourceforge.net/objectlabkit/?rev=124&view=rev
Author:   benoitx
Date:     2006-09-07 07:48:06 -0700 (Thu, 07 Sep 2006)
Log Message:
-----------
Keep the lovely generics in our interfaces, this reduces the number of interfaces.
One thought thought is to find a better way for the holiday handlers, at the moment each time a new type of handler arrives, it requires a whole set of implementations whilst a wrapper could be used... Let me think about that one...
next step renaming Factories and Interfaces?
Modified Paths:
--------------
    trunk/common-build/project.xml
    trunk/datecalc-common/qalab.xml
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/HolidayHandler.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMDateCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/PeriodCountCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
    trunk/datecalc-jdk/qalab.xml
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkDateCalculatorFactory.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java
    trunk/datecalc-joda/qalab.xml
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDateCalculatorFactory.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateBackwardHandler.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateForwardHandler.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedFollowingHandler.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedPreceedingHandler.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
    trunk/src/site/index.xml
    trunk/src/site/navigation.xml
Added Paths:
-----------
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarBackwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarModifiedFollowingHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarModifiedPreceedingHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateBackwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateForwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateModifiedFollowingHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateModifiedPreceedingHandler.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculatorCombinationTest.java
Removed Paths:
-------------
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarCalculatorFactory.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculatorFactory.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedFollowingHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedPreceedingHandler.java
Property Changed:
----------------
    trunk/datecalc-common/
    trunk/datecalc-jdk/
Modified: trunk/common-build/project.xml
===================================================================
--- trunk/common-build/project.xml	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/common-build/project.xml	2006-09-07 14:48:06 UTC (rev 124)
@@ -112,7 +112,7 @@
       <report>maven-simian-plugin</report>
       <report>maven-cobertura-plugin</report>
       <report>maven-qalab-plugin</report>
-      <report>maven-ydoc-plugin</report>
+      <!--<report>maven-ydoc-plugin</report>-->
       <report>maven-jdepend-plugin</report>
       <report>maven-faq-plugin</report>
       <report>maven-junit-report-plugin</report>
Property changes on: trunk/datecalc-common
___________________________________________________________________
Name: svn:ignore
   - 
target
   + target
.fbwarnings
Modified: trunk/datecalc-common/qalab.xml
===================================================================
--- trunk/datecalc-common/qalab.xml	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-common/qalab.xml	2006-09-07 14:48:06 UTC (rev 124)
@@ -57,6 +57,8 @@
         <summaryresult date="2006-09-06" filecount="18" statvalue="1" type="checkstyle"/>
         <summaryresult date="2006-09-06" filecount="17" statvalue="66" type="cobertura-line"/>
         <summaryresult date="2006-09-06" filecount="17" statvalue="68" type="cobertura-branch"/>
+        <summaryresult date="2006-09-07" filecount="17" statvalue="65" type="cobertura-line"/>
+        <summaryresult date="2006-09-07" filecount="17" statvalue="67" type="cobertura-branch"/>
     </summary>
     <file id="net_objectlab_kit_datecalc_common_package.html" path="net/objectlab/kit/datecalc/common/package.html">
         <result date="2006-08-08" statvalue="1" type="checkstyle"/>
@@ -99,6 +101,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_WorkingWeek.java" path="net/objectlab/kit/datecalc/common/WorkingWeek.java">
         <result date="2006-08-08" statvalue="3" type="checkstyle"/>
@@ -133,6 +137,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="95" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="95" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_TenorCode.java" path="net/objectlab/kit/datecalc/common/TenorCode.java">
         <result date="2006-08-08" statvalue="100" type="cobertura-line"/>
@@ -159,6 +165,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_HolidayHandlerType.java" path="net/objectlab/kit/datecalc/common/HolidayHandlerType.java">
         <result date="2006-08-08" statvalue="100" type="cobertura-branch"/>
@@ -173,6 +181,7 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_PeriodCountBasis.java" path="net/objectlab/kit/datecalc/common/PeriodCountBasis.java">
         <result date="2006-08-08" statvalue="100" type="cobertura-branch"/>
@@ -185,6 +194,7 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_StandardTenor.java" path="net/objectlab/kit/datecalc/common/StandardTenor.java">
         <result date="2006-08-08" statvalue="100" type="cobertura-branch"/>
@@ -210,6 +220,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="92" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="92" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_common_AbstractDateCalculator.java" path="net/objectlab/kit/datecalc/common/AbstractDateCalculator.java">
@@ -233,6 +245,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_HolidayHandler.java" path="net/objectlab/kit/datecalc/common/HolidayHandler.java">
         <result date="2006-08-23" statvalue="100" type="cobertura-line"/>
@@ -249,6 +263,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_common_AbstractDateCalculatorFactory.java" path="net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java">
@@ -275,6 +291,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_common_PeriodCountCalculator.java" path="net/objectlab/kit/datecalc/common/PeriodCountCalculator.java">
@@ -291,6 +309,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_Utils.java" path="net/objectlab/kit/datecalc/common/Utils.java">
         <result date="2006-09-04" statvalue="2" type="checkstyle"/>
@@ -300,24 +320,32 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="94" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="91" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_IMMPeriod.java" path="net/objectlab/kit/datecalc/common/IMMPeriod.java">
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_ExcelDateUtil.java" path="net/objectlab/kit/datecalc/common/ExcelDateUtil.java">
         <result date="2006-09-05" statvalue="84" type="cobertura-line"/>
         <result date="2006-09-05" statvalue="83" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="93" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="93" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_IMMDateCalculator.java" path="net/objectlab/kit/datecalc/common/IMMDateCalculator.java">
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_common_AbstractIMMDateCalculator.java" path="net/objectlab/kit/datecalc/common/AbstractIMMDateCalculator.java">
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
 </qalab>
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -34,11 +34,6 @@
  * @param <E>
  */
 public abstract class AbstractDateCalculator<E> implements DateCalculator<E> {
-
-    // protected static final int MONTHS_IN_QUARTER = 3;
-
-    // protected static final int MONTH_IN_YEAR = 12;
-
     protected static final int DAYS_IN_WEEK = 7;
 
     private String name;
@@ -202,12 +197,12 @@
             newSet.addAll(calendar.getNonWorkingDays());
         }
 
-        final DateCalculator<E> cal = createNewCalcultaor(getName() + "/" + calendar.getName(), getStartDate(), newSet,
+        final DateCalculator<E> cal = createNewCalculator(getName() + "/" + calendar.getName(), getStartDate(), newSet,
                 holidayHandler);
 
         return cal;
     }
 
-    protected abstract DateCalculator<E> createNewCalcultaor(String calcName, E theStartDate, Set<E> holidays,
+    protected abstract DateCalculator<E> createNewCalculator(String calcName, E theStartDate, Set<E> holidays,
             HolidayHandler<E> handler);
 }
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -31,13 +31,8 @@
  */
 public abstract class AbstractDateCalculatorFactory<E> implements DateCalculatorFactory<E> {
 
-    protected final ConcurrentMap<String, Set<E>> holidays = new ConcurrentHashMap<String, Set<E>>();
+    private final ConcurrentMap<String, Set<E>> holidays = new ConcurrentHashMap<String, Set<E>>();
 
-    // public abstract DateCalculator<E> getDateCalculator(String name, String
-    // holidayHandlerType);
-
-    // public abstract PeriodCountCalculator<E> getPeriodCountCalculator();
-
     /**
      * Use this method to register a set of holidays for a given calendar, it
      * will replace any existing set. It won't update any existing
@@ -52,4 +47,10 @@
     public void registerHolidays(final String name, final Set<E> holidaysSet) {
         this.holidays.put(name, holidaysSet);
     }
+    
+    protected void setHolidays(final String name, final DateCalculator<E> dc) {
+        if (holidays.containsKey(name)) {
+            dc.setNonWorkingDays(holidays.get(name));
+        }
+    }
 }
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -20,13 +20,17 @@
 import java.util.Set;
 
 /**
- * Factory will create new instances of DateCalculator, these are lightweight,
- * each thread should use the factory as a given DateCalculator should NOT be
- * shared across thread (unless you know what you're doing) as the startDate,
- * current date and working week would be shared. Once created, the set of
- * holidays will NOT change even if a new set is registered; one needs to get a
- * new DateCalculator to get the new set.
+ * Factory will create new instances of calculators, these are lightweight, each
+ * thread should use the factory as a given calculator should NOT be shared
+ * across thread (unless you know what you're doing) as the startDate, current
+ * date and working week would be shared. Once created, the set of holidays will
+ * NOT change even if a new set is registered; one needs to get a new
+ * DateCalculator to get the new set.
  * 
+ * @param E
+ *            a representation of a date, typically JDK: Date, Calendar;
+ *            Joda:LocalDate, YearMonthDay
+ * 
  * @author Benoit Xhenseval
  * @author $LastChangedBy$
  * @version $Revision$ $Date$
@@ -57,11 +61,15 @@
     void registerHolidays(final String name, Set<E> holidays);
 
     /**
+     * Create a new PeriodCountCalculator.
+     * 
      * @return a PeriodCountCalculator
      */
     PeriodCountCalculator<E> getPeriodCountCalculator();
 
     /**
+     * Create a new IMMDateCalculator.
+     * 
      * @return an IMMDateCalculator
      */
     IMMDateCalculator<E> getIMMDateCalculator();
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/HolidayHandler.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/HolidayHandler.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/HolidayHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -22,7 +22,7 @@
  * @author Benoit Xhenseval
  */
 public interface HolidayHandler<E> {
-    E moveCurrentDate(DateCalculator<E> calendar);
+    E moveCurrentDate(DateCalculator<E> date);
 
     String getType();
 }
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMDateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMDateCalculator.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMDateCalculator.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -20,7 +20,8 @@
 import java.util.List;
 
 /**
- * The IMMDates are defined as the 3rd Wednesday of March, June, September and December.
+ * The IMMDates are defined as the 3rd Wednesday of March, June, September and
+ * December.
  * 
  * @author Benoit Xhenseval
  * @author $LastChangedBy: benoitx $
@@ -37,8 +38,8 @@
     boolean isIMMDate(final E date);
 
     /**
-     * Given a start date, it will return the next IMM
-     * Date, even if the start date is an IMM date (same as calling
+     * Given a start date, it will return the next IMM Date, even if the start
+     * date is an IMM date (same as calling
      * getNextIMMDate(IMMPeriod.QUARTERLY)).
      * 
      * @param startDate
@@ -47,8 +48,8 @@
     E getNextIMMDate(final E startDate);
 
     /**
-     * Given a start date, it will return the next IMM Date
-     * based on the IMMPeriod, even if the start date is an IMM date.
+     * Given a start date, it will return the next IMM Date based on the
+     * IMMPeriod, even if the start date is an IMM date.
      * 
      * @param startDate
      * @param period
@@ -59,8 +60,8 @@
     E getNextIMMDate(final E startDate, final IMMPeriod period);
 
     /**
-     * Given a start date, it will return the previous IMM
-     * Date, even if the start date is an IMM date.
+     * Given a start date, it will return the previous IMM Date, even if the
+     * start date is an IMM date.
      * 
      * @param startDate
      * @return the previous IMMDate based on current date.
@@ -68,9 +69,8 @@
     E getPreviousIMMDate(final E startDate);
 
     /**
-     * Given a start date, it will return the previous IMM
-     * Date based on the IMMPeriod, even if the start date is an IMM
-     * date.
+     * Given a start date, it will return the previous IMM Date based on the
+     * IMMPeriod, even if the start date is an IMM date.
      * 
      * @param period
      *            specify when the "previous" IMM is, if quarterly then it is
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -18,8 +18,9 @@
 package net.objectlab.kit.datecalc.common;
 
 /**
- * Some instruments require a period different from the usual Quarterly but still following IMM, e.g. Bi Annually which then can be Mar-Sep or
- * Jun-Dec, or Annually.
+ * Some instruments require a period different from the usual Quarterly but
+ * still following IMM, e.g. Bi Annually which then can be Mar-Sep or Jun-Dec,
+ * or Annually.
  * 
  * @author Benoit Xhenseval
  * @author $LastChangedBy$
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/PeriodCountCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/PeriodCountCalculator.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/PeriodCountCalculator.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -18,14 +18,16 @@
 package net.objectlab.kit.datecalc.common;
 
 /**
- * Interface that defines a financial market way of calculating difference in days, month (or part of) and year (or part of).
- * TODO Improve javadoc.
+ * Interface that defines a financial market way of calculating difference in
+ * days, month (or part of) and year (or part of). TODO Improve javadoc.
  * 
  * @author Benoit Xhenseval
  * @author $LastChangedBy$
  * @version $Revision$ $Date$
  * 
- * @param <E> a representation of "Date", typically Date, Calendar, LocalDate, YearMonthDay.
+ * @param <E>
+ *            a representation of "Date", typically Date, Calendar, LocalDate,
+ *            YearMonthDay.
  */
 public interface PeriodCountCalculator<E> {
 
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -43,6 +43,9 @@
     }
 
     public static Calendar getCal(final Date date) {
+        if (date == null) {
+            return null;
+        }
         final Calendar cal = Calendar.getInstance();
         cal.setTime(date);
         cal.setTimeZone(TimeZone.getTimeZone("UTC"));
Property changes on: trunk/datecalc-jdk
___________________________________________________________________
Name: svn:ignore
   - target
   + target
.checkstyle
.fbwarnings
Modified: trunk/datecalc-jdk/qalab.xml
===================================================================
--- trunk/datecalc-jdk/qalab.xml	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-jdk/qalab.xml	2006-09-07 14:48:06 UTC (rev 124)
@@ -58,6 +58,8 @@
         <summaryresult date="2006-09-06" filecount="2" statvalue="32" type="simian"/>
         <summaryresult date="2006-09-06" filecount="21" statvalue="84" type="cobertura-line"/>
         <summaryresult date="2006-09-06" filecount="21" statvalue="89" type="cobertura-branch"/>
+        <summaryresult date="2006-09-07" filecount="19" statvalue="91" type="cobertura-line"/>
+        <summaryresult date="2006-09-07" filecount="19" statvalue="92" type="cobertura-branch"/>
     </summary>
     <file id="net_objectlab_kit_datecalc_jdk_package.html" path="net/objectlab/kit/datecalc/jdk/package.html">
         <result date="2006-08-08" statvalue="1" type="checkstyle"/>
@@ -264,6 +266,8 @@
         <result date="2006-09-05" statvalue="84" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="79" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="84" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="78" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="84" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_jdk_DatePeriodCountCalculator.java" path="net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java">
@@ -278,6 +282,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_jdk_ExcelDateUtil.java" path="net/objectlab/kit/datecalc/jdk/ExcelDateUtil.java">
         <result date="2006-09-02" statvalue="4" type="checkstyle"/>
@@ -300,6 +306,8 @@
         <result date="2006-09-05" statvalue="2" type="checkstyle"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="91" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_jdk_JdkCalendarBaseDateCalculator.java" path="net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java">
@@ -311,6 +319,8 @@
         <result date="2006-09-05" statvalue="86" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="69" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="66" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="76" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="66" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_jdk_JdkDateCalculatorFactory.java" path="net/objectlab/kit/datecalc/jdk/JdkDateCalculatorFactory.java">
@@ -331,6 +341,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="95" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="95" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_jdk_JdkCalendarDateCalculator.java" path="net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java">
@@ -349,6 +361,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="90" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="95" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_jdk_JdkDateCalculator.java" path="net/objectlab/kit/datecalc/jdk/JdkDateCalculator.java">
         <result date="2006-09-04" statvalue="100" type="cobertura-line"/>
@@ -366,6 +380,8 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_jdk_AbstractDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java"/>
@@ -388,6 +404,8 @@
         id="net_objectlab_kit_datecalc_jdk_DefaultJdkCalendarCalculatorFactory.java" path="net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java">
         <result date="2006-09-06" statvalue="87" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="95" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_jdk_JdkCalendarCalculator.java" path="net/objectlab/kit/datecalc/jdk/JdkCalendarCalculator.java">
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
@@ -402,15 +420,59 @@
         id="net_objectlab_kit_datecalc_jdk_JdkCalendarIMMDateCalculator.java" path="net/objectlab/kit/datecalc/jdk/JdkCalendarIMMDateCalculator.java">
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_jdk_JdkCalendarPeriodCountCalculator.java" path="net/objectlab/kit/datecalc/jdk/JdkCalendarPeriodCountCalculator.java">
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_jdk_JdkDateIMMDateCalculator.java" path="net/objectlab/kit/datecalc/jdk/JdkDateIMMDateCalculator.java">
         <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
     </file>
+    <file
+        id="net_objectlab_kit_datecalc_jdk_CalendarBackwardHandler.java" path="net/objectlab/kit/datecalc/jdk/CalendarBackwardHandler.java">
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
+    </file>
+    <file
+        id="net_objectlab_kit_datecalc_jdk_CalendarForwardHandler.java" path="net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java">
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
+    </file>
+    <file
+        id="net_objectlab_kit_datecalc_jdk_CalendarModifiedFollowingHandler.java" path="net/objectlab/kit/datecalc/jdk/CalendarModifiedFollowingHandler.java">
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
+    </file>
+    <file
+        id="net_objectlab_kit_datecalc_jdk_CalendarModifiedPreceedingHandler.java" path="net/objectlab/kit/datecalc/jdk/CalendarModifiedPreceedingHandler.java">
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
+    </file>
+    <file id="net_objectlab_kit_datecalc_jdk_DateBackwardHandler.java" path="net/objectlab/kit/datecalc/jdk/DateBackwardHandler.java">
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
+    </file>
+    <file id="net_objectlab_kit_datecalc_jdk_DateForwardHandler.java" path="net/objectlab/kit/datecalc/jdk/DateForwardHandler.java">
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
+    </file>
+    <file
+        id="net_objectlab_kit_datecalc_jdk_DateModifiedFollowingHandler.java" path="net/objectlab/kit/datecalc/jdk/DateModifiedFollowingHandler.java">
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
+    </file>
+    <file
+        id="net_objectlab_kit_datecalc_jdk_DateModifiedPreceedingHandler.java" path="net/objectlab/kit/datecalc/jdk/DateModifiedPreceedingHandler.java">
+        <result date="2006-09-07" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
+    </file>
 </qalab>
Deleted: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -1,45 +0,0 @@
-/*
- * $Id$
- * 
- * Copyright 2006 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package net.objectlab.kit.datecalc.jdk;
-
-import java.util.Calendar;
-
-import net.objectlab.kit.datecalc.common.DateCalculator;
-import net.objectlab.kit.datecalc.common.HolidayHandlerType;
-
-/**
- * TODO javadoc
- * 
- * @author Marcin Jekot
- * @author $LastChangedBy$
- * @version $Revision$ $Date$
- * 
- */
-public class BackwardHandler extends ForwardHandler {
-
-    @Override
-    public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
-        return move(calendar, -1);
-    }
-
-    @Override
-    public String getType() {
-        return HolidayHandlerType.BACKWARD;
-    }
-
-}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarBackwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarBackwardHandler.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarBackwardHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -0,0 +1,45 @@
+/*
+ * $Id: CalendarBackwardHandler.java 99 2006-09-04 20:30:25Z marchy $
+ * 
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+
+/**
+ * TODO javadoc
+ * 
+ * @author Marcin Jekot
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 99 $ $Date: 2006-09-04 21:30:25 +0100 (Mon, 04 Sep 2006) $
+ * 
+ */
+public class CalendarBackwardHandler extends CalendarForwardHandler {
+
+    @Override
+    public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
+        return move(calendar, -1);
+    }
+
+    @Override
+    public String getType() {
+        return HolidayHandlerType.BACKWARD;
+    }
+
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarModifiedFollowingHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarModifiedFollowingHandler.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarModifiedFollowingHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -0,0 +1,60 @@
+/*
+ * $Id: CalendarModifiedFollowingHandler.java 99 2006-09-04 20:30:25Z marchy $
+ * 
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandler;
+import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+
+/**
+ * TODO javadoc
+ * 
+ * @author Marcin Jekot
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 99 $ $Date: 2006-09-04 21:30:25 +0100 (Mon, 04 Sep 2006) $
+ * 
+ */
+public class CalendarModifiedFollowingHandler implements HolidayHandler<Calendar> {
+
+    public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
+        return move(calendar, 1);
+    }
+
+    protected Calendar move(final DateCalculator<Calendar> calendar, int step) {
+
+        final Calendar cal = (Calendar) calendar.getCurrentBusinessDate().clone();
+
+        final int month = cal.get(Calendar.MONTH);
+
+        while (calendar.isNonWorkingDay(cal)) {
+            cal.add(Calendar.DAY_OF_MONTH, step);
+            if (month != cal.get(Calendar.MONTH)) {
+                // switch direction and go back
+                step *= -1;
+                cal.add(Calendar.DAY_OF_MONTH, step);
+            }
+        }
+
+        return cal;
+    }
+
+    public String getType() {
+        return HolidayHandlerType.MODIFIED_FOLLLOWING;
+    }
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarModifiedPreceedingHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarModifiedPreceedingHandler.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarModifiedPreceedingHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -0,0 +1,44 @@
+/*
+ * $Id: CalendarModifiedPreceedingHandler.java 99 2006-09-04 20:30:25Z marchy $
+ * 
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+
+/**
+ * TODO javadoc
+ * 
+ * @author Marcin Jekot
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 99 $ $Date: 2006-09-04 21:30:25 +0100 (Mon, 04 Sep 2006) $
+ * 
+ */
+public class CalendarModifiedPreceedingHandler extends CalendarModifiedFollowingHandler {
+
+    @Override
+    public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
+        return move(calendar, -1);
+    }
+
+    @Override
+    public String getType() {
+        return HolidayHandlerType.MODIFIED_PRECEEDING;
+    }
+
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateBackwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateBackwardHandler.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateBackwardHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -0,0 +1,45 @@
+/*
+ * $Id: CalendarBackwardHandler.java 99 2006-09-04 20:30:25Z marchy $
+ * 
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Date;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+
+/**
+ * TODO javadoc
+ * 
+ * @author Marcin Jekot
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 99 $ $Date: 2006-09-04 21:30:25 +0100 (Mon, 04 Sep 2006) $
+ * 
+ */
+public class DateBackwardHandler extends DateForwardHandler {
+
+    @Override
+    public Date moveCurrentDate(final DateCalculator<Date> calendar) {
+        return move(calendar, -1);
+    }
+
+    @Override
+    public String getType() {
+        return HolidayHandlerType.BACKWARD;
+    }
+
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateForwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateForwardHandler.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateForwardHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandler;
+import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+import net.objectlab.kit.datecalc.common.Utils;
+
+/**
+ * TODO javadoc
+ * 
+ * @author Marcin Jekot
+ * @author $LastChangedBy: benoitx $
+ * @version $Revision: 96 $ $Date: 2006-09-04 16:01:20 +0100 (Mon, 04 Sep 2006) $
+ * 
+ */
+public class DateForwardHandler implements HolidayHandler<Date> {
+
+    public Date moveCurrentDate(final DateCalculator<Date> calendar) {
+        return move(calendar, 1);
+    }
+
+    protected Date move(final DateCalculator<Date> calculator, final int step) {
+        final Calendar cal = Utils.getCal(calculator.getCurrentBusinessDate());
+
+        if (cal == null) {
+            return null;
+        }
+
+        while (calculator.isNonWorkingDay(cal.getTime())) {
+            cal.add(Calendar.DAY_OF_MONTH, step);
+        }
+
+        return cal.getTime();
+    }
+
+    public String getType() {
+        return HolidayHandlerType.FORWARD;
+    }
+
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateModifiedFollowingHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateModifiedFollowingHandler.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateModifiedFollowingHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -0,0 +1,61 @@
+/*
+ * $Id: CalendarModifiedFollowingHandler.java 99 2006-09-04 20:30:25Z marchy $
+ * 
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandler;
+import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+import net.objectlab.kit.datecalc.common.Utils;
+
+/**
+ * TODO javadoc
+ * 
+ * @author Marcin Jekot
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 99 $ $Date: 2006-09-04 21:30:25 +0100 (Mon, 04 Sep 2006) $
+ * 
+ */
+public class DateModifiedFollowingHandler implements HolidayHandler<Date> {
+
+    public Date moveCurrentDate(final DateCalculator<Date> calendar) {
+        return move(calendar, 1);
+    }
+
+    protected Date move(final DateCalculator<Date> calendar, int step) {
+        final Calendar cal = (Calendar) Utils.getCal(calendar.getCurrentBusinessDate()).clone();
+
+        final int month = cal.get(Calendar.MONTH);
+
+        while (calendar.isNonWorkingDay(cal.getTime())) {
+            cal.add(Calendar.DAY_OF_MONTH, step);
+            if (month != cal.get(Calendar.MONTH)) {
+                // switch direction and go back
+                step *= -1;
+                cal.add(Calendar.DAY_OF_MONTH, step);
+            }
+        }
+
+        return cal.getTime();
+    }
+
+    public String getType() {
+        return HolidayHandlerType.MODIFIED_FOLLLOWING;
+    }
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateModifiedPreceedingHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateModifiedPreceedingHandler.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateModifiedPreceedingHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -0,0 +1,44 @@
+/*
+ * $Id: CalendarModifiedPreceedingHandler.java 99 2006-09-04 20:30:25Z marchy $
+ * 
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Date;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+
+/**
+ * TODO javadoc
+ * 
+ * @author Marcin Jekot
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 99 $ $Date: 2006-09-04 21:30:25 +0100 (Mon, 04 Sep 2006) $
+ * 
+ */
+public class DateModifiedPreceedingHandler extends DateModifiedFollowingHandler {
+
+    @Override
+    public Date moveCurrentDate(final DateCalculator<Date> calendar) {
+        return move(calendar, -1);
+    }
+
+    @Override
+    public String getType() {
+        return HolidayHandlerType.MODIFIED_PRECEEDING;
+    }
+
+}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -20,6 +20,7 @@
 import java.util.Calendar;
 
 import net.objectlab.kit.datecalc.common.AbstractDateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.DateCalculator;
 import net.objectlab.kit.datecalc.common.HolidayHandlerType;
 import net.objectlab.kit.datecalc.common.IMMDateCalculator;
 
@@ -31,8 +32,7 @@
  * @version $Revision: 96 $ $Date: 2006-09-04 16:01:20 +0100 (Mon, 04 Sep 2006) $
  * 
  */
-public class DefaultJdkCalendarCalculatorFactory extends AbstractDateCalculatorFactory<Calendar> implements
-        JdkCalendarCalculatorFactory {
+public class DefaultJdkCalendarCalculatorFactory extends AbstractDateCalculatorFactory<Calendar> {
 
     private static final DefaultJdkCalendarCalculatorFactory DEFAULT = new DefaultJdkCalendarCalculatorFactory();
 
@@ -40,7 +40,7 @@
 
     private static final JdkCalendarIMMDateCalculator IMMDC = new JdkCalendarIMMDateCalculator();
 
-    public static JdkCalendarCalculatorFactory getDefaultInstance() {
+    public static DefaultJdkCalendarCalculatorFactory getDefaultInstance() {
         return DEFAULT;
     }
 
@@ -50,23 +50,21 @@
      * @see net.objectlab.kit.datecalc.jdk.JdkDateCalculatorFactory#getDateCalculator(java.lang.String,
      *      java.lang.String)
      */
-    public JdkCalendarDateCalculator getDateCalculator(final String name, final String holidayHandlerType) {
+    public DateCalculator<Calendar> getDateCalculator(final String name, final String holidayHandlerType) {
         final JdkCalendarBaseDateCalculator cal = new JdkCalendarBaseDateCalculator();
         cal.setName(name);
-        if (holidays.containsKey(name)) {
-            cal.setNonWorkingDays(holidays.get(name));
-        }
+        setHolidays(name, cal);
 
         if (holidayHandlerType == null) {
             return cal;
         } else if (HolidayHandlerType.FORWARD.equals(holidayHandlerType)) {
-            cal.setHolidayHandler(new ForwardHandler());
+            cal.setHolidayHandler(new CalendarForwardHandler());
         } else if (HolidayHandlerType.BACKWARD.equals(holidayHandlerType)) {
-            cal.setHolidayHandler(new BackwardHandler());
+            cal.setHolidayHandler(new CalendarBackwardHandler());
         } else if (HolidayHandlerType.MODIFIED_FOLLLOWING.equals(holidayHandlerType)) {
-            cal.setHolidayHandler(new ModifiedFollowingHandler());
+            cal.setHolidayHandler(new CalendarModifiedFollowingHandler());
         } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
-            cal.setHolidayHandler(new ModifiedPreceedingHandler());
+            cal.setHolidayHandler(new CalendarModifiedPreceedingHandler());
         } else {
             throw new UnsupportedOperationException("Unsupported HolidayHandler: " + holidayHandlerType);
         }
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkDateCalculatorFactory.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkDateCalculatorFactory.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkDateCalculatorFactory.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -20,6 +20,7 @@
 import java.util.Date;
 
 import net.objectlab.kit.datecalc.common.AbstractDateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.DateCalculator;
 import net.objectlab.kit.datecalc.common.HolidayHandlerType;
 import net.objectlab.kit.datecalc.common.IMMDateCalculator;
 
@@ -31,15 +32,15 @@
  * @version $Revision$ $Date$
  * 
  */
-public class DefaultJdkDateCalculatorFactory extends AbstractDateCalculatorFactory<Date> implements JdkDateCalculatorFactory {
+public class DefaultJdkDateCalculatorFactory extends AbstractDateCalculatorFactory<Date> {
 
-    private static final JdkDateCalculatorFactory DEFAULT = new DefaultJdkDateCalculatorFactory();
+    private static final DefaultJdkDateCalculatorFactory DEFAULT = new DefaultJdkDateCalculatorFactory();
 
     private static final JdkDatePeriodCountCalculator PCC = new DatePeriodCountCalculator();
 
     private static final JdkDateIMMDateCalculator IMMDC = new JdkDateIMMDateCalculator();
 
-    public static JdkDateCalculatorFactory getDefaultInstance() {
+    public static DefaultJdkDateCalculatorFactory getDefaultInstance() {
         return DEFAULT;
     }
 
@@ -49,23 +50,21 @@
      * @see net.objectlab.kit.datecalc.jdk.JdkDateCalculatorFactory#getDateCalculator(java.lang.String,
      *      java.lang.String)
      */
-    public JdkDateCalculator getDateCalculator(final String name, final String holidayHandlerType) {
+    public DateCalculator<Date> getDateCalculator(final String name, final String holidayHandlerType) {
         final JdkDateBaseDateCalculator cal = new JdkDateBaseDateCalculator();
         cal.setName(name);
-        if (holidays.containsKey(name)) {
-            cal.setNonWorkingDays(holidays.get(name));
-        }
+        setHolidays(name, cal);
 
         if (holidayHandlerType == null) {
             return cal;
         } else if (HolidayHandlerType.FORWARD.equals(holidayHandlerType)) {
-            cal.setHolidayHandler(new ForwardHandler());
+            cal.setHolidayHandler(new DateForwardHandler());
         } else if (HolidayHandlerType.BACKWARD.equals(holidayHandlerType)) {
-            cal.setHolidayHandler(new BackwardHandler());
+            cal.setHolidayHandler(new DateBackwardHandler());
         } else if (HolidayHandlerType.MODIFIED_FOLLLOWING.equals(holidayHandlerType)) {
-            cal.setHolidayHandler(new ModifiedFollowingHandler());
+            cal.setHolidayHandler(new DateModifiedFollowingHandler());
         } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
-            cal.setHolidayHandler(new ModifiedPreceedingHandler());
+            cal.setHolidayHandler(new DateModifiedPreceedingHandler());
         } else {
             throw new UnsupportedOperationException("Unsupported HolidayHandler: " + holidayHandlerType);
         }
Deleted: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java	2006-09-06 23:00:22 UTC (rev 123)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java	2006-09-07 14:48:06 UTC (rev 124)
@@ -1,54 +0,0 @@
-/*
- * Copyright 2006 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package net.objectlab.kit.datecalc.jdk;
-
-import java.util.Calendar;
-
-import net.objectlab.kit.datecalc.common.DateCalculator;
-import net.objectlab.kit.datecalc.common.HolidayHandler;
-import net.objectlab.kit.datecalc.common.HolidayHandlerType;
-
-/**
- * TODO javadoc
- * 
- * @author Marcin Jekot
- * @author $LastChangedBy$
- * @version $Revision$ $Date$
- * 
- */
-public class ForwardHandler implements HolidayHandler<Calendar> {
-
-    public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
-        return move(calendar, 1);
-    }
-
-    protected Calendar move(final DateCalculator<Calendar> calculator, final int step) {
-        // final Calendar cal = (Calendar)
-        // calculator.getCurrentBusinessDate().clone();
-        final Calendar cal = calculator.getCurrentBusinessDate();
-
-        while (calculator.isNonWorkingDay(cal)) {
-            cal.add(Calendar.DAY_OF_MONTH, step);
-        }
-
-        return cal;
-    }
-
-    public String getType() {
-        return HolidayHandlerType.FORWARD;
-    }
-
-}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java
=============================...
 
[truncated message content] |