|
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. |
|
From: <ma...@us...> - 2006-08-27 09:47:49
|
Revision: 69 Author: marchy Date: 2006-08-27 02:47:25 -0700 (Sun, 27 Aug 2006) ViewCVS: http://svn.sourceforge.net/objectlabkit/?rev=69&view=rev Log Message: ----------- added backward, and modified handlers Modified Paths: -------------- 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 Added Paths: ----------- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedFollowingHandler.java trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedPreceedingHandler.java Added: 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 (rev 0) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/BackwardHandler.java 2006-08-27 09:47:25 UTC (rev 69) @@ -0,0 +1,43 @@ +/* + * $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.Date; + +import net.objectlab.kit.datecalc.common.DateCalculator; +import net.objectlab.kit.datecalc.common.HolidayHandlerType; + +/** + * TODO javadoc + * + * @author Marcin Jekot + * @author $LastChangedBy$ + * @version $Revision$ $Date$ + * + */ +public class BackwardHandler extends ForwardHandler { + + public Date moveCurrentDate(DateCalculator<Date> calendar) { + return move(calendar, -1); + } + + public String getType() { + return HolidayHandlerType.BACKWARD; + } + +} 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-27 09:46:33 UTC (rev 68) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultDateCalculatorFactory.java 2006-08-27 09:47:25 UTC (rev 69) @@ -64,22 +64,17 @@ if (HolidayHandlerType.FORWARD.equals(holidayHandlerType)) { cal.setHolidayHandler(new ForwardHandler()); + } else if (HolidayHandlerType.BACKWARD.equals(holidayHandlerType)) { + cal.setHolidayHandler(new BackwardHandler()); + } else if (HolidayHandlerType.MODIFIED_FOLLLOWING.equals(holidayHandlerType)) { + cal.setHolidayHandler(new ModifiedFollowingHandler()); + } else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) { + cal.setHolidayHandler(new ModifiedPreceedingHandler()); } else { - throw new UnsupportedOperationException("only forward supported"); + throw new UnsupportedOperationException("Unsupported HolidayHandler: " + holidayHandlerType); } return cal; - - // } else if (HolidayHandlerType.BACKWARD.equals(holidayHandlerType)) { - // cal.setHolidayHandler(new BackwardHandler()); - // } else if - // (HolidayHandlerType.MODIFIED_FOLLLOWING.equals(holidayHandlerType)) { - // cal.setHolidayHandler(new ModifiedFollowingHandler()); - // } else if - // (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) { - // cal.setHolidayHandler(new ModifiedPreceedingHandler()); - // } - // return cal; } public PeriodCountCalculator<Date> getPeriodCountCalculator() { 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-27 09:46:33 UTC (rev 68) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ForwardHandler.java 2006-08-27 09:47:25 UTC (rev 69) @@ -23,23 +23,29 @@ import net.objectlab.kit.datecalc.common.HolidayHandlerType; /** - * + * TODO javadoc + * * @author Marcin Jekot + * @author $LastChangedBy$ + * @version $Revision$ $Date$ * */ public class ForwardHandler implements HolidayHandler<Date> { public Date moveCurrentDate(final DateCalculator<Date> calendar) { + return move(calendar, 1); + } + protected Date move(final DateCalculator<Date> calendar, int step) { final Calendar cal = Utils.getCal(calendar.getCurrentBusinessDate()); while (calendar.isNonWorkingDay(cal.getTime())) { - cal.add(Calendar.DAY_OF_MONTH, 1); + cal.add(Calendar.DAY_OF_MONTH, step); } - return cal.getTime(); + return cal.getTime(); } - + public String getType() { return HolidayHandlerType.FORWARD; } Added: 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 (rev 0) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedFollowingHandler.java 2006-08-27 09:47:25 UTC (rev 69) @@ -0,0 +1,60 @@ +/* + * $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; +import net.objectlab.kit.datecalc.common.HolidayHandlerType; + +/** + * TODO javadoc + * + * @author Marcin Jekot + * @author $LastChangedBy$ + * @version $Revision$ $Date$ + * + */ +public class ModifiedFollowingHandler implements HolidayHandler<Date> { + + public Date moveCurrentDate(DateCalculator<Date> calendar) { + return move(calendar, 1); + } + + protected Date move(DateCalculator<Date> calendar, int step) { + + final Calendar cal = Utils.getCal(calendar.getCurrentBusinessDate()); + + int month = cal.get(Calendar.MONTH); + + while (calendar.isNonWorkingDay(cal.getTime())) { + cal.add(Calendar.DAY_OF_MONTH, step); + if (month != cal.get(Calendar.MONTH)) { + step *= -1; + } + } + + return cal.getTime(); + } + + public String getType() { + return HolidayHandlerType.MODIFIED_FOLLLOWING; + } + +} Added: 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 (rev 0) +++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/ModifiedPreceedingHandler.java 2006-08-27 09:47:25 UTC (rev 69) @@ -0,0 +1,42 @@ +/* + * $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.Date; + +import net.objectlab.kit.datecalc.common.DateCalculator; +import net.objectlab.kit.datecalc.common.HolidayHandlerType; + +/** + * TODO javadoc + * + * @author Marcin Jekot + * @author $LastChangedBy$ + * @version $Revision$ $Date$ + * + */ +public class ModifiedPreceedingHandler extends ModifiedFollowingHandler { + + public Date moveCurrentDate(DateCalculator<Date> calendar) { + return move(calendar, -1); + } + + public String getType() { + return HolidayHandlerType.MODIFIED_PRECEEDING; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |