/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.sys.service.impl;
import org.apache.log4j.Logger;
import org.kuali.kfs.sys.businessobject.UniversityDate;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.kfs.sys.dataaccess.UniversityDateDao;
import org.kuali.kfs.sys.service.NonTransactional;
import org.kuali.kfs.sys.service.UniversityDateService;
import org.kuali.kfs.sys.util.KfsDateUtils;
import org.kuali.rice.core.api.datetime.DateTimeService;
import org.kuali.rice.krad.service.BusinessObjectService;
import org.springframework.cache.annotation.Cacheable;
/**
*
* This is the default implementation of the UniversityDateService interface.
*/
@NonTransactional
public class UniversityDateServiceImpl implements UniversityDateService {
private static final Logger LOG = Logger.getLogger(UniversityDateServiceImpl.class);
protected UniversityDateDao universityDateDao;
protected DateTimeService dateTimeService;
/**
* This method retrieves a UniversityDate object using today's date to create the instance.
*
* @return A UniversityDate instance representing today's date.
*
* @see org.kuali.kfs.sys.service.UniversityDateService#getCurrentUniversityDate()
*/
@Override
public UniversityDate getCurrentUniversityDate() {
java.util.Date now = dateTimeService.getCurrentDate();
return SpringContext.getBean(BusinessObjectService.class).findBySinglePrimaryKey(UniversityDate.class, new java.sql.Date( KfsDateUtils.clearTimeFields(now).getTime() ));
}
/**
* This method retrieves the current fiscal year using today's date.
*
* @return The current fiscal year as an Integer.
*
* @see org.kuali.rice.core.api.datetime.DateTimeService#getCurrentFiscalYear()
*/
@Override
public Integer getCurrentFiscalYear() {
java.util.Date now = dateTimeService.getCurrentDate();
return getFiscalYear(KfsDateUtils.clearTimeFields(now));
}
/**
* This method retrieves the fiscal year associated with the date provided.
*
* @param date The date to be used for retrieving the associated fiscal year.
* @return The fiscal year that the date provided falls within.
*
* @see org.kuali.rice.core.api.datetime.DateTimeService#getFiscalYear(java.util.Date)
*/
@Override
@Cacheable(value=UniversityDate.CACHE_NAME, key="'{FiscalYear}'+#p0")
public Integer getFiscalYear(java.util.Date date) {
if (date == null) {
throw new IllegalArgumentException("invalid (null) date");
}
UniversityDate uDate = SpringContext.getBean(BusinessObjectService.class).findBySinglePrimaryKey(UniversityDate.class, new java.sql.Date( KfsDateUtils.clearTimeFields(date).getTime() ) );
return (uDate == null) ? null : uDate.getUniversityFiscalYear();
}
/**
* This method retrieves the first date of the fiscal year provided.
*
* @param fiscalYear The fiscal year to retrieve the first date for.
* @return A Date object representing the first date of the fiscal year given.
*
* @see org.kuali.kfs.sys.service.UniversityDateService#getFirstDateOfFiscalYear(java.lang.Integer)
*/
@Override
@Cacheable(value=UniversityDate.CACHE_NAME, key="'{FirstDateOfFiscalYear}'+#p0")
public java.util.Date getFirstDateOfFiscalYear(Integer fiscalYear) {
UniversityDate uDate = universityDateDao.getFirstFiscalYearDate(fiscalYear);
return (uDate == null) ? null : uDate.getUniversityDate();
}
/**
* This method retrieves the last date of the fiscal year provided.
*
* @param fiscalYear The fiscal year to retrieve the last date for.
* @return A Date object representing the last date of the fiscal year given.
*
* @see org.kuali.kfs.sys.service.UniversityDateService#getLastDateOfFiscalYear(java.lang.Integer)
*/
@Override
@Cacheable(value=UniversityDate.CACHE_NAME, key="'{LastDateOfFiscalYear}'+#p0")
public java.util.Date getLastDateOfFiscalYear(Integer fiscalYear) {
UniversityDate uDate = universityDateDao.getLastFiscalYearDate(fiscalYear);
return (uDate == null) ? null : uDate.getUniversityDate();
}
public void setUniversityDateDao(UniversityDateDao universityDateDao) {
this.universityDateDao = universityDateDao;
}
public void setDateTimeService(DateTimeService dateTimeService) {
this.dateTimeService = dateTimeService;
}
}