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.document.service.impl;
017    
018    import java.sql.Date;
019    import java.text.DateFormat;
020    import java.text.SimpleDateFormat;
021    import java.util.ArrayList;
022    import java.util.Collection;
023    import java.util.HashMap;
024    import java.util.Map;
025    
026    import org.apache.commons.lang.StringUtils;
027    import org.kuali.kfs.module.endow.EndowPropertyConstants;
028    import org.kuali.kfs.module.endow.businessobject.FeeMethod;
029    import org.kuali.kfs.module.endow.businessobject.KemidFee;
030    import org.kuali.kfs.module.endow.document.service.FeeMethodService;
031    import org.kuali.kfs.sys.businessobject.defaultvalue.CurrentDateMMDDYYYYFinder;
032    import org.kuali.rice.kns.service.BusinessObjectService;
033    import org.kuali.rice.kns.service.DateTimeService;
034    import org.kuali.rice.kns.util.ObjectUtils;
035    
036    import java.text.ParseException;
037    
038    /**
039     * This class is the service implementation for the Fee Method. This is the default, Kuali provided implementation.
040     */
041    public class FeeMethodServiceImpl implements FeeMethodService {
042    
043        private BusinessObjectService businessObjectService;
044        private DateTimeService dateTimeService;
045    
046        /**
047         * @see org.kuali.kfs.module.endow.document.service.FeeMethodService#getFeeMethodsByNextProcessingDate(Date)
048         */
049        public Collection<FeeMethod> getFeeMethodsByNextProcessingDate(java.util.Date currentDate) {
050            Collection<FeeMethod> feeMethods = new ArrayList();
051            Map criteria = new HashMap();
052        
053            criteria.put(EndowPropertyConstants.FEE_METHOD_NEXT_PROCESS_DATE, currentDate);
054            feeMethods = businessObjectService.findMatching(FeeMethod.class, criteria);
055            
056            return feeMethods;
057        }
058        
059        /**
060         * @see org.kuali.kfs.module.endow.document.service.FeeMethodService#getFeeMethods()
061         */
062        public Collection<FeeMethod> getFeeMethods() {
063            Collection<FeeMethod> feeMethods = new ArrayList();
064            
065            feeMethods = businessObjectService.findAll(FeeMethod.class);
066            
067            return feeMethods;
068        }
069        
070        /**
071         * @see org.kuali.kfs.module.endow.document.service.FeeMethodService#getByPrimaryKey(java.lang.String)
072         */
073        public FeeMethod getByPrimaryKey(String feeMethodCode) {
074            FeeMethod feeMethod = null;
075            if (StringUtils.isNotBlank(feeMethodCode)) {
076                Map<String, String> criteria = new HashMap<String, String>();
077                criteria.put(EndowPropertyConstants.ENDOWCODEBASE_CODE, feeMethodCode);
078    
079                feeMethod = (FeeMethod) businessObjectService.findByPrimaryKey(FeeMethod.class, criteria);
080            }
081            return feeMethod;
082        }
083    
084        /**
085         * @see org.kuali.kfs.module.endow.document.service.FeeMethodService#getFeeMethodNextProcessDate(java.lang.String)
086         */
087        public String getFeeMethodNextProcessDateForAjax(String feeMethodCode) {
088    
089            String nextProcessDateString = null;
090            Date nextProcessDate = getFeeMethodNextProcessDate(feeMethodCode);
091    
092            if (ObjectUtils.isNotNull(nextProcessDate)) {
093                nextProcessDateString = dateTimeService.toDateString(getFeeMethodNextProcessDate(feeMethodCode));
094            }
095    
096            return nextProcessDateString;
097        }
098    
099        /**
100         * @see org.kuali.kfs.module.endow.document.service.FeeMethodService#getFeeMethodNextProcessDate(java.lang.String)
101         */
102        public Date getFeeMethodNextProcessDate(String feeMethodCode) {
103    
104            FeeMethod feeMethod = getByPrimaryKey(feeMethodCode);
105            Date nextProcessDate = null;
106    
107            if (ObjectUtils.isNotNull(feeMethod)) {
108                nextProcessDate = feeMethod.getFeeNextProcessDate();
109            }
110    
111            return nextProcessDate;
112        }
113    
114        /**
115         * This method gets the businessObjectService.
116         * 
117         * @return businessObjectService
118         */
119        public BusinessObjectService getBusinessObjectService() {
120            return businessObjectService;
121        }
122    
123        /**
124         * This method sets the businessObjectService
125         * 
126         * @param businessObjectService
127         */
128        public void setBusinessObjectService(BusinessObjectService businessObjectService) {
129            this.businessObjectService = businessObjectService;
130        }
131    
132        /**
133         * Gets the dateTimeService.
134         * 
135         * @return dateTimeService
136         */
137        public DateTimeService getDateTimeService() {
138            return dateTimeService;
139        }
140    
141        /**
142         * Sets the dateTimeService.
143         * 
144         * @param dateTimeService
145         */
146        public void setDateTimeService(DateTimeService dateTimeService) {
147            this.dateTimeService = dateTimeService;
148        }
149    
150    
151        /**
152         * @see org.kuali.kfs.module.endow.document.service.FeeMethodService#isFeeMethodUsedOnAnyKemid(java.lang.String)
153         */
154        public boolean isFeeMethodUsedOnAnyKemid(String feeMethodCode) {
155            boolean isUsed = false;
156            int count = 0;
157            Map<String, String> fieldValues = new HashMap<String, String>();
158    
159            fieldValues.put(EndowPropertyConstants.KEMID_FEE_MTHD_CD, feeMethodCode);
160            count = businessObjectService.countMatching(KemidFee.class, fieldValues);
161    
162            if (count > 0) {
163                isUsed = true;
164            }
165    
166            return isUsed;
167        }
168    
169    
170    }