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.job;
017
018 import java.math.BigDecimal;
019 import java.math.RoundingMode;
020 import java.util.Arrays;
021 import java.util.Collections;
022 import java.util.List;
023
024 import org.kuali.hr.core.KPMEConstants;
025 import org.kuali.hr.lm.earncodesec.EarnCodeSecurity;
026 import org.kuali.hr.location.Location;
027 import org.kuali.hr.paygrade.PayGrade;
028 import org.kuali.hr.time.HrBusinessObject;
029 import org.kuali.hr.time.assignment.Assignment;
030 import org.kuali.hr.time.department.Department;
031 import org.kuali.hr.time.paytype.PayType;
032 import org.kuali.hr.time.position.Position;
033 import org.kuali.hr.time.salgroup.SalGroup;
034 import org.kuali.hr.time.util.TkConstants;
035 import org.kuali.rice.kim.api.identity.Person;
036 import org.kuali.rice.kim.api.identity.principal.EntityNamePrincipalName;
037 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
038
039 public class Job extends HrBusinessObject {
040
041 private static final long serialVersionUID = 1369595897637935064L;
042
043 public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "Job";
044 private static final String[] PRIVATE_CACHES_FOR_FLUSH = {Job.CACHE_NAME, Assignment.CACHE_NAME};
045 public static final List<String> CACHE_FLUSH = Collections.unmodifiableList(Arrays.asList(PRIVATE_CACHES_FOR_FLUSH));
046
047 private String location;
048 private String hrPayType;
049 private String payGrade;
050 private BigDecimal standardHours;
051 private String hrJobId;
052 private String principalId;
053 private String firstName;
054 private String lastName;
055 private String principalName;
056 private Long jobNumber;
057 private String dept;
058 private String hrSalGroup;
059 private Boolean primaryIndicator;
060 private Boolean history;
061 private BigDecimal compRate = new BigDecimal(0);
062 private String positionNumber;
063
064 private String hrDeptId;
065 private String hrPayTypeId;
066 private boolean eligibleForLeave;
067
068 private transient Person principal;
069 private transient Department deptObj;
070 private PayType payTypeObj;
071 private transient Location locationObj;
072 private transient PayGrade payGradeObj;
073 private transient SalGroup salGroupObj;
074 private transient Position positionObj;
075
076 private BigDecimal fte = new BigDecimal(0); //kpme1465, chen
077 private String flsaStatus;
078
079 public String getFlsaStatus() {
080 return flsaStatus;
081 }
082
083 public void setFlsaStatus(String flsaStatus) {
084 this.flsaStatus = flsaStatus;
085 }
086
087 public BigDecimal getFte() {
088 if ( this.standardHours != null ) {
089 return this.standardHours.divide(new BigDecimal(40)).setScale(2, RoundingMode.HALF_EVEN);
090 } else {
091 return fte;
092 }
093 }
094
095 public void setFte() {
096 if ( this.standardHours != null ) {
097 this.fte = this.standardHours.divide(new BigDecimal(40)).setScale(2, RoundingMode.HALF_EVEN);
098 } else {
099 this.fte = new BigDecimal(0).setScale(2);
100 }
101 }
102
103 public String getPayGrade() {
104 return payGrade;
105 }
106
107 public void setPayGrade(String payGrade) {
108 this.payGrade = payGrade;
109 }
110
111 public BigDecimal getStandardHours() {
112 return standardHours;
113 }
114
115 public void setStandardHours(BigDecimal standardHours) {
116 this.standardHours = standardHours;
117 }
118
119 public String getPrincipalId() {
120 return principalId;
121 }
122
123 public void setPrincipalId(String principalId) {
124 this.principalId = principalId;
125 }
126
127 public String getFirstName() {
128 return firstName;
129 }
130
131 public void setFirstName(String firstName) {
132 this.firstName = firstName;
133 }
134
135 public String getLastName() {
136 return lastName;
137 }
138
139 public void setLastName(String lastName) {
140 this.lastName = lastName;
141 }
142
143 public String getName() {
144 if (principal == null) {
145 principal = KimApiServiceLocator.getPersonService().getPerson(this.principalId);
146 }
147 return (principal != null) ? principal.getName() : "";
148 }
149
150 public String getPrincipalName() {
151 if(principalName == null && !this.getPrincipalId().isEmpty()) {
152 EntityNamePrincipalName aPerson = KimApiServiceLocator.getIdentityService().getDefaultNamesForPrincipalId(getPrincipalId());
153 if (aPerson != null && aPerson.getDefaultName() != null) {
154 setPrincipalName(aPerson.getDefaultName().getCompositeName());
155 }
156 }
157 return principalName;
158 }
159
160 public void setPrincipalName(String principalName) {
161 this.principalName = principalName;
162 }
163
164 public Long getJobNumber() {
165 return jobNumber;
166 }
167
168 public void setJobNumber(Long jobNumber) {
169 this.jobNumber = jobNumber;
170 }
171
172 public Boolean getHistory() {
173 return history;
174 }
175
176 public void setHistory(Boolean history) {
177 this.history = history;
178 }
179
180 public void setLocation(String location) {
181 this.location = location;
182 }
183
184 public String getLocation() {
185 return location;
186 }
187
188 public String getHrPayType() {
189 return hrPayType;
190 }
191
192 public void setHrPayType(String hrPayType) {
193 this.hrPayType = hrPayType;
194 }
195
196 public String getHrJobId() {
197 return hrJobId;
198 }
199
200 public void setHrJobId(String hrJobId) {
201 this.hrJobId = hrJobId;
202 }
203
204 public String getDept() {
205 return dept;
206 }
207
208 public void setDept(String dept) {
209 this.dept = dept;
210 }
211
212 public String getHrSalGroup() {
213 return hrSalGroup;
214 }
215
216 public void setHrSalGroup(String hrSalGroup) {
217 this.hrSalGroup = hrSalGroup;
218 }
219
220
221 public BigDecimal getCompRate() {
222 return compRate;
223 }
224
225
226 public void setCompRate(BigDecimal compRate) {
227 if(compRate != null){
228 this.compRate = compRate.setScale(TkConstants.BIG_DECIMAL_SCALE);
229 } else {
230 this.compRate = compRate;
231 }
232 }
233
234 public Department getDeptObj() {
235 return deptObj;
236 }
237
238
239 public void setDeptObj(Department deptObj) {
240 this.deptObj = deptObj;
241 }
242
243
244 public PayType getPayTypeObj() {
245 return payTypeObj;
246 }
247
248
249 public void setPayTypeObj(PayType payTypeObj) {
250 this.payTypeObj = payTypeObj;
251 }
252
253
254 public Person getPrincipal() {
255 return principal;
256 }
257
258
259 public void setPrincipal(Person principal) {
260 this.principal = principal;
261 }
262
263
264 public void setPrimaryIndicator(Boolean primaryIndicator) {
265 this.primaryIndicator = primaryIndicator;
266 }
267
268
269 public Boolean getPrimaryIndicator() {
270 return primaryIndicator;
271 }
272
273 public Location getLocationObj() {
274 return locationObj;
275 }
276
277 public void setLocationObj(Location locationObj) {
278 this.locationObj = locationObj;
279 }
280
281 public PayGrade getPayGradeObj() {
282 return payGradeObj;
283 }
284
285 public void setPayGradeObj(PayGrade payGradeObj) {
286 this.payGradeObj = payGradeObj;
287 }
288
289 public SalGroup getSalGroupObj() {
290 return salGroupObj;
291 }
292
293 public void setSalGroupObj(SalGroup salGroupObj) {
294 this.salGroupObj = salGroupObj;
295 }
296
297 public void setPositionNumber(String positionNumber) {
298 this.positionNumber = positionNumber;
299 }
300
301 public String getPositionNumber() {
302 return positionNumber;
303 }
304
305 public void setPositionObj(Position positionObj) {
306 this.positionObj = positionObj;
307 }
308
309 public Position getPositionObj() {
310 return positionObj;
311 }
312
313 public String getHrDeptId() {
314 return hrDeptId;
315 }
316
317 public void setHrDeptId(String hrDeptId) {
318 this.hrDeptId = hrDeptId;
319 }
320
321 public String getHrPayTypeId() {
322 return hrPayTypeId;
323 }
324
325 public void setHrPayTypeId(String hrPayTypeId) {
326 this.hrPayTypeId = hrPayTypeId;
327 }
328
329 @Override
330 public String getUniqueKey() {
331 return getPrincipalId() + "_" + getJobNumber();
332 }
333
334 @Override
335 public String getId() {
336 return getHrJobId();
337 }
338
339 @Override
340 public void setId(String id) {
341 setHrJobId(id);
342 }
343 public boolean isEligibleForLeave() {
344 return eligibleForLeave;
345 }
346
347 public void setEligibleForLeave(boolean eligibleForLeave) {
348 this.eligibleForLeave = eligibleForLeave;
349 }
350
351 }