001    /*
002     * Copyright 2011 The Kuali Foundation.
003     * 
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     * http://www.opensource.org/licenses/ecl2.php
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.kfs.module.endow.dataaccess.impl;
017    
018    import org.kuali.kfs.module.endow.EndowParameterKeyConstants;
019    import org.kuali.kfs.module.endow.dataaccess.KemidFeeDao;
020    import org.kuali.kfs.module.endow.document.service.KEMService;
021    import org.kuali.kfs.sys.service.impl.KfsParameterConstants;
022    import org.kuali.rice.kns.dao.jdbc.PlatformAwareDaoBaseJdbc;
023    import org.kuali.rice.kns.service.ParameterService;
024    import org.springframework.dao.DataAccessException;
025    
026    public class KemidFeeDaoJdbc extends PlatformAwareDaoBaseJdbc implements KemidFeeDao {
027        protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(KemidFeeDaoJdbc.class);
028        
029        protected KEMService kemService;
030        protected ParameterService parameterService;
031        
032        /** 
033         * @see org.kuali.kfs.module.endow.dataaccess.KemidFeeDao#updateKemidFeeWaivedFeeYearToDateToZero()
034         */
035        public boolean updateKemidFeeWaivedFeeYearToDateToZero() {
036            boolean updated = true;
037            
038            if (!systemParametersForUpdateWaiverFeeAmounts()) {
039                return false;
040            }
041            
042            java.sql.Date firstDayAfterFiscalYear = kemService.getFirstDayAfterFiscalYearEndDayAndMonth();
043            
044            if (firstDayAfterFiscalYear.equals(kemService.getCurrentDate())) {
045                try {
046                    getSimpleJdbcTemplate().update("UPDATE END_KEMID_FEE_T SET WAIVED_FEE_YTD = 0");
047                    return true;
048                }
049                catch (DataAccessException dae) {
050                    return false;
051                }
052            }
053            
054            return updated;        
055        }
056    
057        /**
058         * This method checks if the System parameters have been set up for this batch job.
059         * @result return true if the system parameters exist, else false
060         */
061        protected boolean systemParametersForUpdateWaiverFeeAmounts() {
062            LOG.info("systemParametersForUpdateWaiverFeeAmounts() started.");
063            
064            boolean systemParameterExists = true;
065            
066            // check to make sure the system parameter has been setup...
067            if (!getParameterService().parameterExists(KfsParameterConstants.ENDOWMENT_BATCH.class, EndowParameterKeyConstants.FISCAL_YEAR_END_MONTH_AND_DAY)) {
068              LOG.warn("FISCAL_YEAR_END_MONTH_AND_DAY System parameter does not exist in the parameters list.  The job can not continue without this parameter");
069              return false;
070            }
071            
072            LOG.info("systemParametersForUpdateWaiverFeeAmounts() ended.");
073            
074            return systemParameterExists;
075        }
076        
077        /**
078         * Gets the kemService.
079         * @return kemService
080         */
081        protected KEMService getKemService() {
082            return kemService;
083        }
084    
085        /**
086         * Sets the kemService.
087         * @param kemService
088         */
089        public void setKemService(KEMService kemService) {
090            this.kemService = kemService;
091        }
092    
093        /**
094         * Gets the parameterService attribute.
095         * @return Returns the parameterService.
096         */    
097        protected ParameterService getParameterService() {
098            return parameterService;
099        }
100    
101        /**
102         * Sets the parameterService attribute value.
103         * @param parameterService The parameterService to set.
104         */    
105        public void setParameterService(ParameterService parameterService) {
106            this.parameterService = parameterService;
107        }
108    }