|
From: <ma...@us...> - 2006-08-23 22:02:32
|
Revision: 41 Author: marchy Date: 2006-08-23 15:00:20 -0700 (Wed, 23 Aug 2006) ViewCVS: http://svn.sourceforge.net/objectlabkit/?rev=41&view=rev Log Message: ----------- More generics refactoring. Managed to pull in HolidayHandler. Next is will be the calendar factories. 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/BaseDateCalculator.java trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactory.java trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultDateCalculatorFactory.java trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorCombinationTest.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/ForwardDateCalculatorTest.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/BackwardHandler.java trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/BaseDateCalculator.java trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactory.java trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultDateCalculatorFactory.java trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ForwardHandler.java trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ModifiedFollowingHandler.java trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ModifiedPreceedingHandler.java trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/BackwardDateCalculatorTest.java trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateCalculatorCombinationTest.java trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactoryTest.java trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/ForwardDateCalculatorTest.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/ModifiedFollowingDateCalculatorTest.java trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/ModifiedPreceedingDateCalculatorTest.java Added 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/HolidayHandler.java Removed Paths: ------------- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorGeneric.java trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateCalculator.java trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandler.java trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DateCalculator.java trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandler.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-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java 2006-08-23 22:00:20 UTC (rev 41) @@ -3,7 +3,7 @@ import java.util.Collections; import java.util.Set; -public abstract class AbstractDateCalculator<DateType> implements DateCalculatorGeneric<DateType> { +public abstract class AbstractDateCalculator<DateType> implements DateCalculator<DateType> { protected static final int MONTHS_IN_QUARTER = 3; protected static final int MONTH_IN_YEAR = 12; @@ -12,7 +12,8 @@ protected DateType startDate; protected DateType currentDate; protected Set<DateType> nonWorkingDays; - + protected HolidayHandler<DateType> holidayHandler; + public String getName() { return name; } @@ -56,7 +57,7 @@ * @return the current businessCalendar (so one can do * calendar.moveByTenor(StandardTenor.T_2M).getCurrentBusinessDate();) */ - public DateCalculatorGeneric<DateType> moveByTenor(final Tenor tenor) { + public DateCalculator<DateType> moveByTenor(final Tenor tenor) { if (tenor == null) { throw new IllegalArgumentException("Tenor cannot be null"); } @@ -75,4 +76,12 @@ } + public void setHolidayHandler(final HolidayHandler<DateType> holidayHandler) { + this.holidayHandler = holidayHandler; + } + + public String getHolidayHandlerType() { + return (holidayHandler != null ? holidayHandler.getType() : null); + } + } Copied: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java (from rev 39, trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorGeneric.java) =================================================================== --- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java (rev 0) +++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java 2006-08-23 22:00:20 UTC (rev 41) @@ -0,0 +1,149 @@ +package net.objectlab.kit.datecalc.common; + +import java.util.List; +import java.util.Set; + + +public interface DateCalculator<DateType> { + + /** + * @return Calendar name (Typically the name associated with the holiday + * set). + */ + public String getName(); + + /** + * @param startDate + * the reference date for this calendar, the current date is also + * updated and may be moved if it falls on a non working day + * (holiday/weekend). + */ + public void setStartDate(final DateType startDate); + + /** + * @return startDate the reference date for this calendar. + */ + public DateType getStartDate(); + + /** + * @param currentDate held by the calendar. + */ + public DateType getCurrentDate(); + + /** + * is the given date on a weekend, according to the WorkingWeek + */ + public boolean isWeekend(final DateType date); + + /** + * is the given date a non working day, i.e. either a "weekend" or a + * holiday? + */ + public boolean isNonWorkingDay(final DateType date); + + /** + * @return true if the current date is either a weekend or a holiday. + */ + public boolean isCurrentDateNonWorking(); + + /** + * This is typically used at the construction of a DateCalculator. + * + * @param holidays + * the holiday (if null, an empty set will be put in place) + */ + public void setNonWorkingDays(final Set<DateType> holidays); + + /** + * @return an immutable copy of the holiday set. + */ + public Set<DateType> getNonWorkingDays(); + + /** + * Allow user to define what their Working Week should be (default is + * Mon-Fri). + * + * @param week + */ + public void setWorkingWeek(final WorkingWeek week); + + /** + * give a current business date which may be moved if it falls on a non + * working day. + * + * @param date + * @return new current date if moved. + */ + public DateType setCurrentBusinessDate(final DateType date); + + /** + * @return the holiday handler type, can be null + */ + public String getHolidayHandlerType(); + + /** + * move the current date by the number of days and, if it falls on a weekend + * or holiday, move it according to the HolidayHandler given in this + * DateCalculator. + * + * @param days + * number of day + * @return the businessCalendar (so one can do + * calendar.moveByDays(-2).getCurrentBusinessDate();) + */ + public DateCalculator<DateType> moveByDays(final int days); + + /** + * move the current date by a number of business days, this means that if a + * date is either a 'weekend' or holiday, it will be skipped acording to the + * holiday handler and not count towards the number of days to move. + * + * @param businessDays + * @return the current businessCalendar (so one can do + * calendar.moveByBusinessDays(2).getCurrentBusinessDate();) + */ + public DateCalculator<DateType> moveByBusinessDays(final int businessDays); + + /** + * By combining several calendars, we take into account several set of + * holidays. + * + * @param calendar + * @return a new DateCalculator + */ + public DateCalculator<DateType> combine(DateCalculator<DateType> calendar); + + /** + * move the current date by a given tenor, this means that if a date is + * either a 'weekend' or holiday, it will be skipped acording to the holiday + * handler and not count towards the number of days to move. + * + * @param businessDays + * @return the current businessCalendar (so one can do + * calendar.moveByTenor(StandardTenor.T_2M).getCurrentBusinessDate();) + */ + public DateCalculator<DateType> moveByTenor(final Tenor tenor); + + /** + * @return the next IMMDate based on current date. + */ + public DateType getNextIMMDate(); + + /** + * @return the previous IMMDate based on current date. + */ + public DateType getPreviousIMMDate(); + + /** + * 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. + * @return list of IMM dates + */ + public List<DateType> getIMMDates(final DateType start, final DateType end); + +} \ No newline at end of file Deleted: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorGeneric.java =================================================================== --- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorGeneric.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorGeneric.java 2006-08-23 22:00:20 UTC (rev 41) @@ -1,149 +0,0 @@ -package net.objectlab.kit.datecalc.common; - -import java.util.List; -import java.util.Set; - - -public interface DateCalculatorGeneric<DateType> { - - /** - * @return Calendar name (Typically the name associated with the holiday - * set). - */ - public String getName(); - - /** - * @param startDate - * the reference date for this calendar, the current date is also - * updated and may be moved if it falls on a non working day - * (holiday/weekend). - */ - public void setStartDate(final DateType startDate); - - /** - * @return startDate the reference date for this calendar. - */ - public DateType getStartDate(); - - /** - * @param currentDate held by the calendar. - */ - public DateType getCurrentDate(); - - /** - * is the given date on a weekend, according to the WorkingWeek - */ - public boolean isWeekend(final DateType date); - - /** - * is the given date a non working day, i.e. either a "weekend" or a - * holiday? - */ - public boolean isNonWorkingDay(final DateType date); - - /** - * @return true if the current date is either a weekend or a holiday. - */ - public boolean isCurrentDateNonWorking(); - - /** - * This is typically used at the construction of a DateCalculator. - * - * @param holidays - * the holiday (if null, an empty set will be put in place) - */ - public void setNonWorkingDays(final Set<DateType> holidays); - - /** - * @return an immutable copy of the holiday set. - */ - public Set<DateType> getNonWorkingDays(); - - /** - * Allow user to define what their Working Week should be (default is - * Mon-Fri). - * - * @param week - */ - public void setWorkingWeek(final WorkingWeek week); - - /** - * give a current business date which may be moved if it falls on a non - * working day. - * - * @param date - * @return new current date if moved. - */ - public DateType setCurrentBusinessDate(final DateType date); - - /** - * @return the holiday handler type, can be null - */ - public String getHolidayHandlerType(); - - /** - * move the current date by the number of days and, if it falls on a weekend - * or holiday, move it according to the HolidayHandler given in this - * DateCalculator. - * - * @param days - * number of day - * @return the businessCalendar (so one can do - * calendar.moveByDays(-2).getCurrentBusinessDate();) - */ - public DateCalculatorGeneric<DateType> moveByDays(final int days); - - /** - * move the current date by a number of business days, this means that if a - * date is either a 'weekend' or holiday, it will be skipped acording to the - * holiday handler and not count towards the number of days to move. - * - * @param businessDays - * @return the current businessCalendar (so one can do - * calendar.moveByBusinessDays(2).getCurrentBusinessDate();) - */ - public DateCalculatorGeneric<DateType> moveByBusinessDays(final int businessDays); - - /** - * By combining several calendars, we take into account several set of - * holidays. - * - * @param calendar - * @return a new DateCalculator - */ - public DateCalculatorGeneric<DateType> combine(DateCalculatorGeneric<DateType> calendar); - - /** - * move the current date by a given tenor, this means that if a date is - * either a 'weekend' or holiday, it will be skipped acording to the holiday - * handler and not count towards the number of days to move. - * - * @param businessDays - * @return the current businessCalendar (so one can do - * calendar.moveByTenor(StandardTenor.T_2M).getCurrentBusinessDate();) - */ - public DateCalculatorGeneric<DateType> moveByTenor(final Tenor tenor); - - /** - * @return the next IMMDate based on current date. - */ - public DateType getNextIMMDate(); - - /** - * @return the previous IMMDate based on current date. - */ - public DateType getPreviousIMMDate(); - - /** - * 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. - * @return list of IMM dates - */ - public List<DateType> getIMMDates(final DateType start, final DateType end); - -} \ No newline at end of file Copied: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/HolidayHandler.java (from rev 38, trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandler.java) =================================================================== --- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/HolidayHandler.java (rev 0) +++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/HolidayHandler.java 2006-08-23 22:00:20 UTC (rev 41) @@ -0,0 +1,28 @@ +/* + * 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; + +/** + * This will be called to determine whether the date should be moved according + * to the special algorithm used. + * + * @author Benoit Xhenseval + */ +public interface HolidayHandler<DateType> { + DateType moveCurrentDate(DateCalculator<DateType> calendar); + + String getType(); +} Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BaseDateCalculator.java =================================================================== --- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BaseDateCalculator.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BaseDateCalculator.java 2006-08-23 22:00:20 UTC (rev 41) @@ -24,7 +24,8 @@ import java.util.Set; import net.objectlab.kit.datecalc.common.AbstractDateCalculator; -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; +import net.objectlab.kit.datecalc.common.DateCalculator; +import net.objectlab.kit.datecalc.common.HolidayHandler; import net.objectlab.kit.datecalc.common.WorkingWeek; /** @@ -34,12 +35,10 @@ * * @author Benoit Xhenseval */ -public class BaseDateCalculator extends AbstractDateCalculator<Date> implements DateCalculatorGeneric<Date>, DateCalculator { +public class BaseDateCalculator extends AbstractDateCalculator<Date> { private WorkingWeek workingWeek = WorkingWeek.DEFAULT; - private HolidayHandler holidayHandler = null; - @SuppressWarnings("unchecked") public BaseDateCalculator() { this(null, null, Collections.EMPTY_SET, null); @@ -62,16 +61,6 @@ workingWeek = week; } - void setHolidayHandler(final HolidayHandler holidayHandler) { - this.holidayHandler = holidayHandler; - } - - public String getHolidayHandlerType() { - return (holidayHandler != null ? holidayHandler.getType() : null); - } - - // ----------------------------------------------------------------- - /** * is the date a non-working day according to the WorkingWeek? */ @@ -99,7 +88,7 @@ return currentDate; } - public DateCalculatorGeneric<Date> moveByDays(final int days) { + public DateCalculator<Date> moveByDays(final int days) { if (currentDate == null) { initialise(); } @@ -119,7 +108,7 @@ } } - public DateCalculator moveByBusinessDays(final int businessDays) { + public DateCalculator<Date> moveByBusinessDays(final int businessDays) { final int numberOfStepsLeft = Math.abs(businessDays); final int step = (businessDays < 0 ? -1 : 1); @@ -142,7 +131,7 @@ * if both calendars have different types of HolidayHandlers or * WorkingWeek; */ - public DateCalculatorGeneric<Date> combine(final DateCalculatorGeneric calendar) { + public DateCalculator<Date> combine(final DateCalculator calendar) { if (calendar == null || calendar == this) { return this; } @@ -160,7 +149,7 @@ newSet.addAll(calendar.getNonWorkingDays()); } - final DateCalculatorGeneric cal = new BaseDateCalculator(getName() + "/" + calendar.getName(), getStartDate(), newSet, + final DateCalculator cal = new BaseDateCalculator(getName() + "/" + calendar.getName(), getStartDate(), newSet, holidayHandler); return cal; Deleted: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateCalculator.java =================================================================== --- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateCalculator.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateCalculator.java 2006-08-23 22:00:20 UTC (rev 41) @@ -1,33 +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.DateCalculatorGeneric; - - - -/** - * A DateCalculator is a lightweight container with a reference(optional) to a - * set of holidays, a WorkingWeek (Mon-Fri by default), a startDate and a - * current date. The CurrentDate date is changed everytime that the addDays or - * moveByBusinessDays methods are called. - * - * @author Benoit Xhenseval - */ -public interface DateCalculator extends DateCalculatorGeneric<Date> { -} Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactory.java =================================================================== --- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactory.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactory.java 2006-08-23 22:00:20 UTC (rev 41) @@ -18,7 +18,7 @@ import java.util.Date; import java.util.Set; -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; +import net.objectlab.kit.datecalc.common.DateCalculator; /** * Factory will create new instances of DateCalculator, these are lightweight, @@ -43,7 +43,7 @@ * typically one of the value of HolidayHandlerType * @return a new DateCalculator */ - DateCalculatorGeneric getDateCalculator(final String name, final String holidayHandlerType); + DateCalculator getDateCalculator(final String name, final String holidayHandlerType); /** * Use this method to register a set of holidays for a given calendar. Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultDateCalculatorFactory.java =================================================================== --- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultDateCalculatorFactory.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultDateCalculatorFactory.java 2006-08-23 22:00:20 UTC (rev 41) @@ -20,7 +20,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; +import net.objectlab.kit.datecalc.common.DateCalculator; import net.objectlab.kit.datecalc.common.HolidayHandlerType; public class DefaultDateCalculatorFactory implements DateCalculatorFactory { @@ -43,7 +43,7 @@ * typically one of the value of HolidayHandlerType * @return a new DateCalculator */ - public DateCalculatorGeneric getDateCalculator(final String name, final String holidayHandlerType) { + public DateCalculator getDateCalculator(final String name, final String holidayHandlerType) { final BaseDateCalculator cal = new BaseDateCalculator(); cal.setName(name); if (holidays.containsKey(name)) { 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-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java 2006-08-23 22:00:20 UTC (rev 41) @@ -18,6 +18,8 @@ import java.util.Calendar; import java.util.Date; +import net.objectlab.kit.datecalc.common.DateCalculator; +import net.objectlab.kit.datecalc.common.HolidayHandler; import net.objectlab.kit.datecalc.common.HolidayHandlerType; /** @@ -25,9 +27,9 @@ * @author Marcin Jekot * */ -public class ForwardHandler implements HolidayHandler { +public class ForwardHandler implements HolidayHandler<Date> { - public Date moveCurrentDate(DateCalculator calendar) { + public Date moveCurrentDate(DateCalculator<Date> calendar) { Calendar cal = Utils.getCal(calendar.getCurrentDate()); Deleted: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandler.java =================================================================== --- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandler.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandler.java 2006-08-23 22:00:20 UTC (rev 41) @@ -1,30 +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; - -/** - * This will be called to determine whether the date should be moved according - * to the special algorithm used. - * - * @author Benoit Xhenseval - */ -public interface HolidayHandler { - Date moveCurrentDate(DateCalculator calendar); - - String getType(); -} Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorCombinationTest.java =================================================================== --- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorCombinationTest.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorCombinationTest.java 2006-08-23 22:00:20 UTC (rev 41) @@ -4,15 +4,15 @@ import junit.framework.Assert; -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; +import net.objectlab.kit.datecalc.common.DateCalculator; import net.objectlab.kit.datecalc.common.HolidayHandlerType; public class DateCalculatorCombinationTest extends AbstractDateCalculatorTest { public void testInvalidCombinationDiffHandler() { - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.BACKWARD); - final DateCalculatorGeneric cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla2", + final DateCalculator cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla2", HolidayHandlerType.FORWARD); try { @@ -24,8 +24,8 @@ } public void testInvalidCombinationNullNotNullHandler() { - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); - final DateCalculatorGeneric cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla2", + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); + final DateCalculator cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla2", HolidayHandlerType.FORWARD); try { @@ -37,9 +37,9 @@ } public void testInvalidCombinationNotNullNullHandler() { - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); - final DateCalculatorGeneric cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla2", null); + final DateCalculator cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla2", null); try { cal1.combine(cal2); @@ -51,14 +51,14 @@ public void testValidCombinationOneEmptySet() { DefaultDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", createUKHolidays()); - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); final Date Date = createDate("2006-08-08"); cal1.setStartDate(Date); - final DateCalculatorGeneric cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", + final DateCalculator cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", HolidayHandlerType.FORWARD); - final DateCalculatorGeneric combo = cal1.combine(cal2); + final DateCalculator combo = cal1.combine(cal2); Assert.assertEquals("Combo name", "bla/UK", combo.getName()); Assert.assertEquals("Combo type", HolidayHandlerType.FORWARD, combo.getHolidayHandlerType()); Assert.assertEquals("start", Date, combo.getStartDate()); @@ -69,14 +69,14 @@ public void testValidCombination() { DefaultDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", createUKHolidays()); DefaultDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", createUKHolidays()); - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", HolidayHandlerType.FORWARD); final Date Date = createDate("2006-08-08"); cal1.setStartDate(Date); - final DateCalculatorGeneric cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", + final DateCalculator cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", HolidayHandlerType.FORWARD); - final DateCalculatorGeneric combo = cal1.combine(cal2); + final DateCalculator combo = cal1.combine(cal2); Assert.assertEquals("Combo name", "UK/UK", combo.getName()); Assert.assertEquals("Combo type", HolidayHandlerType.FORWARD, combo.getHolidayHandlerType()); Assert.assertEquals("start", Date, combo.getStartDate()); @@ -87,14 +87,14 @@ public void testValidCombination2Sets() { DefaultDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", createUKHolidays()); DefaultDateCalculatorFactory.getDefaultInstance().registerHolidays("US", createUSHolidays()); - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("US", + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("US", HolidayHandlerType.FORWARD); final Date Date = createDate("2006-08-08"); cal1.setStartDate(Date); - final DateCalculatorGeneric cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", + final DateCalculator cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", HolidayHandlerType.FORWARD); - final DateCalculatorGeneric combo = cal1.combine(cal2); + final DateCalculator combo = cal1.combine(cal2); Assert.assertEquals("Combo name", "US/UK", combo.getName()); Assert.assertEquals("Combo type", HolidayHandlerType.FORWARD, combo.getHolidayHandlerType()); Assert.assertEquals("start", Date, combo.getStartDate()); @@ -104,12 +104,12 @@ public void testNullCombination() { DefaultDateCalculatorFactory.getDefaultInstance().registerHolidays("US", createUSHolidays()); - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("US", + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("US", HolidayHandlerType.FORWARD); final Date Date = createDate("2006-08-08"); cal1.setStartDate(Date); - final DateCalculatorGeneric combo = cal1.combine(null); + final DateCalculator combo = cal1.combine(null); Assert.assertSame("same", combo, cal1); Assert.assertEquals("Combo name", "US", combo.getName()); Assert.assertEquals("Combo type", HolidayHandlerType.FORWARD, combo.getHolidayHandlerType()); @@ -120,12 +120,12 @@ public void testSameCombination() { DefaultDateCalculatorFactory.getDefaultInstance().registerHolidays("US", createUSHolidays()); - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("US", + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("US", HolidayHandlerType.FORWARD); final Date Date = createDate("2006-08-08"); cal1.setStartDate(Date); - final DateCalculatorGeneric combo = cal1.combine(cal1); + final DateCalculator combo = cal1.combine(cal1); Assert.assertSame("same", combo, cal1); Assert.assertEquals("Combo name", "US", combo.getName()); Assert.assertEquals("Combo type", HolidayHandlerType.FORWARD, combo.getHolidayHandlerType()); 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-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java 2006-08-23 22:00:20 UTC (rev 41) @@ -5,18 +5,18 @@ import junit.framework.Assert; -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; +import net.objectlab.kit.datecalc.common.DateCalculator; import net.objectlab.kit.datecalc.common.HolidayHandlerType; public class DateCalculatorFactoryTest extends AbstractDateCalculatorTest { public void testGetCalendarsNoHoliday() { - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); Assert.assertNotNull("cal1", cal1); Assert.assertEquals("name", "bla", cal1.getName()); Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty()); - final DateCalculatorGeneric cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); + final DateCalculator cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); Assert.assertNotNull("cal2", cal2); Assert.assertEquals("name", "bla", cal2.getName()); Assert.assertTrue("no holiday", cal2.getNonWorkingDays().isEmpty()); @@ -27,12 +27,12 @@ final Set<Date> uk = createUKHolidays(); DefaultDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", uk); - final DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); + final DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); Assert.assertNotNull("cal1", cal1); Assert.assertEquals("name", "bla", cal1.getName()); Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty()); - final DateCalculatorGeneric cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", null); + final DateCalculator cal2 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", null); Assert.assertNotNull("cal2", cal2); Assert.assertEquals("name cal2", "UK", cal2.getName()); Assert.assertEquals("UK holidays", 4, cal2.getNonWorkingDays().size()); @@ -40,7 +40,7 @@ } public void testGetCorrectAlgo() { - DateCalculatorGeneric cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); + DateCalculator cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null); Assert.assertNull("No algo", cal1.getHolidayHandlerType()); cal1 = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.BACKWARD); Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/ForwardDateCalculatorTest.java =================================================================== --- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/ForwardDateCalculatorTest.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/ForwardDateCalculatorTest.java 2006-08-23 22:00:20 UTC (rev 41) @@ -7,14 +7,14 @@ import junit.framework.Assert; -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; +import net.objectlab.kit.datecalc.common.DateCalculator; import net.objectlab.kit.datecalc.common.HolidayHandlerType; import net.objectlab.kit.datecalc.common.WorkingWeek; public class ForwardDateCalculatorTest extends AbstractDateCalculatorTest { public void testSimpleForwardWithWeekend() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -29,7 +29,7 @@ } public void testSimpleForwardStartDateWithWeekend() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -57,7 +57,7 @@ } public void testSimpleForwardStartDateNoWeekend() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); final WorkingWeek ww = new WorkingWeek(); ww.withWorkingDayFromCalendar(true, Calendar.SATURDAY); @@ -89,7 +89,7 @@ } public void testSimpleForwardStartDateWhackyWeek() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -127,7 +127,7 @@ } public void testSimpleForwardStartDateIdealWeekend() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -165,7 +165,7 @@ } public void testSimpleForwardWithHolidays() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); final Set<Date> holidays = new HashSet<Date>(); holidays.add(createDate("2006-08-28")); @@ -198,7 +198,7 @@ checkDate("23/12 + 1", cal.moveByDays(1), "2006-12-28"); } - private void checkDate(final String string, final DateCalculatorGeneric calendar, final String string2) { + private void checkDate(final String string, final DateCalculator calendar, final String string2) { Assert.assertEquals(string, createDate(string2), calendar.getCurrentDate()); } } 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-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/IMMDateTest.java 2006-08-23 22:00:20 UTC (rev 41) @@ -4,7 +4,7 @@ import java.util.List; import junit.framework.Assert; -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; +import net.objectlab.kit.datecalc.common.DateCalculator; import net.objectlab.kit.datecalc.common.HolidayHandlerType; public class IMMDateTest extends AbstractDateCalculatorTest { @@ -12,7 +12,7 @@ } public void testNextIMM() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -80,7 +80,7 @@ } public void testPreviousIMM() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -150,7 +150,7 @@ } public void testIMMLists() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -169,7 +169,7 @@ } public void testEmptyIMMLists() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -182,7 +182,7 @@ } public void testEndOnIMMDateIMMLists() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -197,7 +197,7 @@ } public void testStartOnIMMDateIMMLists() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/BackwardHandler.java =================================================================== --- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/BackwardHandler.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/BackwardHandler.java 2006-08-23 22:00:20 UTC (rev 41) @@ -15,6 +15,8 @@ */ package net.objectlab.kit.datecalc.joda; +import net.objectlab.kit.datecalc.common.DateCalculator; +import net.objectlab.kit.datecalc.common.HolidayHandler; import net.objectlab.kit.datecalc.common.HolidayHandlerType; import org.joda.time.LocalDate; @@ -25,9 +27,9 @@ * * @author Benoit Xhenseval */ -public class BackwardHandler implements HolidayHandler { +public class BackwardHandler implements HolidayHandler<LocalDate> { - public LocalDate moveCurrentDate(final BaseDateCalculator calendar) { + public LocalDate moveCurrentDate(final DateCalculator<LocalDate> calendar) { LocalDate date = calendar.getCurrentDate(); while (calendar.isNonWorkingDay(date)) { date = date.minusDays(1); Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/BaseDateCalculator.java =================================================================== --- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/BaseDateCalculator.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/BaseDateCalculator.java 2006-08-23 22:00:20 UTC (rev 41) @@ -22,7 +22,8 @@ import java.util.Set; import net.objectlab.kit.datecalc.common.AbstractDateCalculator; -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; +import net.objectlab.kit.datecalc.common.DateCalculator; +import net.objectlab.kit.datecalc.common.HolidayHandler; import net.objectlab.kit.datecalc.common.WorkingWeek; import org.joda.time.DateTimeConstants; @@ -35,12 +36,10 @@ * * @author Benoit Xhenseval */ -public class BaseDateCalculator extends AbstractDateCalculator<LocalDate> implements DateCalculator { +public class BaseDateCalculator extends AbstractDateCalculator<LocalDate> { private JodaWorkingWeek workingWeek = JodaWorkingWeek.DEFAULT; - private HolidayHandler holidayHandler = null; - @SuppressWarnings("unchecked") public BaseDateCalculator() { this(null, null, Collections.EMPTY_SET, null); @@ -65,16 +64,6 @@ } } - void setHolidayHandler(final HolidayHandler holidayHandler) { - this.holidayHandler = holidayHandler; - } - - public String getHolidayHandlerType() { - return (holidayHandler != null ? holidayHandler.getType() : null); - } - - // ----------------------------------------------------------------- - /** * is the date a non-working day according to the WorkingWeek? */ @@ -102,7 +91,7 @@ return currentDate; } - public DateCalculator moveByDays(final int days) { + public DateCalculator<LocalDate> moveByDays(final int days) { if (currentDate == null) { initialise(); } @@ -123,7 +112,7 @@ } } - public DateCalculator moveByBusinessDays(final int businessDays) { + public DateCalculator<LocalDate> moveByBusinessDays(final int businessDays) { final int numberOfStepsLeft = Math.abs(businessDays); final int step = (businessDays < 0 ? -1 : 1); @@ -146,7 +135,7 @@ * if both calendars have different types of HolidayHandlers or * WorkingWeek; */ - public DateCalculator combine(final DateCalculatorGeneric calendar) { + public DateCalculator<LocalDate> combine(final DateCalculator calendar) { if (calendar == null || calendar == this) { return this; } @@ -164,7 +153,7 @@ newSet.addAll(calendar.getNonWorkingDays()); } - final DateCalculator cal = new BaseDateCalculator(getName() + "/" + calendar.getName(), getStartDate(), newSet, + final DateCalculator<LocalDate> cal = new BaseDateCalculator(getName() + "/" + calendar.getName(), getStartDate(), newSet, holidayHandler); return cal; Deleted: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DateCalculator.java =================================================================== --- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DateCalculator.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DateCalculator.java 2006-08-23 22:00:20 UTC (rev 41) @@ -1,32 +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.joda; - -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; - -import org.joda.time.LocalDate; - -/** - * A DateCalculator is a lightweight container with a reference(optional) to a - * set of holidays, a WorkingWeek (Mon-Fri by default), a startDate and a - * current date. The CurrentDate date is changed everytime that the addDays or - * moveByBusinessDays methods are called. - * - * @author Benoit Xhenseval - */ -public interface DateCalculator extends DateCalculatorGeneric<LocalDate> { - -} Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactory.java =================================================================== --- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactory.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactory.java 2006-08-23 22:00:20 UTC (rev 41) @@ -17,6 +17,8 @@ import java.util.Set; +import net.objectlab.kit.datecalc.common.DateCalculator; + import org.joda.time.LocalDate; /** @@ -42,7 +44,7 @@ * typically one of the value of HolidayHandlerType * @return a new DateCalculator */ - DateCalculator getDateCalculator(final String name, final String holidayHandlerType); + DateCalculator<LocalDate> getDateCalculator(final String name, final String holidayHandlerType); /** * Use this method to register a set of holidays for a given calendar. Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultDateCalculatorFactory.java =================================================================== --- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultDateCalculatorFactory.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultDateCalculatorFactory.java 2006-08-23 22:00:20 UTC (rev 41) @@ -20,6 +20,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import net.objectlab.kit.datecalc.common.DateCalculator; import net.objectlab.kit.datecalc.common.HolidayHandlerType; import org.joda.time.LocalDate; @@ -44,7 +45,7 @@ * typically one of the value of HolidayHandlerType * @return a new DateCalculator */ - public DateCalculator getDateCalculator(final String name, final String holidayHandlerType) { + public DateCalculator<LocalDate> getDateCalculator(final String name, final String holidayHandlerType) { final BaseDateCalculator cal = new BaseDateCalculator(); cal.setName(name); if (holidays.containsKey(name)) { Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ForwardHandler.java =================================================================== --- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ForwardHandler.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ForwardHandler.java 2006-08-23 22:00:20 UTC (rev 41) @@ -15,6 +15,8 @@ */ package net.objectlab.kit.datecalc.joda; +import net.objectlab.kit.datecalc.common.DateCalculator; +import net.objectlab.kit.datecalc.common.HolidayHandler; import net.objectlab.kit.datecalc.common.HolidayHandlerType; import org.joda.time.LocalDate; @@ -25,9 +27,9 @@ * * @author Benoit Xhenseval */ -public class ForwardHandler implements HolidayHandler { +public class ForwardHandler implements HolidayHandler<LocalDate> { - public LocalDate moveCurrentDate(final BaseDateCalculator calendar) { + public LocalDate moveCurrentDate(final DateCalculator<LocalDate> calendar) { LocalDate date = calendar.getCurrentDate(); while (calendar.isNonWorkingDay(date)) { date = date.plusDays(1); Deleted: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandler.java =================================================================== --- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandler.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/HolidayHandler.java 2006-08-23 22:00:20 UTC (rev 41) @@ -1,30 +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.joda; - -import org.joda.time.LocalDate; - -/** - * This will be called to determine whether the date should be moved according - * to the special algorithm used. - * - * @author Benoit Xhenseval - */ -public interface HolidayHandler { - LocalDate moveCurrentDate(BaseDateCalculator calendar); - - String getType(); -} Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ModifiedFollowingHandler.java =================================================================== --- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ModifiedFollowingHandler.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ModifiedFollowingHandler.java 2006-08-23 22:00:20 UTC (rev 41) @@ -15,6 +15,8 @@ */ package net.objectlab.kit.datecalc.joda; +import net.objectlab.kit.datecalc.common.DateCalculator; +import net.objectlab.kit.datecalc.common.HolidayHandler; import net.objectlab.kit.datecalc.common.HolidayHandlerType; import org.joda.time.LocalDate; @@ -26,9 +28,9 @@ * * @author Benoit Xhenseval */ -public class ModifiedFollowingHandler implements HolidayHandler { +public class ModifiedFollowingHandler implements HolidayHandler<LocalDate> { - public LocalDate moveCurrentDate(final BaseDateCalculator calendar) { + public LocalDate moveCurrentDate(final DateCalculator<LocalDate> calendar) { LocalDate date = calendar.getCurrentDate(); final int month = date.getMonthOfYear(); int step = 1; Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ModifiedPreceedingHandler.java =================================================================== --- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ModifiedPreceedingHandler.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/ModifiedPreceedingHandler.java 2006-08-23 22:00:20 UTC (rev 41) @@ -15,6 +15,8 @@ */ package net.objectlab.kit.datecalc.joda; +import net.objectlab.kit.datecalc.common.DateCalculator; +import net.objectlab.kit.datecalc.common.HolidayHandler; import net.objectlab.kit.datecalc.common.HolidayHandlerType; import org.joda.time.LocalDate; @@ -26,9 +28,9 @@ * * @author Benoit Xhenseval */ -public class ModifiedPreceedingHandler implements HolidayHandler { +public class ModifiedPreceedingHandler implements HolidayHandler<LocalDate> { - public LocalDate moveCurrentDate(final BaseDateCalculator calendar) { + public LocalDate moveCurrentDate(final DateCalculator<LocalDate> calendar) { LocalDate date = calendar.getCurrentDate(); final int month = date.getMonthOfYear(); int step = -1; Modified: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/BackwardDateCalculatorTest.java =================================================================== --- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/BackwardDateCalculatorTest.java 2006-08-23 21:53:02 UTC (rev 40) +++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/BackwardDateCalculatorTest.java 2006-08-23 22:00:20 UTC (rev 41) @@ -5,7 +5,7 @@ import junit.framework.Assert; import junit.framework.TestCase; -import net.objectlab.kit.datecalc.common.DateCalculatorGeneric; +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; @@ -17,7 +17,7 @@ public class BackwardDateCalculatorTest extends TestCase { public void testSimpleForwardWithWeekend() { - final DateCalculatorGeneric cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", + final DateCalculator cal = DefaultDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.BACKWARD); Assert.assertEquals("Name", "bla", cal.getName()); Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size()); @@ -258,7 +258,7 @@ checkDate("Move 4W", cal.moveByTenor(new Tenor(4, TenorCode.WEEK)), "2006-09-05"); } - private void checkDate(final String string, final DateCalculatorGeneric calendar, final String string2) { + private void checkDate(final String string, final DateCalculator calendar, final String string2) { Assert.assertEquals(string, new LocalDate(string2), calendar.getCurrentDate()); } } Modified: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateCalculatorCombinationTest.java ===============================================================... [truncated message content] |