|
From: <ma...@us...> - 2006-08-20 17:31:10
|
Revision: 28 Author: marchy Date: 2006-08-20 10:30:59 -0700 (Sun, 20 Aug 2006) ViewCVS: http://svn.sourceforge.net/objectlabkit/?rev=28&view=rev Log Message: ----------- have got some of the tests passing Modified Paths: -------------- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BaseDateCalculator.java trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultDateCalculatorFactory.java 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-20 17:29:52 UTC (rev 27) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BaseDateCalculator.java 2006-08-20 17:30:59 UTC (rev 28) @@ -243,23 +243,25 @@ Calendar cal = Utils.getCal(startDate); - if (isIMMMonth(cal.getTime())) { - Date date = calculateIMMDay(startDate); - if (date.after(startDate)) { - return date; + if (isIMMMonth(cal)) { + moveToIMMDay(cal); + //TODO simplify this if condition + if ((forward && cal.getTime().after(startDate)) || + (!forward && cal.getTime().before(startDate))) { + return cal.getTime(); } } int delta = (forward ? 1 : -1); do { cal.add(Calendar.MONTH, delta); - } while (!isIMMMonth(cal.getTime())); + } while (!isIMMMonth(cal)); - return calculateIMMDay(cal.getTime()); + moveToIMMDay(cal); + return cal.getTime(); } - private boolean isIMMMonth(final Date date) { - Calendar cal = Utils.getCal(date); + private boolean isIMMMonth(final Calendar cal) { int month = cal.get(Calendar.MONTH); return (month == Calendar.MARCH || month == Calendar.JUNE || month == Calendar.SEPTEMBER || month == Calendar.DECEMBER); @@ -271,8 +273,7 @@ * @param first * @return */ - private Date calculateIMMDay(final Date date) { - Calendar cal = Calendar.getInstance(); + private void moveToIMMDay(final Calendar cal) { cal.set(Calendar.DAY_OF_MONTH, 1); // go to 1st wed @@ -287,8 +288,6 @@ // go to 3rd wednesday - i.e. move 2 weeks forward cal.add(Calendar.DAY_OF_MONTH, 7 * 2); - - return cal.getTime(); } /** 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-20 17:29:52 UTC (rev 27) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultDateCalculatorFactory.java 2006-08-20 17:30:59 UTC (rev 28) @@ -20,6 +20,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import net.objectlab.kit.datecalc.common.HolidayHandlerType; + public class DefaultDateCalculatorFactory implements DateCalculatorFactory { private static final DateCalculatorFactory DEFAULT = new DefaultDateCalculatorFactory(); @@ -46,10 +48,15 @@ if (holidays.containsKey(name)) { cal.setNonWorkingDays(holidays.get(name)); } - throw new UnsupportedOperationException("Not yet implemented"); - // if (HolidayHandlerType.FORWARD.equals(holidayHandlerType)) { - // cal.setHolidayHandler(new ForwardHandler()); + if (HolidayHandlerType.FORWARD.equals(holidayHandlerType)) { + cal.setHolidayHandler(new ForwardHandler()); + } else { + throw new UnsupportedOperationException("only forward supported"); + } + + return cal; + // } else if (HolidayHandlerType.BACKWARD.equals(holidayHandlerType)) { // cal.setHolidayHandler(new BackwardHandler()); // } else if This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |