/* * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. * If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2014, MPL CodeInside http://codeinside.ru */ package ru.codeinside.calendar; import org.apache.commons.lang.time.DateUtils; import java.util.Date; /** * Рассчет даты окончания периода, длительность которого измеряется в каледарных днях */ public class CalendarBasedDueDateCalculator implements DueDateCalculator { /** * Рассчет даты окончания периода * * @param startDate дата начала периода * @param countDays длительность периода в календарных днях. Значение данного параметра должно быть больше или равна 0 * @return дату окончания периода */ @Override public Date calculate(Date startDate, int countDays) { if (startDate == null) throw new IllegalArgumentException("Дата начала периода не должна быть NULL"); if (countDays < 0) throw new IllegalArgumentException("Длительность периода должна быть больше или равна нулю"); return DateUtils.addDays(startDate, countDays); } /** * Рассчет количества календарных дней между датами * * @param startDate дата начала периода * @param endDate дата окончания периода * @return количество дней между датами */ @Override public int countDays(Date startDate, Date endDate) { if (startDate == null) throw new IllegalArgumentException("Дата начала периода не должна быть NULL"); if (endDate == null) throw new IllegalArgumentException("Дата окончания периода не должна быть NULL"); return (int) ((endDate.getTime() - startDate.getTime()) / DateUtils.MILLIS_PER_DAY); } }