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.time.earncode; 017 018 import java.math.BigDecimal; 019 import java.sql.Date; 020 import java.sql.Timestamp; 021 import java.util.*; 022 023 import org.kuali.hr.core.KPMEConstants; 024 import org.kuali.hr.time.accrual.AccrualCategory; 025 import org.kuali.hr.earncodesec.EarnCodeSecurity; 026 import org.kuali.hr.time.HrBusinessObject; 027 import org.kuali.hr.time.service.base.TkServiceLocator; 028 import org.kuali.rice.krad.service.KRADServiceLocator; 029 030 public class EarnCode extends HrBusinessObject { 031 public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "EarnCode"; 032 private static final String[] PRIVATE_CACHES_FOR_FLUSH = {EarnCodeSecurity.CACHE_NAME, EarnCode.CACHE_NAME}; 033 public static final List<String> CACHE_FLUSH = Collections.unmodifiableList(Arrays.asList(PRIVATE_CACHES_FOR_FLUSH)); 034 /** 035 * 036 */ 037 private static final long serialVersionUID = 1L; 038 039 private String hrEarnCodeId; 040 private String earnCode; 041 private String description; 042 043 private Boolean ovtEarnCode; 044 private String accrualCategory; 045 private BigDecimal inflateMinHours; 046 private BigDecimal inflateFactor; 047 private Long defaultAmountofTime; 048 private boolean history; 049 050 private AccrualCategory accrualCategoryObj; 051 052 private String recordMethod; 053 054 public String getRecordMethod() { 055 return recordMethod; 056 } 057 058 public void setRecordMethod(String recordMethod) { 059 this.recordMethod = recordMethod; 060 } 061 062 public Long getDefaultAmountofTime() { 063 return defaultAmountofTime; 064 } 065 066 public void setDefaultAmountofTime(Long defaultAmountofTime) { 067 this.defaultAmountofTime = defaultAmountofTime; 068 } 069 070 public String getEarnCode() { 071 return earnCode; 072 } 073 074 public void setEarnCode(String earnCode) { 075 this.earnCode = earnCode; 076 } 077 078 public String getDescription() { 079 return description; 080 } 081 082 public void setDescription(String description) { 083 this.description = description; 084 } 085 086 public Date getEffectiveDate() { 087 return effectiveDate; 088 } 089 090 public void setEffectiveDate(Date effectiveDate) { 091 this.effectiveDate = effectiveDate; 092 } 093 094 public boolean isHistory() { 095 return history; 096 } 097 098 public void setHistory(boolean history) { 099 this.history = history; 100 } 101 102 public boolean isActive() { 103 return active; 104 } 105 106 public void setActive(boolean active) { 107 this.active = active; 108 } 109 110 public String getHrEarnCodeId() { 111 return hrEarnCodeId; 112 } 113 114 public void setHrEarnCodeId(String hrEarnCodeId) { 115 this.hrEarnCodeId = hrEarnCodeId; 116 } 117 118 public Timestamp getTimestamp() { 119 return timestamp; 120 } 121 122 public void setTimestamp(Timestamp timestamp) { 123 this.timestamp = timestamp; 124 } 125 126 public String getAccrualCategory() { 127 return accrualCategory; 128 } 129 130 public void setAccrualCategory(String accrualCategory) { 131 this.accrualCategory = accrualCategory; 132 } 133 134 public AccrualCategory getAccrualCategoryObj() { 135 if(accrualCategoryObj == null && !this.getAccrualCategory().isEmpty()) { 136 this.assingAccrualCategoryObj(); 137 } 138 return accrualCategoryObj; 139 } 140 public void assingAccrualCategoryObj() { 141 Map<String,Object> parameters = new HashMap<String,Object>(); 142 parameters.put("accrualCategory", getAccrualCategory()); 143 Collection c = KRADServiceLocator.getBusinessObjectService().findMatching(AccrualCategory.class, parameters); 144 if(!c.isEmpty()) { 145 this.setAccrualCategoryObj((AccrualCategory)c.toArray()[0]); 146 } 147 } 148 149 public void setAccrualCategoryObj(AccrualCategory accrualCategoryObj) { 150 this.accrualCategoryObj = accrualCategoryObj; 151 } 152 153 public BigDecimal getInflateMinHours() { 154 return inflateMinHours; 155 } 156 157 public void setInflateMinHours(BigDecimal inflateMinHours) { 158 this.inflateMinHours = inflateMinHours; 159 } 160 161 public BigDecimal getInflateFactor() { 162 return inflateFactor; 163 } 164 165 public void setInflateFactor(BigDecimal inflateFactor) { 166 this.inflateFactor = inflateFactor; 167 } 168 169 public Boolean getOvtEarnCode() { 170 return ovtEarnCode; 171 } 172 173 public void setOvtEarnCode(Boolean ovtEarnCode) { 174 this.ovtEarnCode = ovtEarnCode; 175 } 176 177 /** 178 * This is used by the timeblock json object. 179 * The purpose of this function is to create a string based on the record_* fields which can be used to render hour / begin(end) time input box 180 * @return String fieldType 181 */ 182 public String getEarnCodeType() { 183 // if(getRecordHours()) { 184 // return TkConstants.EARN_CODE_HOUR; 185 // } 186 // else if(getRecordTime()) { 187 // return TkConstants.EARN_CODE_TIME; 188 // } 189 // else if(getRecordAmount()) { 190 // return TkConstants.EARN_CODE_AMOUNT; 191 // } 192 // else { 193 // return ""; 194 // } 195 return this.recordMethod; 196 } 197 198 @Override 199 public String getUniqueKey() { 200 return earnCode; 201 } 202 203 @Override 204 public String getId() { 205 return getHrEarnCodeId(); 206 } 207 208 @Override 209 public void setId(String id) { 210 setHrEarnCodeId(id); 211 } 212 213 public String getEarnCodeKeyForDisplay() { 214 // String unitTime = null; 215 // AccrualCategory acObj = null; 216 // if(this.accrualCategory != null) { 217 // acObj = TkServiceLocator.getAccrualCategoryService().getAccrualCategory(accrualCategory, this.effectiveDate); 218 // } 219 // unitTime = (acObj!= null ? acObj.getUnitOfTime() : this.recordMethod) ; 220 // return hrEarnCodeId + ":" + unitTime; 221 return hrEarnCodeId; 222 } 223 224 public String getEarnCodeValueForDisplay() { 225 return earnCode + " : " + description; 226 } 227 }