/* * Copyright (c) 2005-2011 Grameen Foundation USA * All rights reserved. * * 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. * * See also http://www.apache.org/licenses/LICENSE-2.0.html for an * explanation of the license and how it is applied. */ package org.mifos.accounts.util.helpers; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.joda.time.DateTime; import org.mifos.framework.util.helpers.DateUtils; public class InstallmentDate { private Date installmentDueDate = null; private Short installmentId; public static List<InstallmentDate> createInstallmentDates(final List<DateTime> dueDates) { List<InstallmentDate> installmentDates = new ArrayList<InstallmentDate>(); int installmentId = 1; for (DateTime date : dueDates) { installmentDates.add(new InstallmentDate((short) installmentId++, date.toDate())); } return installmentDates; } /** * Find the installmentId of the first installmentDate in the list that is on or after the given feeDate. If * there are none, return null. * @param installmentDates the list of {@link InstallmentDate} to search, in order. * @param feeDate the Date to search for * @return the installmentId of the first entry in the list whose date is on or after feeDate, or null if none. */ public static Short findMatchingInstallmentId(List<InstallmentDate> installmentDates, Date feeDate) { for (InstallmentDate installmentDate : installmentDates) { if (DateUtils.getDateWithoutTimeStamp(installmentDate.getInstallmentDueDate().getTime()).compareTo( DateUtils.getDateWithoutTimeStamp(feeDate.getTime())) >= 0) { return installmentDate.getInstallmentId(); } } return null; } @SuppressWarnings("unused") private InstallmentDate() { } public InstallmentDate(Short installmentId, Date installmentDueDate) { this.installmentId = installmentId; this.installmentDueDate = installmentDueDate; } public void setInstallmentId(Short installmentId) { this.installmentId = installmentId; } public Short getInstallmentId() { return installmentId; } public Date getInstallmentDueDate() { return installmentDueDate; } }