View Javadoc

1   /**
2    * Copyright 2004-2013 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.hr.time.assignment;
17  
18  import java.util.LinkedList;
19  import java.util.List;
20  
21  import org.apache.commons.lang.builder.EqualsBuilder;
22  import org.apache.commons.lang.builder.HashCodeBuilder;
23  import org.kuali.hr.core.KPMEConstants;
24  import org.kuali.hr.job.Job;
25  import org.kuali.hr.time.HrBusinessObject;
26  import org.kuali.hr.time.collection.rule.TimeCollectionRule;
27  import org.kuali.hr.time.dept.lunch.DeptLunchRule;
28  import org.kuali.hr.time.service.base.TkServiceLocator;
29  import org.kuali.hr.time.task.Task;
30  import org.kuali.hr.time.util.TKUtils;
31  import org.kuali.hr.time.workarea.WorkArea;
32  import org.kuali.rice.kim.api.identity.Person;
33  import org.kuali.rice.kim.api.services.KimApiServiceLocator;
34  
35  public class Assignment extends HrBusinessObject {
36  
37  	private static final long serialVersionUID = 6347435053054442195L;
38  
39  	public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "Assignment";
40  
41  	private String tkAssignmentId;
42  	private String principalId;
43  	private Long jobNumber;
44  	private String hrJobId;
45  	private transient Job job;
46  	private Long workArea;
47  	//private Long tkWorkAreaId;
48  	private Long task;
49  	private String dept;
50  	private transient TimeCollectionRule timeCollectionRule;
51  	private transient DeptLunchRule deptLunchRule;
52  	private transient WorkArea workAreaObj;
53  	private Boolean history;
54      private String assignmentKey;
55  
56  	private transient Person principal;
57  
58  	private transient Task taskObj;
59  
60      private String calGroup;
61  
62  	private List<AssignmentAccount> assignmentAccounts = new LinkedList<AssignmentAccount>();
63  
64  	public List<AssignmentAccount> getAssignmentAccounts() {
65  		return assignmentAccounts;
66  	}
67  
68  	public void setAssignmentAccounts(List<AssignmentAccount> assignmentAccounts) {
69  		this.assignmentAccounts = assignmentAccounts;
70  	}
71  
72  	public String getPrincipalId() {
73  		return principalId;
74  	}
75  
76  	public void setPrincipalId(String principalId) {
77  		this.principalId = principalId;
78  		this.setPrincipal(KimApiServiceLocator.getPersonService().getPerson(this.principalId));
79  	}
80  
81  	public String getName() {
82  		if (principal == null) {
83          principal = KimApiServiceLocator.getPersonService().getPerson(this.principalId);
84  		}
85  		return (principal != null) ? principal.getName() : "";
86  	}
87  
88  	public Job getJob() {
89  		if(job == null && this.getJobNumber() != null) {
90  			this.setJob(TkServiceLocator.getJobService().getJob(this.getPrincipalId(), this.getJobNumber(), this.getEffectiveDate()));
91  		}
92  		return job;
93  	}
94  
95  	public void setJob(Job job) {
96  		this.job = job;
97  	}
98  
99  	public Long getJobNumber() {
100 		return jobNumber;
101 	}
102 
103 	public void setJobNumber(Long jobNumber) {
104 		this.jobNumber = jobNumber;
105 	}
106 
107 	public String getHrJobId() {
108 		return hrJobId;
109 	}
110 
111 	public void setHrJobId(String hrJobId) {
112 		this.hrJobId = hrJobId;
113 	}
114 
115 	/**
116 	 * Provides us with the text to display to the user for clock actions on
117 	 * this assignment.
118 	 *
119 	 * @return
120 	 */
121 	public String getClockText() {
122 		StringBuilder sb = new StringBuilder("example assignment clock text");
123 
124 		return sb.toString();
125 	}
126 
127 	public String getTkAssignmentId() {
128 		return tkAssignmentId;
129 
130     }
131 	public void setTkAssignmentId(String tkAssignmentId) {
132 		this.tkAssignmentId = tkAssignmentId;
133 	}
134 
135 	public void setWorkArea(Long workArea) {
136 		this.workArea = workArea;
137 	}
138 
139 	public void setTask(Long task) {
140 		this.task = task;
141 	}
142 
143 	public String getDept() {
144 		if(this.getJobNumber()!= null) {
145 			if(this.getJob() == null || !this.getJobNumber().equals(this.getJob().getJobNumber())) {
146 				if(this.getEffectiveDate()!=null){
147 					this.setJob(TkServiceLocator.getJobService().getJob(this.getPrincipalId(), this.getJobNumber(), this.getEffectiveDate(), false));
148 				}else{
149 					this.setJob(TkServiceLocator.getJobService().getJob(this.getPrincipalId(), this.getJobNumber(), TKUtils.getCurrentDate(), false));
150 				}
151 			}
152 			setDept((this.getJob() != null) ? this.getJob().getDept() : "");
153 		}
154 		return dept;
155 	}
156 
157 	public void setDept(String dept) {
158 		this.dept = dept;
159 	}
160 
161 	public WorkArea getWorkAreaObj() {
162 		if(workAreaObj == null && workArea != null) {
163 			this.setWorkAreaObj(TkServiceLocator.getWorkAreaService().getWorkArea(this.getWorkArea(), this.getEffectiveDate()));
164 		}
165 		return workAreaObj;
166 	}
167 
168 	public void setWorkAreaObj(WorkArea workAreaObj) {
169 		this.workAreaObj = workAreaObj;
170 	}
171 
172 	public Long getWorkArea() {
173 		return workArea;
174 	}
175 
176 	public Long getTask() {
177 		if(task == null) {
178 			return Long.valueOf(0);	// default task to 0 if task not provided
179 		}
180 		return task;
181 	}
182 
183 	public void setTimeCollectionRule(TimeCollectionRule timeCollectionRule) {
184 		this.timeCollectionRule = timeCollectionRule;
185 	}
186 
187 	public TimeCollectionRule getTimeCollectionRule() {
188 		return timeCollectionRule;
189 	}
190 
191 	public boolean isSynchronous() {
192 		return timeCollectionRule != null ? timeCollectionRule.isClockUserFl() : true;
193 	}
194 
195 	public DeptLunchRule getDeptLunchRule() {
196 		return deptLunchRule;
197 	}
198 
199 	public void setDeptLunchRule(DeptLunchRule deptLunchRule) {
200 		this.deptLunchRule = deptLunchRule;
201 	}
202 
203 	public String getAssignmentDescription() {
204 		return TKUtils.getAssignmentString(this);
205 	}
206 
207 	public Person getPrincipal() {
208 		return principal;
209 	}
210 
211 	public void setPrincipal(Person principal) {
212 		this.principal = principal;
213 	}
214 
215 	public Task getTaskObj() {
216 		return taskObj;
217 	}
218 
219 	public void setTaskObj(Task taskObj) {
220 		this.taskObj = taskObj;
221 	}
222 
223 	/*public Long getTkWorkAreaId() {
224 		return tkWorkAreaId;
225 	}
226 
227 	public void setTkWorkAreaId(Long tkWorkAreaId) {
228 		this.tkWorkAreaId = tkWorkAreaId;
229 	}*/
230 	public Boolean getHistory() {
231 		return history;
232 	}
233 	public void setHistory(Boolean history) {
234 		this.history = history;
235 	}
236 
237 	@Override
238 	public String getUniqueKey() {
239 		String jobKey = getPrincipalId()+"_"+getJobNumber()+"_"+getWorkArea()+"_"+
240 			(getTask() != null ? getTask().toString() : "");
241 		return jobKey;
242 
243 	}
244 
245 	@Override
246 	public String getId() {
247 		return getTkAssignmentId();
248 	}
249 
250 	@Override
251 	public void setId(String id) {
252 		setTkAssignmentId(id);
253 	}
254 
255     @Override
256     public boolean equals(Object obj) {
257         if (obj == null)
258             return false;
259         if (obj == this)
260             return true;
261         if (obj.getClass() != getClass())
262             return false;
263 
264         Assignment rhs = (Assignment)obj;
265         return new EqualsBuilder().append(principalId, rhs.principalId).append(jobNumber, rhs.jobNumber)
266                 .append(workArea, rhs.workArea).append(task, rhs.task).isEquals();
267     }
268 
269     @Override
270     public int hashCode() {
271         return new HashCodeBuilder(17, 781).append(principalId).append(jobNumber).append(workArea).append(task).toHashCode();
272     }
273 
274     public String getCalGroup() {
275         return calGroup;
276     }
277 
278     public void setCalGroup(String calGroup) {
279         this.calGroup = calGroup;
280     }
281 
282     public String getAssignmentKey() {
283         return new AssignmentDescriptionKey(this).toAssignmentKeyString();
284     }
285 }