|
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="common"
+ path="net/objectlab/kit/datecalc/common/AbstractDateCalculator.java" project="objectlabkit">
<result date="2006-08-23" statvalue="5" type="checkstyle"/>
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_DateCalculatorGeneric.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/DateCalculatorGeneric.java" project="default"/>
+ module="common"
+ path="net/objectlab/kit/datecalc/common/DateCalculatorGeneric.java" project="objectlabkit"/>
<file
id="default-default-net_objectlab_kit_datecalc_common_DateCalculator.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/DateCalculator.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/DateCalculator.java" project="objectlabkit">
<result date="2006-08-23" statvalue="19" type="checkstyle"/>
<result date="2006-08-23" statvalue="100" type="cobertura-line"/>
<result date="2006-08-23" statvalue="100" type="cobertura-branch"/>
@@ -564,8 +570,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_HolidayHandler.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/HolidayHandler.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/HolidayHandler.java" project="objectlabkit">
<result date="2006-08-23" statvalue="100" type="cobertura-line"/>
<result date="2006-08-23" statvalue="100" type="cobertura-branch"/>
<result date="2006-08-24" statvalue="100" type="cobertura-line"/>
@@ -615,8 +621,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_AbstractDateCalculatorFactory.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java" project="objectlabkit">
<result date="2006-08-28" statvalue="2" type="checkstyle"/>
<result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
<result date="2006-09-02" statvalue="2" type="checkstyle"/>
@@ -630,8 +636,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_DateCalculatorFactory.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/DateCalculatorFactory.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/DateCalculatorFactory.java" project="objectlabkit">
<result date="2006-08-28" statvalue="100" type="cobertura-line"/>
<result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
<result date="2006-09-02" statvalue="100" type="cobertura-line"/>
@@ -647,8 +653,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_PeriodCountCalculator.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/PeriodCountCalculator.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/PeriodCountCalculator.java" project="objectlabkit">
<result date="2006-08-28" statvalue="100" type="cobertura-line"/>
<result date="2006-08-28" statvalue="100" type="cobertura-branch"/>
<result date="2006-09-02" statvalue="6" type="checkstyle"/>
@@ -697,8 +703,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_Utils.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/Utils.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/Utils.java" project="objectlabkit">
<result date="2006-09-04" statvalue="2" type="checkstyle"/>
<result date="2006-09-04" statvalue="90" type="cobertura-line"/>
<result date="2006-09-04" statvalue="100" type="cobertura-branch"/>
@@ -741,8 +747,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_IMMPeriod.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/IMMPeriod.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/IMMPeriod.java" project="objectlabkit">
<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"/>
@@ -765,8 +771,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_ExcelDateUtil.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/ExcelDateUtil.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/ExcelDateUtil.java" project="objectlabkit">
<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"/>
@@ -806,8 +812,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_IMMDateCalculator.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/IMMDateCalculator.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/IMMDateCalculator.java" project="objectlabkit">
<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"/>
@@ -845,8 +851,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_AbstractIMMDateCalculator.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/AbstractIMMDateCalculator.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/AbstractIMMDateCalculator.java" project="objectlabkit">
<result date="2006-09-06" statvalue="100" type="cobertura-branch"/>
<result date="2006-09-07" statvalue="100" type="cobertura-branch"/>
<result date="2006-09-09" statvalue="100" type="cobertura-branch"/>
@@ -867,8 +873,8 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_KitCalculatorsFactory.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/KitCalculatorsFactory.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/KitCalculatorsFactory.java" project="objectlabkit">
<result date="2006-09-09" statvalue="100" type="cobertura-line"/>
<result date="2006-09-09" statvalue="100" type="cobertura-branch"/>
<result date="2006-09-12" statvalue="100" type="cobertura-line"/>
@@ -902,15 +908,143 @@
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_HolidayCalendar.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/HolidayCalendar.java" project="default">
+ module="common"
+ 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"/>
</file>
<file
id="default-default-net_objectlab_kit_datecalc_common_DefaultHolidayCalendar.java"
- module="default"
- path="net/objectlab/kit/datecalc/common/DefaultHolidayCalendar.java" project="default">
+ module="common"
+ path="net/objectlab/kit/datecalc/common/DefaultHolidayCalendar.java" project="objectlabkit">
<result date="2007-01-03" statvalue="100" type="cobertura-branch"/>
</file>
+ <file
+ id="default-default-net_objectlab_kit_datecalc_common_ImmutableHolidayCalendar.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/ImmutableHolidayCalendar.java" project="objectlabkit"/>
+ <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="2007-01-04" statvalue="1" type="checkstyle"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_DefaultHolidayCalendar.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/DefaultHolidayCalendar.java" project="objectlabkit"/>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_ImmutableHolidayCalendar.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/ImmutableHolidayCalendar.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_DateCalculator.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/DateCalculator.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_ExcelDateUtil.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/ExcelDateUtil.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="82" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="83" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_HolidayCalendar.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/HolidayCalendar.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_HolidayHandler.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/HolidayHandler.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_IMMDateCalculator.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/IMMDateCalculator.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_KitCalculatorsFactory.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/KitCalculatorsFactory.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_PeriodCountCalculator.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/PeriodCountCalculator.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_StandardTenor.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/StandardTenor.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="91" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_Tenor.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/Tenor.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_TenorCode.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/TenorCode.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_Utils.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/Utils.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="76" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="85" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_WorkingWeek.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/WorkingWeek.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="95" type="cobertura-line"/>
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_AbstractIMMDateCalculator.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/AbstractIMMDateCalculator.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_HolidayHandlerType.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/HolidayHandlerType.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_IMMPeriod.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/IMMPeriod.java" project="objectlabkit">
+ <result date="2007-01-04" statvalue="100" type="cobertura-branch"/>
+ </file>
+ <file
+ id="objectlabkit-common-net_objectlab_kit_datecalc_common_PeriodCountBasis.java"
+ module="common"
+ path="net/objectlab/kit/datecalc/common/PeriodCountBasis.java" project="objectlabkit">
+ <result date="2007-01-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 2007-01-04 15:33:23 UTC (rev 234)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java 2007-01-04 18:31:58 UTC (rev 235)
@@ -42,7 +42,7 @@
* but basically <code>Date</code> and <code>LocalDate</code> are the only
* viable values for it for now.
*
- * @author Marcin Jekot
+ * @author Marcin Jekot and Benoit Xhenseval
* @author $LastChangedBy$
* @version $Revision$ $Date$
*
@@ -62,18 +62,35 @@
private E currentBusinessDate;
- private Set<E> nonWorkingDays;
+ private HolidayCalendar<E> holidayCalendar;
private HolidayHandler<E> holidayHandler;
-
+
private int currentIncrement = 0;
- protected AbstractDateCalculator(final String name, final Set<E> nonWorkingDays, final HolidayHandler<E> holidayHandler) {
+ protected AbstractDateCalculator(final String name, final HolidayCalendar<E> holidayCalendar,
+ final HolidayHandler<E> holidayHandler) {
this.name = name;
- this.nonWorkingDays = nonWorkingDays;
+ if (holidayCalendar != null) {
+ this.holidayCalendar = new ImmutableHolidayCalendar<E>(holidayCalendar);
+ } else {
+ this.holidayCalendar = new ImmutableHolidayCalendar<E>(new DefaultHolidayCalendar<E>());
+ }
this.holidayHandler = holidayHandler;
}
+ public void setHolidayCalendar(final HolidayCalendar<E> calendar) {
+ if (calendar != null) {
+ if (calendar instanceof ImmutableHolidayCalendar) {
+ holidayCalendar = calendar;
+ } else {
+ holidayCalendar = new ImmutableHolidayCalendar<E>(calendar);
+ }
+ } else {
+ holidayCalendar = new ImmutableHolidayCalendar<E>(new DefaultHolidayCalendar<E>());
+ }
+ }
+
public String getName() {
return name;
}
@@ -102,15 +119,24 @@
return currentBusinessDate;
}
+ /**
+ * @deprecated should use getHolidayCalendar
+ */
+ @Deprecated
public Set<E> getNonWorkingDays() {
- return Collections.unmodifiableSet(nonWorkingDays);
+ return Collections.unmodifiableSet(holidayCalendar.getHolidays());
}
+ /**
+ * @deprecated use the HolidayCalendar
+ */
+ @Deprecated
public void setNonWorkingDays(final Set<E> holidays) {
if (holidays == null) {
- nonWorkingDays = Collections.emptySet();
+ final Set<E> col = Collections.emptySet();
+ holidayCalendar = new DefaultHolidayCalendar<E>(col);
} else {
- nonWorkingDays = holidays;
+ holidayCalendar = new DefaultHolidayCalendar<E>(holidays);
}
}
@@ -192,9 +218,19 @@
* is the given date a non working day?
*/
public boolean isNonWorkingDay(final E date) {
- return (isWeekend(date) || nonWorkingDays.contains(date));
+ if (date != null && (holidayCalendar.getEarlyBoundary() != null || holidayCalendar.getLateBoundary() != null)) {
+ checkBoundary(date);
+ }
+ return (isWeekend(date) || holidayCalendar.isHoliday(date));
}
+ /**
+ * This may throw an {@link IndexOutOfBoundsException} if the date is not within the
+ * boundaries.
+ * @param date
+ */
+ protected abstract void checkBoundary(E date);
+
public boolean isCurrentDateNonWorking() {
if (currentBusinessDate == null) {
currentBusinessDate = getToday();
@@ -207,6 +243,9 @@
if (holidayHandler != null && date != null) {
currentBusinessDate = holidayHandler.moveCurrentDate(this);
}
+ if (date != null && (holidayCalendar.getEarlyBoundary() != null || holidayCalendar.getLateBoundary() != null)) {
+ checkBoundary(date);
+ }
return currentBusinessDate;
}
@@ -262,14 +301,30 @@
}
final Set<E> newSet = new HashSet<E>();
- if (nonWorkingDays != null) {
- newSet.addAll(nonWorkingDays);
+ if (holidayCalendar != null) {
+ newSet.addAll(holidayCalendar.getHolidays());
}
- if (calculator.getNonWorkingDays() != null) {
- newSet.addAll(calculator.getNonWorkingDays());
+
+ final HolidayCalendar<E> calendarToCombine = calculator.getHolidayCalendar();
+ if (calendarToCombine.getEarlyBoundary() != null && holidayCalendar.getEarlyBoundary() == null
+ || calendarToCombine.getEarlyBoundary() == null && holidayCalendar.getEarlyBoundary() != null) {
+ throw new IllegalArgumentException("Both Calendar to be combined must either have each Early boundaries or None.");
}
- final DateCalculator<E> cal = createNewCalculator(getName() + "/" + calculator.getName(), getStartDate(), newSet,
+ if (calendarToCombine.getLateBoundary() != null && holidayCalendar.getLateBoundary() == null
+ || calendarToCombine.getLateBoundary() == null && holidayCalendar.getLateBoundary() != null) {
+ throw new IllegalArgumentException("Both Calendar to be combined must either have each Late boundaries or None.");
+ }
+
+ if (calendarToCombine.getHolidays() != null) {
+ newSet.addAll(calendarToCombine.getHolidays());
+ }
+
+ final HolidayCalendar<E> newCal = new DefaultHolidayCalendar<E>(newSet, compareDate(holidayCalendar.getEarlyBoundary(),
+ calendarToCombine.getEarlyBoundary(), false), compareDate(holidayCalendar.getLateBoundary(), calendarToCombine
+ .getLateBoundary(), true));
+
+ final DateCalculator<E> cal = createNewCalculator(getName() + "/" + calculator.getName(), getStartDate(), newCal,
holidayHandler);
return cal;
@@ -277,7 +332,9 @@
protected abstract E getToday();
- protected abstract DateCalculator<E> createNewCalculator(String calcName, E theStartDate, Set<E> holidays,
+ protected abstract E compareDate(E date1, E date2, boolean returnEarliest);
+
+ protected abstract DateCalculator<E> createNewCalculator(String calcName, E theStartDate, HolidayCalendar<E> holidays,
HolidayHandler<E> handler);
/**
@@ -290,9 +347,16 @@
/**
* @param currentIncrement The currentIncrement to set.
*/
- public void setCurrentIncrement(int currentIncrement) {
+ public void setCurrentIncrement(final int currentIncrement) {
this.currentIncrement = currentIncrement;
}
+
+ /**
+ * @return Returns the holidayCalendar.
+ */
+ public HolidayCalendar<E> getHolidayCalendar() {
+ return holidayCalendar;
+ }
}
/*
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractKitCalculatorsFactory.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractKitCalculatorsFactory.java 2007-01-04 15:33:23 UTC (rev 234)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractKitCalculatorsFactory.java 2007-01-04 18:31:58 UTC (rev 235)
@@ -32,6 +32,7 @@
*/
package net.objectlab.kit.datecalc.common;
+import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -64,17 +65,22 @@
* the set of holidays (non-working days).
* @deprecated use the HolidayCalendar
*/
+ @Deprecated
public void registerHolidays(final String name, final Set<E> holidaysSet) {
if (name != null) {
- DefaultHolidayCalendar<E> defaultHolidayCalendar = new DefaultHolidayCalendar<E>(holidaysSet);
- calculateDefaultBoundaries(defaultHolidayCalendar);
- this.holidays.put(name, defaultHolidayCalendar);
+ final Set<E> hol = new HashSet<E>();
+ if (holidaysSet != null) {
+ hol.addAll(holidaysSet);
+ }
+ final DefaultHolidayCalendar<E> defaultHolidayCalendar = new DefaultHolidayCalendar<E>(hol);
+ this.holidays.put(name, new ImmutableHolidayCalendar<E>(defaultHolidayCalendar));
}
}
/**
* Use this method to register a given calendar, it will replace any
- * existing set. It won't update any existing DateCalculator as these should
+ * existing one with the same name. An immutable copy is made so that any changes outside this class
+ * will have no affect. It won't update any existing DateCalculator as these should
* not be amended whilst in existence (we could otherwise get inconsistent
* results).
*
@@ -85,11 +91,16 @@
*/
public void registerHolidays(final String name, final HolidayCalendar<E> holidaysCalendar) {
if (name != null) {
- if (holidaysCalendar != null && holidaysCalendar.getHolidays() != null && !holidaysCalendar.getHolidays().isEmpty()
- && (holidaysCalendar.getEarlyBoundary() == null || holidaysCalendar.getLateBoundary() == null)) {
- calculateDefaultBoundaries(holidaysCalendar);
+ final Set<E> hol = new HashSet<E>();
+ if (holidaysCalendar != null && holidaysCalendar.getHolidays() != null) {
+ hol.addAll(holidaysCalendar.getHolidays());
}
- this.holidays.put(name, holidaysCalendar);
+ final DefaultHolidayCalendar<E> defaultHolidayCalendar = new DefaultHolidayCalendar<E>(hol);
+ if (holidaysCalendar != null) {
+ defaultHolidayCalendar.setEarlyBoundary(holidaysCalendar.getEarlyBoundary());
+ defaultHolidayCalendar.setLateBoundary(holidaysCalendar.getLateBoundary());
+ }
+ this.holidays.put(name, new ImmutableHolidayCalendar<E>(holidaysCalendar));
}
}
@@ -102,24 +113,25 @@
* the date calculator to configure.
*/
protected void setHolidays(final String name, final DateCalculator<E> dc) {
- if (name != null && holidays.containsKey(name)) {
- dc.setNonWorkingDays(holidays.get(name).getHolidays());
+ if (name != null) {
+ dc.setHolidayCalendar(holidays.get(name));
}
}
-
- protected abstract void calculateDefaultBoundaries(final HolidayCalendar<E> holidaysCalendar);
}
/*
* ObjectLab, http://www.objectlab.co.uk/open is sponsoring the ObjectLab Kit.
*
- * Based in London, we are world leaders in the design and development of
- * bespoke applications for the securities financing markets.
+ * Based in London, we are world leaders in the design and development
+ * of bespoke applications for the securities financing markets.
*
* <a href="http://www.objectlab.co.uk/open">Click here to learn more about us</a>
- * ___ _ _ _ _ _ / _ \| |__ (_) ___ ___| |_| | __ _| |__ | | | | '_ \| |/ _ \/
- * __| __| | / _` | '_ \ | |_| | |_) | | __/ (__| |_| |__| (_| | |_) |
- * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ |__/
- *
- * www.ObjectLab.co.uk
+ * ___ _ _ _ _ _
+ * / _ \| |__ (_) ___ ___| |_| | __ _| |__
+ * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \
+ * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) |
+ * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/
+ * |__/
+ *
+ * www.ObjectLab.co.uk
*/
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 2007-01-04 15:33:23 UTC (rev 234)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java 2007-01-04 18:31:58 UTC (rev 235)
@@ -121,9 +121,22 @@
*
* @param holidays
* the holiday (if null, an empty set will be put in place)
+ * @deprecated should use setHolidayCalendar
*/
+ @Deprecated
void setNonWorkingDays(final Set<E> holidays);
+ /**
+ * This is typically used at the construction of a DateCalculator to give a
+ * reference to a Holiday Calendar, if not the case, the calculator will
+ * make an immutable copy of the HolidayCalendar.
+ *
+ * @param holidays
+ * the holiday calendar (if null, no holidays taken into account)
+ * @since 1.1.0
+ */
+ void setHolidayCalendar(final HolidayCalendar<E> calendar);
+
// -----------------------------------------------------------------------
//
// ObjectLab, world leaders in the design and development of bespoke
@@ -136,8 +149,17 @@
* Gives a immutable copy of the set of registered holidays.
*
* @return an immutable copy of the holiday set.
+ * @deprecated use getHolidayCalendar, likely to be REMOVED next release.
*/
+ @Deprecated
Set<E> getNonWorkingDays();
+
+ /**
+ * Returns an immutable version of the HolidayCalendar.
+ * @return a copy of the holiday calendar
+ * @since 1.1.0
+ */
+ HolidayCalendar<E> getHolidayCalendar();
/**
* Allows user to define what their Working Week should be (default is
@@ -200,13 +222,17 @@
* Allows DateCalculators to be combined into a new one, the startDate and
* currentBusinessDate will be the ones from the existing calendar (not the
* parameter one). The name will be combined name1+"/"+calendar.getName().
+ * If the Calendars have Early or Late boundaries, the result is the
+ * narrowest interval (e.g. the later Early boundary and the earliest
+ * Late boundary).
*
* @param calculator
* return the same DateCalculator if calender is null or the
* original calendar (but why would you want to do that?)
* @throws IllegalArgumentException
* if both calendars have different types of HolidayHandlers or
- * WorkingWeek;
+ * WorkingWeek; Also, it is required that BOTH calendars either
+ * have Early/Late Boundaries or none.
*/
DateCalculator<E> combine(DateCalculator<E> calculator);
@@ -221,7 +247,7 @@
* the Tenor to reach.
* @param spotLag
* number of days to "spot" days, this can vary from one market
- * to the other.
+ * to the other. It is sometimes called "settlement interval".
* @return the current DateCalculator
*/
DateCalculator<E> moveByTenor(final Tenor tenor, final int spotLag);
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DefaultHolidayCalendar.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DefaultHolidayCalendar.java 2007-01-04 15:33:23 UTC (rev 234)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecal...
[truncated message content] |