001    /**
002     * Copyright 2004-2013 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.hr.lm.timeoff;
017    
018    import java.math.BigDecimal;
019    import java.sql.Date;
020    
021    import org.apache.commons.lang.StringUtils;
022    import org.kuali.hr.core.KPMEConstants;
023    import org.kuali.hr.lm.accrual.AccrualCategory;
024    import org.kuali.hr.lm.leaveplan.LeavePlan;
025    import org.kuali.hr.location.Location;
026    import org.kuali.hr.time.HrBusinessObject;
027    import org.kuali.hr.time.earncode.EarnCode;
028    import org.kuali.hr.time.service.base.TkServiceLocator;
029    
030    public class SystemScheduledTimeOff extends HrBusinessObject {
031    
032            private static final long serialVersionUID = 6660625335629574993L;
033    
034            public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "SystemScheduledTimeOff";
035    
036            private String lmSystemScheduledTimeOffId;
037            private String leavePlan;
038            private String accrualCategory;
039            private String earnCode;
040            private Date accruedDate;
041            private Date scheduledTimeOffDate;
042            private String location;
043            private String descr;
044            private BigDecimal amountofTime;
045            private String unusedTime;
046            private BigDecimal transferConversionFactor;
047            private String transfertoEarnCode;
048            private String premiumHoliday;
049            private Boolean history;
050    
051            private LeavePlan leavePlanObj;
052            private AccrualCategory accrualCategoryObj;
053            private EarnCode earnCodeObj;
054            private Location locationObj;
055            
056            public String getLmSystemScheduledTimeOffId() {
057                    return lmSystemScheduledTimeOffId;
058            }
059    
060            public void setLmSystemScheduledTimeOffId(String lmSystemScheduledTimeOffId) {
061                    this.lmSystemScheduledTimeOffId = lmSystemScheduledTimeOffId;
062            }
063    
064            public String getLeavePlan() {
065                    if(StringUtils.isNotEmpty(leavePlan)) {
066                            return leavePlan;
067                    }
068                    if (this.earnCodeObj == null && 
069                                    (!StringUtils.isEmpty(this.earnCode) && getEffectiveDate() != null)) {          
070                            earnCodeObj =  TkServiceLocator.getEarnCodeService().getEarnCode(earnCode, getEffectiveDate());
071                    }
072                    leavePlan = (earnCodeObj != null) ? earnCodeObj.getLeavePlan() : "";
073                    return leavePlan;
074            }
075    
076            public void setLeavePlan(String leavePlan) {
077                    this.leavePlan = leavePlan;
078            }
079    
080            public String getAccrualCategory() {
081            if(StringUtils.isNotEmpty(accrualCategory)) {
082                return accrualCategory;
083            }
084                    if (this.earnCodeObj == null &&
085                                    (!StringUtils.isEmpty(this.earnCode) && getEffectiveDate() != null)) {
086                            earnCodeObj =  TkServiceLocator.getEarnCodeService().getEarnCode(earnCode, getEffectiveDate());
087                    }
088                    accrualCategory = (earnCodeObj != null) ? earnCodeObj.getAccrualCategory() : "";
089                    return accrualCategory;
090            }
091    
092            public void setAccrualCategory(String accrualCategory) {
093                    this.accrualCategory = accrualCategory;
094            }
095    
096            public Date getAccruedDate() {
097                    return accruedDate;
098            }
099    
100            public void setAccruedDate(Date accruedDate) {
101                    this.accruedDate = accruedDate;
102            }
103    
104            public Date getScheduledTimeOffDate() {
105                    return scheduledTimeOffDate;
106            }
107    
108            public void setScheduledTimeOffDate(Date scheduledTimeOffDate) {
109                    this.scheduledTimeOffDate = scheduledTimeOffDate;
110            }
111    
112            public String getLocation() {
113                    return location;
114            }
115    
116            public void setLocation(String location) {
117                    this.location = location;
118            }
119    
120            public String getDescr() {
121                    return descr;
122            }
123    
124            public void setDescr(String descr) {
125                    this.descr = descr;
126            }
127    
128            public BigDecimal getAmountofTime() {
129                    return amountofTime;
130            }
131    
132            public void setAmountofTime(BigDecimal amountofTime) {
133                    this.amountofTime = amountofTime;
134            }
135    
136            public String getUnusedTime() {
137                    return unusedTime;
138            }
139    
140            public void setUnusedTime(String unusedTime) {
141                    this.unusedTime = unusedTime;
142            }
143    
144            public BigDecimal getTransferConversionFactor() {
145                    return transferConversionFactor;
146            }
147    
148            public void setTransferConversionFactor(BigDecimal transferConversionFactor) {
149                    this.transferConversionFactor = transferConversionFactor;
150            }
151    
152            public String getPremiumHoliday() {
153                    return premiumHoliday;
154            }
155    
156            public void setPremiumHoliday(String premiumHoliday) {
157                    this.premiumHoliday = premiumHoliday;
158            }
159    
160            public LeavePlan getLeavePlanObj() {
161                    return leavePlanObj;
162            }
163    
164            public void setLeavePlanObj(LeavePlan leavePlanObj) {
165                    this.leavePlanObj = leavePlanObj;
166            }
167    
168            public AccrualCategory getAccrualCategoryObj() {
169                    return accrualCategoryObj;
170            }
171    
172            public void setAccrualCategoryObj(AccrualCategory accrualCategoryObj) {
173                    this.accrualCategoryObj = accrualCategoryObj;
174            }
175    
176            public String getEarnCode() {
177                    return earnCode;
178            }
179    
180            public void setEarnCode(String earnCode) {
181                    this.earnCode = earnCode;
182            }
183    
184            public String getTransfertoEarnCode() {
185                    return transfertoEarnCode;
186            }
187    
188            public void setTransfertoEarnCode(String transfertoEarnCode) {
189                    this.transfertoEarnCode = transfertoEarnCode;
190            }
191    
192            public EarnCode getEarnCodeObj() {
193                    return earnCodeObj;
194            }
195    
196            public void setEarnCodeObj(EarnCode earnCodeObj) {
197                    this.earnCodeObj = earnCodeObj;
198            }
199    
200            public Location getLocationObj() {
201                    return locationObj;
202            }
203    
204            public void setLocationObj(Location locationObj) {
205                    this.locationObj = locationObj;
206            }
207    
208            @Override
209            protected String getUniqueKey() {
210                    String lmSystemScheduledTimeOffKey = getEarnCode() +"_"+ getLeavePlan() +"_"+ getAccrualCategory();
211                    return lmSystemScheduledTimeOffKey;
212            }
213    
214            @Override
215            public String getId() {
216                    return getLmSystemScheduledTimeOffId();
217            }
218    
219            public Boolean getHistory() {
220                    return history;
221            }
222    
223            public void setHistory(Boolean history) {
224                    this.history = history;
225            }
226    
227            @Override
228            public void setId(String id) {
229                    setLmSystemScheduledTimeOffId(id);
230            }
231    
232    }