| 
      
      
      From: <be...@us...> - 2007-01-04 18:31:58
       | 
| Revision: 235
          http://svn.sourceforge.net/objectlabkit/?rev=235&view=rev
Author:   benoitx
Date:     2007-01-04 10:31:58 -0800 (Thu, 04 Jan 2007)
Log Message:
-----------
[Bug 1575498] Suggested by Paul Hill (thanks). Introduction of HolidayCalendar as a replacement to the simplistic Set<E> for holidays (deprecated).
The HolidayCalendar contains a set of holidays but also 2 boundaries early and late which define the VALID set of holidays.
e.g. last holiday for UK in 2006 is 26 Dec 2006 but that set should be VALID until Dec 31 2006.
Re-organised code to use only immutable Holiday calendars internally.
Modified Paths:
--------------
    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/AbstractKitCalculatorsFactory.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DefaultHolidayCalendar.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/ExcelDateUtil.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/HolidayCalendar.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/KitCalculatorsFactory.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
    trunk/datecalc-common/src/site/navigation.xml
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorCombinationTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactoryTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateTestCase.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardUnlessNegativeCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-jdk/qalab.xml
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarDateCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarKitCalculatorsFactory.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateDateCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateKitCalculatorsFactory.java
    trunk/datecalc-jdk/src/site/navigation.xml
    trunk/datecalc-joda/qalab.xml
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateForwardUnlessNegativeHandler.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateKitCalculatorsFactory.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayKitCalculatorsFactory.java
    trunk/datecalc-joda/src/site/navigation.xml
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayBackwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculatorCombinationTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayForwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayForwardUnlessNegativeDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedPrecedingDateCalculatorTest.java
    trunk/src/site/navigation.xml
Added Paths:
-----------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/ImmutableHolidayCalendar.java
Modified: trunk/datecalc-common/qalab.xml
===================================================================
--- trunk/datecalc-common/qalab.xml	2007-01-04 15:33:23 UTC (rev 234)
+++ trunk/datecalc-common/qalab.xml	2007-01-04 18:31:58 UTC (rev 235)
@@ -21,155 +21,161 @@
 ]>
 <qalab version="1.2">
     <summary>
-        <summaryresult date="2006-08-08" filecount="7" module="default"
-            project="default" statvalue="5" type="checkstyle"/>
-        <summaryresult date="2006-08-08" filecount="2" module="default"
-            project="default" statvalue="3" type="pmd"/>
-        <summaryresult date="2006-08-08" filecount="1" module="default"
-            project="default" statvalue="1" type="findbugs"/>
-        <summaryresult date="2006-08-08" filecount="6" module="default"
-            project="default" statvalue="47" type="cobertura-line"/>
-        <summaryresult date="2006-08-08" filecount="6" module="default"
-            project="default" statvalue="57" type="cobertura-branch"/>
-        <summaryresult date="2006-08-09" filecount="7" module="default"
-            project="default" statvalue="5" type="checkstyle"/>
-        <summaryresult date="2006-08-09" filecount="6" module="default"
-            project="default" statvalue="86" type="cobertura-line"/>
-        <summaryresult date="2006-08-09" filecount="6" module="default"
-            project="default" statvalue="91" type="cobertura-branch"/>
-        <summaryresult date="2006-08-10" filecount="7" module="default"
-            project="default" statvalue="4" type="checkstyle"/>
-        <summaryresult date="2006-08-10" filecount="6" module="default"
-            project="default" statvalue="90" type="cobertura-line"/>
-        <summaryresult date="2006-08-10" filecount="6" module="default"
-            project="default" statvalue="100" type="cobertura-branch"/>
-        <summaryresult date="2006-08-19" filecount="7" module="default"
-            project="default" statvalue="1" type="checkstyle"/>
-        <summaryresult date="2006-08-19" filecount="6" module="default"
-            project="default" statvalue="91" type="cobertura-line"/>
-        <summaryresult date="2006-08-19" filecount="6" module="default"
-            project="default" statvalue="96" type="cobertura-branch"/>
-        <summaryresult date="2006-08-20" filecount="7" module="default"
-            project="default" statvalue="1" type="checkstyle"/>
-        <summaryresult date="2006-08-20" filecount="6" module="default"
-            project="default" statvalue="90" type="cobertura-line"/>
-        <summaryresult date="2006-08-20" filecount="6" module="default"
-            project="default" statvalue="100" type="cobertura-branch"/>
-        <summaryresult date="2006-08-23" filecount="10" module="default"
-            project="default" statvalue="25" type="checkstyle"/>
-        <summaryresult date="2006-08-23" filecount="9" module="default"
-            project="default" statvalue="74" type="cobertura-line"/>
-        <summaryresult date="2006-08-23" filecount="9" module="default"
-            project="default" statvalue="87" type="cobertura-branch"/>
-        <summaryresult date="2006-08-24" filecount="10" module="default"
-            project="default" statvalue="1" type="checkstyle"/>
-        <summaryresult date="2006-08-24" filecount="9" module="default"
-            project="default" statvalue="62" type="cobertura-line"/>
-        <summaryresult date="2006-08-24" filecount="9" module="default"
-            project="default" statvalue="65" type="cobertura-branch"/>
-        <summaryresult date="2006-08-28" filecount="13" module="default"
-            project="default" statvalue="3" type="checkstyle"/>
-        <summaryresult date="2006-08-28" filecount="12" module="default"
-            project="default" statvalue="60" type="cobertura-line"/>
-        <summaryresult date="2006-08-28" filecount="12" module="default"
-            project="default" statvalue="65" type="cobertura-branch"/>
-        <summaryresult date="2006-09-02" filecount="13" module="default"
-            project="default" statvalue="9" type="checkstyle"/>
-        <summaryresult date="2006-09-02" filecount="12" module="default"
-            project="default" statvalue="59" type="cobertura-line"/>
-        <summaryresult date="2006-09-02" filecount="12" module="default"
-            project="default" statvalue="61" type="cobertura-branch"/>
-        <summaryresult date="2006-09-04" filecount="15" module="default"
-            project="default" statvalue="12" type="checkstyle"/>
-        <summaryresult date="2006-09-04" filecount="1" module="default"
-            project="default" statvalue="1" type="findbugs"/>
-        <summaryresult date="2006-09-04" filecount="14" module="default"
-            project="default" statvalue="61" type="cobertura-line"/>
-        <summaryresult date="2006-09-04" filecount="14" module="default"
-            project="default" statvalue="64" type="cobertura-branch"/>
-        <summaryresult date="2006-09-05" filecount="16" module="default"
-            project="default" statvalue="9" type="checkstyle"/>
-        <summaryresult date="2006-09-05" filecount="1" module="default"
-            project="default" statvalue="1" type="findbugs"/>
-        <summaryresult date="2006-09-05" filecount="15" module="default"
-            project="default" statvalue="63" type="cobertura-line"/>
-        <summaryresult date="2006-09-05" filecount="15" module="default"
-            project="default" statvalue="67" type="cobertura-branch"/>
-        <summaryresult date="2006-09-06" filecount="18" module="default"
-            project="default" statvalue="1" type="checkstyle"/>
-        <summaryresult date="2006-09-06" filecount="17" module="default"
-            project="default" statvalue="66" type="cobertura-line"/>
-        <summaryresult date="2006-09-06" filecount="17" module="default"
-            project="default" statvalue="68" type="cobertura-branch"/>
-        <summaryresult date="2006-09-07" filecount="17" module="default"
-            project="default" statvalue="64" type="cobertura-line"/>
-        <summaryresult date="2006-09-07" filecount="17" module="default"
-            project="default" statvalue="64" type="cobertura-branch"/>
-        <summaryresult date="2006-09-09" filecount="17" module="default"
-            project="default" statvalue="63" type="cobertura-line"/>
-        <summaryresult date="2006-09-09" filecount="17" module="default"
-            project="default" statvalue="64" type="cobertura-branch"/>
-        <summaryresult date="2006-09-12" filecount="17" module="default"
-            project="default" statvalue="59" type="cobertura-line"/>
-        <summaryresult date="2006-09-12" filecount="17" module="default"
-            project="default" statvalue="62" type="cobertura-branch"/>
-        <summaryresult date="2006-09-14" filecount="17" module="default"
-            project="default" statvalue="57" type="cobertura-line"/>
-        <summaryresult date="2006-09-14" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-09-18" filecount="17" module="default"
-            project="default" statvalue="57" type="cobertura-line"/>
-        <summaryresult date="2006-09-18" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-09-20" filecount="17" module="default"
-            project="default" statvalue="57" type="cobertura-line"/>
-        <summaryresult date="2006-09-20" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-09-21" filecount="17" module="default"
-            project="default" statvalue="57" type="cobertura-line"/>
-        <summaryresult date="2006-09-21" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-09-22" filecount="17" module="default"
-            project="default" statvalue="57" type="cobertura-line"/>
-        <summaryresult date="2006-09-22" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-10-10" filecount="17" module="default"
-            project="default" statvalue="58" type="cobertura-line"/>
-        <summaryresult date="2006-10-10" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-10-11" filecount="17" module="default"
-            project="default" statvalue="58" type="cobertura-line"/>
-        <summaryresult date="2006-10-11" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-10-12" filecount="17" module="default"
-            project="default" statvalue="58" type="cobertura-line"/>
-        <summaryresult date="2006-10-12" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-10-13" filecount="17" module="default"
-            project="default" statvalue="58" type="cobertura-line"/>
-        <summaryresult date="2006-10-13" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-10-14" filecount="17" module="default"
-            project="default" statvalue="58" type="cobertura-line"/>
-        <summaryresult date="2006-10-14" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-10-15" filecount="17" module="default"
-            project="default" statvalue="58" type="cobertura-line"/>
-        <summaryresult date="2006-10-15" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2006-11-13" filecount="17" module="default"
-            project="default" statvalue="56" type="cobertura-line"/>
-        <summaryresult date="2006-11-13" filecount="17" module="default"
-            project="default" statvalue="60" type="cobertura-branch"/>
-        <summaryresult date="2007-01-03" filecount="19" module="default"
-            project="default" statvalue="54" type="cobertura-line"/>
-        <summaryresult date="2007-01-03" filecount="19" module="default"
-            project="default" statvalue="58" type="cobertura-branch"/>
+        <summaryresult date="2006-08-08" filecount="7" module="common"
+            project="objectlabkit" statvalue="5" type="checkstyle"/>
+        <summaryresult date="2006-08-08" filecount="2" module="common"
+            project="objectlabkit" statvalue="3" type="pmd"/>
+        <summaryresult date="2006-08-08" filecount="1" module="common"
+            project="objectlabkit" statvalue="1" type="findbugs"/>
+        <summaryresult date="2006-08-08" filecount="6" module="common"
+            project="objectlabkit" statvalue="47" type="cobertura-line"/>
+        <summaryresult date="2006-08-08" filecount="6" module="common"
+            project="objectlabkit" statvalue="57" type="cobertura-branch"/>
+        <summaryresult date="2006-08-09" filecount="7" module="common"
+            project="objectlabkit" statvalue="5" type="checkstyle"/>
+        <summaryresult date="2006-08-09" filecount="6" module="common"
+            project="objectlabkit" statvalue="86" type="cobertura-line"/>
+        <summaryresult date="2006-08-09" filecount="6" module="common"
+            project="objectlabkit" statvalue="91" type="cobertura-branch"/>
+        <summaryresult date="2006-08-10" filecount="7" module="common"
+            project="objectlabkit" statvalue="4" type="checkstyle"/>
+        <summaryresult date="2006-08-10" filecount="6" module="common"
+            project="objectlabkit" statvalue="90" type="cobertura-line"/>
+        <summaryresult date="2006-08-10" filecount="6" module="common"
+            project="objectlabkit" statvalue="100" type="cobertura-branch"/>
+        <summaryresult date="2006-08-19" filecount="7" module="common"
+            project="objectlabkit" statvalue="1" type="checkstyle"/>
+        <summaryresult date="2006-08-19" filecount="6" module="common"
+            project="objectlabkit" statvalue="91" type="cobertura-line"/>
+        <summaryresult date="2006-08-19" filecount="6" module="common"
+            project="objectlabkit" statvalue="96" type="cobertura-branch"/>
+        <summaryresult date="2006-08-20" filecount="7" module="common"
+            project="objectlabkit" statvalue="1" type="checkstyle"/>
+        <summaryresult date="2006-08-20" filecount="6" module="common"
+            project="objectlabkit" statvalue="90" type="cobertura-line"/>
+        <summaryresult date="2006-08-20" filecount="6" module="common"
+            project="objectlabkit" statvalue="100" type="cobertura-branch"/>
+        <summaryresult date="2006-08-23" filecount="10" module="common"
+            project="objectlabkit" statvalue="25" type="checkstyle"/>
+        <summaryresult date="2006-08-23" filecount="9" module="common"
+            project="objectlabkit" statvalue="74" type="cobertura-line"/>
+        <summaryresult date="2006-08-23" filecount="9" module="common"
+            project="objectlabkit" statvalue="87" type="cobertura-branch"/>
+        <summaryresult date="2006-08-24" filecount="10" module="common"
+            project="objectlabkit" statvalue="1" type="checkstyle"/>
+        <summaryresult date="2006-08-24" filecount="9" module="common"
+            project="objectlabkit" statvalue="62" type="cobertura-line"/>
+        <summaryresult date="2006-08-24" filecount="9" module="common"
+            project="objectlabkit" statvalue="65" type="cobertura-branch"/>
+        <summaryresult date="2006-08-28" filecount="13" module="common"
+            project="objectlabkit" statvalue="3" type="checkstyle"/>
+        <summaryresult date="2006-08-28" filecount="12" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-line"/>
+        <summaryresult date="2006-08-28" filecount="12" module="common"
+            project="objectlabkit" statvalue="65" type="cobertura-branch"/>
+        <summaryresult date="2006-09-02" filecount="13" module="common"
+            project="objectlabkit" statvalue="9" type="checkstyle"/>
+        <summaryresult date="2006-09-02" filecount="12" module="common"
+            project="objectlabkit" statvalue="59" type="cobertura-line"/>
+        <summaryresult date="2006-09-02" filecount="12" module="common"
+            project="objectlabkit" statvalue="61" type="cobertura-branch"/>
+        <summaryresult date="2006-09-04" filecount="15" module="common"
+            project="objectlabkit" statvalue="12" type="checkstyle"/>
+        <summaryresult date="2006-09-04" filecount="1" module="common"
+            project="objectlabkit" statvalue="1" type="findbugs"/>
+        <summaryresult date="2006-09-04" filecount="14" module="common"
+            project="objectlabkit" statvalue="61" type="cobertura-line"/>
+        <summaryresult date="2006-09-04" filecount="14" module="common"
+            project="objectlabkit" statvalue="64" type="cobertura-branch"/>
+        <summaryresult date="2006-09-05" filecount="16" module="common"
+            project="objectlabkit" statvalue="9" type="checkstyle"/>
+        <summaryresult date="2006-09-05" filecount="1" module="common"
+            project="objectlabkit" statvalue="1" type="findbugs"/>
+        <summaryresult date="2006-09-05" filecount="15" module="common"
+            project="objectlabkit" statvalue="63" type="cobertura-line"/>
+        <summaryresult date="2006-09-05" filecount="15" module="common"
+            project="objectlabkit" statvalue="67" type="cobertura-branch"/>
+        <summaryresult date="2006-09-06" filecount="18" module="common"
+            project="objectlabkit" statvalue="1" type="checkstyle"/>
+        <summaryresult date="2006-09-06" filecount="17" module="common"
+            project="objectlabkit" statvalue="66" type="cobertura-line"/>
+        <summaryresult date="2006-09-06" filecount="17" module="common"
+            project="objectlabkit" statvalue="68" type="cobertura-branch"/>
+        <summaryresult date="2006-09-07" filecount="17" module="common"
+            project="objectlabkit" statvalue="64" type="cobertura-line"/>
+        <summaryresult date="2006-09-07" filecount="17" module="common"
+            project="objectlabkit" statvalue="64" type="cobertura-branch"/>
+        <summaryresult date="2006-09-09" filecount="17" module="common"
+            project="objectlabkit" statvalue="63" type="cobertura-line"/>
+        <summaryresult date="2006-09-09" filecount="17" module="common"
+            project="objectlabkit" statvalue="64" type="cobertura-branch"/>
+        <summaryresult date="2006-09-12" filecount="17" module="common"
+            project="objectlabkit" statvalue="59" type="cobertura-line"/>
+        <summaryresult date="2006-09-12" filecount="17" module="common"
+            project="objectlabkit" statvalue="62" type="cobertura-branch"/>
+        <summaryresult date="2006-09-14" filecount="17" module="common"
+            project="objectlabkit" statvalue="57" type="cobertura-line"/>
+        <summaryresult date="2006-09-14" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-09-18" filecount="17" module="common"
+            project="objectlabkit" statvalue="57" type="cobertura-line"/>
+        <summaryresult date="2006-09-18" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-09-20" filecount="17" module="common"
+            project="objectlabkit" statvalue="57" type="cobertura-line"/>
+        <summaryresult date="2006-09-20" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-09-21" filecount="17" module="common"
+            project="objectlabkit" statvalue="57" type="cobertura-line"/>
+        <summaryresult date="2006-09-21" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-09-22" filecount="17" module="common"
+            project="objectlabkit" statvalue="57" type="cobertura-line"/>
+        <summaryresult date="2006-09-22" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-10-10" filecount="17" module="common"
+            project="objectlabkit" statvalue="58" type="cobertura-line"/>
+        <summaryresult date="2006-10-10" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-10-11" filecount="17" module="common"
+            project="objectlabkit" statvalue="58" type="cobertura-line"/>
+        <summaryresult date="2006-10-11" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-10-12" filecount="17" module="common"
+            project="objectlabkit" statvalue="58" type="cobertura-line"/>
+        <summaryresult date="2006-10-12" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-10-13" filecount="17" module="common"
+            project="objectlabkit" statvalue="58" type="cobertura-line"/>
+        <summaryresult date="2006-10-13" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-10-14" filecount="17" module="common"
+            project="objectlabkit" statvalue="58" type="cobertura-line"/>
+        <summaryresult date="2006-10-14" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-10-15" filecount="17" module="common"
+            project="objectlabkit" statvalue="58" type="cobertura-line"/>
+        <summaryresult date="2006-10-15" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2006-11-13" filecount="17" module="common"
+            project="objectlabkit" statvalue="56" type="cobertura-line"/>
+        <summaryresult date="2006-11-13" filecount="17" module="common"
+            project="objectlabkit" statvalue="60" type="cobertura-branch"/>
+        <summaryresult date="2007-01-03" filecount="19" module="common"
+            project="objectlabkit" statvalue="54" type="cobertura-line"/>
+        <summaryresult date="2007-01-03" filecount="19" module="common"
+            project="objectlabkit" statvalue="58" type="cobertura-branch"/>
+        <summaryresult date="2007-01-04" filecount="21" module="common"
+            project="objectlabkit" statvalue="1" type="checkstyle"/>
+        <summaryresult date="2007-01-04" filecount="20" module="common"
+            project="objectlabkit" statvalue="34" type="cobertura-line"/>
+        <summaryresult date="2007-01-04" filecount="20" module="common"
+            project="objectlabkit" statvalue="30" type="cobertura-branch"/>
     </summary>
     <file
         id="default-default-net_objectlab_kit_datecalc_common_package.html"
-        module="default"
-        path="net/objectlab/kit/datecalc/common/package.html" project="default">
+        module="common"
+        path="net/objectlab/kit/datecalc/common/package.html" project="objectlabkit">
         <result date="2006-08-08" statvalue="1" type="checkstyle"/>
         <result date="2006-08-09" statvalue="1" type="checkstyle"/>
         <result date="2006-08-10" statvalue="1" type="checkstyle"/>
@@ -184,8 +190,8 @@
     </file>
     <file
         id="default-default-net_objectlab_kit_datecalc_common_Tenor.java"
-        module="default"
-        path="net/objectlab/kit/datecalc/common/Tenor.java" project="default">
+        module="common"
+        path="net/objectlab/kit/datecalc/common/Tenor.java" project="objectlabkit">
         <result date="2006-08-08" statvalue="1" type="checkstyle"/>
         <result date="2006-08-08" statvalue="55" type="cobertura-line"/>
         <result date="2006-08-08" statvalue="43" type="cobertura-branch"/>
@@ -248,8 +254,8 @@
     </file>
     <file
         id="default-default-net_objectlab_kit_datecalc_common_WorkingWeek.java"
-        module="default"
-        path="net/objectlab/kit/datecalc/common/WorkingWeek.java" project="default">
+        module="common"
+        path="net/objectlab/kit/datecalc/common/WorkingWeek.java" project="objectlabkit">
         <result date="2006-08-08" statvalue="3" type="checkstyle"/>
         <result date="2006-08-08" statvalue="1" type="findbugs"/>
         <result date="2006-08-08" statvalue="82" type="cobertura-line"/>
@@ -317,8 +323,8 @@
     </file>
     <file
         id="default-default-net_objectlab_kit_datecalc_common_TenorCode.java"
-        module="default"
-        path="net/objectlab/kit/datecalc/common/TenorCode.java" project="default">
+        module="common"
+        path="net/objectlab/kit/datecalc/common/TenorCode.java" project="objectlabkit">
         <result date="2006-08-08" statvalue="100" type="cobertura-line"/>
         <result date="2006-08-08" statvalue="100" type="cobertura-branch"/>
         <result date="2006-08-09" statvalue="100" type="cobertura-line"/>
@@ -378,8 +384,8 @@
     </file>
     <file
         id="default-default-net_objectlab_kit_datecalc_common_HolidayHandlerType.java"
-        module="default"
-        path="net/objectlab/kit/datecalc/common/HolidayHandlerType.java" project="default">
+        module="common"
+        path="net/objectlab/kit/datecalc/common/HolidayHandlerType.java" project="objectlabkit">
         <result date="2006-08-08" statvalue="100" type="cobertura-branch"/>
         <result date="2006-08-09" statvalue="100" type="cobertura-branch"/>
         <result date="2006-08-10" statvalue="100" type="cobertura-branch"/>
@@ -411,8 +417,8 @@
     </file>
     <file
         id="default-default-net_objectlab_kit_datecalc_common_PeriodCountBasis.java"
-        module="default"
-        path="net/objectlab/kit/datecalc/common/PeriodCountBasis.java" project="default">
+        module="common"
+        path="net/objectlab/kit/datecalc/common/PeriodCountBasis.java" project="objectlabkit">
         <result date="2006-08-08" statvalue="100" type="cobertura-branch"/>
         <result date="2006-08-10" statvalue="100" type="cobertura-branch"/>
         <result date="2006-08-20" statvalue="100" type="cobertura-branch"/>
@@ -442,8 +448,8 @@
     </file>
     <file
         id="default-default-net_objectlab_kit_datecalc_common_StandardTenor.java"
-        module="default"
-        path="net/objectlab/kit/datecalc/common/StandardTenor.java" project="default">
+        module="common"
+        path="net/objectlab/kit/datecalc/common/StandardTenor.java" project="objectlabkit">
         <result date="2006-08-08" statvalue="100" type="cobertura-branch"/>
         <result date="2006-08-09" statvalue="92" type="cobertura-line"/>
         <result date="2006-08-09" statvalue="100" type="cobertura-branch"/>
@@ -502,18 +508,18 @@
     </file>
     <file
         id="default-default-net_objectlab_kit_datecalc_common_AbstractDateCalculator.java"
-        module="default"
-        path="net/objectlab/kit/datecalc/common/AbstractDateCalculator.java" project="default">
+        module...
 
[truncated message content] | 
| 
      
      
      From: <ma...@us...> - 2007-01-05 13:59:28
       | 
| Revision: 237
          http://svn.sourceforge.net/objectlabkit/?rev=237&view=rev
Author:   marchy
Date:     2007-01-05 05:59:28 -0800 (Fri, 05 Jan 2007)
Log Message:
-----------
tweaking m2 pom's - changed version to 1.1-SNAPSHOT
Modified Paths:
--------------
    trunk/datecalc-common/pom.xml
    trunk/datecalc-jdk/pom.xml
    trunk/datecalc-joda/pom.xml
    trunk/pom.xml
Modified: trunk/datecalc-common/pom.xml
===================================================================
--- trunk/datecalc-common/pom.xml	2007-01-04 21:11:42 UTC (rev 236)
+++ trunk/datecalc-common/pom.xml	2007-01-05 13:59:28 UTC (rev 237)
@@ -16,12 +16,12 @@
    <parent>
       <groupId>net.objectlab.kit.datecalc</groupId>
       <artifactId>datecalc</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>1.1-SNAPSHOT</version>
    </parent>
 
    <artifactId>datecalc-common</artifactId>
    <packaging>jar</packaging>
    <name>DateCalc commons</name>
-   <description>Common Date Calculator methods</description>
+   <description>Common Date Calculator Code</description>
 
 </project>
\ No newline at end of file
Modified: trunk/datecalc-jdk/pom.xml
===================================================================
--- trunk/datecalc-jdk/pom.xml	2007-01-04 21:11:42 UTC (rev 236)
+++ trunk/datecalc-jdk/pom.xml	2007-01-05 13:59:28 UTC (rev 237)
@@ -15,7 +15,7 @@
    <parent>
       <groupId>net.objectlab.kit.datecalc</groupId>
       <artifactId>datecalc</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>1.1-SNAPSHOT</version>
    </parent>
 
    <artifactId>datecalc-jdk</artifactId>
@@ -27,7 +27,7 @@
       <dependency>
          <groupId>net.objectlab.kit.datecalc</groupId>
          <artifactId>datecalc-common</artifactId>
-         <version>${pom.version}</version>
+         <version>${project.version}</version>
       </dependency>
    </dependencies>
 
Modified: trunk/datecalc-joda/pom.xml
===================================================================
--- trunk/datecalc-joda/pom.xml	2007-01-04 21:11:42 UTC (rev 236)
+++ trunk/datecalc-joda/pom.xml	2007-01-05 13:59:28 UTC (rev 237)
@@ -8,7 +8,7 @@
    <parent>
       <groupId>net.objectlab.kit.datecalc</groupId>
       <artifactId>datecalc</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>1.1-SNAPSHOT</version>
    </parent>
 
    <artifactId>datecalc-joda</artifactId>
@@ -20,7 +20,7 @@
       <dependency>
          <groupId>net.objectlab.kit.datecalc</groupId>
          <artifactId>datecalc-common</artifactId>
-         <version>${pom.version}</version>
+         <version>${project.version}</version>
       </dependency>
 
       <dependency>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml	2007-01-04 21:11:42 UTC (rev 236)
+++ trunk/pom.xml	2007-01-05 13:59:28 UTC (rev 237)
@@ -8,7 +8,7 @@
    <artifactId>datecalc</artifactId>
    <packaging>pom</packaging>
    <name>ObjectLab Kit</name>
-   <version>1.0-SNAPSHOT</version>
+   <version>1.1-SNAPSHOT</version>
    <url>http://objectlabkit.sourceforge.net/</url>
    <description>
       ObjectLab Kit provides a generic Business Calendar for calculating dates given set(s) of holidays. Why
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ma...@us...> - 2007-01-09 15:51:33
       | 
| Revision: 242
          http://svn.sourceforge.net/objectlabkit/?rev=242&view=rev
Author:   marchy
Date:     2007-01-09 07:50:09 -0800 (Tue, 09 Jan 2007)
Log Message:
-----------
changed if-else's to use switch statements with enums, and added static imports for some constants, i think it makes the code look cleaner, whadayathink mr b?
we'll see what qalab has to say about all this ;-)
Modified Paths:
--------------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/PeriodCountBasis.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarIMMDateCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarKitCalculatorsFactory.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateKitCalculatorsFactory.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateIMMDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateKitCalculatorsFactory.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDatePeriodCountCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayKitCalculatorsFactory.java
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	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java	2007-01-09 15:50:09 UTC (rev 242)
@@ -32,6 +32,11 @@
  */
 package net.objectlab.kit.datecalc.common;
 
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.BACKWARD;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.FORWARD;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.MODIFIED_FOLLOWING;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.MODIFIED_PRECEEDING;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -302,17 +307,13 @@
     }
 
     public DateCalculator<E> moveByBusinessDays(final int businessDays) {
-        if (businessDays > 0
-                && holidayHandler != null
-                && (holidayHandler.getType().equals(HolidayHandlerType.BACKWARD) || holidayHandler.getType().equals(
-                        HolidayHandlerType.MODIFIED_PRECEEDING))) {
-            throw new IllegalArgumentException("A " + HolidayHandlerType.MODIFIED_PRECEEDING + " or "
-                    + HolidayHandlerType.BACKWARD + " does not allow positive steps for moveByBusinessDays");
-        } else if (businessDays < 0
-                && holidayHandler != null
-                && (holidayHandler.getType().equals(HolidayHandlerType.FORWARD) || holidayHandler.getType().equals(
-                        HolidayHandlerType.MODIFIED_FOLLOWING))) {
-            throw new IllegalArgumentException("A " + HolidayHandlerType.MODIFIED_FOLLOWING + " or " + HolidayHandlerType.FORWARD
+        if (businessDays > 0 && holidayHandler != null
+                && (holidayHandler.getType().equals(BACKWARD) || holidayHandler.getType().equals(MODIFIED_PRECEEDING))) {
+            throw new IllegalArgumentException("A " + MODIFIED_PRECEEDING + " or " + BACKWARD
+                    + " does not allow positive steps for moveByBusinessDays");
+        } else if (businessDays < 0 && holidayHandler != null
+                && (holidayHandler.getType().equals(FORWARD) || holidayHandler.getType().equals(MODIFIED_FOLLOWING))) {
+            throw new IllegalArgumentException("A " + MODIFIED_FOLLOWING + " or " + FORWARD
                     + " does not allow negative steps for moveByBusinessDays");
         }
 
@@ -405,7 +406,7 @@
     public HolidayCalendar<E> getHolidayCalendar() {
         return holidayCalendar;
     }
-    
+
     protected abstract E clone(final E date);
 }
 
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/PeriodCountBasis.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/PeriodCountBasis.java	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/PeriodCountBasis.java	2007-01-09 15:50:09 UTC (rev 242)
@@ -33,10 +33,13 @@
 package net.objectlab.kit.datecalc.common;
 
 /**
- * Defines some standard Day Count basis.
+ * Defines some standard Day Count bases.
  * 
- * You can refer to the following document to read about the most common Day Count conventions:
- * {@link http://www.fincad.com/support/developerfunc/mathref/Daycount.htm}
+ * <p/>
+ *
+ * To read about the most common Day Count Conventions, you can refer to the 
+ * <a href="http://www.fincad.com/support/developerfunc/mathref/Daycount.htm">
+ * following document</a>.
  * 
  * @author Benoit Xhenseval
  * @author $LastChangedBy$
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarIMMDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarIMMDateCalculator.java	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarIMMDateCalculator.java	2007-01-09 15:50:09 UTC (rev 242)
@@ -32,6 +32,15 @@
  */
 package net.objectlab.kit.datecalc.jdk;
 
+import static java.util.Calendar.DAY_OF_MONTH;
+import static java.util.Calendar.DECEMBER;
+import static java.util.Calendar.JUNE;
+import static java.util.Calendar.MARCH;
+import static java.util.Calendar.MONTH;
+import static java.util.Calendar.SEPTEMBER;
+import static java.util.Calendar.WEDNESDAY;
+import static net.objectlab.kit.datecalc.common.IMMPeriod.QUARTERLY;
+
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
@@ -97,25 +106,38 @@
 
         final int delta = (requestNextIMM ? 1 : -1);
         do {
-            cal.add(Calendar.MONTH, delta);
+            cal.add(MONTH, delta);
         } while (!isIMMMonth(cal));
 
         moveToIMMDay(cal);
 
-        final int month = cal.get(Calendar.MONTH);
-        if ((period == IMMPeriod.BI_ANNUALY_JUN_DEC && (Calendar.MARCH == month || Calendar.SEPTEMBER == month))
-                || (period == IMMPeriod.BI_ANNUALY_MAR_SEP && (Calendar.JUNE == month || Calendar.DECEMBER == month))) {
-            // need to move to the next one.
-            cal = getNextIMMDate(requestNextIMM, cal, period);
-        } else if (period == IMMPeriod.ANNUALLY) {
+        final int month = cal.get(MONTH);
+        
+        switch (period) {
+        case BI_ANNUALY_JUN_DEC:
+            if (month == MARCH || month == SEPTEMBER) {
+                // need to move to the next one.
+                cal = getNextIMMDate(requestNextIMM, cal, period);
+            }
+            break;
+            
+        case BI_ANNUALY_MAR_SEP:
+            if (month == JUNE || month == DECEMBER) {
+                // need to move to the next one.
+                cal = getNextIMMDate(requestNextIMM, cal, period);
+            }
+            break;
+            
+        case ANNUALLY:
             // second jump
-            cal = getNextIMMDate(requestNextIMM, cal, IMMPeriod.QUARTERLY);
+            cal = getNextIMMDate(requestNextIMM, cal, QUARTERLY);
             // third jump
-            cal = getNextIMMDate(requestNextIMM, cal, IMMPeriod.QUARTERLY);
+            cal = getNextIMMDate(requestNextIMM, cal, QUARTERLY);
             // fourth jump
-            cal = getNextIMMDate(requestNextIMM, cal, IMMPeriod.QUARTERLY);
+            cal = getNextIMMDate(requestNextIMM, cal, QUARTERLY);
             // fifth jump
-            cal = getNextIMMDate(requestNextIMM, cal, IMMPeriod.QUARTERLY);
+            cal = getNextIMMDate(requestNextIMM, cal, QUARTERLY);
+            break;
         }
 
         return cal;
@@ -130,13 +152,13 @@
     // -----------------------------------------------------------------------
 
     private boolean isIMMMonth(final Calendar cal) {
-        final int month = cal.get(Calendar.MONTH);
+        final int month = cal.get(MONTH);
 
         switch (month) {
-        case Calendar.MARCH:
-        case Calendar.JUNE:
-        case Calendar.SEPTEMBER:
-        case Calendar.DECEMBER:
+        case MARCH:
+        case JUNE:
+        case SEPTEMBER:
+        case DECEMBER:
             return true;
         default:
             return false;
@@ -149,18 +171,18 @@
      * @param cal 
      */
     private void moveToIMMDay(final Calendar cal) {
-        cal.set(Calendar.DAY_OF_MONTH, 1);
+        cal.set(DAY_OF_MONTH, 1);
 
         // go to 1st wed
         final int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
-        if (dayOfWeek < Calendar.WEDNESDAY) {
-            cal.add(Calendar.DAY_OF_MONTH, Calendar.WEDNESDAY - dayOfWeek);
-        } else if (dayOfWeek > Calendar.WEDNESDAY) {
-            cal.add(Calendar.DAY_OF_MONTH, (Calendar.WEDNESDAY + NUMBER_DAYS_IN_WEEK) - dayOfWeek);
+        if (dayOfWeek < WEDNESDAY) {
+            cal.add(DAY_OF_MONTH, WEDNESDAY - dayOfWeek);
+        } else if (dayOfWeek > WEDNESDAY) {
+            cal.add(DAY_OF_MONTH, (WEDNESDAY + NUMBER_DAYS_IN_WEEK) - dayOfWeek);
         }
 
         // go to 3rd wednesday - i.e. move 2 weeks forward
-        cal.add(Calendar.DAY_OF_MONTH, NUMBER_DAYS_IN_WEEK * 2);
+        cal.add(DAY_OF_MONTH, NUMBER_DAYS_IN_WEEK * 2);
     }
 
     public boolean isIMMDate(final Calendar date) {
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarKitCalculatorsFactory.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarKitCalculatorsFactory.java	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarKitCalculatorsFactory.java	2007-01-09 15:50:09 UTC (rev 242)
@@ -32,6 +32,12 @@
  */
 package net.objectlab.kit.datecalc.jdk;
 
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.BACKWARD;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.FORWARD;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.FORWARD_UNLESS_MOVING_BACK;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.MODIFIED_FOLLOWING;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.MODIFIED_PRECEEDING;
+
 import java.util.Calendar;
 
 import net.objectlab.kit.datecalc.common.AbstractKitCalculatorsFactory;
@@ -81,15 +87,15 @@
 
         if (holidayHandlerType == null) {
             return cal;
-        } else if (HolidayHandlerType.FORWARD.equals(holidayHandlerType)) {
+        } else if (FORWARD.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new CalendarForwardHandler());
-        } else if (HolidayHandlerType.BACKWARD.equals(holidayHandlerType)) {
+        } else if (BACKWARD.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new CalendarBackwardHandler());
-        } else if (HolidayHandlerType.MODIFIED_FOLLOWING.equals(holidayHandlerType)) {
+        } else if (MODIFIED_FOLLOWING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new CalendarModifiedFollowingHandler());
-        } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
+        } else if (MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new CalendarModifiedPreceedingHandler());
-        } else if (HolidayHandlerType.FORWARD_UNLESS_MOVING_BACK.equals(holidayHandlerType)) {
+        } else if (FORWARD_UNLESS_MOVING_BACK.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new CalendarForwardUnlessNegativeHandler());
         } else {
             throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java	2007-01-09 15:50:09 UTC (rev 242)
@@ -53,10 +53,13 @@
     public int dayDiff(final Calendar start, final Calendar end, final PeriodCountBasis basis) {
 
         int diff = 0;
-
-        if (basis == PeriodCountBasis.CONV_30_360) {
-            int dayStart = start.get(Calendar.DAY_OF_MONTH);
-            int dayEnd = end.get(Calendar.DAY_OF_MONTH);
+        int dayStart;
+        int dayEnd;
+        
+        switch (basis) {
+        case CONV_30_360:
+            dayStart = start.get(Calendar.DAY_OF_MONTH);
+            dayEnd = end.get(Calendar.DAY_OF_MONTH);
             if (dayEnd == MONTH_31_DAYS && dayStart >= MONTH_30_DAYS) {
                 dayEnd = MONTH_30_DAYS;
             }
@@ -65,10 +68,11 @@
             }
             diff = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * YEAR_360
                     + (end.get(Calendar.MONTH) - start.get(Calendar.MONTH)) * MONTH_30_DAYS + dayEnd - dayStart;
+            break;
 
-        } else if (basis == PeriodCountBasis.CONV_360E_ISDA) {
-            int dayStart = start.get(Calendar.DAY_OF_MONTH);
-            int dayEnd = end.get(Calendar.DAY_OF_MONTH);
+        case CONV_360E_ISDA:
+            dayStart = start.get(Calendar.DAY_OF_MONTH);
+            dayEnd = end.get(Calendar.DAY_OF_MONTH);
             final int monthStart = start.get(Calendar.MONTH);
             if ((monthStart == 2 && start.getActualMaximum(Calendar.DAY_OF_MONTH) == dayStart) || dayEnd == MONTH_31_DAYS) {
                 dayEnd = MONTH_30_DAYS;
@@ -79,10 +83,11 @@
 
             diff = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * YEAR_360
                     + (end.get(Calendar.MONTH) - start.get(Calendar.MONTH)) * MONTH_30_DAYS + dayEnd - dayStart;
+            break;
 
-        } else if (basis == PeriodCountBasis.CONV_360E_ISMA) {
-            int dayStart = start.get(Calendar.DAY_OF_MONTH);
-            int dayEnd = end.get(Calendar.DAY_OF_MONTH);
+        case CONV_360E_ISMA:
+            dayStart = start.get(Calendar.DAY_OF_MONTH);
+            dayEnd = end.get(Calendar.DAY_OF_MONTH);
             if (dayEnd == MONTH_31_DAYS) {
                 dayEnd = MONTH_30_DAYS;
             }
@@ -91,9 +96,12 @@
             }
             diff = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * YEAR_360
                     + (end.get(Calendar.MONTH) - start.get(Calendar.MONTH)) * MONTH_30_DAYS + dayEnd - dayStart;
-        } else {
+            break;
+            
+        default:
             diff = dayDiff(start, end);
         }
+        
         return diff;
     }
 
@@ -117,7 +125,9 @@
 
     public double yearDiff(final Calendar start, final Calendar end, final PeriodCountBasis basis) {
         double diff = 0.0;
-        if (basis == PeriodCountBasis.ACT_ACT) {
+        
+        switch (basis) {
+        case ACT_ACT:
             final int startYear = start.get(Calendar.YEAR);
             final int endYear = end.get(Calendar.YEAR);
             if (startYear != endYear) {
@@ -132,16 +142,24 @@
                 diff = (diff1 + 1.0) / start.getActualMaximum(Calendar.DAY_OF_YEAR) + (endYear - startYear - 1.0) + (diff2)
                         / (double) end.getActualMaximum(Calendar.DAY_OF_YEAR);
             }
+            break;
 
-        } else if (basis == PeriodCountBasis.CONV_30_360 || basis == PeriodCountBasis.CONV_360E_ISDA
-                || basis == PeriodCountBasis.CONV_360E_ISMA || basis == PeriodCountBasis.ACT_360) {
+        case CONV_30_360:
+        case CONV_360E_ISDA:
+        case CONV_360E_ISMA:
+        case ACT_360:
             diff = (dayDiff(start, end, basis)) / YEAR_360_0;
+            break;
 
-        } else if (basis == PeriodCountBasis.ACT_365 || basis == PeriodCountBasis.END_365) {
+        case ACT_365:
+        case END_365:
             diff = (dayDiff(start, end, basis)) / YEAR_365_0;
-        } else {
+            break;
+            
+        default:
             throw new UnsupportedOperationException("Sorry no ACT_UST yet");
         }
+        
         return diff;
     }
 
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateKitCalculatorsFactory.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateKitCalculatorsFactory.java	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateKitCalculatorsFactory.java	2007-01-09 15:50:09 UTC (rev 242)
@@ -32,11 +32,16 @@
  */
 package net.objectlab.kit.datecalc.jdk;
 
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.BACKWARD;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.FORWARD;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.FORWARD_UNLESS_MOVING_BACK;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.MODIFIED_FOLLOWING;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.MODIFIED_PRECEEDING;
+
 import java.util.Date;
 
 import net.objectlab.kit.datecalc.common.AbstractKitCalculatorsFactory;
 import net.objectlab.kit.datecalc.common.DateCalculator;
-import net.objectlab.kit.datecalc.common.HolidayHandlerType;
 import net.objectlab.kit.datecalc.common.IMMDateCalculator;
 import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
 
@@ -81,15 +86,15 @@
 
         if (holidayHandlerType == null) {
             return cal;
-        } else if (HolidayHandlerType.FORWARD.equals(holidayHandlerType)) {
+        } else if (FORWARD.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new DateForwardHandler());
-        } else if (HolidayHandlerType.BACKWARD.equals(holidayHandlerType)) {
+        } else if (BACKWARD.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new DateBackwardHandler());
-        } else if (HolidayHandlerType.MODIFIED_FOLLOWING.equals(holidayHandlerType)) {
+        } else if (MODIFIED_FOLLOWING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new DateModifiedFollowingHandler());
-        } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
+        } else if (MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new DateModifiedPreceedingHandler());
-        } else if (HolidayHandlerType.FORWARD_UNLESS_MOVING_BACK.equals(holidayHandlerType)) {
+        } else if (FORWARD_UNLESS_MOVING_BACK.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new DateForwardUnlessNegativeHandler());
         } else {
             throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateIMMDateCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateIMMDateCalculator.java	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateIMMDateCalculator.java	2007-01-09 15:50:09 UTC (rev 242)
@@ -32,6 +32,12 @@
  */
 package net.objectlab.kit.datecalc.joda;
 
+import static net.objectlab.kit.datecalc.common.IMMPeriod.QUARTERLY;
+import static org.joda.time.DateTimeConstants.DECEMBER;
+import static org.joda.time.DateTimeConstants.JUNE;
+import static org.joda.time.DateTimeConstants.MARCH;
+import static org.joda.time.DateTimeConstants.SEPTEMBER;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -95,19 +101,32 @@
 
         LocalDate imm = calculate3rdWednesday(date);
         final int immMonth = imm.getMonthOfYear();
-        final boolean isMarchSept = DateTimeConstants.MARCH == immMonth || DateTimeConstants.SEPTEMBER == immMonth;
+        final boolean isMarchSept = immMonth == MARCH || immMonth == SEPTEMBER;
 
-        if (period == IMMPeriod.BI_ANNUALY_JUN_DEC && isMarchSept || period == IMMPeriod.BI_ANNUALY_MAR_SEP && !isMarchSept) {
-            imm = getNextIMMDate(requestNextIMM, imm, period);
-        } else if (period == IMMPeriod.ANNUALLY) {
+        switch (period) {
+        
+        case BI_ANNUALY_JUN_DEC:
+            if (isMarchSept) {
+                imm = getNextIMMDate(requestNextIMM, imm, period);
+            }
+            break;
+            
+        case BI_ANNUALY_MAR_SEP:
+            if (!isMarchSept) {
+                imm = getNextIMMDate(requestNextIMM, imm, period);
+            }
+            break;
+            
+        case ANNUALLY:
             // second jump
-            imm = getNextIMMDate(requestNextIMM, imm, IMMPeriod.QUARTERLY);
+            imm = getNextIMMDate(requestNextIMM, imm, QUARTERLY);
             // third jump
-            imm = getNextIMMDate(requestNextIMM, imm, IMMPeriod.QUARTERLY);
+            imm = getNextIMMDate(requestNextIMM, imm, QUARTERLY);
             // fourth jump
-            imm = getNextIMMDate(requestNextIMM, imm, IMMPeriod.QUARTERLY);
+            imm = getNextIMMDate(requestNextIMM, imm, QUARTERLY);
             // fifth jump
-            imm = getNextIMMDate(requestNextIMM, imm, IMMPeriod.QUARTERLY);
+            imm = getNextIMMDate(requestNextIMM, imm, QUARTERLY);
+            break;
         }
 
         return imm;
@@ -125,10 +144,10 @@
         int monthOffset = 0;
 
         switch (month) {
-        case DateTimeConstants.MARCH:
-        case DateTimeConstants.JUNE:
-        case DateTimeConstants.SEPTEMBER:
-        case DateTimeConstants.DECEMBER:
+        case MARCH:
+        case JUNE:
+        case SEPTEMBER:
+        case DECEMBER:
             final LocalDate immDate = calculate3rdWednesday(date);
             if (requestNextIMM && !date.isBefore(immDate)) {
                 date = date.plusMonths(MONTHS_IN_QUARTER);
@@ -176,7 +195,7 @@
     public boolean isIMMDate(final LocalDate date) {
         boolean same = false;
 
-        final List<LocalDate> dates = getIMMDates(date.minusDays(1), date, IMMPeriod.QUARTERLY);
+        final List<LocalDate> dates = getIMMDates(date.minusDays(1), date, QUARTERLY);
 
         if (!dates.isEmpty()) {
             same = date.equals(dates.get(0));
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateKitCalculatorsFactory.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateKitCalculatorsFactory.java	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateKitCalculatorsFactory.java	2007-01-09 15:50:09 UTC (rev 242)
@@ -32,6 +32,10 @@
  */
 package net.objectlab.kit.datecalc.joda;
 
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.BACKWARD;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.FORWARD_UNLESS_MOVING_BACK;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.MODIFIED_FOLLOWING;
+import static net.objectlab.kit.datecalc.common.HolidayHandlerType.MODIFIED_PRECEEDING;
 import net.objectlab.kit.datecalc.common.AbstractKitCalculatorsFactory;
 import net.objectlab.kit.datecalc.common.HolidayHandlerType;
 import net.objectlab.kit.datecalc.common.IMMDateCalculator;
@@ -86,13 +90,13 @@
 
         if (HolidayHandlerType.FORWARD.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new LocalDateForwardHandler());
-        } else if (HolidayHandlerType.BACKWARD.equals(holidayHandlerType)) {
+        } else if (BACKWARD.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new LocalDateBackwardHandler());
-        } else if (HolidayHandlerType.MODIFIED_FOLLOWING.equals(holidayHandlerType)) {
+        } else if (MODIFIED_FOLLOWING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new LocalDateModifiedFollowingHandler());
-        } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
+        } else if (MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new LocalDateModifiedPreceedingHandler());
-        } else if (HolidayHandlerType.FORWARD_UNLESS_MOVING_BACK.equals(holidayHandlerType)) {
+        } else if (FORWARD_UNLESS_MOVING_BACK.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new LocalDateForwardUnlessNegativeHandler());
         } else if (holidayHandlerType != null) {
             throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDatePeriodCountCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDatePeriodCountCalculator.java	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDatePeriodCountCalculator.java	2007-01-09 15:50:09 UTC (rev 242)
@@ -52,10 +52,13 @@
 
     public int dayDiff(final LocalDate start, final LocalDate end, final PeriodCountBasis basis) {
         int diff = 0;
+        int dayStart;
+        int dayEnd;
 
-        if (basis == PeriodCountBasis.CONV_30_360) {
-            int dayStart = start.getDayOfMonth();
-            int dayEnd = end.getDayOfMonth();
+        switch (basis) {
+        case CONV_30_360:
+            dayStart = start.getDayOfMonth();
+            dayEnd = end.getDayOfMonth();
             if (dayEnd == MONTH_31_DAYS && dayStart >= MONTH_30_DAYS) {
                 dayEnd = MONTH_30_DAYS;
             }
@@ -64,10 +67,11 @@
             }
             diff = (end.getYear() - start.getYear()) * YEAR_360 + (end.getMonthOfYear() - start.getMonthOfYear()) * MONTH_30_DAYS
                     + dayEnd - dayStart;
+            break;
 
-        } else if (basis == PeriodCountBasis.CONV_360E_ISDA) {
-            int dayStart = start.getDayOfMonth();
-            int dayEnd = end.getDayOfMonth();
+        case CONV_360E_ISDA:
+            dayStart = start.getDayOfMonth();
+            dayEnd = end.getDayOfMonth();
             final int monthStart = start.getMonthOfYear();
             if ((monthStart == 2 && start.monthOfYear().getMaximumValue() == dayStart) || dayEnd == MONTH_31_DAYS) {
                 dayEnd = MONTH_30_DAYS;
@@ -78,10 +82,11 @@
 
             diff = (end.getYear() - start.getYear()) * YEAR_360 + (end.getMonthOfYear() - start.getMonthOfYear()) * MONTH_30_DAYS
                     + dayEnd - dayStart;
+            break;
 
-        } else if (basis == PeriodCountBasis.CONV_360E_ISMA) {
-            int dayStart = start.getDayOfMonth();
-            int dayEnd = end.getDayOfMonth();
+        case CONV_360E_ISMA:
+            dayStart = start.getDayOfMonth();
+            dayEnd = end.getDayOfMonth();
             if (dayEnd == MONTH_31_DAYS) {
                 dayEnd = MONTH_30_DAYS;
             }
@@ -90,11 +95,12 @@
             }
             diff = (end.getYear() - start.getYear()) * YEAR_360 + (end.getMonthOfYear() - start.getMonthOfYear()) * MONTH_30_DAYS
                     + dayEnd - dayStart;
-        } else {
-
+            break;
+        default:
             final Period p = new Period(start, end, PeriodType.days());
             diff = p.getDays();
         }
+
         return diff;
     }
 
@@ -106,14 +112,15 @@
     //
     // -----------------------------------------------------------------------
 
-   public double monthDiff(final LocalDate start, final LocalDate end, final PeriodCountBasis basis) {
+    public double monthDiff(final LocalDate start, final LocalDate end, final PeriodCountBasis basis) {
         return yearDiff(start, end, basis) * MONTHS_IN_YEAR;
     }
 
     public double yearDiff(final LocalDate start, final LocalDate end, final PeriodCountBasis basis) {
         double diff = 0.0;
 
-        if (basis == PeriodCountBasis.ACT_ACT) {
+        switch (basis) {
+        case ACT_ACT:
             final int startYear = start.getYear();
             final int endYear = end.getYear();
             if (startYear != endYear) {
@@ -125,16 +132,24 @@
                 diff = ((diff1 + 1.0)) / start.dayOfYear().getMaximumValue() + ((endYear - startYear - 1.0)) + ((double) (diff2))
                         / (double) end.dayOfYear().getMaximumValue();
             }
+            break;
 
-        } else if (basis == PeriodCountBasis.CONV_30_360 || basis == PeriodCountBasis.CONV_360E_ISDA
-                || basis == PeriodCountBasis.CONV_360E_ISMA || basis == PeriodCountBasis.ACT_360) {
+        case CONV_30_360:
+        case CONV_360E_ISDA:
+        case CONV_360E_ISMA:
+        case ACT_360:
             diff = (dayDiff(start, end, basis)) / YEAR_360_0;
+            break;
+            
+        case ACT_365:
+        case END_365:
+            diff = (dayDiff(start, end, basis)) / YEAR_365_0;
+            break;
 
-        } else if (basis == PeriodCountBasis.ACT_365 || basis == PeriodCountBasis.END_365) {
-            diff = (dayDiff(start, end, basis)) / YEAR_365_0;
-        } else {
-            throw new UnsupportedOperationException("Sorry no ACT_UST yet");
+        default:
+            throw new UnsupportedOperationException("Sorry ACT_UST is not supported");
         }
+
         return diff;
     }
 }
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayKitCalculatorsFactory.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayKitCalculatorsFactory.java	2007-01-08 15:50:25 UTC (rev 241)
+++ trunk/datecalc-joda/src/main/java/net/o...
 
[truncated message content] | 
| 
      
      
      From: <be...@us...> - 2007-01-25 09:55:44
       | 
| Revision: 244
          http://svn.sourceforge.net/objectlabkit/?rev=244&view=rev
Author:   benoitx
Date:     2007-01-25 01:55:45 -0800 (Thu, 25 Jan 2007)
Log Message:
-----------
Added SCM details for M2
Modified Paths:
--------------
    trunk/datecalc-common/qalab.xml
    trunk/datecalc-jdk/qalab.xml
    trunk/datecalc-joda/qalab.xml
    trunk/pom.xml
Modified: trunk/datecalc-common/qalab.xml
===================================================================
--- trunk/datecalc-common/qalab.xml	2007-01-21 23:39:55 UTC (rev 243)
+++ trunk/datecalc-common/qalab.xml	2007-01-25 09:55:45 UTC (rev 244)
@@ -171,6 +171,24 @@
             project="objectlabkit" statvalue="34" type="cobertura-line"/>
         <summaryresult date="2007-01-04" filecount="20" module="common"
             project="objectlabkit" statvalue="30" type="cobertura-branch"/>
+        <summaryresult date="2007-01-05" filecount="21" module="common"
+            project="objectlabkit" statvalue="1" type="checkstyle"/>
+        <summaryresult date="2007-01-05" filecount="20" module="common"
+            project="objectlabkit" statvalue="45" type="cobertura-line"/>
+        <summaryresult date="2007-01-05" filecount="20" module="common"
+            project="objectlabkit" statvalue="46" type="cobertura-branch"/>
+        <summaryresult date="2007-01-09" filecount="21" module="common"
+            project="objectlabkit" statvalue="1" type="checkstyle"/>
+        <summaryresult date="2007-01-09" filecount="20" module="common"
+            project="objectlabkit" statvalue="45" type="cobertura-line"/>
+        <summaryresult date="2007-01-09" filecount="20" module="common"
+            project="objectlabkit" statvalue="46" type="cobertura-branch"/>
+        <summaryresult date="2007-01-22" filecount="21" module="common"
+            project="objectlabkit" statvalue="1" type="checkstyle"/>
+        <summaryresult date="2007-01-22" filecount="20" module="common"
+            project="objectlabkit" statvalue="45" type="cobertura-line"/>
+        <summaryresult date="2007-01-22" filecount="20" module="common"
+            project="objectlabkit" statvalue="46" type="cobertura-branch"/>
     </summary>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_package.html"
@@ -251,6 +269,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_WorkingWeek.java"
@@ -320,6 +344,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="95" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="95" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="95" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="95" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_TenorCode.java"
@@ -381,6 +411,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_HolidayHandlerType.java"
@@ -414,6 +450,9 @@
         <result date="2006-10-15" statvalue="100" type="cobertura-branch"/>
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_PeriodCountBasis.java"
@@ -445,6 +484,9 @@
         <result date="2006-10-15" statvalue="100" type="cobertura-branch"/>
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_StandardTenor.java"
@@ -505,12 +547,21 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="92" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="93" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="93" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="93" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_AbstractDateCalculator.java"
         module="common"
         path="net/objectlab/kit/datecalc/common/AbstractDateCalculator.java" project="objectlabkit">
         <result date="2006-08-23" statvalue="5" type="checkstyle"/>
+        <result date="2007-01-05" statvalue="1" type="checkstyle"/>
+        <result date="2007-01-09" statvalue="1" type="checkstyle"/>
+        <result date="2007-01-22" statvalue="1" type="checkstyle"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_DateCalculatorGeneric.java"
@@ -567,6 +618,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_HolidayHandler.java"
@@ -618,6 +675,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_AbstractDateCalculatorFactory.java"
@@ -700,6 +763,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_Utils.java"
@@ -744,6 +813,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="88" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="77" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="85" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="77" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="85" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="77" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="85" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_IMMPeriod.java"
@@ -768,6 +843,9 @@
         <result date="2006-10-15" statvalue="100" type="cobertura-branch"/>
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_ExcelDateUtil.java"
@@ -809,6 +887,12 @@
         <result date="2006-11-13" statvalue="83" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="82" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="83" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="82" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="83" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="82" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="83" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="82" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="83" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_IMMDateCalculator.java"
@@ -848,6 +932,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_AbstractIMMDateCalculator.java"
@@ -870,6 +960,9 @@
         <result date="2006-10-15" statvalue="100" type="cobertura-branch"/>
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_KitCalculatorsFactory.java"
@@ -905,6 +998,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_HolidayCalendar.java"
@@ -912,6 +1011,12 @@
         path="net/objectlab/kit/datecalc/common/HolidayCalendar.java" project="objectlabkit">
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_DefaultHolidayCalendar.java"
@@ -922,7 +1027,11 @@
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_ImmutableHolidayCalendar.java"
         module="common"
-        path="net/objectlab/kit/datecalc/common/ImmutableHolidayCalendar.java" project="objectlabkit"/>
+        path="net/objectlab/kit/datecalc/common/ImmutableHolidayCalendar.java" project="objectlabkit">
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
+    </file>
     <file
         id="objectlabkit-common-net_objectlab_kit_datecalc_common_AbstractDateCalculator.java"
         module="common"
Modified: trunk/datecalc-jdk/qalab.xml
===================================================================
--- trunk/datecalc-jdk/qalab.xml	2007-01-21 23:39:55 UTC (rev 243)
+++ trunk/datecalc-jdk/qalab.xml	2007-01-25 09:55:45 UTC (rev 244)
@@ -175,6 +175,26 @@
             project="objectlabkit" statvalue="95" type="cobertura-line"/>
         <summaryresult date="2007-01-04" filecount="19" module="jdk"
             project="objectlabkit" statvalue="100" type="cobertura-branch"/>
+        <summaryresult date="2007-01-05" filecount="19" module="jdk"
+            project="objectlabkit" statvalue="96" type="cobertura-line"/>
+        <summaryresult date="2007-01-05" filecount="19" module="jdk"
+            project="objectlabkit" statvalue="100" type="cobertura-branch"/>
+        <summaryresult date="2007-01-09" filecount="20" module="jdk"
+            project="objectlabkit" statvalue="2" type="checkstyle"/>
+        <summaryresult date="2007-01-09" filecount="19" module="jdk"
+            project="objectlabkit" statvalue="96" type="cobertura-line"/>
+        <summaryresult date="2007-01-09" filecount="19" module="jdk"
+            project="objectlabkit" statvalue="100" type="cobertura-branch"/>
+        <summaryresult date="2007-01-09" filecount="1" module="jdk"
+            project="objectlabkit" statvalue="1" type="pmd"/>
+        <summaryresult date="2007-01-22" filecount="20" module="jdk"
+            project="objectlabkit" statvalue="2" type="checkstyle"/>
+        <summaryresult date="2007-01-22" filecount="19" module="jdk"
+            project="objectlabkit" statvalue="96" type="cobertura-line"/>
+        <summaryresult date="2007-01-22" filecount="19" module="jdk"
+            project="objectlabkit" statvalue="100" type="cobertura-branch"/>
+        <summaryresult date="2007-01-22" filecount="1" module="jdk"
+            project="objectlabkit" statvalue="1" type="pmd"/>
     </summary>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_package.html"
@@ -336,7 +356,8 @@
         id="objectlabkit-jdk-C:_project_objectlabkit_datecalc-jdk_src_test_java_net_objectlab_kit_datecalc_jdk_DateCalculatorCombinationTest.java"
         module="jdk"
         path="C:/project/objectlabkit/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorCombinationTest.java" project="objectlabkit"/>
-    <file id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_Utils.java"
+    <file
+        id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_Utils.java"
         module="jdk" path="net/objectlab/kit/datecalc/jdk/Utils.java" project="objectlabkit">
         <result date="2006-08-20" statvalue="1" type="checkstyle"/>
         <result date="2006-08-20" statvalue="75" type="cobertura-line"/>
@@ -449,6 +470,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_DatePeriodCountCalculator.java"
@@ -497,6 +524,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_ExcelDateUtil.java"
@@ -558,6 +591,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="91" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="91" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="91" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="91" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_JdkCalendarBaseDateCalculator.java"
@@ -772,6 +811,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_CalendarForwardHandler.java"
@@ -809,6 +854,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_CalendarModifiedFollowingHandler.java"
@@ -846,6 +897,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_CalendarModifiedPreceedingHandler.java"
@@ -885,6 +942,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_DateBackwardHandler.java"
@@ -924,6 +987,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_DateForwardHandler.java"
@@ -961,6 +1030,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_DateModifiedFollowingHandler.java"
@@ -998,6 +1073,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_DateModifiedPreceedingHandler.java"
@@ -1037,6 +1118,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_CalendarDateCalculator.java"
@@ -1072,6 +1159,12 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="88" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="88" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="88" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_CalendarIMMDateCalculator.java"
@@ -1109,6 +1202,14 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="1" type="checkstyle"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="1" type="checkstyle"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_CalendarKitCalculatorsFactory.java"
@@ -1144,6 +1245,16 @@
         <result date="2006-11-13" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-line"/>
         <result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="1" type="checkstyle"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-09" statvalue="1" type="pmd"/>
+        <result date="2007-01-22" statvalue="1" type="checkstyle"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-line"/>
+        <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
+        <result date="2007-01-22" statvalue="1" type="pmd"/>
     </file>
     <file
...
 
[truncated message content] | 
| 
      
      
      From: <be...@us...> - 2007-11-15 10:32:04
       | 
| Revision: 251
          http://objectlabkit.svn.sourceforge.net/objectlabkit/?rev=251&view=rev
Author:   benoitx
Date:     2007-11-15 02:32:07 -0800 (Thu, 15 Nov 2007)
Log Message:
-----------
Feature Requests item #1832345, make the Tenor Serializable
Modified Paths:
--------------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Tenor.java
    trunk/src/site/changes.xml
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Tenor.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Tenor.java	2007-05-03 17:10:45 UTC (rev 250)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Tenor.java	2007-11-15 10:32:07 UTC (rev 251)
@@ -41,7 +41,8 @@
  * @version $Revision$ $Date$
  * 
  */
-public class Tenor {
+public class Tenor implements Serializable {
+    private static final long serialVersionUID = 1L;
     private int units = 0;
 
     private TenorCode code;
Modified: trunk/src/site/changes.xml
===================================================================
--- trunk/src/site/changes.xml	2007-05-03 17:10:45 UTC (rev 250)
+++ trunk/src/site/changes.xml	2007-11-15 10:32:07 UTC (rev 251)
@@ -9,6 +9,7 @@
   </properties>
   <body>
     <release version="1.1.0" date="in SVN" description="Maintenance">
+      <action dev="benoitx" type="add" issue="1832345" due-to="vyadh">Feature Requests item #1832345, make the Tenor Serializable</action>
       <action dev="benoitx" type="add">Added 2 methods on factory to check if a calendar is registered.</action>
       <action dev="marchy" type="fix">Deprecated ACT/UST and END/365 Day Count Conventions, which weren't very common. Also added a link to some documentation.</action>
       <action dev="benoitx" type="add">Added method calculateTenorDates with/without a spot lag to enable calculation of a series of Tenor dates without changing the current business date in the calculator.</action>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <be...@us...> - 2008-03-24 17:58:36
       | 
| Revision: 261
          http://objectlabkit.svn.sourceforge.net/objectlabkit/?rev=261&view=rev
Author:   benoitx
Date:     2008-03-24 10:58:23 -0700 (Mon, 24 Mar 2008)
Log Message:
-----------
final changes before tag
Modified Paths:
--------------
    trunk/datecalc-jdk/qalab.xml
    trunk/datecalc-joda/qalab.xml
Modified: trunk/datecalc-jdk/qalab.xml
===================================================================
--- trunk/datecalc-jdk/qalab.xml	2008-03-24 17:07:03 UTC (rev 260)
+++ trunk/datecalc-jdk/qalab.xml	2008-03-24 17:58:23 UTC (rev 261)
@@ -200,7 +200,7 @@
         <summaryresult date="2008-03-24" filecount="19" module="jdk"
             project="objectlabkit" statvalue="96" type="cobertura-line"/>
         <summaryresult date="2008-03-24" filecount="19" module="jdk"
-            project="objectlabkit" statvalue="81" type="cobertura-branch"/>
+            project="objectlabkit" statvalue="82" type="cobertura-branch"/>
         <summaryresult date="2008-03-24" filecount="1" module="jdk"
             project="objectlabkit" statvalue="1" type="pmd"/>
     </summary>
@@ -1196,7 +1196,7 @@
         <result date="2007-01-22" statvalue="88" type="cobertura-line"/>
         <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
         <result date="2008-03-24" statvalue="88" type="cobertura-line"/>
-        <result date="2008-03-24" statvalue="73" type="cobertura-branch"/>
+        <result date="2008-03-24" statvalue="76" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-jdk-net_objectlab_kit_datecalc_jdk_CalendarIMMDateCalculator.java"
@@ -1335,7 +1335,7 @@
         <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-22" statvalue="89" type="cobertura-line"/>
         <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
-        <result date="2008-03-24" statvalue="91" type="cobertura-line"/>
+        <result date="2008-03-24" statvalue="89" type="cobertura-line"/>
         <result date="2008-03-24" statvalue="78" type="cobertura-branch"/>
     </file>
     <file
Modified: trunk/datecalc-joda/qalab.xml
===================================================================
--- trunk/datecalc-joda/qalab.xml	2008-03-24 17:07:03 UTC (rev 260)
+++ trunk/datecalc-joda/qalab.xml	2008-03-24 17:58:23 UTC (rev 261)
@@ -204,7 +204,7 @@
         <summaryresult date="2008-03-24" filecount="22" module="joda"
             project="objectlabkit" statvalue="2" type="checkstyle"/>
         <summaryresult date="2008-03-24" filecount="21" module="joda"
-            project="objectlabkit" statvalue="96" type="cobertura-line"/>
+            project="objectlabkit" statvalue="95" type="cobertura-line"/>
         <summaryresult date="2008-03-24" filecount="21" module="joda"
             project="objectlabkit" statvalue="84" type="cobertura-branch"/>
         <summaryresult date="2008-03-24" filecount="1" module="joda"
@@ -729,7 +729,7 @@
         <result date="2007-01-22" statvalue="85" type="cobertura-line"/>
         <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
         <result date="2008-03-24" statvalue="85" type="cobertura-line"/>
-        <result date="2008-03-24" statvalue="70" type="cobertura-branch"/>
+        <result date="2008-03-24" statvalue="73" type="cobertura-branch"/>
     </file>
     <file
         id="objectlabkit-joda-net_objectlab_kit_datecalc_joda_LocalDateForwardHandler.java"
@@ -983,7 +983,7 @@
         <result date="2007-01-09" statvalue="100" type="cobertura-branch"/>
         <result date="2007-01-22" statvalue="90" type="cobertura-line"/>
         <result date="2007-01-22" statvalue="100" type="cobertura-branch"/>
-        <result date="2008-03-24" statvalue="92" type="cobertura-line"/>
+        <result date="2008-03-24" statvalue="90" type="cobertura-line"/>
         <result date="2008-03-24" statvalue="82" type="cobertura-branch"/>
     </file>
     <file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ma...@us...> - 2006-09-04 12:34:39
       | 
| Revision: 94
          http://svn.sourceforge.net/objectlabkit/?rev=94&view=rev
Author:   marchy
Date:     2006-09-04 05:32:55 -0700 (Mon, 04 Sep 2006)
Log Message:
-----------
moved Utils to common. more work on creating Calendar base implementations, and Date wrappers. All tests pass ;)
Modified Paths:
--------------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.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/JdkDateBaseDateCalculator.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/ModifiedFollowingHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedPreceedingHandler.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java
Added Paths:
-----------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.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/JdkCalendarDateCalculator.java
Removed Paths:
-------------
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/Utils.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorCombinationTest.java
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-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -146,7 +146,7 @@
         return currentBusinessDate;
     }
 
-    protected HolidayHandler<E> getHolidayHandler() {
+    public HolidayHandler<E> getHolidayHandler() {
         return holidayHandler;
     }
 
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java	2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -135,10 +135,10 @@
      * By combining several calendars, we take into account several set of
      * holidays.
      * 
-     * @param calendar
+     * @param calculator
      * @return a new DateCalculator
      */
-    DateCalculator<E> combine(DateCalculator<E> calendar);
+    DateCalculator<E> combine(DateCalculator<E> calculator);
 
     /**
      * move the current date by a given tenor, this means that if a date is
Added: 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	                        (rev 0)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,81 @@
+/*
+ * 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.common;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * TODO javadoc
+ * @author Marcin Jekot
+ * @author $LastModifiedBy$
+ * @version $Revision$ $Date$
+ * 
+ */
+public class Utils {
+
+    private static final String DATE_PATTERN = "yyyy-MM-dd";
+    private static final SimpleDateFormat SDF = new SimpleDateFormat(DATE_PATTERN);
+
+    // TODO create tests
+    public static Calendar getCal(final Date date) {
+        final Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        return cal;
+    }
+
+    public static Date createDate(final String str) throws IllegalArgumentException {
+        try {
+            return SDF.parse(str);
+        } catch (final ParseException e) {
+            throw new IllegalArgumentException("\"" + str + "\"" + " is an invalid date, the pattern is : " + DATE_PATTERN);
+        }
+    }
+    
+    public static Set<Calendar> toCalendarSet(Set<Date> dates) {
+        
+        Set<Calendar> calendars = new HashSet<Calendar>();
+        for (Date date : dates) {
+            calendars.add(getCal(date));
+        }
+        return calendars;
+    }
+
+    public static Set<Date> toDateSet(Set<Calendar> calendars) {
+        
+        Set<Date> dates = new HashSet<Date>();
+        for (Calendar calendar : calendars) {
+            dates.add(calendar.getTime());
+        }
+        return dates;
+    }
+
+    public static List<Date> toDateList(List<Calendar> dates) {
+        
+        List<Date> dateList = new ArrayList<Date>();
+        for (Calendar calendar : dates) {
+            dateList.add(calendar.getTime());
+        }
+
+        return dateList;
+    }
+}
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java	2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -69,8 +69,10 @@
     }
 
     public boolean isWorkingDay(final Date date) {
-        final Calendar cal = Calendar.getInstance();
-        cal.setTime(date);
+        return isWorkingDay(Utils.getCal(date));
+    }
+    
+    public boolean isWorkingDay(final Calendar cal) {
         return isWorkingDayFromCalendar(cal.get(Calendar.DAY_OF_WEEK));
     }
 
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	                        (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,76 @@
+package net.objectlab.kit.datecalc.common;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+public class UtilsTest extends TestCase {
+
+    SimpleDateFormat sdf;
+    Calendar cal;
+    Set<Calendar> calendarSet;
+    Set<Date> dateSet;
+    
+    protected void setUp() throws Exception {
+        sdf = new SimpleDateFormat("yyyy-MM-dd");
+        
+        calendarSet = new HashSet<Calendar>();
+        calendarSet.add(getCal(2004, 5, 31));
+        calendarSet.add(getCal(2083, 12, 1));
+        
+        dateSet = new HashSet<Date>();
+        dateSet.add(sdf.parse("2004-05-31"));
+        dateSet.add(sdf.parse("2083-12-01"));
+    }
+
+    private Calendar getCal(int year, int month, int day) {
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(year, month-1, day, 0, 0, 0);
+        return cal;
+    }
+
+    public void testGetCal() throws Exception {
+        
+        Date d = sdf.parse("2004-02-03");
+        assertEquals(Utils.getCal(d).getTime(), getCal(2004, 2, 3).getTime());
+        
+        Date d1 = getCal(2080, 5, 31).getTime();
+        Date d2 = getCal(2080, 5, 31).getTime();
+        assertEquals(Utils.getCal(d1).getTime(), d2);
+    }
+
+    public void testCreateDate() throws Exception {
+        
+        assertEquals(sdf.parse("1970-01-01"), Utils.createDate("1970-01-01"));
+        assertEquals(sdf.parse("2020-12-31"), Utils.createDate("2020-12-31"));
+
+        assertEquals(getCal(2006, 8, 8).getTime(), Utils.createDate("2006-08-08"));
+        assertEquals(getCal(2004, 9, 12).getTime(), Utils.createDate("2004-09-12"));
+    }
+
+    public void testToCalendarSet() throws Exception {
+        assertEquals(calendarSet, Utils.toCalendarSet(dateSet));
+    }
+
+    public void testToDateSet() {
+        assertEquals(dateSet, Utils.toDateSet(calendarSet));
+    }
+
+    public void testToDateList() {
+        
+        List<Date> expected = new ArrayList<Date>(dateSet);
+        Collections.sort(expected);
+        
+        List<Date> actual = Utils.toDateList(new ArrayList<Calendar>(calendarSet));
+        Collections.sort(actual);
+        assertEquals(expected, actual);
+    }
+}
Modified: 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-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -17,7 +17,7 @@
  */
 package net.objectlab.kit.datecalc.jdk;
 
-import java.util.Date;
+import java.util.Calendar;
 
 import net.objectlab.kit.datecalc.common.DateCalculator;
 import net.objectlab.kit.datecalc.common.HolidayHandlerType;
@@ -32,7 +32,7 @@
  */
 public class BackwardHandler extends ForwardHandler {
 
-    public Date moveCurrentDate(DateCalculator<Date> calendar) {
+    public Calendar moveCurrentDate(DateCalculator<Calendar> calendar) {
         return move(calendar, -1);
     }
 
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,54 @@
+/*
+ * $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.HolidayHandler;
+import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+
+/**
+ * TODO javadoc
+ *
+ * @author Marcin Jekot
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 69 $ $Date: 2006-08-27 11:47:25 +0200 (Sun, 27 Aug 2006) $
+ * 
+ */
+public class CalendarForwardHandler implements HolidayHandler<Calendar> {
+
+    public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
+        return move(calendar, 1);
+    }
+
+    protected Calendar move(final DateCalculator<Calendar> calculator, int step) {
+        final Calendar cal = (Calendar)calculator.getCurrentBusinessDate().clone();
+
+        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/DatePeriodCountCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java	2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -20,6 +20,7 @@
 import java.util.Date;
 
 import net.objectlab.kit.datecalc.common.PeriodCountBasis;
+import net.objectlab.kit.datecalc.common.Utils;
 
 /**
  * TODO javadoc
Modified: 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-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -16,7 +16,6 @@
 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;
@@ -24,28 +23,29 @@
 
 /**
  * TODO javadoc
- *
+ * 
  * @author Marcin Jekot
  * @author $LastChangedBy$
  * @version $Revision$ $Date$
  * 
  */
-public class ForwardHandler implements HolidayHandler<Date> {
+public class ForwardHandler implements HolidayHandler<Calendar> {
 
-    public Date moveCurrentDate(final DateCalculator<Date> calendar) {
+    public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
         return move(calendar, 1);
     }
 
-    protected Date move(final DateCalculator<Date> calendar, int step) {
-        final Calendar cal = Utils.getCal(calendar.getCurrentBusinessDate());
+    protected Calendar move(final DateCalculator<Calendar> calculator, int step) {
+//        final Calendar cal = (Calendar) calculator.getCurrentBusinessDate().clone();
+        final Calendar cal = calculator.getCurrentBusinessDate();
 
-        while (calendar.isNonWorkingDay(cal.getTime())) {
+        while (calculator.isNonWorkingDay(cal)) {
             cal.add(Calendar.DAY_OF_MONTH, step);
         }
 
-        return cal.getTime();        
+        return cal;
     }
-    
+
     public String getType() {
         return HolidayHandlerType.FORWARD;
     }
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,52 @@
+/*
+ * $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 java.util.Date;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandler;
+
+/**
+ * A Wrapper to handle any HolidayHandler<Date> types via a HolidayHandler<Calendar> delegate
+ *
+ * @author Marcin Jekot
+ * @author $LastChangedBy$
+ * @version $Revision$ $Date$
+ *
+ */
+public class HolidayHandlerDateWrapper implements HolidayHandler<Date> {
+
+    HolidayHandler<Calendar> delegate;
+    DateCalculator<Calendar> calculator;
+    
+    public HolidayHandlerDateWrapper(HolidayHandler<Calendar> holidayHandler, DateCalculator<Calendar> dateCalulator) {
+        delegate = holidayHandler;
+        calculator = dateCalulator;
+    }
+    
+    public Date moveCurrentDate(DateCalculator<Date> calendar) {
+        return delegate.moveCurrentDate(calculator).getTime();
+    }
+
+    public String getType() {
+        return delegate.getType();
+    }
+    
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,192 @@
+/*
+ * $Id: JdkDateBaseDateCalculator.java 82 2006-09-03 09:56:09Z 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.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import net.objectlab.kit.datecalc.common.AbstractDateCalculator;
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandler;
+import net.objectlab.kit.datecalc.common.Tenor;
+import net.objectlab.kit.datecalc.common.WorkingWeek;
+
+/**
+ * This class is used via the DateCalculator interface, it enables the handling
+ * of different HolidayHandler, if no HolidayHandler is defined, the calendar
+ * will NOT move a date, even if it falls on a holiday or weekend.
+ * 
+ * @author Marcin Jekot
+ * @author $LastModifiedBy$
+ * @version $Revision: 82 $ $Date: 2006-09-03 11:56:09 +0200 (Sun, 03 Sep 2006) $
+ */
+public class JdkCalendarBaseDateCalculator extends AbstractDateCalculator<Calendar> implements JdkCalendarDateCalculator {
+
+    private WorkingWeek workingWeek = WorkingWeek.DEFAULT;
+
+    @SuppressWarnings("unchecked")
+    public JdkCalendarBaseDateCalculator() {
+        this(null, null, Collections.EMPTY_SET, null);
+    }
+
+    public JdkCalendarBaseDateCalculator(final String name, final Calendar startDate, final Set<Calendar> nonWorkingDays,
+            final HolidayHandler<Calendar> holidayHandler) {
+        super(name, nonWorkingDays, holidayHandler);
+        setStartDate(startDate);
+    }
+
+    public void setWorkingWeek(final WorkingWeek week) {
+        workingWeek = week;
+    }
+
+    /**
+     * is the date a non-working day according to the WorkingWeek?
+     */
+    public boolean isWeekend(final Calendar date) {
+        assert workingWeek != null;
+        return !workingWeek.isWorkingDay(date);
+    }
+
+    public JdkCalendarBaseDateCalculator moveByDays(final int days) {
+        if (getCurrentBusinessDate() == null) {
+            initialise();
+        }
+        getCurrentBusinessDate().add(Calendar.DAY_OF_MONTH, days);
+        
+        if (getHolidayHandler() != null) {
+            setCurrentBusinessDate(getHolidayHandler().moveCurrentDate(this));
+        }
+        
+        return this;
+    }
+
+    private void initialise() {
+        if (getStartDate() == null) {
+            setStartDate(Calendar.getInstance());
+        } else if (getCurrentBusinessDate() == null) {
+            setCurrentBusinessDate(Calendar.getInstance());
+        }
+    }
+
+    @Override
+    protected JdkCalendarDateCalculator createNewCalcultaor(final String name, final Calendar startDate, final Set<Calendar> holidays,
+            final HolidayHandler<Calendar> handler) {
+        return new JdkCalendarBaseDateCalculator(name, startDate, holidays, handler);
+    }
+
+    /**
+     * Calculates IMMDates between a start and end dates the 3rd wednesday of
+     * Mar/Jun/Sep/Dec when a lot of derivative contracts expire
+     * 
+     * @return a List of Dates
+     */
+    public List<Calendar> getIMMDates(final Calendar start, final Calendar end) {
+
+        final List<Calendar> dates = new ArrayList<Calendar>();
+        Calendar cal = (Calendar) start.clone();
+        while (true) {
+            cal = getNextIMMDate(true, cal);
+            if (!cal.after(end)) {
+                dates.add(cal);
+            } else {
+                break;
+            }
+        }
+
+        return dates;
+    }
+
+    @Override
+    protected Calendar getNextIMMDate(final boolean forward, final Calendar startDate) {
+
+        Calendar cal = (Calendar) startDate.clone();
+        
+        if (isIMMMonth(cal)) {
+            moveToIMMDay(cal);
+            // TODO simplify this if condition
+//            if (forward ^ cal.getTime().before(startDate) || cal.getTime().equals(startDate)) {
+            if ((forward && cal.after(startDate)) || (!forward && cal.before(startDate))) {
+                return cal;
+            }
+        }
+
+        final int delta = (forward ? 1 : -1);
+        do {
+            cal.add(Calendar.MONTH, delta);
+        } while (!isIMMMonth(cal));
+
+        moveToIMMDay(cal);
+        return cal;
+    }
+
+    private boolean isIMMMonth(final Calendar cal) {
+        final int month = cal.get(Calendar.MONTH);
+        
+        switch (month) {
+        case Calendar.MARCH:
+        case Calendar.JUNE:
+        case Calendar.SEPTEMBER:
+        case Calendar.DECEMBER:
+            return true;
+        }
+        
+        return false;
+    }
+
+    /**
+     * Assumes that the month is correct, get the day for the 3rd wednesday.
+     * 
+     * @param first
+     * @return
+     */
+    private void moveToIMMDay(final Calendar cal) {
+        cal.set(Calendar.DAY_OF_MONTH, 1);
+
+        // go to 1st wed
+        final int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
+        if (dayOfWeek < Calendar.WEDNESDAY) {
+            cal.add(Calendar.DAY_OF_MONTH, Calendar.WEDNESDAY - dayOfWeek);
+        } else if (dayOfWeek == Calendar.WEDNESDAY) {
+            // do nothing
+        } else {
+            cal.add(Calendar.DAY_OF_MONTH, (Calendar.WEDNESDAY + 7) - dayOfWeek);
+        }
+
+        // go to 3rd wednesday - i.e. move 2 weeks forward
+        cal.add(Calendar.DAY_OF_MONTH, 7 * 2);
+    }
+
+    @Override
+    public JdkCalendarBaseDateCalculator combine(DateCalculator<Calendar> calendar) {
+        return (JdkCalendarBaseDateCalculator) super.combine(calendar);
+    }
+
+    @Override
+    public JdkCalendarBaseDateCalculator moveByTenor(Tenor tenor) {
+        return (JdkCalendarBaseDateCalculator) super.moveByTenor(tenor);
+    }
+
+    @Override
+    public JdkCalendarBaseDateCalculator moveByBusinessDays(int businessDays) {
+        return (JdkCalendarBaseDateCalculator) super.moveByBusinessDays(businessDays);
+    }
+
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,18 @@
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.Tenor;
+
+public interface JdkCalendarDateCalculator extends DateCalculator<Calendar> {
+
+    JdkCalendarDateCalculator moveByDays(final int days);
+
+    JdkCalendarDateCalculator moveByBusinessDays(final int businessDays);
+
+    JdkCalendarDateCalculator combine(DateCalculator<Calendar> calendar);
+
+    JdkCalendarDateCalculator moveByTenor(final Tenor tenor);
+
+}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java	2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java	2006-09-04 12:32:55 UTC (rev 94)
@@ -17,17 +17,16 @@
  */
 package net.objectlab.kit.datecalc.jdk;
 
-import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.Collections;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import net.objectlab.kit.datecalc.common.AbstractDateCalculator;
 import net.objectlab.kit.datecalc.common.DateCalculator;
 import net.objectlab.kit.datecalc.common.HolidayHandler;
 import net.objectlab.kit.datecalc.common.Tenor;
+import net.objectlab.kit.datecalc.common.Utils;
 import net.objectlab.kit.datecalc.common.WorkingWeek;
 
 /**
@@ -39,156 +38,118 @@
  * @author $LastModifiedBy$
  * @version $Revision$ $Date$
  */
-public class JdkDateBaseDateCalculator extends AbstractDateCalculator<Date> implements JdkDateCalculator {
+public class JdkDateBaseDateCalculator implements JdkDateCalculator {
 
-    private WorkingWeek workingWeek = WorkingWeek.DEFAULT;
-
-    @SuppressWarnings("unchecked")
+    private JdkCalendarBaseDateCalculator delegate;
+    
     public JdkDateBaseDateCalculator() {
-        this(null, null, Collections.EMPTY_SET, null);
+        delegate = new JdkCalendarBaseDateCalculator();
     }
 
     public JdkDateBaseDateCalculator(final String name, final Date startDate, final Set<Date> nonWorkingDays,
-            final HolidayHandler<Date> holidayHandler) {
-        super(name, nonWorkingDays, holidayHandler);
-        setStartDate(startDate);
+            final HolidayHandler<Calendar> holidayHandler) {
+        final Set<Calendar> nonWorkingCalendars = Utils.toCalendarSet(nonWorkingDays); 
+        
+        delegate = new JdkCalendarBaseDateCalculator(name, Utils.getCal(startDate), nonWorkingCalendars, holidayHandler);
+        delegate.setStartDate(Utils.getCal(startDate));
     }
 
-    public void setWorkingWeek(final WorkingWeek week) {
-        workingWeek = week;
+    public Date getCurrentBusinessDate() {
+        return delegate.getCurrentBusinessDate().getTime();
     }
 
-    /**
-     * is the date a non-working day according to the WorkingWeek?
-     */
-    public boolean isWeekend(final Date date) {
-        assert workingWeek != null;
-        return !workingWeek.isWorkingDay(date);
+    public List<Date> getIMMDates(Date start, Date end) {
+        return Utils.toDateList(delegate.getIMMDates(Utils.getCal(start), Utils.getCal(end)));
     }
 
-    public JdkDateCalculator moveByDays(final int days) {
-        if (getCurrentBusinessDate() == null) {
-            initialise();
-        }
+    public Date getNextIMMDate() {
+        return delegate.getNextIMMDate().getTime();
+    }
 
-        final Calendar cal = Utils.getCal(getCurrentBusinessDate());
-        cal.add(Calendar.DAY_OF_MONTH, days);
-        setCurrentBusinessDate(cal.getTime());
+    public Date getPreviousIMMDate() {
+        return delegate.getPreviousIMMDate().getTime();
+    }
 
-        return this;
+    public Date getStartDate() {
+        return delegate.getStartDate().getTime();
     }
 
-    private void initialise() {
-        if (getStartDate() == null) {
-            setStartDate(new Date());
-        } else if (getCurrentBusinessDate() == null) {
-            setCurrentBusinessDate(new Date());
-        }
+    public boolean isNonWorkingDay(Date date) {
+        return delegate.isNonWorkingDay(Utils.getCal(date));
     }
 
-    @Override
-    protected DateCalculator<Date> createNewCalcultaor(final String name, final Date startDate, final Set<Date> holidays,
-            final HolidayHandler<Date> handler) {
-        return new JdkDateBaseDateCalculator(name, startDate, holidays, handler);
+    public boolean isWeekend(Date date) {
+        return delegate.isW...
 
[truncated message content] | 
| 
      
      
      From: <be...@us...> - 2006-09-04 14:57:29
       | 
| Revision: 95
          http://svn.sourceforge.net/objectlabkit/?rev=95&view=rev
Author:   benoitx
Date:     2006-09-04 07:57:12 -0700 (Mon, 04 Sep 2006)
Log Message:
-----------
Force the Date/Calendar to be on UTC timezone. This then allows all tests to work in JDK.
Marcin, please genericise the PeriodCountCalculatorTest from Joda and use the data sets in JDK as well. Ta very much!
Modified Paths:
--------------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java
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-04 12:32:55 UTC (rev 94)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java	2006-09-04 14:57:12 UTC (rev 95)
@@ -23,6 +23,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.TimeZone;
 
 /**
  * TODO javadoc
@@ -36,23 +37,28 @@
     private static final String DATE_PATTERN = "yyyy-MM-dd";
     private static final SimpleDateFormat SDF = new SimpleDateFormat(DATE_PATTERN);
 
-    // TODO create tests
     public static Calendar getCal(final Date date) {
         final Calendar cal = Calendar.getInstance();
         cal.setTime(date);
+        cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+        cal.set(Calendar.HOUR, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MILLISECOND, 0);
         return cal;
     }
 
     public static Date createDate(final String str) throws IllegalArgumentException {
         try {
-            return SDF.parse(str);
+            Date date = SDF.parse(str);
+            Calendar cal = getCal(date);
+            return cal.getTime();
         } catch (final ParseException e) {
             throw new IllegalArgumentException("\"" + str + "\"" + " is an invalid date, the pattern is : " + DATE_PATTERN);
         }
     }
     
-    public static Set<Calendar> toCalendarSet(Set<Date> dates) {
-        
+    public static Set<Calendar> toCalendarSet(Set<Date> dates) {        
         Set<Calendar> calendars = new HashSet<Calendar>();
         for (Date date : dates) {
             calendars.add(getCal(date));
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-04 12:32:55 UTC (rev 94)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-04 14:57:12 UTC (rev 95)
@@ -8,50 +8,55 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.TimeZone;
 
 import junit.framework.TestCase;
 
 public class UtilsTest extends TestCase {
 
     SimpleDateFormat sdf;
+
     Calendar cal;
+
     Set<Calendar> calendarSet;
+
     Set<Date> dateSet;
-    
+
     protected void setUp() throws Exception {
         sdf = new SimpleDateFormat("yyyy-MM-dd");
-        
+
         calendarSet = new HashSet<Calendar>();
         calendarSet.add(getCal(2004, 5, 31));
         calendarSet.add(getCal(2083, 12, 1));
-        
+
         dateSet = new HashSet<Date>();
-        dateSet.add(sdf.parse("2004-05-31"));
-        dateSet.add(sdf.parse("2083-12-01"));
+        dateSet.add(getCal(2004, 5, 31).getTime());
+        dateSet.add(getCal(2083, 12, 1).getTime());
     }
 
     private Calendar getCal(int year, int month, int day) {
         Calendar cal = Calendar.getInstance();
         cal.clear();
-        cal.set(year, month-1, day, 0, 0, 0);
+        cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+        cal.set(year, month - 1, day, 0, 0, 0);
         return cal;
     }
 
     public void testGetCal() throws Exception {
-        
+
         Date d = sdf.parse("2004-02-03");
         assertEquals(Utils.getCal(d).getTime(), getCal(2004, 2, 3).getTime());
-        
+
         Date d1 = getCal(2080, 5, 31).getTime();
         Date d2 = getCal(2080, 5, 31).getTime();
         assertEquals(Utils.getCal(d1).getTime(), d2);
     }
 
     public void testCreateDate() throws Exception {
-        
-        assertEquals(sdf.parse("1970-01-01"), Utils.createDate("1970-01-01"));
-        assertEquals(sdf.parse("2020-12-31"), Utils.createDate("2020-12-31"));
 
+        assertEquals(getCal(1970, 1, 1).getTime(), Utils.createDate("1970-01-01"));
+        assertEquals(getCal(2020, 12, 31).getTime(), Utils.createDate("2020-12-31"));
+
         assertEquals(getCal(2006, 8, 8).getTime(), Utils.createDate("2006-08-08"));
         assertEquals(getCal(2004, 9, 12).getTime(), Utils.createDate("2004-09-12"));
     }
@@ -65,10 +70,10 @@
     }
 
     public void testToDateList() {
-        
+
         List<Date> expected = new ArrayList<Date>(dateSet);
         Collections.sort(expected);
-        
+
         List<Date> actual = Utils.toDateList(new ArrayList<Calendar>(calendarSet));
         Collections.sort(actual);
         assertEquals(expected, actual);
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java	2006-09-04 12:32:55 UTC (rev 94)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java	2006-09-04 14:57:12 UTC (rev 95)
@@ -18,24 +18,25 @@
 package net.objectlab.kit.datecalc.jdk;
 
 import java.util.Calendar;
+import java.util.TimeZone;
 
 import net.objectlab.kit.datecalc.common.PeriodCountBasis;
 import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
 
 /**
  * TODO javadoc
- *
+ * 
  * @author Marcin Jekot
  * @author $LastChangedBy$
  * @version $Revision$ $Date$
- *
+ * 
  */
 public class CalendarPeriodCountCalculator implements PeriodCountCalculator<Calendar> {
 
-    private double MILLIS_IN_DAY = 1000 * 60 * 60 * 24;
-    
+    private static final long MILLIS_IN_DAY = 1000L * 60L * 60L * 24L;
+
     public int dayDiff(final Calendar start, final Calendar end, final PeriodCountBasis basis) {
-        
+
         int diff = 0;
 
         if (basis == PeriodCountBasis.CONV_30_360) {
@@ -47,8 +48,8 @@
             if (dayStart == MONTH_31_DAYS) {
                 dayStart = MONTH_30_DAYS;
             }
-            diff = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * YEAR_360 + (end.get(Calendar.MONTH) - start.get(Calendar.MONTH)) * MONTH_30_DAYS
-                    + dayEnd - dayStart;
+            diff = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * YEAR_360
+                    + (end.get(Calendar.MONTH) - start.get(Calendar.MONTH)) * MONTH_30_DAYS + dayEnd - dayStart;
 
         } else if (basis == PeriodCountBasis.CONV_360E_ISDA) {
             int dayStart = start.get(Calendar.DAY_OF_MONTH);
@@ -61,8 +62,8 @@
                 dayStart = MONTH_30_DAYS;
             }
 
-            diff = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * YEAR_360 + (end.get(Calendar.MONTH) - start.get(Calendar.MONTH)) * MONTH_30_DAYS
-                    + dayEnd - dayStart;
+            diff = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * YEAR_360
+                    + (end.get(Calendar.MONTH) - start.get(Calendar.MONTH)) * MONTH_30_DAYS + dayEnd - dayStart;
 
         } else if (basis == PeriodCountBasis.CONV_360E_ISMA) {
             int dayStart = start.get(Calendar.DAY_OF_MONTH);
@@ -73,17 +74,21 @@
             if (dayStart == MONTH_31_DAYS) {
                 dayStart = MONTH_30_DAYS;
             }
-            diff = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * YEAR_360 + (end.get(Calendar.MONTH) - start.get(Calendar.MONTH)) * MONTH_30_DAYS
-                    + dayEnd - dayStart;
+            diff = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * YEAR_360
+                    + (end.get(Calendar.MONTH) - start.get(Calendar.MONTH)) * MONTH_30_DAYS + dayEnd - dayStart;
         } else {
-            diff = dayDiff(start, end); 
+            diff = dayDiff(start, end);
         }
         return diff;
     }
 
     private int dayDiff(final Calendar start, final Calendar end) {
-        // TODO the 12 hours is just for safety - in case DST kicked in, but is there a better way?
-        return (int)((Math.abs(start.getTime().getTime() - end.getTime().getTime()) + 12) / MILLIS_IN_DAY);
+//        System.out.println("start:" + start.getTime() + " end:" + end.getTime());
+        long diff = Math.abs(start.getTimeInMillis() - end.getTimeInMillis());
+//        System.out.println("ms diff:" + diff);
+        double dayDiff = ((double)diff) / MILLIS_IN_DAY;
+//        System.out.println("day diff:" + dayDiff);
+        return (int) (dayDiff);
     }
 
     public double monthDiff(final Calendar start, final Calendar end, final PeriodCountBasis basis) {
@@ -103,9 +108,9 @@
 
                 final int diff1 = dayDiff(start, endOfStartYear);
                 final int diff2 = dayDiff(startOfEndYear, end);
-                
+
                 diff = (diff1 + 1.0) / start.getMaximum(Calendar.DAY_OF_YEAR) + (endYear - startYear - 1.0) + (diff2)
-                    / (double) end.getMaximum(Calendar.DAY_OF_YEAR);
+                        / (double) end.getMaximum(Calendar.DAY_OF_YEAR);
             }
 
         } else if (basis == PeriodCountBasis.CONV_30_360 || basis == PeriodCountBasis.CONV_360E_ISDA
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java	2006-09-04 12:32:55 UTC (rev 94)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java	2006-09-04 14:57:12 UTC (rev 95)
@@ -1,13 +1,11 @@
 package net.objectlab.kit.datecalc.jdk;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
 
-import junit.framework.Assert;
 import junit.framework.TestCase;
+import net.objectlab.kit.datecalc.common.Utils;
 
 public abstract class AbstractDateCalculatorTest extends TestCase {
 
@@ -15,16 +13,8 @@
         super();
     }
 
-    private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd");
-
-    // TODO remove this and use utils one instead
     protected Date createDate(final String str) {
-        try {
-            return SDF.parse(str);
-        } catch (final ParseException e) {
-            Assert.fail(e.toString());
-        }
-        return null;
+        return Utils.createDate(str);
     }
 
     protected Set<Date> createUKHolidays() {
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java	2006-09-04 12:32:55 UTC (rev 94)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java	2006-09-04 14:57:12 UTC (rev 95)
@@ -47,6 +47,7 @@
             { "0D", "2008-02-29", "2008-02-29", "ACT_365", "0", "0.00" },
             { "1D", "2008-02-29", "2008-03-03", "ACT_365", "3", "0.008219" },
             { "1W", "2008-02-29", "2008-03-07", "ACT_365", "7", "0.019178" },
+            { "1M", "2008-02-28", "2008-03-31", "ACT_365", "32", "0.087671" }, // new
             { "1M", "2008-02-29", "2008-03-31", "ACT_365", "31", "0.084932" },
             { "3M", "2008-02-29", "2008-05-29", "ACT_365", "90", "0.246575" },
             { "6M", "2008-02-29", "2008-08-29", "ACT_365", "182", "0.498630" },
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <be...@us...> - 2006-09-04 15:02:13
       | 
| Revision: 96
          http://svn.sourceforge.net/objectlabkit/?rev=96&view=rev
Author:   benoitx
Date:     2006-09-04 08:01:20 -0700 (Mon, 04 Sep 2006)
Log Message:
-----------
Organised imports, Format and CleanUp.
Modified Paths:
--------------
    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/WorkingWeek.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorCombinationTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateTestCase.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.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/ExcelDateUtil.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/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/main/java/net/objectlab/kit/datecalc/jdk/JdkDatePeriodCountCalculator.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
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ExcelDateUtil.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/JodaWorkingWeek.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/YearMonthDayDateCalculator.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/JodaWorkingWeekTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateBackwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateDateCalculatorCombinationTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateForwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayBackwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculatorCombinationTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayForwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedPrecedingDateCalculatorTest.java
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-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -23,20 +23,20 @@
 
 /**
  * TODO javadoc
- *
+ * 
  * @author marchi
  * @author $LastChangedBy$
  * @version $Revision$ $Date$
- *
+ * 
  */
 public abstract class AbstractDateCalculatorFactory<E> implements DateCalculatorFactory<E> {
 
     protected 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
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-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -44,8 +44,7 @@
      *            typically one of the value of HolidayHandlerType
      * @return a new DateCalculator
      */
-    DateCalculator<E> getDateCalculator(final String name,
-            final String holidayHandlerType);
+    DateCalculator<E> getDateCalculator(final String name, final String holidayHandlerType);
 
     /**
      * Use this method to register a set of holidays for a given calendar.
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java	2006-09-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -62,7 +62,7 @@
      * Saturday, 64 Sunday So Monday-Friday= 1+2+4+8+16 = 31
      */
     protected byte workingDays = DEFAULT_WORKING_DAYS;
-    
+
     public boolean isWorkingDayFromCalendar(final int dayOfWeek) {
         final int day = adjustDay(dayOfWeek);
         return (WORKING_WEEK_DAYS_OFFSET[day] & workingDays) != 0;
@@ -71,7 +71,7 @@
     public boolean isWorkingDay(final Date date) {
         return isWorkingDay(Utils.getCal(date));
     }
-    
+
     public boolean isWorkingDay(final Calendar cal) {
         return isWorkingDayFromCalendar(cal.get(Calendar.DAY_OF_WEEK));
     }
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java	2006-09-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -4,11 +4,6 @@
 import java.util.Set;
 
 import junit.framework.Assert;
-import net.objectlab.kit.datecalc.common.DateCalculator;
-import net.objectlab.kit.datecalc.common.HolidayHandlerType;
-import net.objectlab.kit.datecalc.common.StandardTenor;
-import net.objectlab.kit.datecalc.common.Tenor;
-import net.objectlab.kit.datecalc.common.TenorCode;
 
 public abstract class AbstractBackwardDateCalculatorTest<E> extends AbstractDateTestCase<E> {
 
@@ -55,9 +50,8 @@
 
     public void testSimpleForwardStartDateNoWeekend() {
         final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.BACKWARD);
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(true, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(true, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(true,
+                Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
@@ -89,14 +83,10 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(false, Calendar.MONDAY)
-                .withWorkingDayFromCalendar(true, Calendar.TUESDAY)
-                .withWorkingDayFromCalendar(false, Calendar.WEDNESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.THURSDAY)
-                .withWorkingDayFromCalendar(false, Calendar.FRIDAY)
-                .withWorkingDayFromCalendar(true, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
+                Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+                Calendar.THURSDAY).withWorkingDayFromCalendar(false, Calendar.FRIDAY).withWorkingDayFromCalendar(true,
+                Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
 
         cal.setStartDate(newDate("2006-07-31")); // start date Monday
@@ -126,14 +116,10 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(false, Calendar.MONDAY)
-                .withWorkingDayFromCalendar(true, Calendar.TUESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.WEDNESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.THURSDAY)
-                .withWorkingDayFromCalendar(true, Calendar.FRIDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
+                Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+                Calendar.THURSDAY).withWorkingDayFromCalendar(true, Calendar.FRIDAY).withWorkingDayFromCalendar(false,
+                Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
 
         cal.setStartDate(newDate("2006-07-31")); // start date Monday
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorCombinationTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorCombinationTest.java	2006-09-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorCombinationTest.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -1,8 +1,6 @@
 package net.objectlab.kit.datecalc.common;
 
 import junit.framework.Assert;
-import net.objectlab.kit.datecalc.common.DateCalculator;
-import net.objectlab.kit.datecalc.common.HolidayHandlerType;
 
 public abstract class AbstractDateCalculatorCombinationTest<E> extends AbstractDateTestCase<E> {
 
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateTestCase.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateTestCase.java	2006-09-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateTestCase.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -10,7 +10,7 @@
     protected abstract E newDate(final String date);
 
     protected abstract DateCalculatorFactory<E> getDateCalculatorFactory();
-    
+
     protected void checkDate(final String string, final DateCalculator<E> calendar, final String string2) {
         Assert.assertEquals(string, newDate(string2), calendar.getCurrentBusinessDate());
     }
@@ -44,11 +44,11 @@
         getDateCalculatorFactory().registerHolidays(name, holidays);
     }
 
-    protected WorkingWeek getWorkingWeek(WorkingWeek ww) {
+    protected WorkingWeek getWorkingWeek(final WorkingWeek ww) {
         return ww;
     }
 
-    protected DateCalculator<E> newDateCalculator(String name, String type) {
+    protected DateCalculator<E> newDateCalculator(final String name, final String type) {
         return getDateCalculatorFactory().getDateCalculator(name, type);
     }
 }
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java	2006-09-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -50,9 +50,8 @@
 
     public void testSimpleForwardStartDateNoWeekend() {
         final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.FORWARD);
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(true, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(true, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(true,
+                Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
@@ -84,14 +83,10 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(false, Calendar.MONDAY)
-                .withWorkingDayFromCalendar(true, Calendar.TUESDAY)
-                .withWorkingDayFromCalendar(false, Calendar.WEDNESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.THURSDAY)
-                .withWorkingDayFromCalendar(false, Calendar.FRIDAY)
-                .withWorkingDayFromCalendar(true, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
+                Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+                Calendar.THURSDAY).withWorkingDayFromCalendar(false, Calendar.FRIDAY).withWorkingDayFromCalendar(true,
+                Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
 
         cal.setStartDate(newDate("2006-07-31")); // start date Monday
@@ -121,14 +116,10 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(false, Calendar.MONDAY)
-                .withWorkingDayFromCalendar(true, Calendar.TUESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.WEDNESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.THURSDAY)
-                .withWorkingDayFromCalendar(true, Calendar.FRIDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
+                Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+                Calendar.THURSDAY).withWorkingDayFromCalendar(true, Calendar.FRIDAY).withWorkingDayFromCalendar(false,
+                Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
 
         cal.setStartDate(newDate("2006-07-31")); // start date Monday
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java	2006-09-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -50,11 +50,10 @@
 
     public void testSimpleForwardStartDateNoWeekend() {
         final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.MODIFIED_FOLLLOWING);
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(true, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(true, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(true,
+                Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
-        
+
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
@@ -85,14 +84,10 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(false, Calendar.MONDAY)
-                .withWorkingDayFromCalendar(true, Calendar.TUESDAY)
-                .withWorkingDayFromCalendar(false, Calendar.WEDNESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.THURSDAY)
-                .withWorkingDayFromCalendar(false, Calendar.FRIDAY)
-                .withWorkingDayFromCalendar(true, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
+                Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+                Calendar.THURSDAY).withWorkingDayFromCalendar(false, Calendar.FRIDAY).withWorkingDayFromCalendar(true,
+                Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
 
         cal.setStartDate(newDate("2006-07-31")); // start date Monday
@@ -122,14 +117,10 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(false, Calendar.MONDAY)
-                .withWorkingDayFromCalendar(true, Calendar.TUESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.WEDNESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.THURSDAY)
-                .withWorkingDayFromCalendar(true, Calendar.FRIDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
+                Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+                Calendar.THURSDAY).withWorkingDayFromCalendar(true, Calendar.FRIDAY).withWorkingDayFromCalendar(false,
+                Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
 
         cal.setStartDate(newDate("2006-07-31")); // start date Monday
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java	2006-09-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -50,11 +50,10 @@
 
     public void testSimpleForwardStartDateNoWeekend() {
         final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.MODIFIED_PRECEEDING);
-        
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(true, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(true, Calendar.SUNDAY);
-        
+
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(true,
+                Calendar.SUNDAY);
+
         cal.setWorkingWeek(getWorkingWeek(ww));
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
@@ -86,14 +85,10 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(false, Calendar.MONDAY)
-                .withWorkingDayFromCalendar(true, Calendar.TUESDAY)
-                .withWorkingDayFromCalendar(false, Calendar.WEDNESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.THURSDAY)
-                .withWorkingDayFromCalendar(false, Calendar.FRIDAY)
-                .withWorkingDayFromCalendar(true, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
+                Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+                Calendar.THURSDAY).withWorkingDayFromCalendar(false, Calendar.FRIDAY).withWorkingDayFromCalendar(true,
+                Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
 
         cal.setStartDate(newDate("2006-07-31")); // start date Monday
@@ -123,14 +118,10 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        WorkingWeek ww = new WorkingWeek()
-                .withWorkingDayFromCalendar(false, Calendar.MONDAY)
-                .withWorkingDayFromCalendar(true, Calendar.TUESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.WEDNESDAY)
-                .withWorkingDayFromCalendar(true, Calendar.THURSDAY)
-                .withWorkingDayFromCalendar(true, Calendar.FRIDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SATURDAY)
-                .withWorkingDayFromCalendar(false, Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
+                Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+                Calendar.THURSDAY).withWorkingDayFromCalendar(true, Calendar.FRIDAY).withWorkingDayFromCalendar(false,
+                Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
 
         cal.setStartDate(newDate("2006-07-31")); // start date Monday
@@ -270,5 +261,5 @@
 
         checkDate("do NOT move to next month", cal, "2006-08-02");
     }
-    
+
 }
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -22,6 +22,7 @@
 
     Set<Date> dateSet;
 
+    @Override
     protected void setUp() throws Exception {
         sdf = new SimpleDateFormat("yyyy-MM-dd");
 
@@ -34,8 +35,8 @@
         dateSet.add(getCal(2083, 12, 1).getTime());
     }
 
-    private Calendar getCal(int year, int month, int day) {
-        Calendar cal = Calendar.getInstance();
+    private Calendar getCal(final int year, final int month, final int day) {
+        final Calendar cal = Calendar.getInstance();
         cal.clear();
         cal.setTimeZone(TimeZone.getTimeZone("UTC"));
         cal.set(year, month - 1, day, 0, 0, 0);
@@ -44,11 +45,11 @@
 
     public void testGetCal() throws Exception {
 
-        Date d = sdf.parse("2004-02-03");
+        final Date d = sdf.parse("2004-02-03");
         assertEquals(Utils.getCal(d).getTime(), getCal(2004, 2, 3).getTime());
 
-        Date d1 = getCal(2080, 5, 31).getTime();
-        Date d2 = getCal(2080, 5, 31).getTime();
+        final Date d1 = getCal(2080, 5, 31).getTime();
+        final Date d2 = getCal(2080, 5, 31).getTime();
         assertEquals(Utils.getCal(d1).getTime(), d2);
     }
 
@@ -71,10 +72,10 @@
 
     public void testToDateList() {
 
-        List<Date> expected = new ArrayList<Date>(dateSet);
+        final List<Date> expected = new ArrayList<Date>(dateSet);
         Collections.sort(expected);
 
-        List<Date> actual = Utils.toDateList(new ArrayList<Calendar>(calendarSet));
+        final List<Date> actual = Utils.toDateList(new ArrayList<Calendar>(calendarSet));
         Collections.sort(actual);
         assertEquals(expected, actual);
     }
Modified: 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-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -24,18 +24,20 @@
 
 /**
  * TODO javadoc
- *
+ * 
  * @author Marcin Jekot
  * @author $LastChangedBy$
  * @version $Revision$ $Date$
- *
+ * 
  */
 public class BackwardHandler extends ForwardHandler {
 
-    public Calendar moveCurrentDate(DateCalculator<Calendar> calendar) {
+    @Override
+    public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
         return move(calendar, -1);
     }
 
+    @Override
     public String getType() {
         return HolidayHandlerType.BACKWARD;
     }
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java	2006-09-04 14:57:12 UTC (rev 95)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java	2006-09-04 15:01:20 UTC (rev 96)
@@ -25,7 +25,7 @@
 
 /**
  * TODO javadoc
- *
+ * 
  * @author Marcin Jekot
  * @author $LastChangedBy: marchy $
  * @version $Revision: 69 $ $Date: 2006-08-27 11:47:25 +0200 (Sun, 27 Aug 2006) $
@@ -37,16 +37,16 @@
         return move(calendar, 1);
     }
 
-    protected Calendar move(final DateCalculator<Calendar> calculator, int step) {
-        final Calendar cal = (Calendar)calculator.getCurrentBusinessDate().clone();
+    protected Calendar move(final DateCalculator<Calendar> calculator, final int step) {
+        final Calendar cal = (Calendar) calculator.getCurrentBusinessDate().clone();
 
         while (calculator.isNonWorkingDay(cal)) {
             cal.add(Calendar.DAY_OF_MONTH, step);
         }
 
-        return cal;        
+        return cal;
     }
-    
+
     public String getType() {
         return HolidayHandlerType.FORWARD;
     }
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java	2006-09-04 14:57:12 UTC (rev 95)...
 
[truncated message content] | 
| 
      
      
      From: <be...@us...> - 2006-09-04 17:17:43
       | 
| Revision: 97
          http://svn.sourceforge.net/objectlabkit/?rev=97&view=rev
Author:   benoitx
Date:     2006-09-04 10:16:22 -0700 (Mon, 04 Sep 2006)
Log Message:
-----------
Added 3 extra methods for IMM:
- 2 using IMMPeriod and ALL have been implemented (albeit not tested for JDK)
- isIMMDate method implemented for JODA but not JDK ==> Marcin, have fun! ;-)
Modified Paths:
--------------
    trunk/datecalc-common/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/DateCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-jdk/project.xml
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.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-joda/project.xml
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/IMMDateTest.java
Added Paths:
-----------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java
Modified: trunk/datecalc-common/project.xml
===================================================================
--- trunk/datecalc-common/project.xml	2006-09-04 15:01:20 UTC (rev 96)
+++ trunk/datecalc-common/project.xml	2006-09-04 17:16:22 UTC (rev 97)
@@ -35,7 +35,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>
Modified: trunk/datecalc-common/qalab.xml
===================================================================
--- trunk/datecalc-common/qalab.xml	2006-09-04 15:01:20 UTC (rev 96)
+++ trunk/datecalc-common/qalab.xml	2006-09-04 17:16:22 UTC (rev 97)
@@ -46,6 +46,10 @@
         <summaryresult date="2006-09-02" filecount="13" statvalue="9" type="checkstyle"/>
         <summaryresult date="2006-09-02" filecount="12" statvalue="59" type="cobertura-line"/>
         <summaryresult date="2006-09-02" filecount="12" statvalue="61" type="cobertura-branch"/>
+        <summaryresult date="2006-09-04" filecount="14" statvalue="12" type="checkstyle"/>
+        <summaryresult date="2006-09-04" filecount="1" statvalue="1" type="findbugs"/>
+        <summaryresult date="2006-09-04" filecount="13" statvalue="62" type="cobertura-line"/>
+        <summaryresult date="2006-09-04" filecount="13" statvalue="64" 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"/>
@@ -57,6 +61,7 @@
         <result date="2006-08-24" statvalue="1" type="checkstyle"/>
         <result date="2006-08-28" statvalue="1" type="checkstyle"/>
         <result date="2006-09-02" statvalue="1" type="checkstyle"/>
+        <result date="2006-09-04" statvalue="1" type="checkstyle"/>
     </file>
     <file id="net_objectlab_kit_datecalc_common_Tenor.java" path="net/objectlab/kit/datecalc/common/Tenor.java">
         <result date="2006-08-08" statvalue="1" type="checkstyle"/>
@@ -80,6 +85,8 @@
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-04" 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"/>
@@ -104,6 +111,10 @@
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" statvalue="1" type="checkstyle"/>
+        <result date="2006-09-04" statvalue="1" type="findbugs"/>
+        <result date="2006-09-04" statvalue="95" type="cobertura-line"/>
+        <result date="2006-09-04" 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"/>
@@ -124,6 +135,8 @@
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-04" 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"/>
@@ -135,6 +148,7 @@
         <result date="2006-08-24" statvalue="100" type="cobertura-branch"/>
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" 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"/>
@@ -144,6 +158,7 @@
         <result date="2006-08-24" statvalue="100" type="cobertura-branch"/>
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" 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"/>
@@ -163,6 +178,8 @@
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="92" type="cobertura-line"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" statvalue="92" type="cobertura-line"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_common_AbstractDateCalculator.java" path="net/objectlab/kit/datecalc/common/AbstractDateCalculator.java">
@@ -180,6 +197,8 @@
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-04" 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"/>
@@ -190,6 +209,8 @@
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_common_AbstractDateCalculatorFactory.java" path="net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java">
@@ -197,6 +218,8 @@
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="2" type="checkstyle"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" statvalue="2" type="checkstyle"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_common_DateCalculatorFactory.java" path="net/objectlab/kit/datecalc/common/DateCalculatorFactory.java">
@@ -204,6 +227,8 @@
         <result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_common_PeriodCountCalculator.java" path="net/objectlab/kit/datecalc/common/PeriodCountCalculator.java">
@@ -212,5 +237,13 @@
         <result date="2006-09-02" statvalue="6" type="checkstyle"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-line"/>
         <result date="2006-09-02" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-04" statvalue="6" type="checkstyle"/>
+        <result date="2006-09-04" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-04" 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"/>
+        <result date="2006-09-04" statvalue="88" type="cobertura-line"/>
+        <result date="2006-09-04" 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-04 15:01:20 UTC (rev 96)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java	2006-09-04 17:16:22 UTC (rev 97)
@@ -19,6 +19,7 @@
 
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -215,18 +216,53 @@
      * @return the next IMMDate based on current date.
      */
     public E getNextIMMDate() {
-        return getNextIMMDate(true, currentBusinessDate);
+        return getNextIMMDate(true, currentBusinessDate, IMMPeriod.QUARTERLY);
     }
 
     /**
+     * @param period
+     *            specify when the "next" IMM is, if quarterly then it is the
+     *            conventional algorithm.
+     * @return the next IMMDate based on current date.
+     */
+    public E getNextIMMDate(final IMMPeriod period) {
+        return getNextIMMDate(true, currentBusinessDate, period);
+    }
+
+    /**
      * @return the previous IMMDate based on current date.
      */
     public E getPreviousIMMDate() {
-        return getNextIMMDate(false, currentBusinessDate);
+        return getNextIMMDate(false, currentBusinessDate, IMMPeriod.QUARTERLY);
     }
 
-    protected abstract E getNextIMMDate(final boolean forward, final E theStartDate);
+    /**
+     * @param period
+     *            specify when the "previous" IMM is, if quarterly then it is
+     *            the conventional algorithm.
+     * @return the previous IMMDate based on current date.
+     */
+    public E getPreviousIMMDate(final IMMPeriod period) {
+        return getNextIMMDate(false, currentBusinessDate, period);
+    }
 
+    /**
+     * Returns a list of IMM dates between 2 dates, it will exclude the start
+     * date if it is an IMM date but would include the end date if it is an IMM
+     * (same as IMMPeriod.QUARTERLY).
+     * 
+     * @param start
+     *            start of the interval, excluded
+     * @param end
+     *            end of the interval, may be included.
+     * @return list of IMM dates
+     */
+    public List<E> getIMMDates(final E start, final E end) {
+        return getIMMDates(start, end, IMMPeriod.QUARTERLY);
+    }
+
+    protected abstract E getNextIMMDate(final boolean forward, final E theStartDate, final IMMPeriod period);
+
     protected abstract DateCalculator<E> createNewCalcultaor(String calcName, E theStartDate, Set<E> holidays,
             HolidayHandler<E> handler);
 }
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java	2006-09-04 15:01:20 UTC (rev 96)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java	2006-09-04 17:16:22 UTC (rev 97)
@@ -152,24 +152,70 @@
     DateCalculator<E> moveByTenor(final Tenor tenor);
 
     /**
+     * @param date
+     * @return true if that date is an IMM date.
+     */
+    boolean isIMMDate(E date);
+
+    /**
+     * Even if the current date is an IMM date, it will return the next one.
+     * 
      * @return the next IMMDate based on current date.
      */
     E getNextIMMDate();
 
     /**
+     * Even if the current date is an IMM date, it will return the next one.
+     * 
+     * @param period
+     *            specify when the "next" IMM is, if quarterly then it is the
+     *            conventional algorithm.
+     * @return the next IMMDate based on current date.
+     */
+    E getNextIMMDate(IMMPeriod period);
+
+    /**
+     * Even if the current date is an IMM date, it will return the previous one.
+     * 
      * @return the previous IMMDate based on current date.
      */
     E getPreviousIMMDate();
 
     /**
+     * Even if the current date is an IMM date, it will return the previous one.
+     * 
+     * @param period
+     *            specify when the "previous" IMM is, if quarterly then it is
+     *            the conventional algorithm.
+     * @return the previous IMMDate based on current date.
+     */
+    E getPreviousIMMDate(IMMPeriod period);
+
+    /**
      * Returns a list of IMM dates between 2 dates, it will exclude the start
+     * date if it is an IMM date but would include the end date if it is an IMM
+     * (same as IMMPeriod.QUARTERLY).
+     * 
+     * @param start
+     *            start of the interval, excluded
+     * @param end
+     *            end of the interval, may be included.
+     * @return list of IMM dates
+     */
+    List<E> getIMMDates(final E start, final E end);
+
+    /**
+     * Returns a list of IMM dates between 2 dates, it will exclude the start
      * date if it is an IMM date but would include the end date if it is an IMM.
      * 
      * @param start
      *            start of the interval, excluded
      * @param end
      *            end of the interval, may be included.
+     * @param period
+     *            specify when the "next" IMM is, if quarterly then it is the
+     *            conventional algorithm.
      * @return list of IMM dates
      */
-    List<E> getIMMDates(final E start, final E end);
+    List<E> getIMMDates(final E start, final E end, final IMMPeriod period);
 }
\ No newline at end of file
Added: 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	                        (rev 0)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java	2006-09-04 17:16:22 UTC (rev 97)
@@ -0,0 +1,35 @@
+/*
+ * $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.common;
+
+/**
+ * Some instruments require a period Bi Annually which then can be Mar-Sep or
+ * Jun-Dec.
+ * 
+ * @author Benoit Xhenseval
+ * @author $LastChangedBy$
+ * @version $Revision$ $Date$
+ */
+public enum IMMPeriod {
+    /** Bi annually March and September */
+    BI_ANNUALY_MAR_SEP,
+    /** Bi annually March and September */
+    BI_ANNUALY_JUN_DEC,
+    /** Quarterly: eg March, June, September, December */
+    QUARTERLY    
+}
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-04 15:01:20 UTC (rev 96)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java	2006-09-04 17:16:22 UTC (rev 97)
@@ -27,6 +27,7 @@
 
 /**
  * TODO javadoc
+ * 
  * @author Marcin Jekot
  * @author $LastModifiedBy$
  * @version $Revision$ $Date$
@@ -35,6 +36,7 @@
 public class Utils {
 
     private static final String DATE_PATTERN = "yyyy-MM-dd";
+
     private static final SimpleDateFormat SDF = new SimpleDateFormat(DATE_PATTERN);
 
     public static Calendar getCal(final Date date) {
@@ -50,35 +52,35 @@
 
     public static Date createDate(final String str) throws IllegalArgumentException {
         try {
-            Date date = SDF.parse(str);
-            Calendar cal = getCal(date);
+            final Date date = SDF.parse(str);
+            final Calendar cal = getCal(date);
             return cal.getTime();
         } catch (final ParseException e) {
             throw new IllegalArgumentException("\"" + str + "\"" + " is an invalid date, the pattern is : " + DATE_PATTERN);
         }
     }
-    
-    public static Set<Calendar> toCalendarSet(Set<Date> dates) {        
-        Set<Calendar> calendars = new HashSet<Calendar>();
-        for (Date date : dates) {
+
+    public static Set<Calendar> toCalendarSet(final Set<Date> dates) {
+        final Set<Calendar> calendars = new HashSet<Calendar>();
+        for (final Date date : dates) {
             calendars.add(getCal(date));
         }
         return calendars;
     }
 
-    public static Set<Date> toDateSet(Set<Calendar> calendars) {
-        
-        Set<Date> dates = new HashSet<Date>();
-        for (Calendar calendar : calendars) {
+    public static Set<Date> toDateSet(final Set<Calendar> calendars) {
+
+        final Set<Date> dates = new HashSet<Date>();
+        for (final Calendar calendar : calendars) {
             dates.add(calendar.getTime());
         }
         return dates;
     }
 
-    public static List<Date> toDateList(List<Calendar> dates) {
-        
-        List<Date> dateList = new ArrayList<Date>();
-        for (Calendar calendar : dates) {
+    public static List<Date> toDateList(final List<Calendar> dates) {
+
+        final List<Date> dateList = new ArrayList<Date>();
+        for (final Calendar calendar : dates) {
             dateList.add(calendar.getTime());
         }
 
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java	2006-09-04 15:01:20 UTC (rev 96)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java	2006-09-04 17:16:22 UTC (rev 97)
@@ -50,8 +50,8 @@
 
     public void testSimpleForwardStartDateNoWeekend() {
         final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.BACKWARD);
-        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(true,
-                Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(
+                true, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
@@ -83,8 +83,8 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
-                Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(
+                true, Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
                 Calendar.THURSDAY).withWorkingDayFromCalendar(false, Calendar.FRIDAY).withWorkingDayFromCalendar(true,
                 Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
@@ -116,8 +116,8 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
-                Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(
+                true, Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
                 Calendar.THURSDAY).withWorkingDayFromCalendar(true, Calendar.FRIDAY).withWorkingDayFromCalendar(false,
                 Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java	2006-09-04 15:01:20 UTC (rev 96)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java	2006-09-04 17:16:22 UTC (rev 97)
@@ -50,8 +50,8 @@
 
     public void testSimpleForwardStartDateNoWeekend() {
         final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.FORWARD);
-        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(true,
-                Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(
+                true, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
@@ -83,8 +83,8 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
-                Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(
+                true, Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
                 Calendar.THURSDAY).withWorkingDayFromCalendar(false, Calendar.FRIDAY).withWorkingDayFromCalendar(true,
                 Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
@@ -116,8 +116,8 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
-                Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(
+                true, Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
                 Calendar.THURSDAY).withWorkingDayFromCalendar(true, Calendar.FRIDAY).withWorkingDayFromCalendar(false,
                 Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java	2006-09-04 15:01:20 UTC (rev 96)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java	2006-09-04 17:16:22 UTC (rev 97)
@@ -50,8 +50,8 @@
 
     public void testSimpleForwardStartDateNoWeekend() {
         final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.MODIFIED_FOLLLOWING);
-        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(true,
-                Calendar.SUNDAY);
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(true, Calendar.SATURDAY).withWorkingDayFromCalendar(
+                true, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
 
         Assert.assertEquals("Name", "bla", cal.getName());
@@ -84,8 +84,8 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
-                Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(
+                true, Calendar.TUESDAY).withWorkingDayFromCalendar(false, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
                 Calendar.THURSDAY).withWorkingDayFromCalendar(false, Calendar.FRIDAY).withWorkingDayFromCalendar(true,
                 Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
@@ -117,8 +117,8 @@
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
 
-        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(true,
-                Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
+        final WorkingWeek ww = new WorkingWeek().withWorkingDayFromCalendar(false, Calendar.MONDAY).withWorkingDayFromCalendar(
+                true, Calendar.TUESDAY).withWorkingDayFromCalendar(true, Calendar.WEDNESDAY).withWorkingDayFromCalendar(true,
                 Calendar.THURSDAY).withWorkingDayFromCalendar(true, Calendar.FRIDAY).withWorkingDayFromCalendar(false,
                 Calendar.SATURDAY).withWorkingDayFromCalendar(false, Calendar.SUNDAY);
         cal.setWorkingWeek(getWorkingWeek(ww));
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java	2006-09-04 15:01:20 UTC (rev 96)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPrec...
 
[truncated message content] | 
| 
      
      
      From: <ma...@us...> - 2006-09-04 18:54:14
       | 
| Revision: 98
          http://svn.sourceforge.net/objectlabkit/?rev=98&view=rev
Author:   marchy
Date:     2006-09-04 11:49:30 -0700 (Mon, 04 Sep 2006)
Log Message:
-----------
Made the PeriodCountCalculatorTest generic.
Modified Paths:
--------------
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/PeriodCountCalculatorTest.java
Added Paths:
-----------
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java
Removed Paths:
-------------
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java	                        (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java	2006-09-04 18:49:30 UTC (rev 98)
@@ -0,0 +1,386 @@
+package net.objectlab.kit.datecalc.common;
+
+import java.math.BigDecimal;
+
+import net.objectlab.kit.datecalc.common.PeriodCountBasis;
+import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+public abstract class AbstractPeriodCountCalculator<E> extends TestCase {
+
+    private static final String[][] ACT_365 = {
+                // name start end period dayDiff yearDiff
+                { "0D", "2006-08-08", "2006-08-08", "ACT_365", "0", "0.00" },
+                { "1D", "2006-08-08", "2006-08-09", "ACT_365", "1", "0.002740" },
+                { "1W", "2006-08-08", "2006-08-15", "ACT_365", "7", "0.019178" },
+                { "1M", "2006-08-08", "2006-09-08", "ACT_365", "31", "0.084932" },
+                { "3M", "2006-08-08", "2006-11-08", "ACT_365", "92", "0.252055" },
+                { "6M", "2006-08-08", "2007-02-08", "ACT_365", "184", "0.504110" },
+                { "9M", "2006-08-08", "2007-05-08", "ACT_365", "273", "0.747945" },
+                { "1Y", "2006-08-08", "2007-08-08", "ACT_365", "365", "1.000000" },
+                { "2Y", "2006-08-08", "2008-08-08", "ACT_365", "731", "2.002740" },
+                { "3Y", "2006-08-08", "2009-08-10", "ACT_365", "1098", "3.008219" },
+                { "4Y", "2006-08-08", "2010-08-09", "ACT_365", "1462", "4.005479" },
+                { "5Y", "2006-08-08", "2011-08-08", "ACT_365", "1826", "5.002740" },
+                { "7Y", "2006-08-08", "2013-08-08", "ACT_365", "2557", "7.005479" },
+                { "10Y", "2006-08-08", "2016-08-08", "ACT_365", "3653", "10.008219" },
+                { "15Y", "2006-08-08", "2021-08-09", "ACT_365", "5480", "15.013699" },
+                { "20Y", "2006-08-08", "2026-08-10", "ACT_365", "7307", "20.019178" },
+                { "30Y", "2006-08-08", "2036-08-08", "ACT_365", "10958", "30.021918" },
+                // leap year - funny date...
+                { "0D", "2008-02-29", "2008-02-29", "ACT_365", "0", "0.00" },
+                { "1D", "2008-02-29", "2008-03-03", "ACT_365", "3", "0.008219" },
+                { "1W", "2008-02-29", "2008-03-07", "ACT_365", "7", "0.019178" },
+                { "1M", "2008-02-29", "2008-03-31", "ACT_365", "31", "0.084932" },
+                { "3M", "2008-02-29", "2008-05-29", "ACT_365", "90", "0.246575" },
+                { "6M", "2008-02-29", "2008-08-29", "ACT_365", "182", "0.498630" },
+                { "9M", "2008-02-29", "2008-11-28", "ACT_365", "273", "0.747945" },
+                { "1Y", "2008-02-29", "2009-02-27", "ACT_365", "364", "0.997260" },
+                { "2Y", "2008-02-29", "2010-02-26", "ACT_365", "728", "1.994521" },
+                { "3Y", "2008-02-29", "2011-02-28", "ACT_365", "1095", "3.000000" },
+                { "4Y", "2008-02-29", "2012-02-29", "ACT_365", "1461", "4.002740" },
+                { "5Y", "2008-02-29", "2013-02-28", "ACT_365", "1826", "5.002740" },
+                { "7Y", "2008-02-29", "2015-02-27", "ACT_365", "2555", "7.000000" },
+                { "10Y", "2008-02-29", "2018-02-28", "ACT_365", "3652", "10.005479" },
+                { "15Y", "2008-02-29", "2023-02-28", "ACT_365", "5478", "15.008219" },
+                { "20Y", "2008-02-29", "2028-02-29", "ACT_365", "7305", "20.013699" },
+                { "30Y", "2008-02-29", "2038-02-26", "ACT_365", "10955", "30.013699" },
+                // start date end of month...
+                { "0D", "1998-12-31", "1998-12-31", "ACT_365", "0", "0.00" },
+                { "1D", "1998-12-31", "1999-01-01", "ACT_365", "1", "0.002740" },
+                { "1W", "1998-12-31", "1999-01-07", "ACT_365", "7", "0.019178" },
+                { "1M", "1998-12-31", "1999-01-29", "ACT_365", "29", "0.079452" },
+                { "3M", "1998-12-31", "1999-03-31", "ACT_365", "90", "0.246575" },
+                { "6M", "1998-12-31", "1999-06-30", "ACT_365", "181", "0.495890" },
+                { "9M", "1998-12-31", "1999-09-30", "ACT_365", "273", "0.747945" },
+                { "1Y", "1998-12-31", "1999-12-31", "ACT_365", "365", "1.000000" },
+                { "2Y", "1998-12-31", "2000-12-29", "ACT_365", "729", "1.997260" },
+                { "3Y", "1998-12-31", "2001-12-31", "ACT_365", "1096", "3.002740" },
+                { "4Y", "1998-12-31", "2002-12-31", "ACT_365", "1461", "4.002740" },
+                { "5Y", "1998-12-31", "2003-12-31", "ACT_365", "1826", "5.002740" },
+                { "7Y", "1998-12-31", "2005-12-30", "ACT_365", "2556", "7.002740" },
+                { "10Y", "1998-12-31", "2008-12-31", "ACT_365", "3653", "10.008219" },
+                { "15Y", "1998-12-31", "2013-12-31", "ACT_365", "5479", "15.010959" },
+                { "20Y", "1998-12-31", "2018-12-31", "ACT_365", "7305", "20.013699" },
+                { "30Y", "1998-12-31", "2028-12-29", "ACT_365", "10956", "30.016438" }
+        // end of set
+        };
+    private static final String[][] ACT_360 = {
+                // name start end period dayDiff yearDiff
+                { "0D", "2006-08-08", "2006-08-08", "ACT_360", "0", "0.00" },
+                { "1D", "2006-08-08", "2006-08-09", "ACT_360", "1", "0.002778" },
+                { "1W", "2006-08-08", "2006-08-15", "ACT_360", "7", "0.019444" },
+                { "1M", "2006-08-08", "2006-09-08", "ACT_360", "31", "0.086111" },
+                { "3M", "2006-08-08", "2006-11-08", "ACT_360", "92", "0.255556" },
+                { "6M", "2006-08-08", "2007-02-08", "ACT_360", "184", "0.511111" },
+                { "9M", "2006-08-08", "2007-05-08", "ACT_360", "273", "0.758333" },
+                { "1Y", "2006-08-08", "2007-08-08", "ACT_360", "365", "1.013889" },
+                { "2Y", "2006-08-08", "2008-08-08", "ACT_360", "731", "2.030556" },
+                { "3Y", "2006-08-08", "2009-08-10", "ACT_360", "1098", "3.050000" },
+                { "4Y", "2006-08-08", "2010-08-09", "ACT_360", "1462", "4.061111" },
+                { "5Y", "2006-08-08", "2011-08-08", "ACT_360", "1826", "5.072222" },
+                { "7Y", "2006-08-08", "2013-08-08", "ACT_360", "2557", "7.102778" },
+                { "10Y", "2006-08-08", "2016-08-08", "ACT_360", "3653", "10.147222" },
+                { "15Y", "2006-08-08", "2021-08-09", "ACT_360", "5480", "15.222222" },
+                { "20Y", "2006-08-08", "2026-08-10", "ACT_360", "7307", "20.297222" },
+                { "30Y", "2006-08-08", "2036-08-08", "ACT_360", "10958", "30.438889" },
+                // leap year - funny date...
+                { "0D", "2008-02-29", "2008-02-29", "ACT_360", "0", "0.00" },
+                { "1D", "2008-02-29", "2008-03-03", "ACT_360", "3", "0.008333" },
+                { "1W", "2008-02-29", "2008-03-07", "ACT_360", "7", "0.019444" },
+                { "1M", "2008-02-29", "2008-03-31", "ACT_360", "31", "0.086111" },
+                { "3M", "2008-02-29", "2008-05-29", "ACT_360", "90", "0.250000" },
+                { "6M", "2008-02-29", "2008-08-29", "ACT_360", "182", "0.505556" },
+                { "9M", "2008-02-29", "2008-11-28", "ACT_360", "273", "0.758333" },
+                { "1Y", "2008-02-29", "2009-02-27", "ACT_360", "364", "1.011111" },
+                { "2Y", "2008-02-29", "2010-02-26", "ACT_360", "728", "2.022222" },
+                { "3Y", "2008-02-29", "2011-02-28", "ACT_360", "1095", "3.041667" },
+                { "4Y", "2008-02-29", "2012-02-29", "ACT_360", "1461", "4.058333" },
+                { "5Y", "2008-02-29", "2013-02-28", "ACT_360", "1826", "5.072222" },
+                { "7Y", "2008-02-29", "2015-02-27", "ACT_360", "2555", "7.097222" },
+                { "10Y", "2008-02-29", "2018-02-28", "ACT_360", "3652", "10.144444" },
+                { "15Y", "2008-02-29", "2023-02-28", "ACT_360", "5478", "15.216667" },
+                { "20Y", "2008-02-29", "2028-02-29", "ACT_360", "7305", "20.291667" },
+                { "30Y", "2008-02-29", "2038-02-26", "ACT_360", "10955", "30.430556" },
+                // start date end of month...
+                { "0D", "1998-12-31", "1998-12-31", "ACT_360", "0", "0.00" },
+                { "1D", "1998-12-31", "1999-01-01", "ACT_360", "1", "0.002778" },
+                { "1W", "1998-12-31", "1999-01-07", "ACT_360", "7", "0.019444" },
+                { "1M", "1998-12-31", "1999-01-29", "ACT_360", "29", "0.080556" },
+                { "3M", "1998-12-31", "1999-03-31", "ACT_360", "90", "0.250000" },
+                { "6M", "1998-12-31", "1999-06-30", "ACT_360", "181", "0.502778" },
+                { "9M", "1998-12-31", "1999-09-30", "ACT_360", "273", "0.758333" },
+                { "1Y", "1998-12-31", "1999-12-31", "ACT_360", "365", "1.013889" },
+                { "2Y", "1998-12-31", "2000-12-29", "ACT_360", "729", "2.025000" },
+                { "3Y", "1998-12-31", "2001-12-31", "ACT_360", "1096", "3.044444" },
+                { "4Y", "1998-12-31", "2002-12-31", "ACT_360", "1461", "4.058333" },
+                { "5Y", "1998-12-31", "2003-12-31", "ACT_360", "1826", "5.072222" },
+                { "7Y", "1998-12-31", "2005-12-30", "ACT_360", "2556", "7.100000" },
+                { "10Y", "1998-12-31", "2008-12-31", "ACT_360", "3653", "10.147222" },
+                { "15Y", "1998-12-31", "2013-12-31", "ACT_360", "5479", "15.219444" },
+                { "20Y", "1998-12-31", "2018-12-31", "ACT_360", "7305", "20.291667" },
+                { "30Y", "1998-12-31", "2028-12-29", "ACT_360", "10956", "30.433333" }
+        // end of set
+        };
+    private static final String[][] CONV_30_360 = {
+                // name start end period dayDiff yearDiff
+                { "0D", "2006-08-08", "2006-08-08", "CONV_30_360", "0", "0.00" },
+                { "1D", "2006-08-08", "2006-08-09", "CONV_30_360", "1", "0.002778" },
+                { "1W", "2006-08-08", "2006-08-15", "CONV_30_360", "7", "0.019444" },
+                { "1M", "2006-08-08", "2006-09-08", "CONV_30_360", "30", "0.083333" },
+                { "3M", "2006-08-08", "2006-11-08", "CONV_30_360", "90", "0.250000" },
+                { "6M", "2006-08-08", "2007-02-08", "CONV_30_360", "180", "0.500000" },
+                { "9M", "2006-08-08", "2007-05-08", "CONV_30_360", "270", "0.750000" },
+                { "1Y", "2006-08-08", "2007-08-08", "CONV_30_360", "360", "1.000000" },
+                { "2Y", "2006-08-08", "2008-08-08", "CONV_30_360", "720", "2.000000" },
+                { "3Y", "2006-08-08", "2009-08-10", "CONV_30_360", "1082", "3.005556" },
+                { "4Y", "2006-08-08", "2010-08-09", "CONV_30_360", "1441", "4.002778" },
+                { "5Y", "2006-08-08", "2011-08-08", "CONV_30_360", "1800", "5.000000" },
+                { "7Y", "2006-08-08", "2013-08-08", "CONV_30_360", "2520", "7.000000" },
+                { "10Y", "2006-08-08", "2016-08-08", "CONV_30_360", "3600", "10.000000" },
+                { "15Y", "2006-08-08", "2021-08-09", "CONV_30_360", "5401", "15.002778" },
+                { "20Y", "2006-08-08", "2026-08-10", "CONV_30_360", "7202", "20.005556" },
+                { "30Y", "2006-08-08", "2036-08-08", "CONV_30_360", "10800", "30.000000" },
+                // leap year - funny date...
+                { "0D", "2008-02-29", "2008-02-29", "CONV_30_360", "0", "0.00" },
+                { "1D", "2008-02-29", "2008-03-03", "CONV_30_360", "4", "0.011111" },
+                { "1W", "2008-02-29", "2008-03-07", "CONV_30_360", "8", "0.022222" },
+                { "1M", "2008-02-29", "2008-03-31", "CONV_30_360", "32", "0.088889" },
+                { "3M", "2008-02-29", "2008-05-29", "CONV_30_360", "90", "0.250000" },
+                { "6M", "2008-02-29", "2008-08-29", "CONV_30_360", "180", "0.500000" },
+                { "9M", "2008-02-29", "2008-11-28", "CONV_30_360", "269", "0.747222" },
+                { "1Y", "2008-02-29", "2009-02-27", "CONV_30_360", "358", "0.994444" },
+                { "2Y", "2008-02-29", "2010-02-26", "CONV_30_360", "717", "1.991667" },
+                { "3Y", "2008-02-29", "2011-02-28", "CONV_30_360", "1079", "2.997222" },
+                { "4Y", "2008-02-29", "2012-02-29", "CONV_30_360", "1440", "4.000000" },
+                { "5Y", "2008-02-29", "2013-02-28", "CONV_30_360", "1799", "4.997222" },
+                { "7Y", "2008-02-29", "2015-02-27", "CONV_30_360", "2518", "6.994444" },
+                { "10Y", "2008-02-29", "2018-02-28", "CONV_30_360", "3599", "9.997222" },
+                { "15Y", "2008-02-29", "2023-02-28", "CONV_30_360", "5399", "14.997222" },
+                { "20Y", "2008-02-29", "2028-02-29", "CONV_30_360", "7200", "20.000000" },
+                { "30Y", "2008-02-29", "2038-02-26", "CONV_30_360", "10797", "29.991667" },
+                // start date end of month...
+                { "0D", "1998-12-31", "1998-12-31", "CONV_30_360", "0", "0.000000" },
+                { "1D", "1998-12-31", "1999-01-01", "CONV_30_360", "1", "0.002778" },
+                { "1W", "1998-12-31", "1999-01-07", "CONV_30_360", "7", "0.019444" },
+                { "1M", "1998-12-31", "1999-01-29", "CONV_30_360", "29", "0.080556" },
+                { "3M", "1998-12-31", "1999-03-31", "CONV_30_360", "90", "0.250000" },
+                { "6M", "1998-12-31", "1999-06-30", "CONV_30_360", "180", "0.500000" },
+                { "9M", "1998-12-31", "1999-09-30", "CONV_30_360", "270", "0.750000" },
+                { "1Y", "1998-12-31", "1999-12-31", "CONV_30_360", "360", "1.000000" },
+                { "2Y", "1998-12-31", "2000-12-29", "CONV_30_360", "719", "1.997222" },
+                { "3Y", "1998-12-31", "2001-12-31", "CONV_30_360", "1080", "3.000000" },
+                { "4Y", "1998-12-31", "2002-12-31", "CONV_30_360", "1440", "4.000000" },
+                { "5Y", "1998-12-31", "2003-12-31", "CONV_30_360", "1800", "5.000000" },
+                { "7Y", "1998-12-31", "2005-12-30", "CONV_30_360", "2520", "7.000000" },
+                { "10Y", "1998-12-31", "2008-12-31", "CONV_30_360", "3600", "10.000000" },
+                { "15Y", "1998-12-31", "2013-12-31", "CONV_30_360", "5400", "15.000000" },
+                { "20Y", "1998-12-31", "2018-12-31", "CONV_30_360", "7200", "20.000000" },
+                { "30Y", "1998-12-31", "2028-12-29", "CONV_30_360", "10799", "29.997222" }
+        // end of set
+        };
+    private static final String[][] CONV_360E_ISDA = {
+                // name start end period dayDiff yearDiff
+                { "0D", "2006-08-08", "2006-08-08", "CONV_360E_ISDA", "0", "0.00" },
+                { "1D", "2006-08-08", "2006-08-09", "CONV_360E_ISDA", "1", "0.002778" },
+                { "1W", "2006-08-08", "2006-08-15", "CONV_360E_ISDA", "7", "0.019444" },
+                { "1M", "2006-08-08", "2006-09-08", "CONV_360E_ISDA", "30", "0.083333" },
+                { "3M", "2006-08-08", "2006-11-08", "CONV_360E_ISDA", "90", "0.250000" },
+                { "6M", "2006-08-08", "2007-02-08", "CONV_360E_ISDA", "180", "0.500000" },
+                { "9M", "2006-08-08", "2007-05-08", "CONV_360E_ISDA", "270", "0.750000" },
+                { "1Y", "2006-08-08", "2007-08-08", "CONV_360E_ISDA", "360", "1.000000" },
+                { "2Y", "2006-08-08", "2008-08-08", "CONV_360E_ISDA", "720", "2.000000" },
+                { "3Y", "2006-08-08", "2009-08-10", "CONV_360E_ISDA", "1082", "3.005556" },
+                { "4Y", "2006-08-08", "2010-08-09", "CONV_360E_ISDA", "1441", "4.002778" },
+                { "5Y", "2006-08-08", "2011-08-08", "CONV_360E_ISDA", "1800", "5.000000" },
+                { "7Y", "2006-08-08", "2013-08-08", "CONV_360E_ISDA", "2520", "7.000000" },
+                { "10Y", "2006-08-08", "2016-08-08", "CONV_360E_ISDA", "3600", "10.000000" },
+                { "15Y", "2006-08-08", "2021-08-09", "CONV_360E_ISDA", "5401", "15.002778" },
+                { "20Y", "2006-08-08", "2026-08-10", "CONV_360E_ISDA", "7202", "20.005556" },
+                { "30Y", "2006-08-08", "2036-08-08", "CONV_360E_ISDA", "10800", "30.000000" },
+                // leap year - funny date...
+                { "0D", "2008-02-29", "2008-02-29", "CONV_360E_ISDA", "0", "0.00" },
+                { "1D", "2008-02-29", "2008-03-03", "CONV_360E_ISDA", "4", "0.011111" },
+                { "1W", "2008-02-29", "2008-03-07", "CONV_360E_ISDA", "8", "0.022222" },
+                { "1M", "2008-02-29", "2008-03-31", "CONV_360E_ISDA", "31", "0.086111" },
+                { "3M", "2008-02-29", "2008-05-29", "CONV_360E_ISDA", "90", "0.250000" },
+                { "6M", "2008-02-29", "2008-08-29", "CONV_360E_ISDA", "180", "0.500000" },
+                { "9M", "2008-02-29", "2008-11-28", "CONV_360E_ISDA", "269", "0.747222" },
+                { "1Y", "2008-02-29", "2009-02-27", "CONV_360E_ISDA", "358", "0.994444" },
+                { "2Y", "2008-02-29", "2010-02-26", "CONV_360E_ISDA", "717", "1.991667" },
+                { "3Y", "2008-02-29", "2011-02-28", "CONV_360E_ISDA", "1079", "2.997222" },
+                { "4Y", "2008-02-29", "2012-02-29", "CONV_360E_ISDA", "1440", "4.000000" },
+                { "5Y", "2008-02-29", "2013-02-28", "CONV_360E_ISDA", "1799", "4.997222" },
+                { "7Y", "2008-02-29", "2015-02-27", "CONV_360E_ISDA", "2518", "6.994444" },
+                { "10Y", "2008-02-29", "2018-02-28", "CONV_360E_ISDA", "3599", "9.997222" },
+                { "15Y", "2008-02-29", "2023-02-28", "CONV_360E_ISDA", "5399", "14.997222" },
+                { "20Y", "2008-02-29", "2028-02-29", "CONV_360E_ISDA", "7200", "20.000000" },
+                { "30Y", "2008-02-29", "2038-02-26", "CONV_360E_ISDA", "10797", "29.991667" },
+                // start date end of month...
+                { "0D", "1998-12-31", "1998-12-31", "CONV_360E_ISDA", "0", "0.00" },
+                { "1D", "1998-12-31", "1999-01-01", "CONV_360E_ISDA", "1", "0.002778" },
+                { "1W", "1998-12-31", "1999-01-07", "CONV_360E_ISDA", "7", "0.019444" },
+                { "1M", "1998-12-31", "1999-01-29", "CONV_360E_ISDA", "29", "0.080556" },
+                { "3M", "1998-12-31", "1999-03-31", "CONV_360E_ISDA", "90", "0.250000" },
+                { "6M", "1998-12-31", "1999-06-30", "CONV_360E_ISDA", "180", "0.500000" },
+                { "9M", "1998-12-31", "1999-09-30", "CONV_360E_ISDA", "270", "0.750000" },
+                { "1Y", "1998-12-31", "1999-12-31", "CONV_360E_ISDA", "360", "1.000000" },
+                { "2Y", "1998-12-31", "2000-12-29", "CONV_360E_ISDA", "719", "1.997222" },
+                { "3Y", "1998-12-31", "2001-12-31", "CONV_360E_ISDA", "1080", "3.000000" },
+                { "4Y", "1998-12-31", "2002-12-31", "CONV_360E_ISDA", "1440", "4.000000" },
+                { "5Y", "1998-12-31", "2003-12-31", "CONV_360E_ISDA", "1800", "5.000000" },
+                { "7Y", "1998-12-31", "2005-12-30", "CONV_360E_ISDA", "2520", "7.000000" },
+                { "10Y", "1998-12-31", "2008-12-31", "CONV_360E_ISDA", "3600", "10.000000" },
+                { "15Y", "1998-12-31", "2013-12-31", "CONV_360E_ISDA", "5400", "15.000000" },
+                { "20Y", "1998-12-31", "2018-12-31", "CONV_360E_ISDA", "7200", "20.000000" },
+                { "30Y", "1998-12-31", "2028-12-29", "CONV_360E_ISDA", "10799", "29.997222" }
+        // end of set
+        };
+    private static final String[][] CONV_360E_ISMA = {
+                // name start end period dayDiff yearDiff
+                { "0D", "2006-08-08", "2006-08-08", "CONV_360E_ISMA", "0", "0.00" },
+                { "1D", "2006-08-08", "2006-08-09", "CONV_360E_ISMA", "1", "0.002778" },
+                { "1W", "2006-08-08", "2006-08-15", "CONV_360E_ISMA", "7", "0.019444" },
+                { "1M", "2006-08-08", "2006-09-08", "CONV_360E_ISMA", "30", "0.083333" },
+                { "3M", "2006-08-08", "2006-11-08", "CONV_360E_ISMA", "90", "0.250000" },
+                { "6M", "2006-08-08", "2007-02-08", "CONV_360E_ISMA", "180", "0.500000" },
+                { "9M", "2006-08-08", "2007-05-08", "CONV_360E_ISMA", "270", "0.750000" },
+                { "1Y", "2006-08-08", "2007-08-08", "CONV_360E_ISMA", "360", "1.000000" },
+                { "2Y", "2006-08-08", "2008-08-08", "CONV_360E_ISMA", "720", "2.000000" },
+                { "3Y", "2006-08-08", "2009-08-10", "CONV_360E_ISMA", "1082", "3.005556" },
+                { "4Y", "2006-08-08", "2010-08-09", "CONV_360E_ISMA", "1441", "4.002778" },
+                { "5Y", "2006-08-08", "2011-08-08", "CONV_360E_ISMA", "1800", "5.000000" },
+                { "7Y", "2006-08-08", "2013-08-08", "CONV_360E_ISMA", "2520", "7.000000" },
+                { "10Y", "2006-08-08", "2016-08-08", "CONV_360E_ISMA", "3600", "10.000000" },
+                { "15Y", "2006-08-08", "2021-08-09", "CONV_360E_ISMA", "5401", "15.002778" },
+                { "20Y", "2006-08-08", "2026-08-10", "CONV_360E_ISMA", "7202", "20.005556" },
+                { "30Y", "2006-08-08", "2036-08-08", "CONV_360E_ISMA", "10800", "30.000000" },
+                // leap year - funny date...
+                { "0D", "2008-02-29", "2008-02-29", "CONV_360E_ISMA", "0", "0.00" },
+                { "1D", "2008-02-29", "2008-03-03", "CONV_360E_ISMA", "4", "0.011111" },
+                { "1W", "2008-02-29", "2008-03-07", "CONV_360E_ISMA", "8", "0.022222" },
+                { "1M", "2008-02-29", "2008-03-31", "CONV_360E_ISMA", "31", "0.086111" },
+                { "3M", "2008-02-29", "2008-05-29", "CONV_360E_ISMA", "90", "0.250000" },
+                { "6M", "2008-02-29", "2008-08-29", "CONV_360E_ISMA", "180", "0.500000" },
+                { "9M", "2008-02-29", "2008-11-28", "CONV_360E_ISMA", "269", "0.747222" },
+                { "1Y", "2008-02-29", "2009-02-27", "CONV_360E_ISMA", "358", "0.994444" },
+                { "2Y", "2008-02-29", "2010-02-26", "CONV_360E_ISMA", "717", "1.991667" },
+                { "3Y", "2008-02-29", "2011-02-28", "CONV_360E_ISMA", "1079", "2.997222" },
+                { "4Y", "2008-02-29", "2012-02-29", "CONV_360E_ISMA", "1440", "4.000000" },
+                { "5Y", "2008-02-29", "2013-02-28", "CONV_360E_ISMA", "1799", "4.997222" },
+                { "7Y", "2008-02-29", "2015-02-27", "CONV_360E_ISMA", "2518", "6.994444" },
+                { "10Y", "2008-02-29", "2018-02-28", "CONV_360E_ISMA", "3599", "9.997222" },
+                { "15Y", "2008-02-29", "2023-02-28", "CONV_360E_ISMA", "5399", "14.997222" },
+                { "20Y", "2008-02-29", "2028-02-29", "CONV_360E_ISMA", "7200", "20.000000" },
+                { "30Y", "2008-02-29", "2038-02-26", "CONV_360E_ISMA", "10797", "29.991667" },
+                // start date end of month...
+                { "0D", "1998-12-31", "1998-12-31", "CONV_360E_ISMA", "0", "0.00" },
+                { "1D", "1998-12-31", "1999-01-01", "CONV_360E_ISMA", "1", "0.002778" },
+                { "1W", "1998-12-31", "1999-01-07", "CONV_360E_ISMA", "7", "0.019444" },
+                { "1M", "1998-12-31", "1999-01-29", "CONV_360E_ISMA", "29", "0.080556" },
+                { "3M", "1998-12-31", "1999-03-31", "CONV_360E_ISMA", "90", "0.250000" },
+                { "6M", "1998-12-31", "1999-06-30", "CONV_360E_ISMA", "180", "0.500000" },
+                { "9M", "1998-12-31", "1999-09-30", "CONV_360E_ISMA", "270", "0.750000" },
+                { "1Y", "1998-12-31", "1999-12-31", "CONV_360E_ISMA", "360", "1.000000" },
+                { "2Y", "1998-12-31", "2000-12-29", "CONV_360E_ISMA", "719", "1.997222" },
+                { "3Y", "1998-12-31", "2001-12-31", "CONV_360E_ISMA", "1080", "3.000000" },
+                { "4Y", "1998-12-31", "2002-12-31", "CONV_360E_ISMA", "1440", "4.000000" },
+                { "5Y", "1998-12-31", "2003-12-31", "CONV_360E_ISMA", "1800", "5.000000" },
+                { "7Y", "1998-12-31", "2005-12-30", "CONV_360E_ISMA", "2520", "7.000000" },
+                { "10Y", "1998-12-31", "2008-12-31", "CONV_360E_ISMA", "3600", "10.000000" },
+                { "15Y", "1998-12-31", "2013-12-31", "CONV_360E_ISMA", "5400", "15.000000" },
+                { "20Y", "1998-12-31", "2018-12-31", "CONV_360E_ISMA", "7200", "20.000000" },
+                { "30Y", "1998-12-31", "2028-12-29", "CONV_360E_ISMA", "10799", "29.997222" }
+        // end of set
+        };
+
+    private PeriodCountCalculator<E> cal;
+    
+    public void setUp() {
+        cal = getPeriodCountCalculator();    
+    }
+    
+    public abstract PeriodCountCalculator<E> getPeriodCountCalculator();
+
+    public abstract E parseDate(String string);
+    
+    public abstract E getDate();
+    
+    public void testConv30EvIsma() {
+        Assert.assertNotNull(cal);
+    
+        for (final String[] test : CONV_360E_ISMA) {
+            runtest(cal, test);
+        }
+    }
+
+    public void testConv30Ev360() {
+        Assert.assertNotNull(cal);
+    
+        for (final String[] test : CONV_360E_ISDA) {
+            runtest(cal, test);
+        }
+    }
+
+    public void testConv30v360() {
+        Assert.assertNotNull(cal);
+    
+        for (final String[] test : CONV_30_360) {
+            runtest(cal, test);
+        }
+    }
+
+    public void testAct365() {
+        Assert.assertNotNull(cal);
+    
+        for (final String[] test : ACT_365) {
+            runtest(cal, test);
+        }
+    }
+
+    public void testAct360() {
+        Assert.assertNotNull(cal);
+    
+        for (final String[] test : ACT_360) {
+            runtest(cal, test);
+        }
+    }
+
+    public void testUnsupportedType() {
+        Assert.assertNotNull(cal);
+    
+        final PeriodCountBasis pcount = PeriodCountBasis.ACT_UST;
+        final E start = getDate();
+        final E end = getDate();
+        
+        try {
+            cal.yearDiff(start, end, pcount);
+            Assert.fail("Should have refused the algo...");
+        } catch (final UnsupportedOperationException e) {
+            // ok
+        }
+    
+        try {
+            cal.monthDiff(start, end, pcount);
+            Assert.fail("Should have refused the algo...");
+        } catch (final UnsupportedOperationException e) {
+            // ok
+        }
+    }
+
+    private void runtest(final PeriodCountCalculator<E> cal, final String[] test) {
+        final String name = test[0];
+        final E start = parseDate(test[1]);
+        final E end = parseDate(test[2]);
+        final PeriodCountBasis pcount = PeriodCountBasis.valueOf(test[3]);
+        final int dayDiff = Integer.parseInt(test[4]);
+        Assert.assertEquals(name + " Basis:" + pcount + " start:" + start + " dayDiff", dayDiff, cal.dayDiff(start, end, pcount));
+    
+        final BigDecimal yearDiff = new BigDecimal(cal.yearDiff(start, end, pcount)).setScale(6, BigDecimal.ROUND_HALF_UP);
+        Assert.assertTrue(name + " Basis:" + pcount + " yearDiff expected:" + test[5] + " got:" + yearDiff, (new BigDecimal(
+                test[5])).compareTo(yearDiff) == 0);
+    }
+
+}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java	2006-09-04 17:16:22 UTC (rev 97)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java	2006-09-04 18:49:30 UTC (rev 98)
@@ -82,12 +82,8 @@
     }
 
     private int dayDiff(final Calendar start, final Calendar end) {
-        // System.out.println("start:" + start.getTime() + " end:" +
-        // end.getTime());
         final long diff = Math.abs(start.getTimeInMillis() - end.getTimeInMillis());
-        // System.out.println("ms diff:" + diff);
         final double dayDiff = ((double) diff) / MILLIS_IN_DAY;
-        // System.out.println("day diff:" + dayDiff);
         return (int) (dayDiff);
     }
 
Copied: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java (from rev 97, trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java)
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java	2006-09-04 18:49:30 UTC (rev 98)
@@ -0,0 +1,41 @@
+/*
+ * 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.obje...
 
[truncated message content] | 
| 
      
      
      From: <ma...@us...> - 2006-09-04 20:36:51
       | 
| Revision: 99
          http://svn.sourceforge.net/objectlabkit/?rev=99&view=rev
Author:   marchy
Date:     2006-09-04 13:30:25 -0700 (Mon, 04 Sep 2006)
Log Message:
-----------
Keyword expansion, and removed an empty if block
Modified Paths:
--------------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandlerYearMonthDayWrapper.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/YearMonthDayModifiedFollowingHandler.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateBackwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateDateCalculatorCombinationTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateForwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayBackwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculatorCombinationTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayForwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedPrecedingDateCalculatorTest.java
Property Changed:
----------------
    trunk/datecalc-common/.classpath
    trunk/datecalc-common/.project
    trunk/datecalc-common/.settings/org.eclipse.jdt.ui.prefs
    trunk/datecalc-common/LICENSE.txt
    trunk/datecalc-common/maven.xml
    trunk/datecalc-common/pom.xml
    trunk/datecalc-common/project.xml
    trunk/datecalc-common/qalab.xml
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.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/Utils.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorCombinationTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateTestCase.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
    trunk/datecalc-common/xdocs/navigation.xml
    trunk/datecalc-jdk/.classpath
    trunk/datecalc-jdk/.project
    trunk/datecalc-jdk/.settings/org.eclipse.jdt.ui.prefs
    trunk/datecalc-jdk/LICENSE.txt
    trunk/datecalc-jdk/maven.xml
    trunk/datecalc-jdk/pom.xml
    trunk/datecalc-jdk/project.properties
    trunk/datecalc-jdk/project.xml
    trunk/datecalc-jdk/qalab.xml
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ExcelDateUtil.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/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/JdkDatePeriodCountCalculator.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
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-jdk/xdocs/navigation.xml
    trunk/datecalc-joda/.classpath
    trunk/datecalc-joda/.project
    trunk/datecalc-joda/LICENSE.txt
    trunk/datecalc-joda/maven.xml
    trunk/datecalc-joda/pom.xml
    trunk/datecalc-joda/project.xml
    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/DefaultLocalDatePeriodCountCalculator.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/DefaultYearMonthDayPeriodCountCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ExcelDateUtil.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandlerYearMonthDayWrapper.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/YearMonthDayBackwardHandler.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayForwardHandler.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingHandler.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedPreceedingHandler.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/package.html
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/AbstractDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateBackwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateDateCalculatorCombinationTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateForwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayBackwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculatorCombinationTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayForwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedPrecedingDateCalculatorTest.java
    trunk/datecalc-joda/xdocs/navigation.xml
Property changes on: trunk/datecalc-common/.classpath
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/.project
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/.settings/org.eclipse.jdt.ui.prefs
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/LICENSE.txt
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/maven.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/pom.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/project.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/qalab.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
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-04 18:49:30 UTC (rev 98)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java	2006-09-04 20:30:25 UTC (rev 99)
@@ -1,5 +1,5 @@
 /*
- * $Id: DefaultDateCalculatorFactory.java 64 2006-08-26 10:41:51Z marchy $
+ * $Id$
  * 
  * Copyright 2006 the original author or authors.
  *
Property changes on: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorCombinationTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-common/xdocs/navigation.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/.classpath
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/.project
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/.settings/org.eclipse.jdt.ui.prefs
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/LICENSE.txt
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/maven.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/pom.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/project.properties
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/project.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/qalab.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java	2006-09-04 18:49:30 UTC (rev 98)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java	2006-09-04 20:30:25 UTC (rev 99)
@@ -27,8 +27,8 @@
  * TODO javadoc
  * 
  * @author Marcin Jekot
- * @author $LastChangedBy: marchy $
- * @version $Revision: 69 $ $Date: 2006-08-27 11:47:25 +0200 (Sun, 27 Aug 2006) $
+ * @author $LastChangedBy$
+ * @version $Revision$ $Date$
  * 
  */
 public class CalendarForwardHandler implements HolidayHandler<Calendar> {
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ExcelDateUtil.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	2006-09-04 18:49:30 UTC (rev 98)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	2006-09-04 20:30:25 UTC (rev 99)
@@ -1,5 +1,5 @@
 /*
- * $Id: JdkDateBaseDateCalculator.java 82 2006-09-03 09:56:09Z marchy $
+ * $Id$
  * 
  * Copyright 2006 the original author or authors.
  *
@@ -37,7 +37,7 @@
  * 
  * @author Marcin Jekot
  * @author $LastModifiedBy$
- * @version $Revision: 82 $ $Date: 2006-09-03 11:56:09 +0200 (Sun, 03 Sep 2006) $
+ * @version $Revision$ $Date$
  */
 public class JdkCalendarBaseDateCalculator extends AbstractDateCalculator<Calendar> implements JdkCalendarDateCalculator {
 
@@ -185,9 +185,7 @@
         final int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
         if (dayOfWeek < Calendar.WEDNESDAY) {
             cal.add(Calendar.DAY_OF_MONTH, Calendar.WEDNESDAY - dayOfWeek);
-        } else if (dayOfWeek == Calendar.WEDNESDAY) {
-            // do nothing
-        } else {
+        } else if (dayOfWeek > Calendar.WEDNESDAY){
             cal.add(Calendar.DAY_OF_MONTH, (Calendar.WEDNESDAY + 7) - dayOfWeek);
         }
 
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculatorFactory.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDatePeriodCountCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedFollowingHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedPreceedingHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-jdk/xdocs/navigation.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/.classpath
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/.project
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/LICENSE.txt
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/maven.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/pom.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/project.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/qalab.xml
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDateCalculatorFactory.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDatePeriodCountCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayPeriodCountCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ExcelDateUtil.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandlerYearMonthDayWrapper.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandlerYearMonthDayWrapper.java	2006-09-04 18:49:30 UTC (rev 98)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandlerYearMonthDayWrapper.java	2006-09-04 20:30:25 UTC (rev 99)
@@ -1,5 +1,5 @@
 /*
- * $Id: org.eclipse.jdt.ui.prefs 59 2006-08-26 09:06:39Z marchy $
+ * $Id$
  * 
  * Copyright 2006 the original author or authors.
  *
@@ -26,8 +26,8 @@
 /**
  * 
  * @author xhensevb
- * @author $LastChangedBy: marchy $
- * @version $Revision: 59 $ $Date: 2006-08-26 11:06:39 +0200 (Sat, 26 Aug 2006) $
+ * @author $LastChangedBy$
+ * @version $Revision$ $Date$
  * 
  */
 public class HolidayHandlerYearMonthDayWrapper implements HolidayHandler<LocalDate> {
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandlerYearMonthDayWrapper.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateBackwardHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateForwardHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedFollowingHandler.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedFollowingHandler.java	2006-09-04 18:49:30 UTC (rev 98)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedFollowingHandler.java	2006-09-04 20:30:25 UTC (rev 99)
@@ -1,5 +1,5 @@
 /*
- * $Id: LocalDateModifiedFollowingHandler.java 68 2006-08-27 09:46:33Z marchy $
+ * $Id$
  * 
  * Copyright 2006 the original author or authors.
  *
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedFollowingHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedPreceedingHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayBackwardHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Property changes on: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayForwardHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedBy LastChangedDate LastChangedRevision
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingHandler.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingHandler.java	2006-09-04 18:49:30 UTC (rev 98)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingHandler.java...
 
[truncated message content] | 
| 
      
      
      From: <ma...@us...> - 2006-09-04 20:57:45
       | 
| Revision: 100
          http://svn.sourceforge.net/objectlabkit/?rev=100&view=rev
Author:   marchy
Date:     2006-09-04 13:56:59 -0700 (Mon, 04 Sep 2006)
Log Message:
-----------
Generic IMMDateTest.
Modified Paths:
--------------
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/IMMDateTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/IMMDateTest.java
Added Paths:
-----------
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java	                        (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java	2006-09-04 20:56:59 UTC (rev 100)
@@ -0,0 +1,261 @@
+package net.objectlab.kit.datecalc.common;
+
+import java.util.List;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+public abstract class AbstractIMMDateTest<E> extends TestCase {
+
+    private DateCalculator<E> cal;
+    
+    public void setUp() {
+        cal = getDateCalculator("bla");
+    }
+    
+    protected abstract DateCalculator<E> getDateCalculator(String name);
+    
+    protected abstract E parseDate(String string);
+
+    private void checkImm(final DateCalculator<E> cal, final E date, final boolean expected) {
+        assertEquals("check " + date, expected, cal.isIMMDate(date));
+    }
+    
+    public void testSanityCheck() {
+        Assert.assertEquals("Name", "bla", cal.getName());
+        Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
+    }
+    
+    public void testNextIMM() {
+        final E startDate = parseDate("2006-08-01");
+        cal.setStartDate(startDate);
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+    
+        cal.setStartDate(parseDate("2006-01-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-02-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-03-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
+    
+        cal.setStartDate(parseDate("2006-04-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-05-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-06-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
+    
+        cal.setStartDate(parseDate("2006-07-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-08-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-09-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+    
+        cal.setStartDate(parseDate("2006-10-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-11-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-12-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
+    
+        cal.setStartDate(parseDate("2006-03-14"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-03-15"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-03-16"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
+    
+        cal.setStartDate(parseDate("2006-06-20"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-06-21"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-06-22"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+    
+        cal.setStartDate(parseDate("2006-09-19"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-09-20"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-09-21"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
+    
+        cal.setStartDate(parseDate("2006-12-19"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-12-20"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2007-03-21"), cal.getNextIMMDate());
+        cal.setStartDate(parseDate("2006-12-21"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2007-03-21"), cal.getNextIMMDate());
+    }
+
+    
+    public void testNextIMMWithPeriod() {
+        final E startDate = parseDate("2006-08-01");
+        cal.setStartDate(startDate);
+    
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+    
+        cal.setStartDate(parseDate("2006-01-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate(IMMPeriod.QUARTERLY));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal
+                .getNextIMMDate(IMMPeriod.BI_ANNUALY_JUN_DEC));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal
+                .getNextIMMDate(IMMPeriod.BI_ANNUALY_MAR_SEP));
+    
+        cal.setStartDate(parseDate("2006-03-20"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate(IMMPeriod.QUARTERLY));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal
+                .getNextIMMDate(IMMPeriod.BI_ANNUALY_JUN_DEC));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal
+                .getNextIMMDate(IMMPeriod.BI_ANNUALY_MAR_SEP));
+    }
+
+    public void testIfIMMDate() {
+        final E startDate = parseDate("2006-08-01");
+        cal.setStartDate(startDate);
+    
+        checkImm(cal, parseDate("2006-08-01"), false);
+    
+        checkImm(cal, parseDate("2006-03-14"), false);
+        checkImm(cal, parseDate("2006-03-15"), true);
+        checkImm(cal, parseDate("2006-03-16"), false);
+    
+        checkImm(cal, parseDate("2006-06-20"), false);
+        checkImm(cal, parseDate("2006-06-21"), true);
+        checkImm(cal, parseDate("2006-06-22"), false);
+    
+        checkImm(cal, parseDate("2006-09-19"), false);
+        checkImm(cal, parseDate("2006-09-20"), true);
+        checkImm(cal, parseDate("2006-09-21"), false);
+    
+        checkImm(cal, parseDate("2006-12-19"), false);
+        checkImm(cal, parseDate("2006-12-20"), true);
+        checkImm(cal, parseDate("2006-12-21"), false);
+    }
+
+    public void testMoveByIMMTenor() {
+        final E startDate = parseDate("2006-04-01");
+        cal.setStartDate(startDate);
+    
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.moveByTenor(StandardTenor.IMM)
+                .getCurrentBusinessDate());
+    }
+
+    public void testMoveByNullTenor() {
+        final E startDate = parseDate("2006-04-01");
+        cal.setStartDate(startDate);
+    
+        try {
+            cal.moveByTenor(null);
+            Assert.fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException e) {
+            // ok
+        }
+    }
+
+    public void testPreviousIMM() {
+        final E startDate = parseDate("2006-08-01");
+        cal.setStartDate(startDate);
+    
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
+    
+        cal.setStartDate(parseDate("2006-01-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-02-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-03-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
+    
+        cal.setStartDate(parseDate("2006-04-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-05-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-06-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
+    
+        cal.setStartDate(parseDate("2006-07-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-08-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-09-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
+    
+        cal.setStartDate(parseDate("2006-10-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-11-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-12-09"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
+    
+        // close to dates
+    
+        cal.setStartDate(parseDate("2006-03-14"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-03-15"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-03-16"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
+    
+        cal.setStartDate(parseDate("2006-06-20"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-06-21"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-06-22"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
+    
+        cal.setStartDate(parseDate("2006-09-19"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-09-20"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-09-21"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
+    
+        cal.setStartDate(parseDate("2006-12-19"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-12-20"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
+        cal.setStartDate(parseDate("2006-12-21"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getPreviousIMMDate());
+    }
+
+    public void testIMMLists() {
+        final E startDate = parseDate("2005-12-01");
+        final E endDate = parseDate("2007-03-17");
+        final List<E> imms = cal.getIMMDates(startDate, endDate);
+        Assert.assertNotNull(imms);
+        Assert.assertTrue("Not empty", !imms.isEmpty());
+        Assert.assertEquals("Expected number of imms dates", 5, imms.size());
+        Assert.assertEquals("date 1", parseDate("2005-12-21"), imms.get(0));
+        Assert.assertEquals("date 2", parseDate("2006-03-15"), imms.get(1));
+        Assert.assertEquals("date 3", parseDate("2006-06-21"), imms.get(2));
+        Assert.assertEquals("date 4", parseDate("2006-09-20"), imms.get(3));
+        Assert.assertEquals("date 5", parseDate("2006-12-20"), imms.get(4));
+    }
+
+    public void testEmptyIMMLists() {
+        final E startDate = parseDate("2006-03-16");
+        final E endDate = parseDate("2006-06-20");
+        final List<E> imms = cal.getIMMDates(startDate, endDate);
+        Assert.assertNotNull(imms);
+        Assert.assertTrue("empty", imms.isEmpty());
+    }
+
+    public void testEndOnIMMDateIMMLists() {
+        final E startDate = parseDate("2006-03-16");
+        final E endDate = parseDate("2006-06-21");
+        final List<E> imms = cal.getIMMDates(startDate, endDate);
+        Assert.assertNotNull(imms);
+        Assert.assertTrue("empty", !imms.isEmpty());
+        Assert.assertEquals("Expected number of imms dates", 1, imms.size());
+        Assert.assertEquals("date 1", parseDate("2006-06-21"), imms.get(0));
+    }
+
+    public void testStartOnIMMDateIMMLists() {
+        final E startDate = parseDate("2006-03-15");
+        final E endDate = parseDate("2006-06-20");
+        final List<E> imms = cal.getIMMDates(startDate, endDate);
+        Assert.assertNotNull(imms);
+        Assert.assertTrue("empty", imms.isEmpty());
+    }
+    
+}
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/IMMDateTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/IMMDateTest.java	2006-09-04 20:30:25 UTC (rev 99)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/IMMDateTest.java	2006-09-04 20:56:59 UTC (rev 100)
@@ -1,211 +1,22 @@
 package net.objectlab.kit.datecalc.jdk;
 
 import java.util.Date;
-import java.util.List;
 
-import junit.framework.Assert;
+import net.objectlab.kit.datecalc.common.AbstractIMMDateTest;
 import net.objectlab.kit.datecalc.common.DateCalculator;
 import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+import net.objectlab.kit.datecalc.common.Utils;
 
-public class IMMDateTest extends AbstractDateCalculatorTest {
-    public IMMDateTest() {
-    }
+public class IMMDateTest extends AbstractIMMDateTest<Date> {
 
-    public void testNextIMM() {
-        final JdkDateCalculator cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
-                HolidayHandlerType.FORWARD);
-        Assert.assertEquals("Name", "bla", cal.getName());
-        Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
-
-        final Date startDate = createDate("2006-08-01");
-        cal.setStartDate(startDate);
-
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getNextIMMDate());
-
-        cal.setStartDate(createDate("2006-01-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-02-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-03-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getNextIMMDate());
-
-        cal.setStartDate(createDate("2006-04-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-05-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-06-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getNextIMMDate());
-
-        cal.setStartDate(createDate("2006-07-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-08-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-09-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getNextIMMDate());
-
-        cal.setStartDate(createDate("2006-10-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-12-20"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-11-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-12-20"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-12-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-12-20"), cal.getNextIMMDate());
-
-        cal.setStartDate(createDate("2006-03-14"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-03-15"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-03-16"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getNextIMMDate());
-
-        cal.setStartDate(createDate("2006-06-20"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-06-21"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-06-22"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getNextIMMDate());
-
-        cal.setStartDate(createDate("2006-09-19"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-09-20"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-12-20"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-09-21"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-12-20"), cal.getNextIMMDate());
-
-        cal.setStartDate(createDate("2006-12-19"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-12-20"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-12-20"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2007-03-21"), cal.getNextIMMDate());
-        cal.setStartDate(createDate("2006-12-21"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2007-03-21"), cal.getNextIMMDate());
+    @Override
+    protected DateCalculator<Date> getDateCalculator(String name) {
+        return DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator(name, HolidayHandlerType.FORWARD);
     }
 
-    public void testPreviousIMM() {
-        final DateCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
-                HolidayHandlerType.FORWARD);
-        Assert.assertEquals("Name", "bla", cal.getName());
-        Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
-
-        final Date startDate = createDate("2006-08-01");
-        cal.setStartDate(startDate);
-
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getPreviousIMMDate());
-
-        cal.setStartDate(createDate("2006-01-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2005-12-21"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-02-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2005-12-21"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-03-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2005-12-21"), cal.getPreviousIMMDate());
-
-        cal.setStartDate(createDate("2006-04-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-05-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-06-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getPreviousIMMDate());
-
-        cal.setStartDate(createDate("2006-07-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-08-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-09-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getPreviousIMMDate());
-
-        cal.setStartDate(createDate("2006-10-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-11-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-12-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getPreviousIMMDate());
-
-        // close to dates
-
-        cal.setStartDate(createDate("2006-03-14"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2005-12-21"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-03-15"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2005-12-21"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-03-16"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getPreviousIMMDate());
-
-        cal.setStartDate(createDate("2006-06-20"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-06-21"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-03-15"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-06-22"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getPreviousIMMDate());
-
-        cal.setStartDate(createDate("2006-09-19"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-09-20"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-06-21"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-09-21"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getPreviousIMMDate());
-
-        cal.setStartDate(createDate("2006-12-19"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-12-20"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-09-20"), cal.getPreviousIMMDate());
-        cal.setStartDate(createDate("2006-12-21"));
-        Assert.assertEquals("From " + cal.getStartDate(), createDate("2006-12-20"), cal.getPreviousIMMDate());
+    @Override
+    protected Date parseDate(String string) {
+        return Utils.createDate(string);
     }
 
-    public void testIMMLists() {
-        final DateCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
-                HolidayHandlerType.FORWARD);
-        Assert.assertEquals("Name", "bla", cal.getName());
-        Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
-
-        final Date startDate = createDate("2005-12-01");
-        final Date endDate = createDate("2007-03-17");
-        final List<Date> imms = cal.getIMMDates(startDate, endDate);
-        Assert.assertNotNull(imms);
-        Assert.assertTrue("Not empty", !imms.isEmpty());
-        Assert.assertEquals("Expected number of imms dates", 5, imms.size());
-        Assert.assertEquals("date 1", createDate("2005-12-21"), imms.get(0));
-        Assert.assertEquals("date 2", createDate("2006-03-15"), imms.get(1));
-        Assert.assertEquals("date 3", createDate("2006-06-21"), imms.get(2));
-        Assert.assertEquals("date 4", createDate("2006-09-20"), imms.get(3));
-        Assert.assertEquals("date 5", createDate("2006-12-20"), imms.get(4));
-    }
-
-    public void testEmptyIMMLists() {
-        final DateCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
-                HolidayHandlerType.FORWARD);
-        Assert.assertEquals("Name", "bla", cal.getName());
-        Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
-
-        final Date startDate = createDate("2006-03-16");
-        final Date endDate = createDate("2006-06-20");
-        final List<Date> imms = cal.getIMMDates(startDate, endDate);
-        Assert.assertNotNull(imms);
-        Assert.assertTrue("empty", imms.isEmpty());
-    }
-
-    public void testEndOnIMMDateIMMLists() {
-        final DateCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
-                HolidayHandlerType.FORWARD);
-        Assert.assertEquals("Name", "bla", cal.getName());
-        Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
-
-        final Date startDate = createDate("2006-03-16");
-        final Date endDate = createDate("2006-06-21");
-        final List<Date> imms = cal.getIMMDates(startDate, endDate);
-        Assert.assertNotNull(imms);
-        Assert.assertTrue("empty", !imms.isEmpty());
-        Assert.assertEquals("Expected number of imms dates", 1, imms.size());
-        Assert.assertEquals("date 1", createDate("2006-06-21"), imms.get(0));
-    }
-
-    public void testStartOnIMMDateIMMLists() {
-        final DateCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
-                HolidayHandlerType.FORWARD);
-        Assert.assertEquals("Name", "bla", cal.getName());
-        Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
-
-        final Date startDate = createDate("2006-03-15");
-        final Date endDate = createDate("2006-06-20");
-        final List<Date> imms = cal.getIMMDates(startDate, endDate);
-        Assert.assertNotNull(imms);
-        Assert.assertTrue("empty", imms.isEmpty());
-    }
 }
\ No newline at end of file
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java	2006-09-04 20:30:25 UTC (rev 99)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java	2006-09-04 20:56:59 UTC (rev 100)
@@ -1,18 +1,20 @@
 package net.objectlab.kit.datecalc.jdk;
 
+import java.util.Date;
+
 import net.objectlab.kit.datecalc.common.AbstractBackwardDateCalculatorTest;
 import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
 import net.objectlab.kit.datecalc.common.Utils;
 
-public class JdkDateBackwardDateCalculatorTest extends AbstractBackwardDateCalculatorTest {
+public class JdkDateBackwardDateCalculatorTest extends AbstractBackwardDateCalculatorTest<Date> {
 
     @Override
-    protected Object newDate(final String date) {
+    protected Date newDate(final String date) {
         return Utils.createDate(date);
     }
 
     @Override
-    protected DateCalculatorFactory getDateCalculatorFactory() {
+    protected DateCalculatorFactory<Date> getDateCalculatorFactory() {
         return DefaultJdkDateCalculatorFactory.getDefaultInstance();
     }
 
Modified: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/IMMDateTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/IMMDateTest.java	2006-09-04 20:30:25 UTC (rev 99)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/IMMDateTest.java	2006-09-04 20:56:59 UTC (rev 100)
@@ -1,303 +1,21 @@
 package net.objectlab.kit.datecalc.joda;
 
-import java.util.List;
 
-import junit.framework.Assert;
-import junit.framework.TestCase;
+import net.objectlab.kit.datecalc.c...
 
[truncated message content] | 
| 
      
      
      From: <be...@us...> - 2006-09-05 10:01:38
       | 
| Revision: 107
          http://svn.sourceforge.net/objectlabkit/?rev=107&view=rev
Author:   benoitx
Date:     2006-09-05 03:01:21 -0700 (Tue, 05 Sep 2006)
Log Message:
-----------
New IMMPeriod annually. JDK test is broken.
Modified Paths:
--------------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
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-05 09:31:32 UTC (rev 106)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java	2006-09-05 10:01:21 UTC (rev 107)
@@ -26,10 +26,12 @@
  * @version $Revision$ $Date$
  */
 public enum IMMPeriod {
-    /** Bi annually March and September */
+    /** Bi-annually March and September */
     BI_ANNUALY_MAR_SEP,
-    /** Bi annually June and December */
+    /** Bi-annually June and December */
     BI_ANNUALY_JUN_DEC,
-    /** Quarterly: eg March, June, September, December */
-    QUARTERLY    
+    /** Conventional period: Quarterly: eg March, June, September, December */
+    QUARTERLY,
+    /** Annually, jump from 1y to the next */
+    ANNUALLY
 }
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java	2006-09-05 09:31:32 UTC (rev 106)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java	2006-09-05 10:01:21 UTC (rev 107)
@@ -8,126 +8,158 @@
 public abstract class AbstractIMMDateTest<E> extends TestCase {
 
     private DateCalculator<E> cal;
-    
+
     public void setUp() {
         cal = getDateCalculator("bla");
     }
-    
+
     protected abstract DateCalculator<E> getDateCalculator(String name);
-    
+
     protected abstract E parseDate(String string);
 
     private void checkImm(final DateCalculator<E> cal, final E date, final boolean expected) {
         assertEquals("check " + date, expected, cal.isIMMDate(date));
     }
-    
+
     public void testSanityCheck() {
         Assert.assertEquals("Name", "bla", cal.getName());
         Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
     }
-    
+
     public void testNextIMM() {
         final E startDate = parseDate("2006-08-01");
         cal.setStartDate(startDate);
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-01-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-02-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-03-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-04-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-05-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-06-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-07-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-08-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-09-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-10-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-11-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-12-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-03-14"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-03-15"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-03-16"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-06-20"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-06-21"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-06-22"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-09-19"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-09-20"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-09-21"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-12-19"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-12-20"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2007-03-21"), cal.getNextIMMDate());
         cal.setStartDate(parseDate("2006-12-21"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2007-03-21"), cal.getNextIMMDate());
+
+        cal.setStartDate(parseDate("2006-03-15"));
+        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
     }
 
-    
     public void testNextIMMWithPeriod() {
         final E startDate = parseDate("2006-08-01");
         cal.setStartDate(startDate);
-    
+
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-    
+
+        IMMPeriod period = IMMPeriod.QUARTERLY;
+
         cal.setStartDate(parseDate("2006-01-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate(IMMPeriod.QUARTERLY));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal
-                .getNextIMMDate(IMMPeriod.BI_ANNUALY_JUN_DEC));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal
-                .getNextIMMDate(IMMPeriod.BI_ANNUALY_MAR_SEP));
-    
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-03-15"), cal
+                .getNextIMMDate(period));
+        period = IMMPeriod.BI_ANNUALY_JUN_DEC;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+                .getNextIMMDate(period));
+        period = IMMPeriod.BI_ANNUALY_MAR_SEP;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-03-15"), cal
+                .getNextIMMDate(period));
+        period = IMMPeriod.ANNUALLY;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2007-03-21"), cal
+                .getNextIMMDate(period));
+
         cal.setStartDate(parseDate("2006-03-20"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate(IMMPeriod.QUARTERLY));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal
-                .getNextIMMDate(IMMPeriod.BI_ANNUALY_JUN_DEC));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal
-                .getNextIMMDate(IMMPeriod.BI_ANNUALY_MAR_SEP));
+        period = IMMPeriod.QUARTERLY;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+                .getNextIMMDate(period));
+        period = IMMPeriod.BI_ANNUALY_JUN_DEC;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+                .getNextIMMDate(period));
+        period = IMMPeriod.BI_ANNUALY_MAR_SEP;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-09-20"), cal
+                .getNextIMMDate(period));
+        period = IMMPeriod.ANNUALLY;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2007-06-20"), cal
+                .getNextIMMDate(period));
+
+        cal.setStartDate(parseDate("2006-03-15"));
+        period = IMMPeriod.QUARTERLY;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+                .getNextIMMDate(period));
+        period = IMMPeriod.BI_ANNUALY_JUN_DEC;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+                .getNextIMMDate(period));
+        period = IMMPeriod.BI_ANNUALY_MAR_SEP;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-09-20"), cal
+                .getNextIMMDate(period));
+        cal.setStartDate(parseDate("2006-03-15"));
+        period = IMMPeriod.ANNUALLY;
+        Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2007-06-20"), cal
+                .getNextIMMDate(period));
     }
 
     public void testIfIMMDate() {
         final E startDate = parseDate("2006-08-01");
         cal.setStartDate(startDate);
-    
+
         checkImm(cal, parseDate("2006-08-01"), false);
-    
+
         checkImm(cal, parseDate("2006-03-14"), false);
         checkImm(cal, parseDate("2006-03-15"), true);
         checkImm(cal, parseDate("2006-03-16"), false);
-    
+
         checkImm(cal, parseDate("2006-06-20"), false);
         checkImm(cal, parseDate("2006-06-21"), true);
         checkImm(cal, parseDate("2006-06-22"), false);
-    
+
         checkImm(cal, parseDate("2006-09-19"), false);
         checkImm(cal, parseDate("2006-09-20"), true);
         checkImm(cal, parseDate("2006-09-21"), false);
-    
+
         checkImm(cal, parseDate("2006-12-19"), false);
         checkImm(cal, parseDate("2006-12-20"), true);
         checkImm(cal, parseDate("2006-12-21"), false);
@@ -136,7 +168,7 @@
     public void testMoveByIMMTenor() {
         final E startDate = parseDate("2006-04-01");
         cal.setStartDate(startDate);
-    
+
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.moveByTenor(StandardTenor.IMM)
                 .getCurrentBusinessDate());
     }
@@ -144,7 +176,7 @@
     public void testMoveByNullTenor() {
         final E startDate = parseDate("2006-04-01");
         cal.setStartDate(startDate);
-    
+
         try {
             cal.moveByTenor(null);
             Assert.fail("Should have thrown IllegalArgumentException");
@@ -156,60 +188,60 @@
     public void testPreviousIMM() {
         final E startDate = parseDate("2006-08-01");
         cal.setStartDate(startDate);
-    
+
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-01-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-02-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-03-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-04-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-05-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-06-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-07-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-08-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-09-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-10-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-11-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-12-09"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
-    
+
         // close to dates
-    
+
         cal.setStartDate(parseDate("2006-03-14"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-03-15"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-03-16"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-06-20"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-06-21"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-06-22"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-09-19"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-09-20"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-09-21"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
-    
+
         cal.setStartDate(parseDate("2006-12-19"));
         Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
         cal.setStartDate(parseDate("2006-12-20"));
@@ -257,5 +289,5 @@
         Assert.assertNotNull(imms);
         Assert.assertTrue("empty", imms.isEmpty());
     }
-    
+
 }
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java	2006-09-05 09:31:32 UTC (rev 106)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java	2006-09-05 10:01:21 UTC (rev 107)
@@ -113,6 +113,10 @@
     protected LocalDate getNextIMMDate(final boolean forward, final LocalDate start, final IMMPeriod period) {
         LocalDate date = start;
 
+//        if (period == IMMPeriod.ANNUALLY) {
+//            date = date.plusYears(1);
+//        }
+        
         final int month = date.getMonthOfYear();
         int monthOffset = 0;
 
@@ -161,6 +165,15 @@
                         && (DateTimeConstants.JUNE == imm.getMonthOfYear() || DateTimeConstants.DECEMBER==imm.getMonthOfYear()) ) { 
                 // need to move to the next one.
                 imm = getNextIMMDate(forward, imm, period);
+            } else if (period == IMMPeriod.ANNUALLY) {
+                // second jump
+                imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+                // third jump
+                imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+                // fourth jump
+                imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+                // fifth jump
+                imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
             }
         
         return imm;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <be...@us...> - 2006-09-05 10:13:15
       | 
| Revision: 108
          http://svn.sourceforge.net/objectlabkit/?rev=108&view=rev
Author:   benoitx
Date:     2006-09-05 03:13:01 -0700 (Tue, 05 Sep 2006)
Log Message:
-----------
better name for some param
and implementation of IMMPeriod.ANNUALLY for JDK side.
Modified Paths:
--------------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.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/YearMonthDayDateCalculator.java
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-05 10:01:21 UTC (rev 107)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java	2006-09-05 10:13:01 UTC (rev 108)
@@ -261,7 +261,7 @@
         return getIMMDates(start, end, IMMPeriod.QUARTERLY);
     }
 
-    protected abstract E getNextIMMDate(final boolean forward, final E theStartDate, final IMMPeriod period);
+    protected abstract E getNextIMMDate(final boolean requestNextIMM, final E theStartDate, final IMMPeriod period);
 
     protected abstract DateCalculator<E> createNewCalcultaor(String calcName, E theStartDate, Set<E> holidays,
             HolidayHandler<E> handler);
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	2006-09-05 10:01:21 UTC (rev 107)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	2006-09-05 10:13:01 UTC (rev 108)
@@ -123,7 +123,7 @@
     }
 
     @Override
-    protected Calendar getNextIMMDate(final boolean forward, final Calendar startDate, final IMMPeriod period) {
+    protected Calendar getNextIMMDate(final boolean requestNextIMM, final Calendar startDate, final IMMPeriod period) {
 
         Calendar cal = (Calendar) startDate.clone();
         
@@ -132,12 +132,12 @@
             // TODO simplify this if condition
 // if (forward ^ cal.getTime().before(startDate) ||
 // cal.getTime().equals(startDate)) {
-            if ((forward && cal.after(startDate)) || (!forward && cal.before(startDate))) {
+            if ((requestNextIMM && cal.after(startDate)) || (!requestNextIMM && cal.before(startDate))) {
                 return cal;
             }
         }
 
-        final int delta = (forward ? 1 : -1);
+        final int delta = (requestNextIMM ? 1 : -1);
         do {
             cal.add(Calendar.MONTH, delta);
         } while (!isIMMMonth(cal));
@@ -151,7 +151,16 @@
                 ( period == IMMPeriod.BI_ANNUALY_MAR_SEP 
                         && (Calendar.JUNE == month || Calendar.DECEMBER==month) ) ) { 
                 // need to move to the next one.
-                cal = getNextIMMDate(forward, cal, period);
+                cal = getNextIMMDate(requestNextIMM, cal, period);
+        } else if (period == IMMPeriod.ANNUALLY) {
+            // second jump
+            cal = getNextIMMDate(requestNextIMM, cal, IMMPeriod.QUARTERLY);
+            // third jump
+            cal = getNextIMMDate(requestNextIMM, cal, IMMPeriod.QUARTERLY);
+            // fourth jump
+            cal = getNextIMMDate(requestNextIMM, cal, IMMPeriod.QUARTERLY);
+            // fifth jump
+            cal = getNextIMMDate(requestNextIMM, cal, IMMPeriod.QUARTERLY);
             }
         
         
@@ -194,7 +203,7 @@
     }
 
     public boolean isIMMDate(final Calendar date) {
-        //TODO a slightly crude implementation - revisit
+        // TODO a slightly crude implementation - revisit
         Calendar cal = (Calendar)date.clone();
         moveToIMMDay(cal);
         return cal.equals(date);
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java	2006-09-05 10:01:21 UTC (rev 107)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java	2006-09-05 10:13:01 UTC (rev 108)
@@ -110,7 +110,7 @@
     }
 
     @Override
-    protected LocalDate getNextIMMDate(final boolean forward, final LocalDate start, final IMMPeriod period) {
+    protected LocalDate getNextIMMDate(final boolean requestNextIMM, final LocalDate start, final IMMPeriod period) {
         LocalDate date = start;
 
 //        if (period == IMMPeriod.ANNUALLY) {
@@ -126,9 +126,9 @@
         case DateTimeConstants.SEPTEMBER:
         case DateTimeConstants.DECEMBER:
             final LocalDate immDate = calculate3rdWednesday(date);
-            if (forward && !date.isBefore(immDate)) {
+            if (requestNextIMM && !date.isBefore(immDate)) {
                 date = date.plusMonths(MONTHS_IN_QUARTER);
-            } else if (!forward && !date.isAfter(immDate)) {
+            } else if (!requestNextIMM && !date.isAfter(immDate)) {
                 date = date.minusMonths(MONTHS_IN_QUARTER);
             }
             break;
@@ -146,7 +146,7 @@
             // Oct 10 -> 2
             // Nov 11 -> 1
             // Dec 12 -> 0
-            if (forward) {
+            if (requestNextIMM) {
                 monthOffset = (MONTH_IN_YEAR - month) % MONTHS_IN_QUARTER;
                 date = date.plusMonths(monthOffset);
             } else {
@@ -164,16 +164,16 @@
                  period == IMMPeriod.BI_ANNUALY_MAR_SEP 
                         && (DateTimeConstants.JUNE == imm.getMonthOfYear() || DateTimeConstants.DECEMBER==imm.getMonthOfYear()) ) { 
                 // need to move to the next one.
-                imm = getNextIMMDate(forward, imm, period);
+                imm = getNextIMMDate(requestNextIMM, imm, period);
             } else if (period == IMMPeriod.ANNUALLY) {
                 // second jump
-                imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+                imm = getNextIMMDate(requestNextIMM, imm, IMMPeriod.QUARTERLY);
                 // third jump
-                imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+                imm = getNextIMMDate(requestNextIMM, imm, IMMPeriod.QUARTERLY);
                 // fourth jump
-                imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+                imm = getNextIMMDate(requestNextIMM, imm, IMMPeriod.QUARTERLY);
                 // fifth jump
-                imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+                imm = getNextIMMDate(requestNextIMM, imm, IMMPeriod.QUARTERLY);
             }
         
         return imm;
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java	2006-09-05 10:01:21 UTC (rev 107)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java	2006-09-05 10:13:01 UTC (rev 108)
@@ -101,8 +101,8 @@
     }
 
     @Override
-    protected YearMonthDay getNextIMMDate(final boolean forward, final YearMonthDay start, final IMMPeriod period) {
-        return new YearMonthDay(delegate.getNextIMMDate(forward, start.toLocalDate(), period));
+    protected YearMonthDay getNextIMMDate(final boolean requestNextIMM, final YearMonthDay start, final IMMPeriod period) {
+        return new YearMonthDay(delegate.getNextIMMDate(requestNextIMM, start.toLocalDate(), period));
     }
 
     @Override
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <be...@us...> - 2006-09-05 11:17:14
       | 
| Revision: 109
          http://svn.sourceforge.net/objectlabkit/?rev=109&view=rev
Author:   benoitx
Date:     2006-09-05 04:16:39 -0700 (Tue, 05 Sep 2006)
Log Message:
-----------
Moved ExcelDateUtil.java to Common for Date and Calendar.
Provided generic tests, used in common for Date and Calendar and used in Joda for LocalDate, YearMonthDay and DateTime.
Simplified the JodaExcelDateUtil.
Cool hey?
+ some formatting.
Modified Paths:
--------------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/IMMDateTest.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/JodaWorkingWeek.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/IMMDateTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/PeriodCountCalculatorTest.java
Added Paths:
-----------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/ExcelDateUtil.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractExcelDateUtilTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/CalendarExcelDateUtilTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/DateExcelDateUtilTest.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/JodaExcelDateUtil.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateTimeExcelDateUtilTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateExcelDateUtilTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayExcelDateUtilTest.java
Removed Paths:
-------------
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ExcelDateUtil.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ExcelDateUtil.java
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java	2006-09-05 10:13:01 UTC (rev 108)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java	2006-09-05 11:16:39 UTC (rev 109)
@@ -23,11 +23,12 @@
 /**
  * A DateCalculator is a lightweight container with an optional reference to a
  * set of holidays, a WorkingWeek (Mon-Fri by default), a startDate and a
- * current business date. The Calculator also uses a HolidayHandler to determine what to
- * do when the calculated current Business Date falls on a weekend or holiday (non-working day).
- * The CurrentDate date is changed everytime that the moveByDays or moveByBusinessDays methods are called.
- * 'E' will be parameterized to be a Date-like class, i.e. java.util.Date or java.util.Calendar (and LocalDate
- * or YearMonthDay for Joda-time).
+ * current business date. The Calculator also uses a HolidayHandler to determine
+ * what to do when the calculated current Business Date falls on a weekend or
+ * holiday (non-working day). The CurrentDate date is changed everytime that the
+ * moveByDays or moveByBusinessDays methods are called. 'E' will be
+ * parameterized to be a Date-like class, i.e. java.util.Date or
+ * java.util.Calendar (and LocalDate or YearMonthDay for Joda-time).
  * 
  * @author Benoit Xhenseval
  * @author $LastChangedBy$
@@ -37,36 +38,42 @@
 
     /**
      * This is typically the name of the associated set of holidays.
+     * 
      * @return calculator name (Typically the name associated with the holiday
      *         set).
      */
     String getName();
 
     /**
-     * Setting the start date also sets the current business date (and if this is a non-working day,
-     * the current business date will be moved to the next business day acording to the HolidayHandler
-     * algorithm given).
+     * Setting the start date also sets the current business date (and if this
+     * is a non-working day, the current business date will be moved to the next
+     * business day acording to the HolidayHandler algorithm given).
+     * 
      * @param startDate
-     *            the reference date for this calculator, the current business date is also
-     *            updated and may be moved if it falls on a non working day
-     *            (holiday/weekend).
+     *            the reference date for this calculator, the current business
+     *            date is also updated and may be moved if it falls on a non
+     *            working day (holiday/weekend).
      */
     void setStartDate(final E startDate);
 
     /**
-     * Gives the startDate of this calculator (immutable once set via setStartDate).
+     * Gives the startDate of this calculator (immutable once set via
+     * setStartDate).
+     * 
      * @return startDate the reference date for this calculator.
      */
     E getStartDate();
 
     /**
      * Gives the current business date held by the calculator.
+     * 
      * @return a date.
      */
     E getCurrentBusinessDate();
 
     /**
      * Is the given date falling on a weekend, according to the WorkingWeek.
+     * 
      * @return true if the date falls on a weekend.
      */
     boolean isWeekend(final E date);
@@ -74,6 +81,7 @@
     /**
      * Is the given date a non working day, i.e. either a "weekend" or a
      * holiday?
+     * 
      * @return true if the given date is non-working.
      */
     boolean isNonWorkingDay(final E date);
@@ -81,15 +89,16 @@
     /**
      * Is the current business day a non-working day, this is useful if the
      * calculator does not have any algorithm to change the date when it falls
-     * on a non-working day.  This method can then be used to show a warning to the
-     * user.
+     * on a non-working day. This method can then be used to show a warning to
+     * the user.
+     * 
      * @return true if the current date is either a weekend or a holiday.
      */
     boolean isCurrentDateNonWorking();
 
     /**
-     * This is typically used at the construction of a DateCalculator to give
-     * a reference to a set of holidays.
+     * This is typically used at the construction of a DateCalculator to give a
+     * reference to a set of holidays.
      * 
      * @param holidays
      *            the holiday (if null, an empty set will be put in place)
@@ -98,6 +107,7 @@
 
     /**
      * Gives a immutable copy of the set of registered holidays.
+     * 
      * @return an immutable copy of the holiday set.
      */
     Set<E> getNonWorkingDays();
@@ -106,13 +116,14 @@
      * Allows user to define what their Working Week should be (default is
      * Mon-Fri).
      * 
-     * @param week an immutable definition of a week.
+     * @param week
+     *            an immutable definition of a week.
      */
     void setWorkingWeek(final WorkingWeek week);
 
     /**
-     * Gives a current business date, it may be moved acording to the HolidayHandler algorithm
-     * if it falls on a non-working day.
+     * Gives a current business date, it may be moved acording to the
+     * HolidayHandler algorithm if it falls on a non-working day.
      * 
      * @param date
      * @return new current business date if moved.
@@ -120,16 +131,18 @@
     E setCurrentBusinessDate(final E date);
 
     /**
-     * Gives the name of the holiday handler algorithm, see HolidayHandlerType for some standard values.
+     * Gives the name of the holiday handler algorithm, see HolidayHandlerType
+     * for some standard values.
+     * 
      * @return the holiday handler type, can be null
      */
     String getHolidayHandlerType();
 
     /**
-     * This changes the current business date held in the calculator, it moves the 
-     * new current business date by the number of days and, if it falls on a weekend
-     * or holiday, moves it further according to the HolidayHandler given in this
-     * DateCalculator.
+     * This changes the current business date held in the calculator, it moves
+     * the new current business date by the number of days and, if it falls on a
+     * weekend or holiday, moves it further according to the HolidayHandler
+     * given in this DateCalculator.
      * 
      * @param days
      *            number of days (can be <0 or >0)
@@ -139,16 +152,20 @@
     DateCalculator<E> moveByDays(final int days);
 
     /**
-     * This changes the current business date held in the calculator, it moves the 
-     * current date by a number of business days, this means that if a
-     * date is either a 'weekend' or holiday along the way, it will be skipped acording to the
-     * holiday handler and not count towards the number of days to move.
+     * This changes the current business date held in the calculator, it moves
+     * the current date by a number of business days, this means that if a date
+     * is either a 'weekend' or holiday along the way, it will be skipped
+     * acording to the holiday handler and not count towards the number of days
+     * to move.
      * 
-     * @param businessDays (can be <0 or >0)
+     * @param businessDays
+     *            (can be <0 or >0)
      * @return the current businessCalendar (so one can do
      *         calendar.moveByBusinessDays(2).getCurrentBusinessDate();)
-     * @exception IllegalArgumentException if the HolidayHandlerType is (MODIFIED_PRECEEDING or BACKWARD) and businessDays > 0
-     *          or (MODIFIED_FOLLOWING or FORWARD) and businessDays < 0
+     * @exception IllegalArgumentException
+     *                if the HolidayHandlerType is (MODIFIED_PRECEEDING or
+     *                BACKWARD) and businessDays > 0 or (MODIFIED_FOLLOWING or
+     *                FORWARD) and businessDays < 0
      */
     DateCalculator<E> moveByBusinessDays(final int businessDays);
 
@@ -178,23 +195,26 @@
     DateCalculator<E> moveByTenor(final Tenor tenor);
 
     /**
-     * Checks if a given date is an official IMM Date (3rd Wednesdays of March/June/Sept/Dec.
+     * Checks if a given date is an official IMM Date (3rd Wednesdays of
+     * March/June/Sept/Dec.
+     * 
      * @param date
      * @return true if that date is an IMM date.
      */
     boolean isIMMDate(E date);
 
     /**
-     * Starting from the current business date, it will return the next IMM Date, even if the 
-     * current business date is an IMM date (same as calling getNextIMMDate(IMMPeriod.QUARTERLY)).
+     * Starting from the current business date, it will return the next IMM
+     * Date, even if the current business date is an IMM date (same as calling
+     * getNextIMMDate(IMMPeriod.QUARTERLY)).
      * 
      * @return the next IMMDate based on current business date.
      */
     E getNextIMMDate();
 
     /**
-     * Starting from the current business date, it will return the next IMM Date based on the IMMPeriod,
-     * even if the current business date is an IMM date.
+     * Starting from the current business date, it will return the next IMM Date
+     * based on the IMMPeriod, even if the current business date is an IMM date.
      * 
      * @param period
      *            specify when the "next" IMM is, if quarterly then it is the
@@ -204,16 +224,17 @@
     E getNextIMMDate(IMMPeriod period);
 
     /**
-     * Starting from the current business date, it will return the previous IMM Date, even if the 
-     * current business date is an IMM date.
+     * Starting from the current business date, it will return the previous IMM
+     * Date, even if the current business date is an IMM date.
      * 
      * @return the previous IMMDate based on current date.
      */
     E getPreviousIMMDate();
 
     /**
-     * Starting from the current business date, it will return the previous IMM Date based on the IMMPeriod,
-     * even if the current business date is an IMM date.
+     * Starting from the current business date, it will return the previous IMM
+     * Date based on the IMMPeriod, even if the current business date is an IMM
+     * date.
      * 
      * @param period
      *            specify when the "previous" IMM is, if quarterly then it is
Added: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/ExcelDateUtil.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/ExcelDateUtil.java	                        (rev 0)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/ExcelDateUtil.java	2006-09-05 11:16:39 UTC (rev 109)
@@ -0,0 +1,154 @@
+/*
+ * $Id: ExcelDateUtil.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.common;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+
+/**
+ * Convert Excel Date to LocalDate, YearMonthDay or DateTime.
+ * 
+ * @author Benoit Xhenseval
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 99 $ $Date: 2006-09-04 21:30:25 +0100 (Mon, 04 Sep 2006) $
+ * 
+ */
+public class ExcelDateUtil {
+    private static final double HALF_MILLISEC = 0.5;
+
+    private static final int EXCEL_FUDGE_19000229 = 61;
+
+    private static final int EXCEL_WINDOWING_1904 = 1904;
+
+    private static final int EXCEL_BASE_YEAR = 1900;
+
+    private static final long DAY_MILLISECONDS = 24 * 60 * 60 * 1000;
+
+    private ExcelDateUtil() {
+    }
+
+    /**
+     * Given an Excel date with either 1900 or 1904 date windowing, converts it
+     * to a java.util.Date.
+     * 
+     * @param date
+     *            The Excel date.
+     * @param use1904windowing
+     *            true if date uses 1904 windowing, or false if using 1900 date
+     *            windowing.
+     * @return Java representation of the date without any time.
+     * 
+     * @see java.util.TimeZone
+     */
+    public static Calendar getJavaCalendar(final double date, final boolean use1904windowing) {
+        final Calendar cal = Calendar.getInstance();
+        final Date javaDate = getJavaDate(date, use1904windowing);
+        if (javaDate == null) {
+            return null;
+        }
+        cal.setTime(javaDate);
+        cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+        cal.set(Calendar.HOUR, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal;
+    }
+
+    /**
+     * Given an Excel date with either 1900 or 1904 date windowing, converts it
+     * to a java.util.Date.
+     * 
+     * @param date
+     *            The Excel date.
+     * @param use1904windowing
+     *            true if date uses 1904 windowing, or false if using 1900 date
+     *            windowing.
+     * @return Java representation of the date without any time.
+     * 
+     * @see java.util.TimeZone
+     */
+    public static Date getJavaDateOnly(final double date, final boolean use1904windowing) {
+        final Calendar javaCalendar = getJavaCalendar(date, use1904windowing);
+        if (javaCalendar == null) {
+            return null;
+        }
+        return javaCalendar.getTime();
+    }
+
+    /**
+     * Given an Excel date with either 1900 or 1904 date windowing, converts it
+     * to a java.util.Date.
+     * 
+     * NOTE: If the default <code>TimeZone</code> in Java uses Daylight Saving
+     * Time then the conversion back to an Excel date may not give the same
+     * value, that is the comparison <CODE>excelDate ==
+     * getExcelDate(getJavaDate(excelDate,false))</CODE> is not always true.
+     * For example if default timezone is <code>Europe/Copenhagen</code>, on
+     * 2004-03-28 the minute after 01:59 CET is 03:00 CEST, if the excel date
+     * represents a time between 02:00 and 03:00 then it is converted to past
+     * 03:00 summer time
+     * 
+     * @param date
+     *            The Excel date.
+     * @param use1904windowing
+     *            true if date uses 1904 windowing, or false if using 1900 date
+     *            windowing.
+     * @return Java representation of the date, or null if date is not a valid
+     *         Excel date
+     * @see java.util.TimeZone
+     */
+    public static Date getJavaDate(final double date, final boolean use1904windowing) {
+        if (isValidExcelDate(date)) {
+            int startYear = EXCEL_BASE_YEAR;
+            int dayAdjust = -1; // Excel thinks 2/29/1900 is a valid date, which
+            // it isn't
+            final int wholeDays = (int) Math.floor(date);
+            if (use1904windowing) {
+                startYear = EXCEL_WINDOWING_1904;
+                dayAdjust = 1; // 1904 date windowing uses 1/2/1904 as the
+                // first day
+            } else if (wholeDays < EXCEL_FUDGE_19000229) {
+                // Date is prior to 3/1/1900, so adjust because Excel thinks
+                // 2/29/1900 exists
+                // If Excel date == 2/29/1900, will become 3/1/1900 in Java
+                // representation
+                dayAdjust = 0;
+            }
+            final GregorianCalendar calendar = new GregorianCalendar(startYear, 0, wholeDays + dayAdjust);
+            final int millisecondsInDay = (int) ((date - Math.floor(date)) * DAY_MILLISECONDS + HALF_MILLISEC);
+            calendar.set(Calendar.MILLISECOND, millisecondsInDay);
+            return calendar.getTime();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Given a double, checks if it is a valid Excel date.
+     * 
+     * @return true if valid
+     * @param value
+     *            the double value
+     */
+    public static boolean isValidExcelDate(final double value) {
+        return (value > -Double.MIN_VALUE);
+    }
+}
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-05 10:13:01 UTC (rev 108)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java	2006-09-05 11:16:39 UTC (rev 109)
@@ -60,6 +60,16 @@
         }
     }
 
+    public static Calendar createCalendar(final String str) throws IllegalArgumentException {
+        try {
+            final Date date = SDF.parse(str);
+            final Calendar cal = getCal(date);
+            return cal;
+        } catch (final ParseException e) {
+            throw new IllegalArgumentException("\"" + str + "\"" + " is an invalid date, the pattern is : " + DATE_PATTERN);
+        }
+    }
+
     public static Set<Calendar> toCalendarSet(final Set<Date> dates) {
         final Set<Calendar> calendars = new HashSet<Calendar>();
         for (final Date date : dates) {
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractExcelDateUtilTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractExcelDateUtilTest.java	                        (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractExcelDateUtilTest.java	2006-09-05 11:16:39 UTC (rev 109)
@@ -0,0 +1,28 @@
+package net.objectlab.kit.datecalc.common;
+
+import junit.framework.TestCase;
+
+public abstract class AbstractExcelDateUtilTest<E> extends TestCase {
+    protected abstract E createDate(final String str);
+
+    protected abstract E createDateFromExcel(double excelDate);
+
+    public void testExcelDate() {
+        checkDate(createDate("1899-12-31"), 0);
+        checkDate(createDate("1900-01-01"), 1.0);
+        checkDate(createDate("1900-03-01"), 61.0);
+        checkDate(createDate("1968-06-11"), 25000.0);
+        checkDate(createDate("1978-05-31"), 28641.00);
+        checkDate(createDate("1999-12-31"), 36525.00);
+        checkDate(createDate("2000-01-01"), 36526.00);
+        checkDate(createDate("2000-01-01"), 36526.00);
+        checkDate(createDate("2000-02-28"), 36584.00);
+        checkDate(createDate("2000-02-29"), 36585.00);
+        checkDate(createDate("2000-03-01"), 36586.00);
+        checkDate(null, -1.0);
+    }
+
+    private void checkDate(final E date, final double excelDate) {
+        assertEquals("excel:" + excelDate, date, createDateFromExcel(excelDate));
+    }
+}
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java	2006-09-05 10:13:01 UTC (rev 108)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java	2006-09-05 11:16:39 UTC (rev 109)
@@ -2,315 +2,316 @@
 
 import java.math.BigDecimal;
 
-import net.objectlab.kit.datecalc.common.PeriodCountBasis;
-import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
-
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
 public abstract class AbstractPeriodCountCalculator<E> extends TestCase {
 
     private static final String[][] ACT_365 = {
-                // name start end period dayDiff yearDiff
-                { "0D", "2006-08-08", "2006-08-08", "ACT_365", "0", "0.00" },
-                { "1D", "2006-08-08", "2006-08-09", "ACT_365", "1", "0.002740" },
-                { "1W", "2006-08-08", "2006-08-15", "ACT_365", "7", "0.019178" },
-                { "1M", "2006-08-08", "2006-09-08", "ACT_365", "31", "0.084932" },
-                { "3M", "2006-08-08", "2006-11-08", "ACT_365", "92", "0.252055" },
-                { "6M", "2006-08-08", "2007-02-08", "ACT_365", "184", "0.504110" },
-                { "9M", "2006-08-08", "2007-05-08", "ACT_365", "273", "0.747945" },
-                { "1Y", "2006-08-08", "2007-08-08", "ACT_365", "365", "1.000000" },
-                { "2Y", "2006-08-08", "2008-08-08", "ACT_365", "731", "2.002740" },
-                { "3Y", "2006-08-08", "2009-08-10", "ACT_365", "1098", "3.008219" },
-                { "4Y", "2006-08-08", "2010-08-09", "ACT_365", "1462", "4.005479" },
-                { "5Y", "2006-08-08", "2011-08-08", "ACT_365", "1826", "5.002740" },
-                { "7Y", "2006-08-08", "2013-08-08", "ACT_365", "2557", "7.005479" },
-                { "10Y", "2006-08-08", "2016-08-08", "ACT_365", "3653", "10.008219" },
-                { "15Y", "2006-08-08", "2021-08-09", "ACT_365", "5480", "15.013699" },
-                { "20Y", "2006-08-08", "2026-08-10", "ACT_365", "7307", "20.019178" },
-                { "30Y", "2006-08-08", "2036-08-08", "ACT_365", "10958", "30.021918" },
-                // leap year - funny date...
-                { "0D", "2008-02-29", "2008-02-29", "ACT_365", "0", "0.00" },
-                { "1D", "2008-02-29", "2008-03-03", "ACT_365", "3", "0.008219" },
-                { "1W", "2008-02-29", "2008-03-07", "ACT_365", "7", "0.019178" },
-                { "1M", "2008-02-29", "2008-03-31", "ACT_365", "31", "0.084932" },
-                { "3M", "2008-02-29", "2008-05-29", "ACT_365", "90", "0.246575" },
-                { "6M", "2008-02-29", "2008-08-29", "ACT_365", "182", "0.498630" },
-                { "9M", "2008-02-29", "2008-11-28", "ACT_365", "273", "0.747945" },
-                { "1Y", "2008-02-29", "2009-02-27", "ACT_365", "364", "0.997260" },
-                { "2Y", "2008-02-29", "2010-02-26", "ACT_365", "728", "1.994521" },
-                { "3Y", "2008-02-29", "2011-02-28", "ACT_365", "1095", "3.000000" },
-                { "4Y", "2008-02-29", "2012-02-29", "ACT_365", "1461", "4.002740" },
-                { "5Y", "2008-02-29", "2013-02-28", "ACT_365", "1826", "5.002740" },
-                { "7Y", "2008-02-29", "2015-02-27", "ACT_365", "2555", "7.000000" },
-                { "10Y", "2008-02-29", "2018-02-28", "ACT_365", "3652", "10.005479" },
-                { "15Y", "2008-02-29", "2023-02-28", "ACT_365", "5478", "15.008219" },
-                { "20Y", "2008-02-29", "2028-02-29", "ACT_365", "7305", "20.013699" },
-                { "30Y", "2008-02-29", "2038-02-26", "ACT_365", "10955", "30.013699" },
-                // start date end of month...
-                { "0D", "1998-12-31", "1998-12-31", "ACT_365", "0", "0.00" },
-                { "1D", "1998-12-31", "1999-01-01", "ACT_365", "1", "0.002740" },
-                { "1W", "1998-12-31", "1999-01-07", "ACT_365", "7", "0.019178" },
-                { "1M", "1998-12-31", "1999-01-29", "ACT_365", "29", "0.079452" },
-                { "3M", "1998-12-31", "1999-03-31", "ACT_365", "90", "0.246575" },
-                { "6M", "1998-12-31", "1999-06-30", "ACT_365", "181", "0.495890" },
-                { "9M", "1998-12-31", "1999-09-30", "ACT_365", "273", "0.747945" },
-                { "1Y", "1998-12-31", "1999-12-31", "ACT_365", "365", "1.000000" },
-                { "2Y", "1998-12-31", "2000-12-29", "ACT_365", "729", "1.997260" },
-                { "3Y", "1998-12-31", "2001-12-31", "ACT_365", "1096", "3.002740" },
-                { "4Y", "1998-12-31", "2002-12-31", "ACT_365", "1461", "4.002740" },
-                { "5Y", "1998-12-31", "2003-12-31", "ACT_365", "1826", "5.002740" },
-                { "7Y", "1998-12-31", "2005-12-30", "ACT_365", "2556", "7.002740" },
-                { "10Y", "1998-12-31", "2008-12-31", "ACT_365", "3653", "10.008219" },
-                { "15Y", "1998-12-31", "2013-12-31", "ACT_365", "5479", "15.010959" },
-                { "20Y", "1998-12-31", "2018-12-31", "ACT_365", "7305", "20.013699" },
-                { "30Y", "1998-12-31", "2028-12-29", "ACT_365", "10956", "30.016438" }
-        // end of set
-        };
+            // name start end period dayDiff yearDiff
+            { "0D", "2006-08-08", "2006-08-08", "ACT_365", "0", "0.00" },
+            { "1D", "2006-08-08", "2006-08-09", "ACT_365", "1", "0.002740" },
+            { "1W", "2006-08-08", "2006-08-15", "ACT_365", "7", "0.019178" },
+            { "1M", "2006-08-08", "2006-09-08", "ACT_365", "31", "0.084932" },
+            { "3M", "2006-08-08", "2006-11-08", "ACT_365", "92", "0.252055" },
+            { "6M", "2006-08-08", "2007-02-08", "ACT_365", "184", "0.504110" },
+            { "9M", "2006-08-08", "2007-05-08", "ACT_365", "273", "0.747945" },
+            { "1Y", "2006-08-08", "2007-08-08", "ACT_365", "365", "1.000000" },
+            { "2Y", "2006-08-08", "2008-08-08", "ACT_365", "731", "2.002740" },
+            { "3Y", "2006-08-08", "2009-08-10", "ACT_365", "1098", "3.008219" },
+            { "4Y", "2006-08-08", "2010-08-09", "ACT_365", "1462", "4.005479" },
+            { "5Y", "2006-08-08", "2011-08-08", "ACT_365", "1826", "5.002740" },
+            { "7Y", "2006-08-08", "2013-08-08", "ACT_365", "2557", "7.005479" },
+            { "10Y", "2006-08-08", "2016-08-08", "ACT_365", "3653", "10.008219" },
+            { "15Y", "2006-08-08", "2021-08-09", "ACT_365", "5480", "15.013699" },
+            { "20Y", "2006-08-08", "2026-08-10", "ACT_365", "7307", "20.019178" },
+            { "30Y", "2006-08-08", "2036-08-08", "ACT_365", "10958", "30.021918" },
+            // leap year - funny date...
+            { "0D", "2008-02-29", "2008-02-29", "ACT_365", "0", "0.00" },
+            { "1D", "2008-02-29", "2008-03-03", "ACT_365", "3", "0.008219" },
+            { "1W", "2008-02-29", "2008-03-07", "ACT_365", "7", "0.019178" },
+            { "1M", "2008-02-29", "2008-03-31", "ACT_365", "31", "0.084932" },
+            { "3M", "2008-02-29", "2008-05-29", "ACT_365", "90", "0.246575" },
+            { "6M", "2008-02-29", "2008-08-29", "ACT_365", "182", "0.498630" },
+            { "9M", "2008-02-29", "2008-11-28", "ACT_365", "273", "0.747945" },
+            { "1Y", "2008-02-29", "2009-02-27", "ACT_365", "364", "0.997260" },
+            { "2Y", "2008-02-29", "2010-02-26", "ACT_365", "728", "1.994521" },
+            { "3Y", "2008-02-29", "2011-02-28", "ACT_365", "1095", "3.000000" },
+            { "4Y", "2008-02-29", "2012-02-29", "ACT_365", "1461", "4.002740" },
+            { "5Y", "2008-02-29", "2013-02-28", "ACT_365", "1826", "5.002740" },
+            { "7Y", "2008-02-29", "2015-02-27", "ACT_365", "2555", "7.000000" },
+            { "10Y", "2008-02-29", "2018-02-28", "ACT_365", "3652", "10.005479" },
+            { "15Y", "2008-02-29", "2023-02-28", "ACT_365", "5478", "15.008219" },
+            { "20Y", "2008-02-29", "2028-02-29", "ACT_365", "7305", "20.013699" },
+            { "30Y", "2008-02-29", "2038-02-26", "ACT_365", "10955", "30.013699" },
+            // start date end of month...
+            { "0D", "1998-12-31", "1998-12-31", "ACT_365", "0", "0.00" },
+            { "1D", "1998-12-31", "1999-01-01", "ACT_365", "1", "0.002740" },
+            { "1W", "1998-12-31", "1999-01-07", "ACT_365", "7", "0.019178" },
+            { "1M", "1998-12-31", "1999-01-29", "ACT_365", "29", "0.079452" },
+            { "3M", "1998-12-31", "1999-03-31"...
 
[truncated message content] | 
| 
      
      
      From: <be...@us...> - 2006-09-05 16:05:38
       | 
| Revision: 112
          http://svn.sourceforge.net/objectlabkit/?rev=112&view=rev
Author:   benoitx
Date:     2006-09-05 08:52:39 -0700 (Tue, 05 Sep 2006)
Log Message:
-----------
Tidy up for consolidated javadoc and better site.
Modified Paths:
--------------
    trunk/common-build/project.xml
    trunk/datecalc-common/project.xml
    trunk/datecalc-jdk/project.xml
    trunk/datecalc-joda/project.xml
    trunk/src/site/algo.xml
    trunk/src/site/navigation.xml
Modified: trunk/common-build/project.xml
===================================================================
--- trunk/common-build/project.xml	2006-09-05 15:44:30 UTC (rev 111)
+++ trunk/common-build/project.xml	2006-09-05 15:52:39 UTC (rev 112)
@@ -10,7 +10,7 @@
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/3.0.0 http://maven.apache.org/maven-v3_0_0.xsd">
    <pomVersion>3</pomVersion>
-   <groupId>net.objectlab.kit</groupId>
+   <groupId>net.objectlab.kit.datecalc</groupId>
    <currentVersion>1.0</currentVersion>
    <organization>
       <name>ObjectLab Financial Ltd</name>
@@ -105,6 +105,21 @@
       <defaultGoal>kit:build</defaultGoal>
    </build>
 
+   <reports>
+      <report>maven-checkstyle-plugin</report>
+      <!--<report>maven-findbugs-plugin</report>-->
+      <report>maven-pmd-plugin</report>
+      <report>maven-simian-plugin</report>
+      <!--<report>maven-cobertura-plugin</report>-->
+      <!--<report>maven-qalab-plugin</report>-->
+      <report>maven-javadoc-plugin</report>
+      <report>maven-jdepend-plugin</report>
+      <report>maven-faq-plugin</report>
+      <report>maven-junit-report-plugin</report>
+      <report>maven-jxr-plugin</report>
+      <report>maven-tasklist-plugin</report>
+   </reports>
+
    <versions>
       <version>
          <id>1.0</id>
Modified: trunk/datecalc-common/project.xml
===================================================================
--- trunk/datecalc-common/project.xml	2006-09-05 15:44:30 UTC (rev 111)
+++ trunk/datecalc-common/project.xml	2006-09-05 15:52:39 UTC (rev 112)
@@ -12,7 +12,7 @@
    <extend>../common-build/project.xml</extend>
    <name>DateCalc Common</name>
    <artifactId>datecalc-common</artifactId>
-   <package>net.objectlab.kit.common</package>
+   <package>net.objectlab.kit.datecalc</package>
    <shortDescription>DateCalc Common library</shortDescription>
    <description>
       DateCalc Common library is the library used by both JDK and JODA
@@ -28,21 +28,6 @@
    </repository>
    <dependencies></dependencies>
 
-   <reports>
-      <report>maven-checkstyle-plugin</report>
-      <report>maven-findbugs-plugin</report>
-      <report>maven-pmd-plugin</report>
-      <report>maven-simian-plugin</report>
-      <report>maven-cobertura-plugin</report>
-      <report>maven-qalab-plugin</report>
-      <report>maven-ydoc-plugin</report>
-      <report>maven-jdepend-plugin</report>
-      <report>maven-faq-plugin</report>
-      <report>maven-junit-report-plugin</report>
-      <report>maven-jxr-plugin</report>
-      <report>maven-tasklist-plugin</report>
-   </reports>
-
    <build>
       <sourceDirectory>src/main/java</sourceDirectory>
       <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
Modified: trunk/datecalc-jdk/project.xml
===================================================================
--- trunk/datecalc-jdk/project.xml	2006-09-05 15:44:30 UTC (rev 111)
+++ trunk/datecalc-jdk/project.xml	2006-09-05 15:52:39 UTC (rev 112)
@@ -12,7 +12,7 @@
    <extend>../common-build/project.xml</extend>
    <name>DateCalc JDK</name>
    <artifactId>datecalc-jdk</artifactId>
-   <package>net.objectlab.kit</package>
+   <package>net.objectlab.kit.datecalc</package>
    <shortDescription>DateCalc JDK library</shortDescription>
    <description>
       This library provides pure JDK implementation of the Date
@@ -35,20 +35,6 @@
       </dependency>
    </dependencies>
 
-   <reports>
-      <report>maven-checkstyle-plugin</report>
-      <report>maven-findbugs-plugin</report>
-      <report>maven-pmd-plugin</report>
-      <report>maven-simian-plugin</report>
-      <report>maven-cobertura-plugin</report>
-      <report>maven-qalab-plugin</report>
-      <report>maven-ydoc-plugin</report>
-      <report>maven-jdepend-plugin</report>
-      <report>maven-faq-plugin</report>
-      <report>maven-junit-report-plugin</report>
-      <report>maven-jxr-plugin</report>
-      <report>maven-tasklist-plugin</report>
-   </reports>
 
    <build>
       <sourceDirectory>src/main/java</sourceDirectory>
Modified: trunk/datecalc-joda/project.xml
===================================================================
--- trunk/datecalc-joda/project.xml	2006-09-05 15:44:30 UTC (rev 111)
+++ trunk/datecalc-joda/project.xml	2006-09-05 15:52:39 UTC (rev 112)
@@ -12,7 +12,7 @@
     <extend>../common-build/project.xml</extend>
     <name>DateCalc Joda</name>
     <artifactId>datecalc-joda</artifactId>
-    <package>net.objectlab.kit</package>
+    <package>net.objectlab.kit.datecalc</package>
     <shortDescription>DateCalc JDK library</shortDescription>
     <description>This library provides a JODA-time implementation of the Date Calculator.</description>
     <repository>
@@ -34,22 +34,7 @@
         </dependency>
     </dependencies>
 
-    <reports>
-        <report>maven-checkstyle-plugin</report>
-        <report>maven-findbugs-plugin</report>
-        <report>maven-pmd-plugin</report>
-        <report>maven-simian-plugin</report>
-        <report>maven-cobertura-plugin</report>
-        <report>maven-qalab-plugin</report>
-        <report>maven-ydoc-plugin</report>
-        <report>maven-jdepend-plugin</report>
-        <report>maven-faq-plugin</report>
-         <report>maven-junit-report-plugin</report>
-        <report>maven-jxr-plugin</report>
-        <report>maven-tasklist-plugin</report>
-    </reports>
-
-    <build>
+    <build>
         <sourceDirectory>src/main/java</sourceDirectory>
         <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
         <!-- TODO: to be removed as it is not generic -->
Modified: trunk/src/site/algo.xml
===================================================================
--- trunk/src/site/algo.xml	2006-09-05 15:44:30 UTC (rev 111)
+++ trunk/src/site/algo.xml	2006-09-05 15:52:39 UTC (rev 112)
@@ -15,17 +15,17 @@
     <img src="forward.png"/>
     </subsection>
     
-    <subsection name="backward">
-    <p>If the date is a non-working day, move backward to the previous working day.</p>
-    <img src="backward.png"/>
-    </subsection>
-    
     <subsection name="Modified Following">
     <p>If the date is a non-working day, move forward to the next working day, 
     UNLESS it crosses over a new month, in which case we revert to find the last working day of the current month.</p>
     <img src="modif-following.png"/>
     </subsection>
     
+    <subsection name="Backward">
+    <p>If the date is a non-working day, move backward to the previous working day.</p>
+    <img src="backward.png"/>
+    </subsection>
+    
     <subsection name="Modified Preceeding">
     <p>If the date is a non-working day, move backward to the previous working day, 
     	UNLESS it crosses over a new month, in which case we revert to find the next working day of the current month.</p>
Modified: trunk/src/site/navigation.xml
===================================================================
--- trunk/src/site/navigation.xml	2006-09-05 15:44:30 UTC (rev 111)
+++ trunk/src/site/navigation.xml	2006-09-05 15:52:39 UTC (rev 112)
@@ -13,6 +13,7 @@
       <item name="DateCalc JDK" href="multiproject/datecalc-jdk/index.html"/>
       <item name="DateCalc JODA" href="multiproject/datecalc-joda/index.html"/>
       <item name="Holiday Handler" href="algo.html"/>
+      <item name="JavaDoc" href="apidocs/index.html"/>
     </menu>
 <!--
     <menu name="Related Projects">
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <be...@us...> - 2006-09-05 20:36:38
       | 
| Revision: 115
          http://svn.sourceforge.net/objectlabkit/?rev=115&view=rev
Author:   benoitx
Date:     2006-09-05 13:34:26 -0700 (Tue, 05 Sep 2006)
Log Message:
-----------
updated by latest build.
Modified Paths:
--------------
    trunk/datecalc-jdk/qalab.xml
    trunk/datecalc-joda/qalab.xml
Modified: trunk/datecalc-jdk/qalab.xml
===================================================================
--- trunk/datecalc-jdk/qalab.xml	2006-09-05 20:23:07 UTC (rev 114)
+++ trunk/datecalc-jdk/qalab.xml	2006-09-05 20:34:26 UTC (rev 115)
@@ -53,8 +53,8 @@
         <summaryresult date="2006-09-04" filecount="16" statvalue="77" type="cobertura-line"/>
         <summaryresult date="2006-09-04" filecount="16" statvalue="79" type="cobertura-branch"/>
         <summaryresult date="2006-09-05" filecount="16" statvalue="14" type="checkstyle"/>
-        <summaryresult date="2006-09-05" filecount="24" statvalue="63" type="cobertura-line"/>
-        <summaryresult date="2006-09-05" filecount="24" statvalue="88" type="cobertura-branch"/>
+        <summaryresult date="2006-09-05" filecount="15" statvalue="83" type="cobertura-line"/>
+        <summaryresult date="2006-09-05" filecount="15" statvalue="87" 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"/>
@@ -251,7 +251,7 @@
         <result date="2006-09-02" statvalue="84" type="cobertura-branch"/>
         <result date="2006-09-04" statvalue="79" type="cobertura-line"/>
         <result date="2006-09-04" statvalue="84" type="cobertura-branch"/>
-        <result date="2006-09-05" statvalue="78" type="cobertura-line"/>
+        <result date="2006-09-05" statvalue="79" type="cobertura-line"/>
         <result date="2006-09-05" statvalue="84" type="cobertura-branch"/>
     </file>
     <file
@@ -321,7 +321,7 @@
         id="net_objectlab_kit_datecalc_jdk_JdkDateBaseDateCalculator.java" path="net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java">
         <result date="2006-09-04" statvalue="91" type="cobertura-line"/>
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
-        <result date="2006-09-05" statvalue="92" type="cobertura-line"/>
+        <result date="2006-09-05" statvalue="91" type="cobertura-line"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
     </file>
     <file id="net_objectlab_kit_datecalc_jdk_JdkDateCalculator.java" path="net/objectlab/kit/datecalc/jdk/JdkDateCalculator.java">
@@ -338,38 +338,20 @@
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
-        id="net_objectlab_kit_datecalc_jdk_AbstractDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java">
-        <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
-    </file>
+        id="net_objectlab_kit_datecalc_jdk_AbstractDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java"/>
     <file
-        id="net_objectlab_kit_datecalc_jdk_DateCalculatorFactoryTest.java" path="net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java">
-        <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
-    </file>
+        id="net_objectlab_kit_datecalc_jdk_DateCalculatorFactoryTest.java" path="net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java"/>
     <file
-        id="net_objectlab_kit_datecalc_jdk_DatePeriodCountCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java">
-        <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
-    </file>
-    <file id="net_objectlab_kit_datecalc_jdk_IMMDateTest.java" path="net/objectlab/kit/datecalc/jdk/IMMDateTest.java">
-        <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
-    </file>
+        id="net_objectlab_kit_datecalc_jdk_DatePeriodCountCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java"/>
+    <file id="net_objectlab_kit_datecalc_jdk_IMMDateTest.java" path="net/objectlab/kit/datecalc/jdk/IMMDateTest.java"/>
     <file
-        id="net_objectlab_kit_datecalc_jdk_JdkDateBackwardDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java">
-        <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
-    </file>
+        id="net_objectlab_kit_datecalc_jdk_JdkDateBackwardDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java"/>
     <file
-        id="net_objectlab_kit_datecalc_jdk_JdkDateDateCalculatorCombinationTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java">
-        <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
-    </file>
+        id="net_objectlab_kit_datecalc_jdk_JdkDateDateCalculatorCombinationTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java"/>
     <file
-        id="net_objectlab_kit_datecalc_jdk_JdkDateForwardDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java">
-        <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
-    </file>
+        id="net_objectlab_kit_datecalc_jdk_JdkDateForwardDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java"/>
     <file
-        id="net_objectlab_kit_datecalc_jdk_JdkDateModifiedFollowingDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java">
-        <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
-    </file>
+        id="net_objectlab_kit_datecalc_jdk_JdkDateModifiedFollowingDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java"/>
     <file
-        id="net_objectlab_kit_datecalc_jdk_JdkDateModifiedPreceedingDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java">
-        <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
-    </file>
+        id="net_objectlab_kit_datecalc_jdk_JdkDateModifiedPreceedingDateCalculatorTest.java" path="net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java"/>
 </qalab>
Modified: trunk/datecalc-joda/qalab.xml
===================================================================
--- trunk/datecalc-joda/qalab.xml	2006-09-05 20:23:07 UTC (rev 114)
+++ trunk/datecalc-joda/qalab.xml	2006-09-05 20:34:26 UTC (rev 115)
@@ -398,7 +398,7 @@
         <result date="2006-09-02" statvalue="83" type="cobertura-branch"/>
         <result date="2006-09-04" statvalue="64" type="cobertura-line"/>
         <result date="2006-09-04" statvalue="71" type="cobertura-branch"/>
-        <result date="2006-09-05" statvalue="66" type="cobertura-line"/>
+        <result date="2006-09-05" statvalue="64" type="cobertura-line"/>
         <result date="2006-09-05" statvalue="71" type="cobertura-branch"/>
     </file>
     <file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <be...@us...> - 2006-09-06 09:58:24
       | 
| Revision: 118
          http://svn.sourceforge.net/objectlabkit/?rev=118&view=rev
Author:   benoitx
Date:     2006-09-06 02:58:04 -0700 (Wed, 06 Sep 2006)
Log Message:
-----------
Add doco (package) and clarify some use on home page.
Modified Paths:
--------------
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateTest.java
    trunk/src/site/index.xml
Added Paths:
-----------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/package.html
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/package.html
Added: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/package.html
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/package.html	                        (rev 0)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/package.html	2006-09-06 09:58:04 UTC (rev 118)
@@ -0,0 +1,6 @@
+<html>
+<body>
+<p>This package provides functionalities that are used by both JDK and Joda implementation,
+it is not released alone but included in the datecalc-jdk or datecalc-joda JARs.</p>
+</body>
+</html>
\ No newline at end of file
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-05 23:24:58 UTC (rev 117)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-06 09:58:04 UTC (rev 118)
@@ -13,15 +13,12 @@
 import junit.framework.TestCase;
 
 public class UtilsTest extends TestCase {
+    private SimpleDateFormat sdf;
 
-    SimpleDateFormat sdf;
+    private Set<Calendar> calendarSet;
 
-    Calendar cal;
+    private Set<Date> dateSet;
 
-    Set<Calendar> calendarSet;
-
-    Set<Date> dateSet;
-
     @Override
     protected void setUp() throws Exception {
         sdf = new SimpleDateFormat("yyyy-MM-dd");
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/package.html
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/package.html	                        (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/package.html	2006-09-06 09:58:04 UTC (rev 118)
@@ -0,0 +1,6 @@
+<html>
+<body>
+<p>This package provides a pure JDK implementation of the DateCalculator for both Calendar and Date, it is
+released as a standalone datecalc-jdk JAR.</p>
+</body>
+</html>
\ No newline at end of file
Modified: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateTest.java	2006-09-05 23:24:58 UTC (rev 117)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateTest.java	2006-09-06 09:58:04 UTC (rev 118)
@@ -4,7 +4,6 @@
 import net.objectlab.kit.datecalc.common.DateCalculator;
 import net.objectlab.kit.datecalc.common.HolidayHandlerType;
 
-import org.joda.time.LocalDate;
 import org.joda.time.YearMonthDay;
 
 public class YearMonthDayIMMDateTest extends AbstractIMMDateTest<YearMonthDay> {
Modified: trunk/src/site/index.xml
===================================================================
--- trunk/src/site/index.xml	2006-09-05 23:24:58 UTC (rev 117)
+++ trunk/src/site/index.xml	2006-09-06 09:58:04 UTC (rev 118)
@@ -79,22 +79,26 @@
     	should get its own!</li>
     	<li>when you get a DateCalculator, you can set the startDate, this sets the currentDate too.  The startDate does not move.  The current date is
     	the result of your calculations.  If the startDate is a non-working day, it may be moved automatically according to the HolidayHandler.</li>
-    	<li>when you call addDays(..), moveByBusinessDays(..) the currentDate is moved in the Calculator.</li>
+    	<li>when you call moveByDays(..), moveByBusinessDays(..) the currentDate is moved in the Calculator.</li>
     </ul>
     <pre>
     	// create or get the Holidays
         final Set<LocalDate> holidays = new HashSet<LocalDate>();
         holidays.add(new LocalDate("2006-08-28"));
         
+        // register the holidays (any calculator with name "UK" asked from now on will receive a reference to this set
         DefaultDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", holidays);
 
+	// ask for a LocalDate calculator for "UK" (even if a new set of holidays is registered, this one calculator is not affected
         DateCalculator<LocalDate> cal = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", HolidayHandlerType.FORWARD);
 	cal.setStartDate(new LocalDate("2006-08-28)); // this also sets the current business date.
 	
 	// the startDate stays 28 Aug 06 BUT the currentDate has moved, 
 	// according to Forward handler to 29 Aug 2006.
-	cal.getStartDate();   // 28 Aug 06
-	cal.getCurrentBusinessDate(); // 29 Aug 06   
+	LocalDate start = cal.getStartDate();   // 28 Aug 06
+	LocalDate current = cal.getCurrentBusinessDate(); // 29 Aug 06
+	
+	LocalDate newCurrent = cal.moveByDays(4).getCurrentBusinessDate(); // 4 Sept 06 due to weekend!
     </pre>
    
     
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <be...@us...> - 2006-09-06 12:29:07
       | 
| Revision: 119
          http://svn.sourceforge.net/objectlabkit/?rev=119&view=rev
Author:   benoitx
Date:     2006-09-06 05:28:21 -0700 (Wed, 06 Sep 2006)
Log Message:
-----------
Separated the IMM calculator from the main DateCalendar, as suggested by Marcin (not everyone would use this).
It is implemented in similar fashion to the PeriodCountCalculator.
Modified Paths:
--------------
    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/DateCalculator.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/PeriodCountCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/StandardTenor.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/TenorCode.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/TenorTest.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/JdkCalendarBaseDateCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java
    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/LocalDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateIMMDateTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateTest.java
Added Paths:
-----------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractIMMDateCalculator.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/Version.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.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/JdkCalendarIMMDateCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarPeriodCountCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateIMMDateCalculator.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarIMMDateTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateIMMDateTest.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateIMMDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateCalculator.java
Removed Paths:
-------------
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/IMMDateTest.java
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 09:58:04 UTC (rev 118)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -19,7 +19,6 @@
 
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
 /**
@@ -36,9 +35,9 @@
  */
 public abstract class AbstractDateCalculator<E> implements DateCalculator<E> {
 
-    protected static final int MONTHS_IN_QUARTER = 3;
+//    protected static final int MONTHS_IN_QUARTER = 3;
 
-    protected static final int MONTH_IN_YEAR = 12;
+//    protected static final int MONTH_IN_YEAR = 12;
 
     protected static final int DAYS_IN_WEEK = 7;
 
@@ -111,9 +110,6 @@
             return moveByDays(tenor.getUnits());
         case WEEK:
             return moveByDays(tenor.getUnits() * DAYS_IN_WEEK);
-        case IMM:
-            setCurrentBusinessDate(getNextIMMDate());
-            return this;
         default:
             throw new UnsupportedOperationException("Sorry not yet...");
         }
@@ -212,57 +208,6 @@
         return cal;
     }
 
-    /**
-     * @return the next IMMDate based on current date.
-     */
-    public E getNextIMMDate() {
-        return getNextIMMDate(true, currentBusinessDate, IMMPeriod.QUARTERLY);
-    }
-
-    /**
-     * @param period
-     *            specify when the "next" IMM is, if quarterly then it is the
-     *            conventional algorithm.
-     * @return the next IMMDate based on current date.
-     */
-    public E getNextIMMDate(final IMMPeriod period) {
-        return getNextIMMDate(true, currentBusinessDate, period);
-    }
-
-    /**
-     * @return the previous IMMDate based on current date.
-     */
-    public E getPreviousIMMDate() {
-        return getNextIMMDate(false, currentBusinessDate, IMMPeriod.QUARTERLY);
-    }
-
-    /**
-     * @param period
-     *            specify when the "previous" IMM is, if quarterly then it is
-     *            the conventional algorithm.
-     * @return the previous IMMDate based on current date.
-     */
-    public E getPreviousIMMDate(final IMMPeriod period) {
-        return getNextIMMDate(false, currentBusinessDate, period);
-    }
-
-    /**
-     * Returns a list of IMM dates between 2 dates, it will exclude the start
-     * date if it is an IMM date but would include the end date if it is an IMM
-     * (same as IMMPeriod.QUARTERLY).
-     * 
-     * @param start
-     *            start of the interval, excluded
-     * @param end
-     *            end of the interval, may be included.
-     * @return list of IMM dates
-     */
-    public List<E> getIMMDates(final E start, final E end) {
-        return getIMMDates(start, end, IMMPeriod.QUARTERLY);
-    }
-
-    protected abstract E getNextIMMDate(final boolean requestNextIMM, final E theStartDate, final IMMPeriod period);
-
     protected abstract DateCalculator<E> createNewCalcultaor(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 09:58:04 UTC (rev 118)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -33,9 +33,9 @@
 
     protected final ConcurrentMap<String, Set<E>> holidays = new ConcurrentHashMap<String, Set<E>>();
 
-    public abstract DateCalculator<E> getDateCalculator(String name, String holidayHandlerType);
+//    public abstract DateCalculator<E> getDateCalculator(String name, String holidayHandlerType);
 
-    public abstract PeriodCountCalculator<E> getPeriodCountCalculator();
+//    public abstract PeriodCountCalculator<E> getPeriodCountCalculator();
 
     /**
      * Use this method to register a set of holidays for a given calendar, it
@@ -51,5 +51,4 @@
     public void registerHolidays(final String name, final Set<E> holidaysSet) {
         this.holidays.put(name, holidaysSet);
     }
-
 }
Added: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractIMMDateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractIMMDateCalculator.java	                        (rev 0)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractIMMDateCalculator.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -0,0 +1,96 @@
+/*
+ * $Id: AbstractDateCalculator.java 108 2006-09-05 10:13:01Z benoitx $
+ * 
+ * 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.common;
+
+import java.util.List;
+
+/**
+ * Abstract implementation in order to encapsulate all the common functionality
+ * between Jdk and Joda implementations. It is parametrized on <code><E></code>
+ * but basically <code>Date</code> and <code>LocalDate</code> are the only
+ * viable values for it for now.
+ * 
+ * @author Marcin Jekot
+ * @author $LastChangedBy: benoitx $
+ * @version $Revision: 108 $ $Date: 2006-09-05 11:13:01 +0100 (Tue, 05 Sep 2006) $
+ * 
+ * @param <E>
+ */
+public abstract class AbstractIMMDateCalculator<E> implements IMMDateCalculator<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;
+
+    /**
+     * @param startDate
+     * @return the next IMMDate based on current date.
+     */
+    public E getNextIMMDate(final E startDate) {
+        return getNextIMMDate(true, startDate, IMMPeriod.QUARTERLY);
+    }
+
+    /**
+     * @param startDate
+     * @param period
+     *            specify when the "next" IMM is, if quarterly then it is the
+     *            conventional algorithm.
+     * @return the next IMMDate based on current date.
+     */
+    public E getNextIMMDate(final E startDate, final IMMPeriod period) {
+        return getNextIMMDate(true, startDate, period);
+    }
+
+    /**
+     * @param startDate
+     * @return the previous IMMDate based on current date.
+     */
+    public E getPreviousIMMDate(final E startDate) {
+        return getNextIMMDate(false, startDate, IMMPeriod.QUARTERLY);
+    }
+
+    /**
+     * @param startDate
+     * @param period
+     *            specify when the "previous" IMM is, if quarterly then it is
+     *            the conventional algorithm.
+     * @return the previous IMMDate based on current date.
+     */
+    public E getPreviousIMMDate(final E startDate, final IMMPeriod period) {
+        return getNextIMMDate(false, startDate, period);
+    }
+
+    /**
+     * Returns a list of IMM dates between 2 dates, it will exclude the start
+     * date if it is an IMM date but would include the end date if it is an IMM
+     * (same as IMMPeriod.QUARTERLY).
+     * 
+     * @param start
+     *            start of the interval, excluded
+     * @param end
+     *            end of the interval, may be included.
+     * @return list of IMM dates
+     */
+    public List<E> getIMMDates(final E start, final E end) {
+        return getIMMDates(start, end, IMMPeriod.QUARTERLY);
+    }
+
+    protected abstract E getNextIMMDate(final boolean requestNextIMM, final E theStartDate, final IMMPeriod period);
+}
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java	2006-09-06 09:58:04 UTC (rev 118)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -17,7 +17,6 @@
  */
 package net.objectlab.kit.datecalc.common;
 
-import java.util.List;
 import java.util.Set;
 
 /**
@@ -193,81 +192,4 @@
      *         calendar.moveByTenor(StandardTenor.T_2M).getCurrentBusinessDate();)
      */
     DateCalculator<E> moveByTenor(final Tenor tenor);
-
-    /**
-     * Checks if a given date is an official IMM Date (3rd Wednesdays of
-     * March/June/Sept/Dec.
-     * 
-     * @param date
-     * @return true if that date is an IMM date.
-     */
-    boolean isIMMDate(E date);
-
-    /**
-     * Starting from the current business date, it will return the next IMM
-     * Date, even if the current business date is an IMM date (same as calling
-     * getNextIMMDate(IMMPeriod.QUARTERLY)).
-     * 
-     * @return the next IMMDate based on current business date.
-     */
-    E getNextIMMDate();
-
-    /**
-     * Starting from the current business date, it will return the next IMM Date
-     * based on the IMMPeriod, even if the current business date is an IMM date.
-     * 
-     * @param period
-     *            specify when the "next" IMM is, if quarterly then it is the
-     *            conventional algorithm.
-     * @return the next IMMDate based on current date.
-     */
-    E getNextIMMDate(IMMPeriod period);
-
-    /**
-     * Starting from the current business date, it will return the previous IMM
-     * Date, even if the current business date is an IMM date.
-     * 
-     * @return the previous IMMDate based on current date.
-     */
-    E getPreviousIMMDate();
-
-    /**
-     * Starting from the current business date, it will return the previous IMM
-     * Date based on the IMMPeriod, even if the current business date is an IMM
-     * date.
-     * 
-     * @param period
-     *            specify when the "previous" IMM is, if quarterly then it is
-     *            the conventional algorithm.
-     * @return the previous IMMDate based on current date.
-     */
-    E getPreviousIMMDate(IMMPeriod period);
-
-    /**
-     * Returns a list of IMM dates between 2 dates, it will exclude the start
-     * date if it is an IMM date but would include the end date if it is an IMM
-     * (same as as calling getIMMDates(start,end,IMMPeriod.QUARTERLY)).
-     * 
-     * @param start
-     *            start of the interval, excluded
-     * @param end
-     *            end of the interval, may be included.
-     * @return list of IMM dates
-     */
-    List<E> getIMMDates(final E start, final E end);
-
-    /**
-     * Returns a list of IMM dates between 2 dates, it will exclude the start
-     * date if it is an IMM date but would include the end date if it is an IMM.
-     * 
-     * @param start
-     *            start of the interval, excluded
-     * @param end
-     *            end of the interval, may be included.
-     * @param period
-     *            specify when the "next" IMM is, if quarterly then it is the
-     *            conventional algorithm.
-     * @return list of IMM dates
-     */
-    List<E> getIMMDates(final E start, final E end, final IMMPeriod period);
 }
\ No newline at end of file
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 09:58:04 UTC (rev 118)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -60,4 +60,9 @@
      * @return a PeriodCountCalculator
      */
     PeriodCountCalculator<E> getPeriodCountCalculator();
+    
+    /**
+     * @return an IMMDateCalculator
+     */
+    IMMDateCalculator<E> getIMMDateCalculator();
 }
Added: 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	                        (rev 0)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMDateCalculator.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -0,0 +1,109 @@
+/*
+ * $Id: DateCalculator.java 109 2006-09-05 11:16:39Z benoitx $
+ * 
+ * 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.common;
+
+import java.util.List;
+
+/**
+ * The IMMDates are defined 
+ * 
+ * @author Benoit Xhenseval
+ * @author $LastChangedBy: benoitx $
+ * @version $Revision: 109 $ $Date: 2006-09-05 12:16:39 +0100 (Tue, 05 Sep 2006) $
+ */
+public interface IMMDateCalculator<E> {
+    /**
+     * Checks if a given date is an official IMM Date (3rd Wednesdays of
+     * March/June/Sept/Dec.
+     * 
+     * @param date
+     * @return true if that date is an IMM date.
+     */
+    boolean isIMMDate(final E date);
+
+    /**
+     * Starting from the current business date, it will return the next IMM
+     * Date, even if the current business date is an IMM date (same as calling
+     * getNextIMMDate(IMMPeriod.QUARTERLY)).
+     * 
+     * @param startDate
+     * @return the next IMMDate based on current business date.
+     */
+    E getNextIMMDate(final E startDate);
+
+    /**
+     * Starting from the current business date, it will return the next IMM Date
+     * based on the IMMPeriod, even if the current business date is an IMM date.
+     * 
+     * @param startDate
+     * @param period
+     *            specify when the "next" IMM is, if quarterly then it is the
+     *            conventional algorithm.
+     * @return the next IMMDate based on current date.
+     */
+    E getNextIMMDate(final E startDate, final IMMPeriod period);
+
+    /**
+     * Starting from the current business date, it will return the previous IMM
+     * Date, even if the current business date is an IMM date.
+     * 
+     * @param startDate
+     * @return the previous IMMDate based on current date.
+     */
+    E getPreviousIMMDate(final E startDate);
+
+    /**
+     * Starting from the current business date, it will return the previous IMM
+     * Date based on the IMMPeriod, even if the current business date is an IMM
+     * date.
+     * 
+     * @param period
+     *            specify when the "previous" IMM is, if quarterly then it is
+     *            the conventional algorithm.
+     * @return the previous IMMDate based on current date.
+     */
+    E getPreviousIMMDate(final E startDate, final IMMPeriod period);
+
+    /**
+     * Returns a list of IMM dates between 2 dates, it will exclude the start
+     * date if it is an IMM date but would include the end date if it is an IMM
+     * (same as as calling getIMMDates(start,end,IMMPeriod.QUARTERLY)).
+     * 
+     * @param start
+     *            start of the interval, excluded
+     * @param end
+     *            end of the interval, may be included.
+     * @return list of IMM dates
+     */
+    List<E> getIMMDates(final E start, final E end);
+
+    /**
+     * Returns a list of IMM dates between 2 dates, it will exclude the start
+     * date if it is an IMM date but would include the end date if it is an IMM.
+     * 
+     * @param start
+     *            start of the interval, excluded
+     * @param end
+     *            end of the interval, may be included.
+     * @param period
+     *            specify when the "next" IMM is, if quarterly then it is the
+     *            conventional algorithm.
+     * @return list of IMM dates
+     */
+    List<E> getIMMDates(final E start, final E end, final IMMPeriod period);
+}
\ No newline at end of file
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 09:58:04 UTC (rev 118)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/PeriodCountCalculator.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -28,17 +28,17 @@
  */
 public interface PeriodCountCalculator<E> {
 
-    final int YEAR_360 = 360;
+    int YEAR_360 = 360;
 
-    final int MONTHS_IN_YEAR = 12;
+    int MONTHS_IN_YEAR = 12;
 
-    final double YEAR_365_0 = 365.0;
+    double YEAR_365_0 = 365.0;
 
-    final double YEAR_360_0 = 360.0;
+    double YEAR_360_0 = 360.0;
 
-    final int MONTH_31_DAYS = 31;
+    int MONTH_31_DAYS = 31;
 
-    final int MONTH_30_DAYS = 30;
+    int MONTH_30_DAYS = 30;
 
     int dayDiff(final E start, final E end, PeriodCountBasis basis);
 
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/StandardTenor.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/StandardTenor.java	2006-09-06 09:58:04 UTC (rev 118)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/StandardTenor.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -69,6 +69,4 @@
     public static final Tenor T_30Y = new Tenor(30, TenorCode.YEAR);
 
     public static final Tenor T_50Y = new Tenor(50, TenorCode.YEAR);
-
-    public static final Tenor IMM = new Tenor(0, TenorCode.IMM);
 }
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/TenorCode.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/TenorCode.java	2006-09-06 09:58:04 UTC (rev 118)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/TenorCode.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -17,7 +17,7 @@
 
 public enum TenorCode {
     OVERNIGHT("ON", false), TOMNEXT("TN", false), SPOT("SP", false), SPOTNEXT("SN", false), SPOTWEEK("SW", false), DAY("D", true), WEEK(
-            "W", true), MONTH("M", true), YEAR("Y", true), IMM("IMM", false);
+            "W", true), MONTH("M", true), YEAR("Y", true);
 
     private final String code;
 
Added: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Version.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Version.java	                        (rev 0)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Version.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -0,0 +1,68 @@
+/*
+ * $Id: org.eclipse.jdt.ui.prefs 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.common;
+
+
+import java.io.*;
+
+/**
+ * 
+ * @author xhensevb
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 99 $ $Date: 2006-09-04 21:30:25 +0100 (Mon, 04 Sep 2006) $
+ * 
+ */
+public class Version {
+    public static void main(String[] args) throws Exception {
+        if (args.length != 1) {
+            System.err.println("Usage: java version <.class file>");
+            System.exit(1);
+        }
+
+        if (!new File(args[0]).exists()) {
+            System.err.println(args[0] + " does not exist!");
+            System.exit(2);
+        }
+
+        DataInputStream dis = new DataInputStream(new FileInputStream(args[0]));
+        int magic = dis.readInt();
+        if (magic != 0xcafebabe) {
+            System.err.println(args[0] + " is not a .class file");
+            System.exit(3);
+        }
+
+        int minor = dis.readShort();
+        int major = dis.readShort();
+        System.out.println("class file version is " + major + "." + minor);
+
+        String version = null;
+
+        if (major < 48) {
+            version = "1.3.1";
+        } else if (major == 48) {
+            version = "1.4.2";
+        } else if (major == 49) {
+            version = "1.5";
+        } else if (major == 50) {
+            version = "6";
+        } else {
+            version = "7";
+        }
+        System.out.println("You need to use JDK " + version + " or above");
+    }
+}
\ No newline at end of file
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java	2006-09-06 09:58:04 UTC (rev 118)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java	2006-09-06 12:28:21 UTC (rev 119)
@@ -7,145 +7,135 @@
 
 public abstract class AbstractIMMDateTest<E> extends TestCase {
 
-    private DateCalculator<E> cal;
+    private IMMDateCalculator<E> cal;
 
     public void setUp() {
         cal = getDateCalculator("bla");
     }
 
-    protected abstract DateCalculator<E> getDateCalculator(String name);
+    protected abstract IMMDateCalculator<E> getDateCalculator(String name);
 
     protected abstract E parseDate(String string);
 
-    private void checkImm(final DateCalculator<E> cal, final E date, final boolean expected) {
+    private void checkImm(final IMMDateCalculator<E> cal, final E date, final boolean expected) {
         assertEquals("check " + date, expected, cal.isIMMDate(date));
     }
 
-    public void testSanityCheck() {
-        Assert.assertEquals("Name", "bla", cal.getName());
-        Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
-    }
-
     public void testNextIMM() {
-        final E startDate = parseDate("2006-08-01");
-        cal.setStartDate(startDate);
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+        E startDate = parseDate("2006-08-01");
+        Assert.assertEquals("From " + startDate, parseDate("2006-09-20"), cal.getNextIMMDate(startDate));
 
-        cal.setStartDate(parseDate("2006-01-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
-        cal.setStartDate(parseDate("2006-02-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
-        cal.setStartDate(parseDate("2006-03-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
+        startDate = parseDate("2006-01-09");
+        Assert.assertEquals("From " + startDate, parseDate("2006-03-15"), cal.getNextIMMDate(startDate));
+        startDate = parseDate("2006-02-09");
+        Assert.assertEquals("From " + startDate, parseDate("2006-03-15"), cal.getNextIMMDate(startDate));
+        startDate = parseDate("2006-03-09");
+        Assert.assertEquals("From " + startDate, parseDate("2006-03-15"), cal.getNextIMMDate(startDate));
 
-        cal.setStartDate(parseDate("2006-04-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
-        cal.setStartDate(parseDate("2006-05-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
-        cal.setStartDate(parseDate("2006-06-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
+        startDate = parseDate("2006-04-09");
+        Assert.assertEquals("From " + startDate, parseDate("2006-06-21"), cal.getNextIMMDate(startDate));
+        startDate = parseDate("2006-05-09");
+        Assert.assertEquals("From " + startDate, parseDate("2006-06-21"), cal.getNextIMMDate(startDate));
+        startDate = parseDate("2006-06-09");
+        Assert.assertEquals("From " + startDate, parseDate("2006-06-21"), cal.getNextIMMDate(startDate));
 
-        cal.setStartDate(parseDate("2006-07-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-        cal.setStartDate(parseDate("2006-08-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-        cal.setStartDate(parseDate("2006-09-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
+        startDate = parseDate("2006-07-09");
+        Assert.assertEquals("From " + startDate, parseDate("2006-09-20"), cal.getNextIMMDate(startDate));
+        startDate = parseDate("2006-08-09");
+        Assert.assertEquals("From " + startDate, parseDate("2006-09-20"), cal.getNextIMMDate(startDate));
+        startDate = parseDate("2006-09-09");
+        Assert.assertEquals("From " + startDate, parseDate("2006-09-20"), cal.getNextIMMDate(startDate));
 
-        cal.setStartDate(parseDate("2006-10-09"));
-        Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-2...
 
[truncated message content] | 
| 
      
      
      From: <be...@us...> - 2006-09-06 14:02:24
       | 
| Revision: 120
          http://svn.sourceforge.net/objectlabkit/?rev=120&view=rev
Author:   benoitx
Date:     2006-09-06 07:00:18 -0700 (Wed, 06 Sep 2006)
Log Message:
-----------
More tests for jdk, bringing total to 123!
Modified Paths:
--------------
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
    trunk/datecalc-joda/qalab.xml
Added Paths:
-----------
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBackwardDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarForwardDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarModifiedFollowingDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarModifiedPreceedingDateCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarPeriodCountCalculatorTest.java
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDatePeriodCountCalculatorTest.java
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	2006-09-06 12:28:21 UTC (rev 119)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	2006-09-06 14:00:18 UTC (rev 120)
@@ -104,5 +104,4 @@
     public JdkCalendarBaseDateCalculator moveByBusinessDays(final int businessDays) {
         return (JdkCalendarBaseDateCalculator) super.moveByBusinessDays(businessDays);
     }
-
 }
Added: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBackwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBackwardDateCalculatorTest.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBackwardDateCalculatorTest.java	2006-09-06 14:00:18 UTC (rev 120)
@@ -0,0 +1,20 @@
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.AbstractBackwardDateCalculatorTest;
+import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
+
+public class JdkCalendarBackwardDateCalculatorTest extends AbstractBackwardDateCalculatorTest<Calendar> {
+
+    @Override
+    protected Calendar newDate(final String date) {
+        return Utils.createCalendar(date);
+    }
+
+    @Override
+    protected DateCalculatorFactory<Calendar> getDateCalculatorFactory() {
+        return DefaultJdkCalendarCalculatorFactory.getDefaultInstance();
+    }
+}
Added: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarForwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarForwardDateCalculatorTest.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarForwardDateCalculatorTest.java	2006-09-06 14:00:18 UTC (rev 120)
@@ -0,0 +1,21 @@
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.AbstractForwardDateCalculatorTest;
+import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
+
+public class JdkCalendarForwardDateCalculatorTest extends AbstractForwardDateCalculatorTest<Calendar> {
+
+    @Override
+    protected Calendar newDate(final String date) {
+        return Utils.createCalendar(date);
+    }
+
+    @Override
+    protected DateCalculatorFactory<Calendar> getDateCalculatorFactory() {
+        return DefaultJdkCalendarCalculatorFactory.getDefaultInstance();
+    }
+
+}
Added: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarModifiedFollowingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarModifiedFollowingDateCalculatorTest.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarModifiedFollowingDateCalculatorTest.java	2006-09-06 14:00:18 UTC (rev 120)
@@ -0,0 +1,21 @@
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.AbstractModifiedFollowingDateCalculatorTest;
+import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
+
+public class JdkCalendarModifiedFollowingDateCalculatorTest extends AbstractModifiedFollowingDateCalculatorTest<Calendar> {
+
+    @Override
+    protected Calendar newDate(final String date) {
+        return Utils.createCalendar(date);
+    }
+
+    @Override
+    protected DateCalculatorFactory<Calendar> getDateCalculatorFactory() {
+        return DefaultJdkCalendarCalculatorFactory.getDefaultInstance();
+    }
+
+}
Added: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarModifiedPreceedingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarModifiedPreceedingDateCalculatorTest.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarModifiedPreceedingDateCalculatorTest.java	2006-09-06 14:00:18 UTC (rev 120)
@@ -0,0 +1,21 @@
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.AbstractModifiedPreceedingDateCalculatorTest;
+import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
+
+public class JdkCalendarModifiedPreceedingDateCalculatorTest extends AbstractModifiedPreceedingDateCalculatorTest<Calendar> {
+
+    @Override
+    protected Calendar newDate(final String date) {
+        return Utils.createCalendar(date);
+    }
+
+    @Override
+    protected DateCalculatorFactory<Calendar> getDateCalculatorFactory() {
+        return DefaultJdkCalendarCalculatorFactory.getDefaultInstance();
+    }
+
+}
Added: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarPeriodCountCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarPeriodCountCalculatorTest.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkCalendarPeriodCountCalculatorTest.java	2006-09-06 14:00:18 UTC (rev 120)
@@ -0,0 +1,41 @@
+/*
+ * 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.AbstractPeriodCountCalculator;
+import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
+import net.objectlab.kit.datecalc.common.Utils;
+
+public class JdkCalendarPeriodCountCalculatorTest extends AbstractPeriodCountCalculator<Calendar> {
+
+    @Override
+    public PeriodCountCalculator<Calendar> getPeriodCountCalculator() {
+        return DefaultJdkCalendarCalculatorFactory.getDefaultInstance().getPeriodCountCalculator();
+    }
+
+    @Override
+    public Calendar parseDate(final String string) {
+        return Utils.createCalendar(string);
+    }
+
+    @Override
+    public Calendar getDate() {
+        return Calendar.getInstance();
+    }
+
+}
\ No newline at end of file
Added: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDatePeriodCountCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDatePeriodCountCalculatorTest.java	                        (rev 0)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDatePeriodCountCalculatorTest.java	2006-09-06 14:00:18 UTC (rev 120)
@@ -0,0 +1,41 @@
+/*
+ * 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.AbstractPeriodCountCalculator;
+import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
+import net.objectlab.kit.datecalc.common.Utils;
+
+public class JdkDatePeriodCountCalculatorTest extends AbstractPeriodCountCalculator<Date> {
+
+    @Override
+    public PeriodCountCalculator<Date> getPeriodCountCalculator() {
+        return DefaultJdkDateCalculatorFactory.getDefaultInstance().getPeriodCountCalculator();
+    }
+
+    @Override
+    public Date parseDate(final String string) {
+        return Utils.createDate(string);
+    }
+
+    @Override
+    public Date getDate() {
+        return new Date();
+    }
+
+}
\ No newline at end of file
Modified: trunk/datecalc-joda/qalab.xml
===================================================================
--- trunk/datecalc-joda/qalab.xml	2006-09-06 12:28:21 UTC (rev 119)
+++ trunk/datecalc-joda/qalab.xml	2006-09-06 14:00:18 UTC (rev 120)
@@ -59,6 +59,9 @@
         <summaryresult date="2006-09-05" filecount="4" statvalue="40" type="simian"/>
         <summaryresult date="2006-09-05" filecount="17" statvalue="91" type="cobertura-line"/>
         <summaryresult date="2006-09-05" filecount="17" statvalue="93" type="cobertura-branch"/>
+        <summaryresult date="2006-09-06" filecount="4" statvalue="40" type="simian"/>
+        <summaryresult date="2006-09-06" filecount="19" statvalue="95" type="cobertura-line"/>
+        <summaryresult date="2006-09-06" filecount="19" statvalue="96" type="cobertura-branch"/>
     </summary>
     <file id="net_objectlab_kit_datecalc_joda_package.html" path="net/objectlab/kit/datecalc/joda/package.html">
         <result date="2006-08-08" statvalue="1" type="checkstyle"/>
@@ -169,6 +172,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file id="net_objectlab_kit_datecalc_joda_BackwardHandler.java" path="net/objectlab/kit/datecalc/joda/BackwardHandler.java">
         <result date="2006-08-08" statvalue="28" type="cobertura-line"/>
@@ -299,6 +304,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_DefaultLocalDatePeriodCountCalculator.java" path="net/objectlab/kit/datecalc/joda/DefaultLocalDatePeriodCountCalculator.java">
@@ -308,6 +315,8 @@
         <result date="2006-09-04" statvalue="84" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="81" type="cobertura-line"/>
         <result date="2006-09-05" statvalue="84" type="cobertura-branch"/>
+        <result date="2006-09-06" statvalue="81" type="cobertura-line"/>
+        <result date="2006-09-06" statvalue="84" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_DefaultYearMonthDayCalculatorFactory.java" path="net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.java">
@@ -317,6 +326,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_DefaultYearMonthDayPeriodCountCalculator.java" path="net/objectlab/kit/datecalc/joda/DefaultYearMonthDayPeriodCountCalculator.java">
@@ -326,6 +337,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_HolidayHandlerYearMonthDayWrapper.java" path="net/objectlab/kit/datecalc/joda/HolidayHandlerYearMonthDayWrapper.java">
@@ -335,6 +348,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="83" type="cobertura-line"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-06" statvalue="83" type="cobertura-line"/>
+        <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_LocalDateBackwardHandler.java" path="net/objectlab/kit/datecalc/joda/LocalDateBackwardHandler.java">
@@ -344,6 +359,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file id="net_objectlab_kit_datecalc_joda_LocalDateCalculator.java" path="net/objectlab/kit/datecalc/joda/LocalDateCalculator.java">
         <result date="2006-09-02" statvalue="100" type="cobertura-line"/>
@@ -353,6 +370,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_LocalDateForwardHandler.java" path="net/objectlab/kit/datecalc/joda/LocalDateForwardHandler.java">
@@ -362,6 +381,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_LocalDateModifiedFollowingHandler.java" path="net/objectlab/kit/datecalc/joda/LocalDateModifiedFollowingHandler.java">
@@ -371,6 +392,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_LocalDateModifiedPreceedingHandler.java" path="net/objectlab/kit/datecalc/joda/LocalDateModifiedPreceedingHandler.java">
@@ -380,6 +403,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_YearMonthDayBackwardHandler.java" path="net/objectlab/kit/datecalc/joda/YearMonthDayBackwardHandler.java">
@@ -389,6 +414,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_YearMonthDayDateCalculator.java" path="net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java">
@@ -398,6 +425,8 @@
         <result date="2006-09-04" statvalue="71" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="64" type="cobertura-line"/>
         <result date="2006-09-05" statvalue="71" type="cobertura-branch"/>
+        <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_YearMonthDayForwardHandler.java" path="net/objectlab/kit/datecalc/joda/YearMonthDayForwardHandler.java">
@@ -407,6 +436,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_YearMonthDayModifiedFollowingHandler.java" path="net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingHandler.java">
@@ -416,6 +447,8 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file
         id="net_objectlab_kit_datecalc_joda_YearMonthDayModifiedPreceedingHandler.java" path="net/objectlab/kit/datecalc/joda/YearMonthDayModifiedPreceedingHandler.java">
@@ -425,9 +458,23 @@
         <result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-line"/>
         <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"/>
     </file>
     <file id="net_objectlab_kit_datecalc_joda_JodaExcelDateUtil.java" path="net/objectlab/kit/datecalc/joda/JodaExcelDateUtil.java">
         <result date="2006-09-05" statvalue="85" type="cobertura-line"/>
         <result date="2006-09-05" statvalue="100" type="cobertura-branch"/>
+        <result date="2006-09-06" statvalue="85" type="cobertura-line"/>
+        <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
     </file>
+    <file
+        id="net_objectlab_kit_datecalc_joda_LocalDateIMMDateCalculator.java" path="net/objectlab/kit/datecalc/joda/LocalDateIMMDateCalculator.java">
+        <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+    </file>
+    <file
+        id="net_objectlab_kit_datecalc_joda_YearMonthDayIMMDateCalculator.java" path="net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateCalculator.java">
+        <result date="2006-09-06" statvalue="100" type="cobertura-line"/>
+        <result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
+    </file>
 </qalab>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <be...@us...> - 2006-09-06 14:41:54
       | 
| Revision: 121
          http://svn.sourceforge.net/objectlabkit/?rev=121&view=rev
Author:   benoitx
Date:     2006-09-06 07:41:28 -0700 (Wed, 06 Sep 2006)
Log Message:
-----------
Increase coverage.
Modified Paths:
--------------
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractExcelDateUtilTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/CalendarExcelDateUtilTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/DateExcelDateUtilTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.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/YearMonthDayModifiedFollowingHandler.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateTimeExcelDateUtilTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateExcelDateUtilTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayExcelDateUtilTest.java
Removed Paths:
-------------
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractExcelDateUtilTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractExcelDateUtilTest.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractExcelDateUtilTest.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -5,24 +5,31 @@
 public abstract class AbstractExcelDateUtilTest<E> extends TestCase {
     protected abstract E createDate(final String str);
 
-    protected abstract E createDateFromExcel(double excelDate);
+    protected abstract E createDateFromExcel(double excelDate, boolean use1904windowing);
 
     public void testExcelDate() {
-        checkDate(createDate("1899-12-31"), 0);
-        checkDate(createDate("1900-01-01"), 1.0);
-        checkDate(createDate("1900-03-01"), 61.0);
-        checkDate(createDate("1968-06-11"), 25000.0);
-        checkDate(createDate("1978-05-31"), 28641.00);
-        checkDate(createDate("1999-12-31"), 36525.00);
-        checkDate(createDate("2000-01-01"), 36526.00);
-        checkDate(createDate("2000-01-01"), 36526.00);
-        checkDate(createDate("2000-02-28"), 36584.00);
-        checkDate(createDate("2000-02-29"), 36585.00);
-        checkDate(createDate("2000-03-01"), 36586.00);
-        checkDate(null, -1.0);
+        checkDate(createDate("1899-12-31"), 0, false);
+        checkDate(createDate("1900-01-01"), 1.0, false);
+        checkDate(createDate("1900-03-01"), 61.0, false);
+        checkDate(createDate("1968-06-11"), 25000.0, false);
+        checkDate(createDate("1978-05-31"), 28641.00, false);
+        checkDate(createDate("1999-12-31"), 36525.00, false);
+        checkDate(createDate("2000-01-01"), 36526.00, false);
+        checkDate(createDate("2000-01-01"), 36526.00, false);
+        checkDate(createDate("2000-02-28"), 36584.00, false);
+        checkDate(createDate("2000-02-29"), 36585.00, false);
+        checkDate(createDate("2000-03-01"), 36586.00, false);
+        checkDate(null, -1.0, false);
     }
 
-    private void checkDate(final E date, final double excelDate) {
-        assertEquals("excel:" + excelDate, date, createDateFromExcel(excelDate));
+    public void testExcelDateUsing1904Windowing() {
+        checkDate(createDate("1904-01-01"), 0.0, true);
+        checkDate(createDate("1904-01-02"), 1.0, true);
+        checkDate(createDate("1904-03-02"), 61.0, true);
+        checkDate(null, -1.0, false);
     }
+
+    private void checkDate(final E date, final double excelDate, final boolean use1904windowing) {
+        assertEquals("excel:" + excelDate, date, createDateFromExcel(excelDate, use1904windowing));
+    }
 }
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/CalendarExcelDateUtilTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/CalendarExcelDateUtilTest.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/CalendarExcelDateUtilTest.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -10,7 +10,7 @@
     }
 
     @Override
-    protected Calendar createDateFromExcel(final double excelDate) {
-        return ExcelDateUtil.getJavaCalendar(excelDate, false);
+    protected Calendar createDateFromExcel(final double excelDate, final boolean use1904Windowing) {
+        return ExcelDateUtil.getJavaCalendar(excelDate, use1904Windowing);
     }
 }
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/DateExcelDateUtilTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/DateExcelDateUtilTest.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/DateExcelDateUtilTest.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -10,7 +10,7 @@
     }
 
     @Override
-    protected Date createDateFromExcel(final double excelDate) {
-        return ExcelDateUtil.getJavaDateOnly(excelDate, false);
+    protected Date createDateFromExcel(final double excelDate, final boolean use1904Windowing) {
+        return ExcelDateUtil.getJavaDateOnly(excelDate, use1904Windowing);
     }
 }
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -76,4 +76,22 @@
         Collections.sort(actual);
         assertEquals(expected, actual);
     }
+    
+    public void testFailCreateDate() {
+        try {
+            Utils.createDate("blablabla");
+            fail("should have thown an IllegalArgumentException");
+        } catch(IllegalArgumentException e) {
+            // all ok
+        }
+    }
+
+    public void testFailCreateCalendar() {
+        try {
+            Utils.createCalendar("blablabla");
+            fail("should have thown an IllegalArgumentException");
+        } catch(IllegalArgumentException e) {
+            // all ok
+        }
+    }
 }
Deleted: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -1,41 +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.Date;
-
-import net.objectlab.kit.datecalc.common.AbstractPeriodCountCalculator;
-import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
-import net.objectlab.kit.datecalc.common.Utils;
-
-public class DatePeriodCountCalculatorTest extends AbstractPeriodCountCalculator<Date> {
-
-    @Override
-    public PeriodCountCalculator<Date> getPeriodCountCalculator() {
-        return DefaultJdkDateCalculatorFactory.getDefaultInstance().getPeriodCountCalculator();
-    }
-
-    @Override
-    public Date parseDate(final String string) {
-        return Utils.createDate(string);
-    }
-
-    @Override
-    public Date getDate() {
-        return new Date();
-    }
-
-}
\ No newline at end of file
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedPreceedingHandler.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedPreceedingHandler.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateModifiedPreceedingHandler.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -30,6 +30,10 @@
  */
 public class LocalDateModifiedPreceedingHandler implements HolidayHandler<LocalDate> {
 
+    public String getType() {
+        return HolidayHandlerType.MODIFIED_PRECEEDING;
+    }
+
     public LocalDate moveCurrentDate(final DateCalculator<LocalDate> calendar) {
         LocalDate date = calendar.getCurrentBusinessDate();
         final int month = date.getMonthOfYear();
@@ -44,9 +48,4 @@
         }
         return date;
     }
-
-    public String getType() {
-        return HolidayHandlerType.MODIFIED_PRECEEDING;
-    }
-
 }
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingHandler.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingHandler.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayModifiedFollowingHandler.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -32,6 +32,10 @@
  */
 public class YearMonthDayModifiedFollowingHandler implements HolidayHandler<YearMonthDay> {
 
+    public String getType() {
+        return HolidayHandlerType.MODIFIED_FOLLLOWING;
+    }
+
     public YearMonthDay moveCurrentDate(final DateCalculator<YearMonthDay> calendar) {
         YearMonthDay date = calendar.getCurrentBusinessDate();
         final int month = date.getMonthOfYear();
@@ -47,8 +51,4 @@
         return date;
     }
 
-    public String getType() {
-        return HolidayHandlerType.MODIFIED_FOLLLOWING;
-    }
-
 }
Modified: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateTimeExcelDateUtilTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateTimeExcelDateUtilTest.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateTimeExcelDateUtilTest.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -12,7 +12,7 @@
     }
 
     @Override
-    protected DateTime createDateFromExcel(final double excelDate) {
-        return JodaExcelDateUtil.getDateTime(excelDate, false);
+    protected DateTime createDateFromExcel(final double excelDate, final boolean use1904Windowing) {
+        return JodaExcelDateUtil.getDateTime(excelDate, use1904Windowing);
     }
 }
Modified: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateExcelDateUtilTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateExcelDateUtilTest.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateExcelDateUtilTest.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -12,7 +12,7 @@
     }
 
     @Override
-    protected LocalDate createDateFromExcel(final double excelDate) {
-        return JodaExcelDateUtil.getLocalDate(excelDate, false);
+    protected LocalDate createDateFromExcel(final double excelDate, final boolean use1904Windowing) {
+        return JodaExcelDateUtil.getLocalDate(excelDate, use1904Windowing);
     }
 }
Modified: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayExcelDateUtilTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayExcelDateUtilTest.java	2006-09-06 14:00:18 UTC (rev 120)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayExcelDateUtilTest.java	2006-09-06 14:41:28 UTC (rev 121)
@@ -12,7 +12,7 @@
     }
 
     @Override
-    protected YearMonthDay createDateFromExcel(final double excelDate) {
-        return JodaExcelDateUtil.getYearMonthDay(excelDate, false);
+    protected YearMonthDay createDateFromExcel(final double excelDate, final boolean use1904Windowing) {
+        return JodaExcelDateUtil.getYearMonthDay(excelDate, use1904Windowing);
     }
 }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <be...@us...> - 2006-09-06 15:05:59
       | 
| Revision: 122
          http://svn.sourceforge.net/objectlabkit/?rev=122&view=rev
Author:   benoitx
Date:     2006-09-06 08:04:38 -0700 (Wed, 06 Sep 2006)
Log Message:
-----------
Formatting and improved QA (Checkstyle).
Modified Paths:
--------------
    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/IMMDateCalculator.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.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/JdkCalendarCalculatorFactory.java
    trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarIMMDateCalculator.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/JdkDateIMMDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/JodaWorkingWeek.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateCalculator.java
Removed Paths:
-------------
    trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Version.java
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 14:41:28 UTC (rev 121)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -35,9 +35,9 @@
  */
 public abstract class AbstractDateCalculator<E> implements DateCalculator<E> {
 
-//    protected static final int MONTHS_IN_QUARTER = 3;
+    // protected static final int MONTHS_IN_QUARTER = 3;
 
-//    protected static final int MONTH_IN_YEAR = 12;
+    // protected static final int MONTH_IN_YEAR = 12;
 
     protected static final int DAYS_IN_WEEK = 7;
 
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 14:41:28 UTC (rev 121)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -33,9 +33,10 @@
 
     protected final ConcurrentMap<String, Set<E>> holidays = new ConcurrentHashMap<String, Set<E>>();
 
-//    public abstract DateCalculator<E> getDateCalculator(String name, String holidayHandlerType);
+    // public abstract DateCalculator<E> getDateCalculator(String name, String
+    // holidayHandlerType);
 
-//    public abstract PeriodCountCalculator<E> getPeriodCountCalculator();
+    // public abstract PeriodCountCalculator<E> getPeriodCountCalculator();
 
     /**
      * Use this method to register a set of holidays for a given calendar, it
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 14:41:28 UTC (rev 121)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -60,7 +60,7 @@
      * @return a PeriodCountCalculator
      */
     PeriodCountCalculator<E> getPeriodCountCalculator();
-    
+
     /**
      * @return an IMMDateCalculator
      */
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 14:41:28 UTC (rev 121)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMDateCalculator.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -20,7 +20,7 @@
 import java.util.List;
 
 /**
- * The IMMDates are defined 
+ * The IMMDates are defined
  * 
  * @author Benoit Xhenseval
  * @author $LastChangedBy: benoitx $
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 14:41:28 UTC (rev 121)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -38,9 +38,10 @@
     private static final String DATE_PATTERN = "yyyy-MM-dd";
 
     private static final SimpleDateFormat SDF = new SimpleDateFormat(DATE_PATTERN);
-    
-    private Utils() {}
 
+    private Utils() {
+    }
+
     public static Calendar getCal(final Date date) {
         final Calendar cal = Calendar.getInstance();
         cal.setTime(date);
@@ -54,9 +55,11 @@
 
     /**
      * 
-     * @param str string
+     * @param str
+     *            string
      * @return
-     * @throws IllegalArgumentException if the string cannot be parsed.  
+     * @throws IllegalArgumentException
+     *             if the string cannot be parsed.
      */
     public static Date createDate(final String str) {
         try {
@@ -70,9 +73,11 @@
 
     /**
      * 
-     * @param str string
+     * @param str
+     *            string
      * @return
-     * @throws IllegalArgumentException if the string cannot be parsed.  
+     * @throws IllegalArgumentException
+     *             if the string cannot be parsed.
      */
     public static Calendar createCalendar(final String str) {
         try {
Deleted: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Version.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Version.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Version.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -1,68 +0,0 @@
-/*
- * $Id: org.eclipse.jdt.ui.prefs 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.common;
-
-
-import java.io.*;
-
-/**
- * 
- * @author xhensevb
- * @author $LastChangedBy: marchy $
- * @version $Revision: 99 $ $Date: 2006-09-04 21:30:25 +0100 (Mon, 04 Sep 2006) $
- * 
- */
-public class Version {
-    public static void main(String[] args) throws Exception {
-        if (args.length != 1) {
-            System.err.println("Usage: java version <.class file>");
-            System.exit(1);
-        }
-
-        if (!new File(args[0]).exists()) {
-            System.err.println(args[0] + " does not exist!");
-            System.exit(2);
-        }
-
-        DataInputStream dis = new DataInputStream(new FileInputStream(args[0]));
-        int magic = dis.readInt();
-        if (magic != 0xcafebabe) {
-            System.err.println(args[0] + " is not a .class file");
-            System.exit(3);
-        }
-
-        int minor = dis.readShort();
-        int major = dis.readShort();
-        System.out.println("class file version is " + major + "." + minor);
-
-        String version = null;
-
-        if (major < 48) {
-            version = "1.3.1";
-        } else if (major == 48) {
-            version = "1.4.2";
-        } else if (major == 49) {
-            version = "1.5";
-        } else if (major == 50) {
-            version = "6";
-        } else {
-            version = "7";
-        }
-        System.out.println("You need to use JDK " + version + " or above");
-    }
-}
\ No newline at end of file
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -24,45 +24,44 @@
  * @author Benoit Xhenseval
  */
 public class WorkingWeek {
+    private static final byte MONDAY = 1;
 
-    protected static final byte MONDAY = 1;
+    private static final byte TUESDAY = 2;
 
-    protected static final byte TUESDAY = 2;
+    private static final byte WEDNESDAY = 4;
 
-    protected static final byte WEDNESDAY = 4;
+    private static final byte THURSDAY = 8;
 
-    protected static final byte THURSDAY = 8;
+    private static final byte FRIDAY = 16;
 
-    protected static final byte FRIDAY = 16;
+    private static final byte SATURDAY = 32;
 
-    protected static final byte SATURDAY = 32;
+    private static final byte SUNDAY = 64;
 
-    protected static final byte SUNDAY = 64;
+    private static final byte DEFAULT_WORKING_DAYS = (byte) (MONDAY + TUESDAY + WEDNESDAY + THURSDAY + FRIDAY);
 
-    protected static final byte DEFAULT_WORKING_DAYS = (byte) (MONDAY + TUESDAY + WEDNESDAY + THURSDAY + FRIDAY);
-
-    protected static final byte[] WORKING_WEEK_DAYS_OFFSET = new byte[] { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
+    private static final byte[] WORKING_WEEK_DAYS_OFFSET = new byte[] { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
             SATURDAY };
 
     public static final WorkingWeek DEFAULT = new WorkingWeek();
 
     /**
+     * working days: 1 Monday, 2 Tuesday, 4 Wednesday, 8 Thursday, 16 Friday, 32
+     * Saturday, 64 Sunday So Monday-Friday= 1+2+4+8+16 = 31
+     */
+    private byte workingDays = DEFAULT_WORKING_DAYS;
+
+    /**
      * Default Working Week Monday -> Friday.
      */
     public WorkingWeek() {
         this(DEFAULT_WORKING_DAYS);
     }
 
-    private WorkingWeek(final byte workingDays) {
+    protected WorkingWeek(final byte workingDays) {
         this.workingDays = workingDays;
     }
 
-    /**
-     * working days: 1 Monday, 2 Tuesday, 4 Wednesday, 8 Thursday, 16 Friday, 32
-     * Saturday, 64 Sunday So Monday-Friday= 1+2+4+8+16 = 31
-     */
-    protected byte workingDays = DEFAULT_WORKING_DAYS;
-
     public boolean isWorkingDayFromCalendar(final int dayOfWeek) {
         final int day = adjustDay(dayOfWeek);
         return (WORKING_WEEK_DAYS_OFFSET[day] & workingDays) != 0;
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -155,7 +155,6 @@
         checkImm(cal, parseDate("2006-12-21"), false);
     }
 
-
     public void testPreviousIMM() {
         E startDate = parseDate("2006-08-01");
 
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -76,12 +76,12 @@
         Collections.sort(actual);
         assertEquals(expected, actual);
     }
-    
+
     public void testFailCreateDate() {
         try {
             Utils.createDate("blablabla");
             fail("should have thown an IllegalArgumentException");
-        } catch(IllegalArgumentException e) {
+        } catch (final IllegalArgumentException e) {
             // all ok
         }
     }
@@ -90,7 +90,7 @@
         try {
             Utils.createCalendar("blablabla");
             fail("should have thown an IllegalArgumentException");
-        } catch(IllegalArgumentException e) {
+        } catch (final IllegalArgumentException e) {
             // all ok
         }
     }
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -32,7 +32,7 @@
  */
 public class DatePeriodCountCalculator implements JdkDatePeriodCountCalculator {
 
-    private final CalendarPeriodCountCalculator PCC = new CalendarPeriodCountCalculator();
+    private static final CalendarPeriodCountCalculator PCC = new CalendarPeriodCountCalculator();
 
     public int dayDiff(final Date start, final Date end, final PeriodCountBasis basis) {
 
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 14:41:28 UTC (rev 121)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -31,7 +31,8 @@
  * @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> implements
+        JdkCalendarCalculatorFactory {
 
     private static final DefaultJdkCalendarCalculatorFactory DEFAULT = new DefaultJdkCalendarCalculatorFactory();
 
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -34,9 +34,9 @@
  */
 public class HolidayHandlerDateWrapper implements HolidayHandler<Date> {
 
-    HolidayHandler<Calendar> delegate;
+    private HolidayHandler<Calendar> delegate;
 
-    DateCalculator<Calendar> calculator;
+    private DateCalculator<Calendar> calculator;
 
     public HolidayHandlerDateWrapper(final HolidayHandler<Calendar> holidayHandler, final DateCalculator<Calendar> dateCalulator) {
         delegate = holidayHandler;
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarCalculatorFactory.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarCalculatorFactory.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarCalculatorFactory.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -7,8 +7,8 @@
 
 public interface JdkCalendarCalculatorFactory extends DateCalculatorFactory<Calendar> {
 
-    public abstract JdkCalendarDateCalculator getDateCalculator(final String name, final String holidayHandlerType);
+    JdkCalendarDateCalculator getDateCalculator(final String name, final String holidayHandlerType);
 
-    public abstract PeriodCountCalculator<Calendar> getPeriodCountCalculator();
+    PeriodCountCalculator<Calendar> getPeriodCountCalculator();
 
 }
\ No newline at end of file
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarIMMDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarIMMDateCalculator.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarIMMDateCalculator.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -8,6 +8,8 @@
 import net.objectlab.kit.datecalc.common.IMMPeriod;
 
 public class JdkCalendarIMMDateCalculator extends AbstractIMMDateCalculator<Calendar> {
+    private static final int NUMBER_DAYS_IN_WEEK = 7;
+
     /**
      * Returns a list of IMM dates between 2 dates, it will exclude the start
      * date if it is an IMM date but would include the end date if it is an IMM.
@@ -87,9 +89,9 @@
         case Calendar.SEPTEMBER:
         case Calendar.DECEMBER:
             return true;
+        default:
+            return false;
         }
-
-        return false;
     }
 
     /**
@@ -106,11 +108,11 @@
         if (dayOfWeek < Calendar.WEDNESDAY) {
             cal.add(Calendar.DAY_OF_MONTH, Calendar.WEDNESDAY - dayOfWeek);
         } else if (dayOfWeek > Calendar.WEDNESDAY) {
-            cal.add(Calendar.DAY_OF_MONTH, (Calendar.WEDNESDAY + 7) - dayOfWeek);
+            cal.add(Calendar.DAY_OF_MONTH, (Calendar.WEDNESDAY + NUMBER_DAYS_IN_WEEK) - dayOfWeek);
         }
 
         // go to 3rd wednesday - i.e. move 2 weeks forward
-        cal.add(Calendar.DAY_OF_MONTH, 7 * 2);
+        cal.add(Calendar.DAY_OF_MONTH, NUMBER_DAYS_IN_WEEK * 2);
     }
 
     public boolean isIMMDate(final Calendar date) {
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculatorFactory.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculatorFactory.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculatorFactory.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -7,8 +7,8 @@
 
 public interface JdkDateCalculatorFactory extends DateCalculatorFactory<Date> {
 
-    public abstract JdkDateCalculator getDateCalculator(final String name, final String holidayHandlerType);
+    JdkDateCalculator getDateCalculator(final String name, final String holidayHandlerType);
 
-    public abstract PeriodCountCalculator<Date> getPeriodCountCalculator();
+    PeriodCountCalculator<Date> getPeriodCountCalculator();
 
 }
\ No newline at end of file
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateIMMDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateIMMDateCalculator.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateIMMDateCalculator.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -14,21 +14,21 @@
     private static final JdkCalendarIMMDateCalculator DELEGATE = new JdkCalendarIMMDateCalculator();
 
     @Override
-    protected Date getNextIMMDate(boolean requestNextIMM, Date theStartDate, IMMPeriod period) {
+    protected Date getNextIMMDate(final boolean requestNextIMM, final Date theStartDate, final IMMPeriod period) {
         return DELEGATE.getNextIMMDate(requestNextIMM, Utils.getCal(theStartDate), period).getTime();
     }
 
-    public List<Date> getIMMDates(Date start, Date end, IMMPeriod period) {
+    public List<Date> getIMMDates(final Date start, final Date end, final IMMPeriod period) {
         return buildList(DELEGATE.getIMMDates(Utils.getCal(start), Utils.getCal(end), period));
     }
 
-    public boolean isIMMDate(Date date) {
+    public boolean isIMMDate(final Date date) {
         return DELEGATE.isIMMDate(Utils.getCal(date));
     }
 
-    private List<Date> buildList(List<Calendar> dates) {
-        List<Date> imms = new ArrayList<Date>();
-        for (Calendar date : dates) {
+    private List<Date> buildList(final List<Calendar> dates) {
+        final List<Date> imms = new ArrayList<Date>();
+        for (final Calendar date : dates) {
             imms.add(date.getTime());
         }
         return imms;
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/JodaWorkingWeek.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/JodaWorkingWeek.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/JodaWorkingWeek.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -31,15 +31,15 @@
     public static final JodaWorkingWeek DEFAULT = new JodaWorkingWeek();
 
     public JodaWorkingWeek() {
-        this(DEFAULT_WORKING_DAYS);
+        super();
     }
 
     private JodaWorkingWeek(final byte workingDays) {
-        this.workingDays = workingDays;
+        super(workingDays);
     }
 
     public JodaWorkingWeek(final WorkingWeek ww) {
-        this.workingDays = ww.getWorkingDays();
+        this(ww.getWorkingDays());
     }
 
     public boolean isWorkingDay(final LocalDate date) {
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateCalculator.java	2006-09-06 14:41:28 UTC (rev 121)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayIMMDateCalculator.java	2006-09-06 15:04:38 UTC (rev 122)
@@ -13,22 +13,22 @@
 
     private static final LocalDateIMMDateCalculator DELEGATE = new LocalDateIMMDateCalculator();
 
-    public boolean isIMMDate(YearMonthDay date) {
+    public boolean isIMMDate(final YearMonthDay date) {
         return DELEGATE.isIMMDate(date.toLocalDate());
     }
 
     @Override
-    protected YearMonthDay getNextIMMDate(boolean requestNextIMM, YearMonthDay theStartDate, IMMPeriod period) {
+    protected YearMonthDay getNextIMMDate(final boolean requestNextIMM, final YearMonthDay theStartDate, final IMMPeriod period) {
         return new YearMonthDay(DELEGATE.getNextIMMDate(requestNextIMM, theStartDate.toLocalDate(), period));
     }
 
-    public List<YearMonthDay> getIMMDates(YearMonthDay start, YearMonthDay end, IMMPeriod period) {
+    public List<YearMonthDay> getIMMDates(final YearMonthDay start, final YearMonthDay end, final IMMPeriod period) {
         return buildList(DELEGATE.getIMMDates(start.toLocalDate(), end.toLocalDate(), period));
     }
 
-    private List<YearMonthDay> buildList(List<LocalDate> dates) {
-        List<YearMonthDay> imms = new ArrayList<YearMonthDay>();
-        for (LocalDate date : dates) {
+    private List<YearMonthDay> buildList(final List<LocalDate> dates) {
+        final List<YearMonthDay> imms = new ArrayList<YearMonthDay>();
+        for (final LocalDate date : dates) {
             imms.add(new YearMonthDay(date));
         }
         return imms;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      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 ...
 
[truncated message content] | 
| 
      
      
      From: <be...@us...> - 2006-09-07 17:24:55
       | 
| Revision: 125
          http://svn.sourceforge.net/objectlabkit/?rev=125&view=rev
Author:   benoitx
Date:     2006-09-07 10:24:20 -0700 (Thu, 07 Sep 2006)
Log Message:
-----------
Added more tests to JDK and Joda for factory tests (genericesed ie). That spotted a couple of bugs!
Modified Paths:
--------------
    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/Utils.java
    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/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-joda/.classpath
    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/LocalDateCalculator.java
    trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
Added Paths:
-----------
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactoryTest.java
    trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateCalculatorFactoryTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayCalculatorFactoryTest.java
Removed Paths:
-------------
    trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/AbstractDateCalculatorTest.java
    trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactoryTest.java
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-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -61,9 +61,14 @@
     }
 
     public E getStartDate() {
+        if (startDate == null) {
+            startDate = getToday();
+        }
         return startDate;
     }
 
+    protected abstract E getToday();
+
     /** Set both start date and current date */
     public void setStartDate(final E startDate) {
         this.startDate = startDate;
@@ -71,6 +76,9 @@
     }
 
     public E getCurrentBusinessDate() {
+        if (currentBusinessDate == null) {
+            currentBusinessDate = getToday();
+        }
         return currentBusinessDate;
     }
 
@@ -127,6 +135,9 @@
     }
 
     public boolean isCurrentDateNonWorking() {
+        if (currentBusinessDate == null) {
+            currentBusinessDate = getToday();
+        }
         return isNonWorkingDay(currentBusinessDate);
     }
 
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-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -47,7 +47,7 @@
     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-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -45,8 +45,10 @@
      *            holidays with that name, it will return a DateCalculator with
      *            an empty holiday set (will work on Weekend only).
      * @param type
-     *            typically one of the value of HolidayHandlerType
+     *            typically one of the value of HolidayHandlerType or null.
      * @return a new DateCalculator
+     * @exception IllegalArgumentException
+     *                if the type is not null or a valid value.
      */
     DateCalculator<E> getDateCalculator(final String name, final String holidayHandlerType);
 
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-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -48,8 +48,12 @@
         }
         final Calendar cal = Calendar.getInstance();
         cal.setTime(date);
+        return blastTime(cal);
+    }
+
+    public static Calendar blastTime(final Calendar cal) {
         cal.setTimeZone(TimeZone.getTimeZone("UTC"));
-        cal.set(Calendar.HOUR, 0);
+        cal.set(Calendar.HOUR_OF_DAY, 0);
         cal.set(Calendar.MINUTE, 0);
         cal.set(Calendar.SECOND, 0);
         cal.set(Calendar.MILLISECOND, 0);
@@ -59,12 +63,15 @@
     /**
      * 
      * @param str
-     *            string
-     * @return
+     *            string (return today if string is null)
+     * @return today if
      * @throws IllegalArgumentException
      *             if the string cannot be parsed.
      */
     public static Date createDate(final String str) {
+        if (str == null) {
+            return createCalendar(null).getTime();
+        }
         try {
             final Date date = SDF.parse(str);
             final Calendar cal = getCal(date);
@@ -83,6 +90,9 @@
      *             if the string cannot be parsed.
      */
     public static Calendar createCalendar(final String str) {
+        if (str == null) {
+            return blastTime(Calendar.getInstance());
+        }
         try {
             final Date date = SDF.parse(str);
             final Calendar cal = getCal(date);
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactoryTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactoryTest.java	                        (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactoryTest.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -0,0 +1,111 @@
+package net.objectlab.kit.datecalc.common;
+
+import java.util.Set;
+
+import junit.framework.Assert;
+
+public abstract class AbstractDateCalculatorFactoryTest<E> extends AbstractDateTestCase<E> {
+
+    public void testGetCalendarsNoHoliday() {
+        final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+        Assert.assertNotNull("cal1", cal1);
+        Assert.assertEquals("name", "bla", cal1.getName());
+        Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
+
+        final DateCalculator<E> cal2 = getDateCalculatorFactory().getDateCalculator("bla", null);
+        Assert.assertNotNull("cal2", cal2);
+        Assert.assertEquals("name", "bla", cal2.getName());
+        Assert.assertTrue("no holiday", cal2.getNonWorkingDays().isEmpty());
+        Assert.assertNotSame(cal1, cal2);
+    }
+
+    public void testGetCalendarsNoHolidayButSomeRegistered() {
+        final Set<E> uk = createUKHolidays();
+        getDateCalculatorFactory().registerHolidays("UK", uk);
+
+        final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+        Assert.assertNotNull("cal1", cal1);
+        Assert.assertEquals("name", "bla", cal1.getName());
+        Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
+
+        final DateCalculator<E> cal2 = getDateCalculatorFactory().getDateCalculator("UK", null);
+        Assert.assertNotNull("cal2", cal2);
+        Assert.assertEquals("name cal2", "UK", cal2.getName());
+        Assert.assertEquals("UK holidays", 4, cal2.getNonWorkingDays().size());
+        Assert.assertNotSame(cal1, cal2);
+    }
+
+    public void testGetCorrectAlgo() {
+        DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+
+        Assert.assertNull("No algo", cal1.getHolidayHandlerType());
+        cal1 = getDateCalculatorFactory().getDateCalculator("bla", HolidayHandlerType.BACKWARD);
+        Assert.assertEquals("Type", HolidayHandlerType.BACKWARD, cal1.getHolidayHandlerType());
+
+        cal1 = getDateCalculatorFactory().getDateCalculator("bla", HolidayHandlerType.FORWARD);
+        Assert.assertEquals("Type", HolidayHandlerType.FORWARD, cal1.getHolidayHandlerType());
+
+        cal1 = getDateCalculatorFactory().getDateCalculator("bla", HolidayHandlerType.MODIFIED_FOLLLOWING);
+        Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_FOLLLOWING, cal1.getHolidayHandlerType());
+
+        cal1 = getDateCalculatorFactory().getDateCalculator("bla", HolidayHandlerType.MODIFIED_PRECEEDING);
+        Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_PRECEEDING, cal1.getHolidayHandlerType());
+    }
+
+    public void testGetIncorrectAlgo() {
+        try {
+            getDateCalculatorFactory().getDateCalculator("bla", "bliobl");
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (final IllegalArgumentException e) {
+            // all ok
+        }
+    }
+
+    public void testSetHol() {
+        final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+
+        Assert.assertNotNull("No algo", cal1);
+        Assert.assertNotNull("No hol", cal1.getNonWorkingDays());
+        Assert.assertTrue("empty hol", cal1.getNonWorkingDays().isEmpty());
+
+        cal1.setNonWorkingDays(null);
+        Assert.assertNotNull("empty", cal1.getNonWorkingDays());
+        Assert.assertTrue("empty hol", cal1.getNonWorkingDays().isEmpty());
+    }
+
+    public void testUseDefault() {
+        final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+
+        Assert.assertNotNull("No algo", cal1);
+        Assert.assertNotNull("No hol", cal1.getNonWorkingDays());
+        Assert.assertTrue("empty hol", cal1.getNonWorkingDays().isEmpty());
+
+        E date = cal1.moveByDays(0).getCurrentBusinessDate();
+        Assert.assertEquals("default today", newDate(null), date);
+
+        cal1.setStartDate(null);
+        date = cal1.moveByDays(0).getCurrentBusinessDate();
+        Assert.assertEquals("default today", newDate(null), date);
+
+        cal1.setStartDate(newDate("2006-08-08"));
+        cal1.setCurrentBusinessDate(null);
+        date = cal1.moveByDays(0).getCurrentBusinessDate();
+        Assert.assertEquals("default today", newDate(null), date);
+    }
+
+    public void testHolNoAlgo() {
+        final Set<E> uk = createUKHolidays();
+        getDateCalculatorFactory().registerHolidays("UK", uk);
+        final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("UK", null);
+
+        Assert.assertNotNull("No algo", cal1);
+        Assert.assertNotNull("No hol", cal1.getNonWorkingDays());
+        Assert.assertTrue("non empty hol", !cal1.getNonWorkingDays().isEmpty());
+
+        cal1.setCurrentBusinessDate(newDate("2006-12-25"));
+        Assert.assertTrue("current date is holiday", cal1.isCurrentDateNonWorking());
+
+        cal1.setCurrentBusinessDate(newDate("2006-12-24"));
+        Assert.assertTrue("current date is weekend", cal1.isCurrentDateNonWorking());
+    }
+}
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorTest.java	                        (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorTest.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -0,0 +1,35 @@
+package net.objectlab.kit.datecalc.common;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+public abstract class AbstractDateCalculatorTest extends TestCase {
+
+    public AbstractDateCalculatorTest() {
+        super();
+    }
+
+    protected Date createDate(final String str) {
+        return Utils.createDate(str);
+    }
+
+    protected Set<Date> createUKHolidays() {
+        final Set<Date> uk = new HashSet<Date>();
+        uk.add(createDate("2006-01-01"));
+        uk.add(createDate("2006-08-28"));
+        uk.add(createDate("2006-12-25"));
+        uk.add(createDate("2006-12-26"));
+        return uk;
+    }
+
+    protected Set<Date> createUSHolidays() {
+        final Set<Date> us = new HashSet<Date>();
+        us.add(createDate("2006-07-04"));
+        us.add(createDate("2006-11-28"));
+        us.add(createDate("2006-12-25"));
+        return us;
+    }
+}
\ No newline at end of file
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-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -66,7 +66,7 @@
         } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new CalendarModifiedPreceedingHandler());
         } else {
-            throw new UnsupportedOperationException("Unsupported HolidayHandler: " + holidayHandlerType);
+            throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
         }
 
         return cal;
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-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkDateCalculatorFactory.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -66,7 +66,7 @@
         } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new DateModifiedPreceedingHandler());
         } else {
-            throw new UnsupportedOperationException("Unsupported HolidayHandler: " + holidayHandlerType);
+            throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
         }
 
         return cal;
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -25,6 +25,7 @@
 import net.objectlab.kit.datecalc.common.DateCalculator;
 import net.objectlab.kit.datecalc.common.HolidayHandler;
 import net.objectlab.kit.datecalc.common.Tenor;
+import net.objectlab.kit.datecalc.common.Utils;
 import net.objectlab.kit.datecalc.common.WorkingWeek;
 
 /**
@@ -48,7 +49,11 @@
     public JdkCalendarBaseDateCalculator(final String name, final Calendar startDate, final Set<Calendar> nonWorkingDays,
             final HolidayHandler<Calendar> holidayHandler) {
         super(name, nonWorkingDays, holidayHandler);
-        setStartDate(startDate);
+        Calendar date = startDate;
+        if (date == null) {
+            date = getToday();
+        }
+        setStartDate(date);
     }
 
     public void setWorkingWeek(final WorkingWeek week) {
@@ -104,4 +109,9 @@
     public JdkCalendarBaseDateCalculator moveByBusinessDays(final int businessDays) {
         return (JdkCalendarBaseDateCalculator) super.moveByBusinessDays(businessDays);
     }
+
+    @Override
+    protected Calendar getToday() {
+        return Utils.blastTime(Calendar.getInstance());
+    }
 }
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java	2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -49,13 +49,17 @@
     public JdkDateBaseDateCalculator(final String name, final Date startDate, final Set<Date> nonWorkingDays,
             final HolidayHandler<Date> holidayHandler) {
         super(name, nonWorkingDays, holidayHandler);
-
+        Date date = startDate;
         final HolidayHandler<Calendar> locDate = new HolidayHandlerDateWrapper(holidayHandler, this);
 
         final Set<Calendar> nonWorkingCalendars = Utils.toCalendarSet(nonWorkingDays);
-        delegate = new JdkCalendarBaseDateCalculator(name, Utils.getCal(startDate), nonWorkingCalendars, locDate);
-        setStartDate(startDate);
-        delegate.setStartDate(Utils.getCal(startDate));
+        if (date == null) {
+            date = getToday();
+        }
+
+        delegate = new JdkCalendarBaseDateCalculator(name, Utils.getCal(date), nonWorkingCalendars, locDate);
+        delegate.setStartDate(Utils.getCal(date));
+        setStartDate(date);
     }
 
     // TODO throw an exception if the type is incorrect
@@ -67,7 +71,7 @@
      * is the date a non-working day according to the WorkingWeek?
      */
     public boolean isWeekend(final Date date) {
-        if (date != null) {
+        if (date != null && delegate != null) {
             return delegate.isWeekend(Utils.getCal(date));
         }
         return false;
@@ -92,4 +96,9 @@
         }
         super.setStartDate(startDate);
     }
+
+    @Override
+    protected Date getToday() {
+        return Utils.blastTime(Calendar.getInstance()).getTime();
+    }
 }
Deleted: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java	2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -1,36 +0,0 @@
-package net.objectlab.kit.datecalc.jdk;
-
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import junit.framework.TestCase;
-import net.objectlab.kit.datecalc.common.Utils;
-
-public abstract class AbstractDateCalculatorTest extends TestCase {
-
-    public AbstractDateCalculatorTest() {
-        super();
-    }
-
-    protected Date createDate(final String str) {
-        return Utils.createDate(str);
-    }
-
-    protected Set<Date> createUKHolidays() {
-        final Set<Date> uk = new HashSet<Date>();
-        uk.add(createDate("2006-01-01"));
-        uk.add(createDate("2006-08-28"));
-        uk.add(createDate("2006-12-25"));
-        uk.add(createDate("2006-12-26"));
-        return uk;
-    }
-
-    protected Set<Date> createUSHolidays() {
-        final Set<Date> us = new HashSet<Date>();
-        us.add(createDate("2006-07-04"));
-        us.add(createDate("2006-11-28"));
-        us.add(createDate("2006-12-25"));
-        return us;
-    }
-}
\ No newline at end of file
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java	2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -1,60 +1,20 @@
 package net.objectlab.kit.datecalc.jdk;
 
 import java.util.Date;
-import java.util.Set;
 
-import junit.framework.Assert;
-import net.objectlab.kit.datecalc.common.DateCalculator;
-import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+import net.objectlab.kit.datecalc.common.AbstractDateCalculatorFactoryTest;
+import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
 
-public class DateCalculatorFactoryTest extends AbstractDateCalculatorTest {
+public class DateCalculatorFactoryTest extends AbstractDateCalculatorFactoryTest<Date> {
 
-    public void testGetCalendarsNoHoliday() {
-        final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
-        Assert.assertNotNull("cal1", cal1);
-        Assert.assertEquals("name", "bla", cal1.getName());
-        Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
-
-        final DateCalculator<Date> cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
-        Assert.assertNotNull("cal2", cal2);
-        Assert.assertEquals("name", "bla", cal2.getName());
-        Assert.assertTrue("no holiday", cal2.getNonWorkingDays().isEmpty());
-        Assert.assertNotSame(cal1, cal2);
+    @Override
+    protected Date newDate(final String date) {
+        return Utils.createDate(date);
     }
 
-    public void testGetCalendarsNoHolidayButSomeRegistered() {
-        final Set<Date> uk = createUKHolidays();
-        DefaultJdkDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", uk);
-
-        final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
-        Assert.assertNotNull("cal1", cal1);
-        Assert.assertEquals("name", "bla", cal1.getName());
-        Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
-
-        final DateCalculator<Date> cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", null);
-        Assert.assertNotNull("cal2", cal2);
-        Assert.assertEquals("name cal2", "UK", cal2.getName());
-        Assert.assertEquals("UK holidays", 4, cal2.getNonWorkingDays().size());
-        Assert.assertNotSame(cal1, cal2);
+    @Override
+    protected DateCalculatorFactory<Date> getDateCalculatorFactory() {
+        return DefaultJdkDateCalculatorFactory.getDefaultInstance();
     }
-
-    public void testGetCorrectAlgo() {
-        DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
-
-        Assert.assertNull("No algo", cal1.getHolidayHandlerType());
-        cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.BACKWARD);
-        Assert.assertEquals("Type", HolidayHandlerType.BACKWARD, cal1.getHolidayHandlerType());
-
-        cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD);
-        Assert.assertEquals("Type", HolidayHandlerType.FORWARD, cal1.getHolidayHandlerType());
-
-        cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
-                HolidayHandlerType.MODIFIED_FOLLLOWING);
-        Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_FOLLLOWING, cal1.getHolidayHandlerType());
-
-        cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
-                HolidayHandlerType.MODIFIED_PRECEEDING);
-        Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_PRECEEDING, cal1.getHolidayHandlerType());
-
-    }
 }
Modified: trunk/datecalc-joda/.classpath
===================================================================
--- trunk/datecalc-joda/.classpath	2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/.classpath	2006-09-07 17:24:20 UTC (rev 125)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry output="target/test-classes" kind="src" path="src/test/java"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.3/joda-time-1.3.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/datecalc-common"/>
-	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-	<classpathentry kind="output" path="target/classes"/>
+	<classpathentry path="src/main/java" kind="src"/>
+	<classpathentry path="src/test/java" output="target/test-classes" kind="src"/>
+	<classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/>
+	<classpathentry sourcepath="/JODA_TIME_SRC" path="M2_REPO/joda-time/joda-time/1.3/joda-time-1.3.jar" kind="var"/>
+	<classpathentry path="/datecalc-common" combineaccessrules="false" kind="src"/>
+	<classpathentry path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" kind="var"/>
+	<classpathentry path="target/classes" kind="output"/>
 </classpath>
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDateCalculatorFactory.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDateCalculatorFactory.java	2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDateCalculatorFactory.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -58,6 +58,8 @@
             cal.setHolidayHandler(new LocalDateModifiedFollowingHandler());
         } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new LocalDateModifiedPreceedingHandler());
+        } else if (holidayHandlerType != null) {
+            throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
         }
         return cal;
     }
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.java	2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -60,6 +60,8 @@
             cal.setHolidayHandler(new YearMonthDayModifiedFollowingHandler());
         } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
             cal.setHolidayHandler(new YearMonthDayModifiedPreceedingHandler());
+        } else if (holidayHandlerType != null) {
+            throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
         }
         return cal;
     }
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java	2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -88,4 +88,9 @@
             final Set<LocalDate> holidays, final HolidayHandler<LocalDate> handler) {
         return new LocalDateCalculator(name, startDate, holidays, handler);
     }
+
+    @Override
+    protected LocalDate getToday() {
+        return new LocalDate();
+    }
 }
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java	2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java	2006-09-07 17:24:20 UTC (rev 125)
@@ -67,7 +67,7 @@
      * is the date a non-working day according to the WorkingWeek?
      */
     public boolean isWeekend(final YearMonthDay date) {
-        if (date != null) {
+        if (date != null && delegate != null) {
             return delegate.isWeekend(date.toLocalDate());
         }
         return false;
@@ -92,4 +92,9 @@
         }
         super.setStartDate(startDate);
     }
+
+    @Override
+    protected YearMonthDay getToday() {
+        return new YearMonthDay();
+    }
 }
Deleted: trunk/datecalc-joda/src/t...
 
[truncated message content] |