|
From: <ma...@us...> - 2006-09-04 12:34:39
|
Revision: 94
http://svn.sourceforge.net/objectlabkit/?rev=94&view=rev
Author: marchy
Date: 2006-09-04 05:32:55 -0700 (Mon, 04 Sep 2006)
Log Message:
-----------
moved Utils to common. more work on creating Calendar base implementations, and Date wrappers. All tests pass ;)
Modified Paths:
--------------
trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java
trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java
trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculator.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedFollowingHandler.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedPreceedingHandler.java
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java
Added Paths:
-----------
trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java
Removed Paths:
-------------
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/Utils.java
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorCombinationTest.java
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -146,7 +146,7 @@
return currentBusinessDate;
}
- protected HolidayHandler<E> getHolidayHandler() {
+ public HolidayHandler<E> getHolidayHandler() {
return holidayHandler;
}
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculator.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -135,10 +135,10 @@
* By combining several calendars, we take into account several set of
* holidays.
*
- * @param calendar
+ * @param calculator
* @return a new DateCalculator
*/
- DateCalculator<E> combine(DateCalculator<E> calendar);
+ DateCalculator<E> combine(DateCalculator<E> calculator);
/**
* move the current date by a given tenor, this means that if a date is
Added: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java (rev 0)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package net.objectlab.kit.datecalc.common;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * TODO javadoc
+ * @author Marcin Jekot
+ * @author $LastModifiedBy$
+ * @version $Revision$ $Date$
+ *
+ */
+public class Utils {
+
+ private static final String DATE_PATTERN = "yyyy-MM-dd";
+ private static final SimpleDateFormat SDF = new SimpleDateFormat(DATE_PATTERN);
+
+ // TODO create tests
+ public static Calendar getCal(final Date date) {
+ final Calendar cal = Calendar.getInstance();
+ cal.setTime(date);
+ return cal;
+ }
+
+ public static Date createDate(final String str) throws IllegalArgumentException {
+ try {
+ return SDF.parse(str);
+ } catch (final ParseException e) {
+ throw new IllegalArgumentException("\"" + str + "\"" + " is an invalid date, the pattern is : " + DATE_PATTERN);
+ }
+ }
+
+ public static Set<Calendar> toCalendarSet(Set<Date> dates) {
+
+ Set<Calendar> calendars = new HashSet<Calendar>();
+ for (Date date : dates) {
+ calendars.add(getCal(date));
+ }
+ return calendars;
+ }
+
+ public static Set<Date> toDateSet(Set<Calendar> calendars) {
+
+ Set<Date> dates = new HashSet<Date>();
+ for (Calendar calendar : calendars) {
+ dates.add(calendar.getTime());
+ }
+ return dates;
+ }
+
+ public static List<Date> toDateList(List<Calendar> dates) {
+
+ List<Date> dateList = new ArrayList<Date>();
+ for (Calendar calendar : dates) {
+ dateList.add(calendar.getTime());
+ }
+
+ return dateList;
+ }
+}
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/WorkingWeek.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -69,8 +69,10 @@
}
public boolean isWorkingDay(final Date date) {
- final Calendar cal = Calendar.getInstance();
- cal.setTime(date);
+ return isWorkingDay(Utils.getCal(date));
+ }
+
+ public boolean isWorkingDay(final Calendar cal) {
return isWorkingDayFromCalendar(cal.get(Calendar.DAY_OF_WEEK));
}
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/UtilsTest.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,76 @@
+package net.objectlab.kit.datecalc.common;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+public class UtilsTest extends TestCase {
+
+ SimpleDateFormat sdf;
+ Calendar cal;
+ Set<Calendar> calendarSet;
+ Set<Date> dateSet;
+
+ protected void setUp() throws Exception {
+ sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+ calendarSet = new HashSet<Calendar>();
+ calendarSet.add(getCal(2004, 5, 31));
+ calendarSet.add(getCal(2083, 12, 1));
+
+ dateSet = new HashSet<Date>();
+ dateSet.add(sdf.parse("2004-05-31"));
+ dateSet.add(sdf.parse("2083-12-01"));
+ }
+
+ private Calendar getCal(int year, int month, int day) {
+ Calendar cal = Calendar.getInstance();
+ cal.clear();
+ cal.set(year, month-1, day, 0, 0, 0);
+ return cal;
+ }
+
+ public void testGetCal() throws Exception {
+
+ Date d = sdf.parse("2004-02-03");
+ assertEquals(Utils.getCal(d).getTime(), getCal(2004, 2, 3).getTime());
+
+ Date d1 = getCal(2080, 5, 31).getTime();
+ Date d2 = getCal(2080, 5, 31).getTime();
+ assertEquals(Utils.getCal(d1).getTime(), d2);
+ }
+
+ public void testCreateDate() throws Exception {
+
+ assertEquals(sdf.parse("1970-01-01"), Utils.createDate("1970-01-01"));
+ assertEquals(sdf.parse("2020-12-31"), Utils.createDate("2020-12-31"));
+
+ assertEquals(getCal(2006, 8, 8).getTime(), Utils.createDate("2006-08-08"));
+ assertEquals(getCal(2004, 9, 12).getTime(), Utils.createDate("2004-09-12"));
+ }
+
+ public void testToCalendarSet() throws Exception {
+ assertEquals(calendarSet, Utils.toCalendarSet(dateSet));
+ }
+
+ public void testToDateSet() {
+ assertEquals(dateSet, Utils.toDateSet(calendarSet));
+ }
+
+ public void testToDateList() {
+
+ List<Date> expected = new ArrayList<Date>(dateSet);
+ Collections.sort(expected);
+
+ List<Date> actual = Utils.toDateList(new ArrayList<Calendar>(calendarSet));
+ Collections.sort(actual);
+ assertEquals(expected, actual);
+ }
+}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -17,7 +17,7 @@
*/
package net.objectlab.kit.datecalc.jdk;
-import java.util.Date;
+import java.util.Calendar;
import net.objectlab.kit.datecalc.common.DateCalculator;
import net.objectlab.kit.datecalc.common.HolidayHandlerType;
@@ -32,7 +32,7 @@
*/
public class BackwardHandler extends ForwardHandler {
- public Date moveCurrentDate(DateCalculator<Date> calendar) {
+ public Calendar moveCurrentDate(DateCalculator<Calendar> calendar) {
return move(calendar, -1);
}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarForwardHandler.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,54 @@
+/*
+ * $Id$
+ *
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandler;
+import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+
+/**
+ * TODO javadoc
+ *
+ * @author Marcin Jekot
+ * @author $LastChangedBy: marchy $
+ * @version $Revision: 69 $ $Date: 2006-08-27 11:47:25 +0200 (Sun, 27 Aug 2006) $
+ *
+ */
+public class CalendarForwardHandler implements HolidayHandler<Calendar> {
+
+ public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
+ return move(calendar, 1);
+ }
+
+ protected Calendar move(final DateCalculator<Calendar> calculator, int step) {
+ final Calendar cal = (Calendar)calculator.getCurrentBusinessDate().clone();
+
+ while (calculator.isNonWorkingDay(cal)) {
+ cal.add(Calendar.DAY_OF_MONTH, step);
+ }
+
+ return cal;
+ }
+
+ public String getType() {
+ return HolidayHandlerType.FORWARD;
+ }
+
+}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculator.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -20,6 +20,7 @@
import java.util.Date;
import net.objectlab.kit.datecalc.common.PeriodCountBasis;
+import net.objectlab.kit.datecalc.common.Utils;
/**
* TODO javadoc
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -16,7 +16,6 @@
package net.objectlab.kit.datecalc.jdk;
import java.util.Calendar;
-import java.util.Date;
import net.objectlab.kit.datecalc.common.DateCalculator;
import net.objectlab.kit.datecalc.common.HolidayHandler;
@@ -24,28 +23,29 @@
/**
* TODO javadoc
- *
+ *
* @author Marcin Jekot
* @author $LastChangedBy$
* @version $Revision$ $Date$
*
*/
-public class ForwardHandler implements HolidayHandler<Date> {
+public class ForwardHandler implements HolidayHandler<Calendar> {
- public Date moveCurrentDate(final DateCalculator<Date> calendar) {
+ public Calendar moveCurrentDate(final DateCalculator<Calendar> calendar) {
return move(calendar, 1);
}
- protected Date move(final DateCalculator<Date> calendar, int step) {
- final Calendar cal = Utils.getCal(calendar.getCurrentBusinessDate());
+ protected Calendar move(final DateCalculator<Calendar> calculator, int step) {
+// final Calendar cal = (Calendar) calculator.getCurrentBusinessDate().clone();
+ final Calendar cal = calculator.getCurrentBusinessDate();
- while (calendar.isNonWorkingDay(cal.getTime())) {
+ while (calculator.isNonWorkingDay(cal)) {
cal.add(Calendar.DAY_OF_MONTH, step);
}
- return cal.getTime();
+ return cal;
}
-
+
public String getType() {
return HolidayHandlerType.FORWARD;
}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/HolidayHandlerDateWrapper.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,52 @@
+/*
+ * $Id$
+ *
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandler;
+
+/**
+ * A Wrapper to handle any HolidayHandler<Date> types via a HolidayHandler<Calendar> delegate
+ *
+ * @author Marcin Jekot
+ * @author $LastChangedBy$
+ * @version $Revision$ $Date$
+ *
+ */
+public class HolidayHandlerDateWrapper implements HolidayHandler<Date> {
+
+ HolidayHandler<Calendar> delegate;
+ DateCalculator<Calendar> calculator;
+
+ public HolidayHandlerDateWrapper(HolidayHandler<Calendar> holidayHandler, DateCalculator<Calendar> dateCalulator) {
+ delegate = holidayHandler;
+ calculator = dateCalulator;
+ }
+
+ public Date moveCurrentDate(DateCalculator<Date> calendar) {
+ return delegate.moveCurrentDate(calculator).getTime();
+ }
+
+ public String getType() {
+ return delegate.getType();
+ }
+
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,192 @@
+/*
+ * $Id: JdkDateBaseDateCalculator.java 82 2006-09-03 09:56:09Z marchy $
+ *
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import net.objectlab.kit.datecalc.common.AbstractDateCalculator;
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.HolidayHandler;
+import net.objectlab.kit.datecalc.common.Tenor;
+import net.objectlab.kit.datecalc.common.WorkingWeek;
+
+/**
+ * This class is used via the DateCalculator interface, it enables the handling
+ * of different HolidayHandler, if no HolidayHandler is defined, the calendar
+ * will NOT move a date, even if it falls on a holiday or weekend.
+ *
+ * @author Marcin Jekot
+ * @author $LastModifiedBy$
+ * @version $Revision: 82 $ $Date: 2006-09-03 11:56:09 +0200 (Sun, 03 Sep 2006) $
+ */
+public class JdkCalendarBaseDateCalculator extends AbstractDateCalculator<Calendar> implements JdkCalendarDateCalculator {
+
+ private WorkingWeek workingWeek = WorkingWeek.DEFAULT;
+
+ @SuppressWarnings("unchecked")
+ public JdkCalendarBaseDateCalculator() {
+ this(null, null, Collections.EMPTY_SET, null);
+ }
+
+ public JdkCalendarBaseDateCalculator(final String name, final Calendar startDate, final Set<Calendar> nonWorkingDays,
+ final HolidayHandler<Calendar> holidayHandler) {
+ super(name, nonWorkingDays, holidayHandler);
+ setStartDate(startDate);
+ }
+
+ public void setWorkingWeek(final WorkingWeek week) {
+ workingWeek = week;
+ }
+
+ /**
+ * is the date a non-working day according to the WorkingWeek?
+ */
+ public boolean isWeekend(final Calendar date) {
+ assert workingWeek != null;
+ return !workingWeek.isWorkingDay(date);
+ }
+
+ public JdkCalendarBaseDateCalculator moveByDays(final int days) {
+ if (getCurrentBusinessDate() == null) {
+ initialise();
+ }
+ getCurrentBusinessDate().add(Calendar.DAY_OF_MONTH, days);
+
+ if (getHolidayHandler() != null) {
+ setCurrentBusinessDate(getHolidayHandler().moveCurrentDate(this));
+ }
+
+ return this;
+ }
+
+ private void initialise() {
+ if (getStartDate() == null) {
+ setStartDate(Calendar.getInstance());
+ } else if (getCurrentBusinessDate() == null) {
+ setCurrentBusinessDate(Calendar.getInstance());
+ }
+ }
+
+ @Override
+ protected JdkCalendarDateCalculator createNewCalcultaor(final String name, final Calendar startDate, final Set<Calendar> holidays,
+ final HolidayHandler<Calendar> handler) {
+ return new JdkCalendarBaseDateCalculator(name, startDate, holidays, handler);
+ }
+
+ /**
+ * Calculates IMMDates between a start and end dates the 3rd wednesday of
+ * Mar/Jun/Sep/Dec when a lot of derivative contracts expire
+ *
+ * @return a List of Dates
+ */
+ public List<Calendar> getIMMDates(final Calendar start, final Calendar end) {
+
+ final List<Calendar> dates = new ArrayList<Calendar>();
+ Calendar cal = (Calendar) start.clone();
+ while (true) {
+ cal = getNextIMMDate(true, cal);
+ if (!cal.after(end)) {
+ dates.add(cal);
+ } else {
+ break;
+ }
+ }
+
+ return dates;
+ }
+
+ @Override
+ protected Calendar getNextIMMDate(final boolean forward, final Calendar startDate) {
+
+ Calendar cal = (Calendar) startDate.clone();
+
+ if (isIMMMonth(cal)) {
+ moveToIMMDay(cal);
+ // TODO simplify this if condition
+// if (forward ^ cal.getTime().before(startDate) || cal.getTime().equals(startDate)) {
+ if ((forward && cal.after(startDate)) || (!forward && cal.before(startDate))) {
+ return cal;
+ }
+ }
+
+ final int delta = (forward ? 1 : -1);
+ do {
+ cal.add(Calendar.MONTH, delta);
+ } while (!isIMMMonth(cal));
+
+ moveToIMMDay(cal);
+ return cal;
+ }
+
+ private boolean isIMMMonth(final Calendar cal) {
+ final int month = cal.get(Calendar.MONTH);
+
+ switch (month) {
+ case Calendar.MARCH:
+ case Calendar.JUNE:
+ case Calendar.SEPTEMBER:
+ case Calendar.DECEMBER:
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Assumes that the month is correct, get the day for the 3rd wednesday.
+ *
+ * @param first
+ * @return
+ */
+ private void moveToIMMDay(final Calendar cal) {
+ cal.set(Calendar.DAY_OF_MONTH, 1);
+
+ // go to 1st wed
+ final int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
+ if (dayOfWeek < Calendar.WEDNESDAY) {
+ cal.add(Calendar.DAY_OF_MONTH, Calendar.WEDNESDAY - dayOfWeek);
+ } else if (dayOfWeek == Calendar.WEDNESDAY) {
+ // do nothing
+ } else {
+ cal.add(Calendar.DAY_OF_MONTH, (Calendar.WEDNESDAY + 7) - dayOfWeek);
+ }
+
+ // go to 3rd wednesday - i.e. move 2 weeks forward
+ cal.add(Calendar.DAY_OF_MONTH, 7 * 2);
+ }
+
+ @Override
+ public JdkCalendarBaseDateCalculator combine(DateCalculator<Calendar> calendar) {
+ return (JdkCalendarBaseDateCalculator) super.combine(calendar);
+ }
+
+ @Override
+ public JdkCalendarBaseDateCalculator moveByTenor(Tenor tenor) {
+ return (JdkCalendarBaseDateCalculator) super.moveByTenor(tenor);
+ }
+
+ @Override
+ public JdkCalendarBaseDateCalculator moveByBusinessDays(int businessDays) {
+ return (JdkCalendarBaseDateCalculator) super.moveByBusinessDays(businessDays);
+ }
+
+}
Added: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java (rev 0)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarDateCalculator.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -0,0 +1,18 @@
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Calendar;
+
+import net.objectlab.kit.datecalc.common.DateCalculator;
+import net.objectlab.kit.datecalc.common.Tenor;
+
+public interface JdkCalendarDateCalculator extends DateCalculator<Calendar> {
+
+ JdkCalendarDateCalculator moveByDays(final int days);
+
+ JdkCalendarDateCalculator moveByBusinessDays(final int businessDays);
+
+ JdkCalendarDateCalculator combine(DateCalculator<Calendar> calendar);
+
+ JdkCalendarDateCalculator moveByTenor(final Tenor tenor);
+
+}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -17,17 +17,16 @@
*/
package net.objectlab.kit.datecalc.jdk;
-import java.util.ArrayList;
import java.util.Calendar;
-import java.util.Collections;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import net.objectlab.kit.datecalc.common.AbstractDateCalculator;
import net.objectlab.kit.datecalc.common.DateCalculator;
import net.objectlab.kit.datecalc.common.HolidayHandler;
import net.objectlab.kit.datecalc.common.Tenor;
+import net.objectlab.kit.datecalc.common.Utils;
import net.objectlab.kit.datecalc.common.WorkingWeek;
/**
@@ -39,156 +38,118 @@
* @author $LastModifiedBy$
* @version $Revision$ $Date$
*/
-public class JdkDateBaseDateCalculator extends AbstractDateCalculator<Date> implements JdkDateCalculator {
+public class JdkDateBaseDateCalculator implements JdkDateCalculator {
- private WorkingWeek workingWeek = WorkingWeek.DEFAULT;
-
- @SuppressWarnings("unchecked")
+ private JdkCalendarBaseDateCalculator delegate;
+
public JdkDateBaseDateCalculator() {
- this(null, null, Collections.EMPTY_SET, null);
+ delegate = new JdkCalendarBaseDateCalculator();
}
public JdkDateBaseDateCalculator(final String name, final Date startDate, final Set<Date> nonWorkingDays,
- final HolidayHandler<Date> holidayHandler) {
- super(name, nonWorkingDays, holidayHandler);
- setStartDate(startDate);
+ final HolidayHandler<Calendar> holidayHandler) {
+ final Set<Calendar> nonWorkingCalendars = Utils.toCalendarSet(nonWorkingDays);
+
+ delegate = new JdkCalendarBaseDateCalculator(name, Utils.getCal(startDate), nonWorkingCalendars, holidayHandler);
+ delegate.setStartDate(Utils.getCal(startDate));
}
- public void setWorkingWeek(final WorkingWeek week) {
- workingWeek = week;
+ public Date getCurrentBusinessDate() {
+ return delegate.getCurrentBusinessDate().getTime();
}
- /**
- * is the date a non-working day according to the WorkingWeek?
- */
- public boolean isWeekend(final Date date) {
- assert workingWeek != null;
- return !workingWeek.isWorkingDay(date);
+ public List<Date> getIMMDates(Date start, Date end) {
+ return Utils.toDateList(delegate.getIMMDates(Utils.getCal(start), Utils.getCal(end)));
}
- public JdkDateCalculator moveByDays(final int days) {
- if (getCurrentBusinessDate() == null) {
- initialise();
- }
+ public Date getNextIMMDate() {
+ return delegate.getNextIMMDate().getTime();
+ }
- final Calendar cal = Utils.getCal(getCurrentBusinessDate());
- cal.add(Calendar.DAY_OF_MONTH, days);
- setCurrentBusinessDate(cal.getTime());
+ public Date getPreviousIMMDate() {
+ return delegate.getPreviousIMMDate().getTime();
+ }
- return this;
+ public Date getStartDate() {
+ return delegate.getStartDate().getTime();
}
- private void initialise() {
- if (getStartDate() == null) {
- setStartDate(new Date());
- } else if (getCurrentBusinessDate() == null) {
- setCurrentBusinessDate(new Date());
- }
+ public boolean isNonWorkingDay(Date date) {
+ return delegate.isNonWorkingDay(Utils.getCal(date));
}
- @Override
- protected DateCalculator<Date> createNewCalcultaor(final String name, final Date startDate, final Set<Date> holidays,
- final HolidayHandler<Date> handler) {
- return new JdkDateBaseDateCalculator(name, startDate, holidays, handler);
+ public boolean isWeekend(Date date) {
+ return delegate.isWeekend(Utils.getCal(date));
}
- /**
- * Calculates IMMDates between a start and end dates the 3rd wednesday of
- * Mar/Jun/Sep/Dec when a lot of derivative contracts expire
- *
- * @return a List of Dates
- */
- public List<Date> getIMMDates(final Date start, final Date end) {
+ public JdkDateBaseDateCalculator moveByBusinessDays(int businessDays) {
+ delegate = delegate.moveByBusinessDays(businessDays);
+ return this;
+ }
- final List<Date> dates = new ArrayList<Date>();
- Date date = start;
- while (true) {
- date = getNextIMMDate(true, date);
- if (!date.after(end)) {
- dates.add(date);
- } else {
- break;
- }
- }
+ public JdkDateBaseDateCalculator moveByDays(int days) {
+ delegate = delegate.moveByDays(days);
+ return this;
+ }
- return dates;
+ public JdkDateBaseDateCalculator moveByTenor(Tenor tenor) {
+ delegate = delegate.moveByTenor(tenor);
+ return this;
}
- @Override
- protected Date getNextIMMDate(final boolean forward, final Date startDate) {
+ public Date setCurrentBusinessDate(Date date) {
+ return delegate.setCurrentBusinessDate(Utils.getCal(date)).getTime();
+ }
- final Calendar cal = Utils.getCal(startDate);
+ public void setStartDate(Date startDate) {
+ delegate.setStartDate(Utils.getCal(startDate));
+ }
- if (isIMMMonth(cal)) {
- moveToIMMDay(cal);
- // TODO simplify this if condition
-// if (forward ^ cal.getTime().before(startDate) || cal.getTime().equals(startDate)) {
- if ((forward && cal.getTime().after(startDate)) || (!forward && cal.getTime().before(startDate))) {
- return cal.getTime();
- }
- }
-
- final int delta = (forward ? 1 : -1);
- do {
- cal.add(Calendar.MONTH, delta);
- } while (!isIMMMonth(cal));
-
- moveToIMMDay(cal);
- return cal.getTime();
+ public String getName() {
+ return delegate.getName();
}
+
+ public void setName(String name) {
+ delegate.setName(name);
+ }
- private boolean isIMMMonth(final Calendar cal) {
- final int month = cal.get(Calendar.MONTH);
-
- switch (month) {
- case Calendar.MARCH:
- case Calendar.JUNE:
- case Calendar.SEPTEMBER:
- case Calendar.DECEMBER:
- return true;
- }
-
- return false;
+ public boolean isCurrentDateNonWorking() {
+ return delegate.isCurrentDateNonWorking();
}
- /**
- * Assumes that the month is correct, get the day for the 3rd wednesday.
- *
- * @param first
- * @return
- */
- private void moveToIMMDay(final Calendar cal) {
- cal.set(Calendar.DAY_OF_MONTH, 1);
-
- // go to 1st wed
- final int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
- if (dayOfWeek < Calendar.WEDNESDAY) {
- cal.add(Calendar.DAY_OF_MONTH, Calendar.WEDNESDAY - dayOfWeek);
- } else if (dayOfWeek == Calendar.WEDNESDAY) {
- // do nothing
- } else {
- cal.add(Calendar.DAY_OF_MONTH, (Calendar.WEDNESDAY + 7) - dayOfWeek);
- }
-
- // go to 3rd wednesday - i.e. move 2 weeks forward
- cal.add(Calendar.DAY_OF_MONTH, 7 * 2);
+ public void setNonWorkingDays(Set<Date> holidays) {
+ delegate.setNonWorkingDays(Utils.toCalendarSet(holidays));
}
- @Override
- public JdkDateCalculator combine(DateCalculator<Date> calendar) {
- return (JdkDateCalculator) super.combine(calendar);
+ public Set<Date> getNonWorkingDays() {
+ return Utils.toDateSet(delegate.getNonWorkingDays());
}
- @Override
- public JdkDateCalculator moveByTenor(Tenor tenor) {
- return (JdkDateCalculator) super.moveByTenor(tenor);
+ public void setWorkingWeek(WorkingWeek week) {
+ delegate.setWorkingWeek(week);
}
- @Override
- public JdkDateCalculator moveByBusinessDays(int businessDays) {
- return (JdkDateCalculator) super.moveByBusinessDays(businessDays);
+ public String getHolidayHandlerType() {
+ return delegate.getHolidayHandlerType();
}
-
-
+ public void setHolidayHandler(HolidayHandler<Calendar> holidayHandler) {
+ delegate.setHolidayHandler(holidayHandler);
+ }
+
+ public JdkDateBaseDateCalculator combine(DateCalculator<Date> calculator) {
+ if (calculator == null || calculator == this) {
+ return this;
+ }
+
+ if (delegate.getHolidayHandlerType() == null && calculator.getHolidayHandlerType() != null || delegate.getHolidayHandlerType() != null
+ && !delegate.getHolidayHandlerType().equals(calculator.getHolidayHandlerType())) {
+ throw new IllegalArgumentException("Combined Calendars cannot have different handler types");
+ }
+
+ final Set<Date> newSet = new HashSet<Date>();
+ newSet.addAll(Utils.toDateSet(delegate.getNonWorkingDays()));
+ newSet.addAll(calculator.getNonWorkingDays());
+ return new JdkDateBaseDateCalculator(delegate.getName() + "/" + calculator.getName(), getStartDate(), newSet, delegate.getHolidayHandler());
+ }
}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculator.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateCalculator.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -11,7 +11,7 @@
JdkDateCalculator moveByBusinessDays(final int businessDays);
- JdkDateCalculator combine(DateCalculator<Date> calendar);
+ JdkDateCalculator combine(DateCalculator<Date> calculator);
JdkDateCalculator moveByTenor(final Tenor tenor);
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedFollowingHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedFollowingHandler.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedFollowingHandler.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -17,7 +17,6 @@
*/package net.objectlab.kit.datecalc.jdk;
import java.util.Calendar;
-import java.util.Date;
import net.objectlab.kit.datecalc.common.DateCalculator;
import net.objectlab.kit.datecalc.common.HolidayHandler;
@@ -31,26 +30,28 @@
* @version $Revision$ $Date$
*
*/
-public class ModifiedFollowingHandler implements HolidayHandler<Date> {
+public class ModifiedFollowingHandler implements HolidayHandler<Calendar> {
- public Date moveCurrentDate(DateCalculator<Date> calendar) {
+ public Calendar moveCurrentDate(DateCalculator<Calendar> calendar) {
return move(calendar, 1);
}
- protected Date move(DateCalculator<Date> calendar, int step) {
+ protected Calendar move(DateCalculator<Calendar> calendar, int step) {
- final Calendar cal = Utils.getCal(calendar.getCurrentBusinessDate());
+ final Calendar cal = (Calendar)calendar.getCurrentBusinessDate().clone();
int month = cal.get(Calendar.MONTH);
- while (calendar.isNonWorkingDay(cal.getTime())) {
+ while (calendar.isNonWorkingDay(cal)) {
cal.add(Calendar.DAY_OF_MONTH, step);
if (month != cal.get(Calendar.MONTH)) {
+ // switch direction and go back
step *= -1;
+ cal.add(Calendar.DAY_OF_MONTH, step);
}
}
- return cal.getTime();
+ return cal;
}
public String getType() {
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedPreceedingHandler.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedPreceedingHandler.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedPreceedingHandler.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -16,7 +16,7 @@
* the License.
*/package net.objectlab.kit.datecalc.jdk;
-import java.util.Date;
+import java.util.Calendar;
import net.objectlab.kit.datecalc.common.DateCalculator;
import net.objectlab.kit.datecalc.common.HolidayHandlerType;
@@ -31,7 +31,7 @@
*/
public class ModifiedPreceedingHandler extends ModifiedFollowingHandler {
- public Date moveCurrentDate(DateCalculator<Date> calendar) {
+ public Calendar moveCurrentDate(DateCalculator<Calendar> calendar) {
return move(calendar, -1);
}
Deleted: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/Utils.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/Utils.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/Utils.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -1,48 +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.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-
-/**
- *
- * @author Marcin Jekot
- *
- */
-public class Utils {
-
- private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd");
-
- // TODO create tests
- public static Calendar getCal(final Date date) {
- final Calendar cal = Calendar.getInstance();
- cal.setTime(date);
- return cal;
- }
-
- // TODO create tests
- public static Date createDate(final String str) {
- try {
- return SDF.parse(str);
- } catch (final ParseException e) {
- System.out.println(e.toString());
- }
- return null;
- }
-}
Deleted: 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-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorCombinationTest.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -1,135 +0,0 @@
-package net.objectlab.kit.datecalc.jdk;
-
-import java.util.Date;
-
-import junit.framework.Assert;
-import net.objectlab.kit.datecalc.common.DateCalculator;
-import net.objectlab.kit.datecalc.common.HolidayHandlerType;
-
-public class DateCalculatorCombinationTest extends AbstractDateCalculatorTest {
-
- public void testInvalidCombinationDiffHandler() {
- final JdkDateCalculator cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- HolidayHandlerType.BACKWARD);
- final JdkDateCalculator cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla2",
- HolidayHandlerType.FORWARD);
-
- try {
- cal1.combine(cal2);
- Assert.fail("should not have allowed 2 different handler types to be combined");
- } catch (final IllegalArgumentException e) {
- // ok
- }
- }
-
- public void testInvalidCombinationNullNotNullHandler() {
- final JdkDateCalculator cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
- final DateCalculator<Date> cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla2",
- HolidayHandlerType.FORWARD);
-
- try {
- cal1.combine(cal2);
- Assert.fail("should not have allowed 2 different handler types to be combined");
- } catch (final IllegalArgumentException e) {
- // ok
- }
- }
-
- public void testInvalidCombinationNotNullNullHandler() {
- final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- HolidayHandlerType.FORWARD);
- final DateCalculator<Date> cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla2", null);
-
- try {
- cal1.combine(cal2);
- Assert.fail("should not have allowed 2 different handler types to be combined");
- } catch (final IllegalArgumentException e) {
- // ok
- }
- }
-
- public void testValidCombinationOneEmptySet() {
- DefaultJdkDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", createUKHolidays());
- final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- HolidayHandlerType.FORWARD);
- final Date Date = createDate("2006-08-08");
- cal1.setStartDate(Date);
- final DateCalculator<Date> cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK",
- HolidayHandlerType.FORWARD);
-
- final DateCalculator<Date> 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());
- Assert.assertEquals("currentDate", Date, combo.getCurrentBusinessDate());
- Assert.assertEquals("Holidays", 4, combo.getNonWorkingDays().size());
- }
-
- public void testValidCombination() {
- DefaultJdkDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", createUKHolidays());
- DefaultJdkDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", createUKHolidays());
- final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK",
- HolidayHandlerType.FORWARD);
- final Date Date = createDate("2006-08-08");
- cal1.setStartDate(Date);
- final DateCalculator<Date> cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK",
- HolidayHandlerType.FORWARD);
-
- final DateCalculator<Date> 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());
- Assert.assertEquals("currentDate", Date, combo.getCurrentBusinessDate());
- Assert.assertEquals("Holidays", 4, combo.getNonWorkingDays().size());
- }
-
- public void testValidCombination2Sets() {
- DefaultJdkDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", createUKHolidays());
- DefaultJdkDateCalculatorFactory.getDefaultInstance().registerHolidays("US", createUSHolidays());
- final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("US",
- HolidayHandlerType.FORWARD);
- final Date Date = createDate("2006-08-08");
- cal1.setStartDate(Date);
- final DateCalculator<Date> cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK",
- HolidayHandlerType.FORWARD);
-
- final DateCalculator<Date> 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());
- Assert.assertEquals("currentDate", Date, combo.getCurrentBusinessDate());
- Assert.assertEquals("Holidays", 6, combo.getNonWorkingDays().size());
- }
-
- public void testNullCombination() {
- DefaultJdkDateCalculatorFactory.getDefaultInstance().registerHolidays("US", createUSHolidays());
- final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("US",
- HolidayHandlerType.FORWARD);
- final Date Date = createDate("2006-08-08");
- cal1.setStartDate(Date);
-
- final DateCalculator<Date> combo = cal1.combine(null);
- Assert.assertSame("same", combo, cal1);
- Assert.assertEquals("Combo name", "US", combo.getName());
- Assert.assertEquals("Combo type", HolidayHandlerType.FORWARD, combo.getHolidayHandlerType());
- Assert.assertEquals("start", Date, combo.getStartDate());
- Assert.assertEquals("currentDate", Date, combo.getCurrentBusinessDate());
- Assert.assertEquals("Holidays", 3, combo.getNonWorkingDays().size());
- }
-
- public void testSameCombination() {
- DefaultJdkDateCalculatorFactory.getDefaultInstance().registerHolidays("US", createUSHolidays());
- final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("US",
- HolidayHandlerType.FORWARD);
- final Date Date = createDate("2006-08-08");
- cal1.setStartDate(Date);
-
- final DateCalculator<Date> combo = cal1.combine(cal1);
- Assert.assertSame("same", combo, cal1);
- Assert.assertEquals("Combo name", "US", combo.getName());
- Assert.assertEquals("Combo type", HolidayHandlerType.FORWARD, combo.getHolidayHandlerType());
- Assert.assertEquals("start", Date, combo.getStartDate());
- Assert.assertEquals("currentDate", Date, combo.getCurrentBusinessDate());
- Assert.assertEquals("Holidays", 3, combo.getNonWorkingDays().size());
- }
-}
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateBackwardDateCalculatorTest.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -2,6 +2,7 @@
import net.objectlab.kit.datecalc.common.AbstractBackwardDateCalculatorTest;
import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
public class JdkDateBackwardDateCalculatorTest extends AbstractBackwardDateCalculatorTest {
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateDateCalculatorCombinationTest.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -2,6 +2,7 @@
import net.objectlab.kit.datecalc.common.AbstractDateCalculatorCombinationTest;
import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
public class JdkDateDateCalculatorCombinationTest extends AbstractDateCalculatorCombinationTest {
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateForwardDateCalculatorTest.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -2,6 +2,7 @@
import net.objectlab.kit.datecalc.common.AbstractForwardDateCalculatorTest;
import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
public class JdkDateForwardDateCalculatorTest extends AbstractForwardDateCalculatorTest {
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedFollowingDateCalculatorTest.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -2,6 +2,7 @@
import net.objectlab.kit.datecalc.common.AbstractModifiedFollowingDateCalculatorTest;
import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
public class JdkDateModifiedFollowingDateCalculatorTest extends AbstractModifiedFollowingDateCalculatorTest {
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java 2006-09-04 11:10:28 UTC (rev 93)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/JdkDateModifiedPreceedingDateCalculatorTest.java 2006-09-04 12:32:55 UTC (rev 94)
@@ -2,6 +2,7 @@
import net.objectlab.kit.datecalc.common.AbstractModifiedPreceedingDateCalculatorTest;
import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
public class JdkDateModifiedPreceedingDateCalculatorTest extends AbstractModifiedPreceedingDateCalculatorTest {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|