1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.kpme.core.api.principal;
17
18 import java.io.Serializable;
19 import java.util.Collection;
20 import javax.xml.bind.annotation.XmlAccessType;
21 import javax.xml.bind.annotation.XmlAccessorType;
22 import javax.xml.bind.annotation.XmlAnyElement;
23 import javax.xml.bind.annotation.XmlElement;
24 import javax.xml.bind.annotation.XmlRootElement;
25 import javax.xml.bind.annotation.XmlType;
26
27 import org.apache.commons.lang.StringUtils;
28 import org.joda.time.DateTime;
29 import org.joda.time.LocalDate;
30 import org.kuali.kpme.core.api.calendar.Calendar;
31 import org.kuali.kpme.core.api.calendar.CalendarContract;
32 import org.kuali.kpme.core.api.leaveplan.LeavePlan;
33 import org.kuali.kpme.core.api.leaveplan.LeavePlanContract;
34 import org.kuali.rice.core.api.CoreConstants;
35 import org.kuali.rice.core.api.mo.AbstractDataTransferObject;
36 import org.kuali.rice.core.api.mo.ModelBuilder;
37 import org.w3c.dom.Element;
38
39 @XmlRootElement(name = PrincipalHRAttributes.Constants.ROOT_ELEMENT_NAME)
40 @XmlAccessorType(XmlAccessType.NONE)
41 @XmlType(name = PrincipalHRAttributes.Constants.TYPE_NAME, propOrder = {
42 PrincipalHRAttributes.Elements.NAME,
43 PrincipalHRAttributes.Elements.LEAVE_PLAN,
44 PrincipalHRAttributes.Elements.SERVICE_LOCAL_DATE,
45 PrincipalHRAttributes.Elements.FMLA_ELIGIBLE,
46 PrincipalHRAttributes.Elements.WORKERS_COMP_ELIGIBLE,
47 PrincipalHRAttributes.Elements.TIMEZONE,
48 PrincipalHRAttributes.Elements.CALENDAR,
49 PrincipalHRAttributes.Elements.LEAVE_PLAN_OBJ,
50 PrincipalHRAttributes.Elements.PRINCIPAL_ID,
51 PrincipalHRAttributes.Elements.PAY_CALENDAR,
52 PrincipalHRAttributes.Elements.LEAVE_CALENDAR,
53 PrincipalHRAttributes.Elements.LEAVE_CAL_OBJ,
54 PrincipalHRAttributes.Elements.HR_PRINCIPAL_ATTRIBUTE_ID,
55 CoreConstants.CommonElements.VERSION_NUMBER,
56 CoreConstants.CommonElements.OBJECT_ID,
57 PrincipalHRAttributes.Elements.ACTIVE,
58 PrincipalHRAttributes.Elements.ID,
59 PrincipalHRAttributes.Elements.EFFECTIVE_LOCAL_DATE,
60 PrincipalHRAttributes.Elements.CREATE_TIME,
61 PrincipalHRAttributes.Elements.USER_PRINCIPAL_ID,
62 CoreConstants.CommonElements.FUTURE_ELEMENTS
63 })
64 public final class PrincipalHRAttributes
65 extends AbstractDataTransferObject
66 implements PrincipalHRAttributesContract
67 {
68
69 private static final long serialVersionUID = -6579919450361951325L;
70 @XmlElement(name = Elements.NAME, required = false)
71 private final String name;
72 @XmlElement(name = Elements.LEAVE_PLAN, required = false)
73 private final String leavePlan;
74 @XmlElement(name = Elements.SERVICE_LOCAL_DATE, required = false)
75 private final LocalDate serviceLocalDate;
76 @XmlElement(name = Elements.FMLA_ELIGIBLE, required = false)
77 private final boolean fmlaEligible;
78 @XmlElement(name = Elements.WORKERS_COMP_ELIGIBLE, required = false)
79 private final boolean workersCompEligible;
80 @XmlElement(name = Elements.TIMEZONE, required = false)
81 private final String timezone;
82 @XmlElement(name = Elements.CALENDAR, required = false)
83 private final Calendar calendar;
84 @XmlElement(name = Elements.LEAVE_PLAN_OBJ, required = false)
85 private final LeavePlan leavePlanObj;
86 @XmlElement(name = Elements.PRINCIPAL_ID, required = false)
87 private final String principalId;
88 @XmlElement(name = Elements.PAY_CALENDAR, required = false)
89 private final String payCalendar;
90 @XmlElement(name = Elements.LEAVE_CALENDAR, required = false)
91 private final String leaveCalendar;
92 @XmlElement(name = Elements.LEAVE_CAL_OBJ, required = false)
93 private final Calendar leaveCalObj;
94 @XmlElement(name = Elements.HR_PRINCIPAL_ATTRIBUTE_ID, required = false)
95 private final String hrPrincipalAttributeId;
96 @XmlElement(name = CoreConstants.CommonElements.VERSION_NUMBER, required = false)
97 private final Long versionNumber;
98 @XmlElement(name = CoreConstants.CommonElements.OBJECT_ID, required = false)
99 private final String objectId;
100 @XmlElement(name = Elements.ACTIVE, required = false)
101 private final boolean active;
102 @XmlElement(name = Elements.ID, required = false)
103 private final String id;
104 @XmlElement(name = Elements.EFFECTIVE_LOCAL_DATE, required = false)
105 private final LocalDate effectiveLocalDate;
106 @XmlElement(name = Elements.CREATE_TIME, required = false)
107 private final DateTime createTime;
108 @XmlElement(name = Elements.USER_PRINCIPAL_ID, required = false)
109 private final String userPrincipalId;
110 @SuppressWarnings("unused")
111 @XmlAnyElement
112 private final Collection<Element> _futureElements = null;
113
114
115
116
117
118 private PrincipalHRAttributes() {
119 this.name = "";
120 this.leavePlan = null;
121 this.serviceLocalDate = null;
122 this.fmlaEligible = false;
123 this.workersCompEligible = false;
124 this.timezone = null;
125 this.calendar = null;
126 this.leavePlanObj = null;
127 this.principalId = null;
128 this.payCalendar = null;
129 this.leaveCalendar = null;
130 this.leaveCalObj = null;
131 this.hrPrincipalAttributeId = null;
132 this.versionNumber = null;
133 this.objectId = null;
134 this.active = false;
135 this.id = null;
136 this.effectiveLocalDate = null;
137 this.createTime = null;
138 this.userPrincipalId = null;
139 }
140
141 private PrincipalHRAttributes(Builder builder) {
142 this.name = builder.getName();
143 this.leavePlan = builder.getLeavePlan();
144 this.serviceLocalDate = builder.getServiceLocalDate();
145 this.fmlaEligible = builder.isFmlaEligible();
146 this.workersCompEligible = builder.isWorkersCompEligible();
147 this.timezone = builder.getTimezone();
148 this.calendar = builder.getCalendar() == null ? null : builder.getCalendar().build();
149 this.leavePlanObj = builder.getLeavePlanObj() == null ? null : builder.getLeavePlanObj().build();
150 this.principalId = builder.getPrincipalId();
151 this.payCalendar = builder.getPayCalendar();
152 this.leaveCalendar = builder.getLeaveCalendar();
153 this.leaveCalObj = builder.getLeaveCalObj() == null ? null : builder.getLeaveCalObj().build();
154 this.hrPrincipalAttributeId = builder.getHrPrincipalAttributeId();
155 this.versionNumber = builder.getVersionNumber();
156 this.objectId = builder.getObjectId();
157 this.active = builder.isActive();
158 this.id = builder.getId();
159 this.effectiveLocalDate = builder.getEffectiveLocalDate();
160 this.createTime = builder.getCreateTime();
161 this.userPrincipalId = builder.getUserPrincipalId();
162 }
163
164 @Override
165 public String getName() {
166 return this.name;
167 }
168
169 @Override
170 public String getLeavePlan() {
171 return this.leavePlan;
172 }
173
174 @Override
175 public LocalDate getServiceLocalDate() {
176 return this.serviceLocalDate;
177 }
178
179 @Override
180 public boolean isFmlaEligible() {
181 return this.fmlaEligible;
182 }
183
184 @Override
185 public boolean isWorkersCompEligible() {
186 return this.workersCompEligible;
187 }
188
189 @Override
190 public String getTimezone() {
191 return this.timezone;
192 }
193
194 @Override
195 public Calendar getCalendar() {
196 return this.calendar;
197 }
198
199 @Override
200 public LeavePlan getLeavePlanObj() {
201 return this.leavePlanObj;
202 }
203
204 @Override
205 public String getPrincipalId() {
206 return this.principalId;
207 }
208
209 @Override
210 public String getPayCalendar() {
211 return this.payCalendar;
212 }
213
214 @Override
215 public String getLeaveCalendar() {
216 return this.leaveCalendar;
217 }
218
219 @Override
220 public Calendar getLeaveCalObj() {
221 return this.leaveCalObj;
222 }
223
224 @Override
225 public String getHrPrincipalAttributeId() {
226 return this.hrPrincipalAttributeId;
227 }
228
229 @Override
230 public Long getVersionNumber() {
231 return this.versionNumber;
232 }
233
234 @Override
235 public String getObjectId() {
236 return this.objectId;
237 }
238
239 @Override
240 public boolean isActive() {
241 return this.active;
242 }
243
244 @Override
245 public String getId() {
246 return this.id;
247 }
248
249 @Override
250 public LocalDate getEffectiveLocalDate() {
251 return this.effectiveLocalDate;
252 }
253
254 @Override
255 public DateTime getCreateTime() {
256 return this.createTime;
257 }
258
259 @Override
260 public String getUserPrincipalId() {
261 return this.userPrincipalId;
262 }
263
264
265
266
267
268
269 public final static class Builder
270 implements Serializable, PrincipalHRAttributesContract, ModelBuilder
271 {
272
273 private String name;
274 private String leavePlan;
275 private LocalDate serviceLocalDate;
276 private boolean fmlaEligible;
277 private boolean workersCompEligible;
278 private String timezone;
279 private Calendar.Builder calendar;
280 private LeavePlan.Builder leavePlanObj;
281 private String principalId;
282 private String payCalendar;
283 private String leaveCalendar;
284 private Calendar.Builder leaveCalObj;
285 private String hrPrincipalAttributeId;
286 private Long versionNumber;
287 private String objectId;
288 private boolean active;
289 private String id;
290 private LocalDate effectiveLocalDate;
291 private DateTime createTime;
292 private String userPrincipalId;
293
294 private Builder(String principalId) {
295 setPrincipalId(principalId);
296 }
297
298 public static Builder create(String principalId) {
299 return new Builder(principalId);
300 }
301
302 public static Builder create(PrincipalHRAttributesContract contract) {
303 if (contract == null) {
304 throw new IllegalArgumentException("contract was null");
305 }
306 Builder builder = create(contract.getPrincipalId());
307 builder.setName(contract.getName());
308 builder.setLeavePlan(contract.getLeavePlan());
309 builder.setServiceLocalDate(contract.getServiceLocalDate());
310 builder.setFmlaEligible(contract.isFmlaEligible());
311 builder.setWorkersCompEligible(contract.isWorkersCompEligible());
312 builder.setTimezone(contract.getTimezone());
313 builder.setCalendar(contract.getCalendar() == null ? null : Calendar.Builder.create(contract.getCalendar()));
314 builder.setLeavePlanObj(contract.getLeavePlanObj() == null ? null : LeavePlan.Builder.create(contract.getLeavePlanObj()));
315 builder.setPayCalendar(contract.getPayCalendar());
316 builder.setLeaveCalendar(contract.getLeaveCalendar());
317 builder.setLeaveCalObj(contract.getLeaveCalObj() == null ? null : Calendar.Builder.create(contract.getLeaveCalObj()));
318 builder.setHrPrincipalAttributeId(contract.getHrPrincipalAttributeId());
319 builder.setVersionNumber(contract.getVersionNumber());
320 builder.setObjectId(contract.getObjectId());
321 builder.setActive(contract.isActive());
322 builder.setId(contract.getId());
323 builder.setEffectiveLocalDate(contract.getEffectiveLocalDate());
324 builder.setCreateTime(contract.getCreateTime());
325 builder.setUserPrincipalId(contract.getUserPrincipalId());
326 return builder;
327 }
328
329 public PrincipalHRAttributes build() {
330 return new PrincipalHRAttributes(this);
331 }
332
333 @Override
334 public String getName() {
335 return this.name;
336 }
337
338 @Override
339 public String getLeavePlan() {
340 return this.leavePlan;
341 }
342
343 @Override
344 public LocalDate getServiceLocalDate() {
345 return this.serviceLocalDate;
346 }
347
348 @Override
349 public boolean isFmlaEligible() {
350 return this.fmlaEligible;
351 }
352
353 @Override
354 public boolean isWorkersCompEligible() {
355 return this.workersCompEligible;
356 }
357
358 @Override
359 public String getTimezone() {
360 return this.timezone;
361 }
362
363 @Override
364 public Calendar.Builder getCalendar() {
365 return this.calendar;
366 }
367
368 @Override
369 public LeavePlan.Builder getLeavePlanObj() {
370 return this.leavePlanObj;
371 }
372
373 @Override
374 public String getPrincipalId() {
375 return this.principalId;
376 }
377
378 @Override
379 public String getPayCalendar() {
380 return this.payCalendar;
381 }
382
383 @Override
384 public String getLeaveCalendar() {
385 return this.leaveCalendar;
386 }
387
388 @Override
389 public Calendar.Builder getLeaveCalObj() {
390 return this.leaveCalObj;
391 }
392
393 @Override
394 public String getHrPrincipalAttributeId() {
395 return this.hrPrincipalAttributeId;
396 }
397
398 @Override
399 public Long getVersionNumber() {
400 return this.versionNumber;
401 }
402
403 @Override
404 public String getObjectId() {
405 return this.objectId;
406 }
407
408 @Override
409 public boolean isActive() {
410 return this.active;
411 }
412
413 @Override
414 public String getId() {
415 return this.id;
416 }
417
418 @Override
419 public LocalDate getEffectiveLocalDate() {
420 return this.effectiveLocalDate;
421 }
422
423 @Override
424 public DateTime getCreateTime() {
425 return this.createTime;
426 }
427
428 @Override
429 public String getUserPrincipalId() {
430 return this.userPrincipalId;
431 }
432
433 public void setName(String name) {
434 this.name = name;
435 }
436
437 public void setLeavePlan(String leavePlan) {
438 this.leavePlan = leavePlan;
439 }
440
441 public void setServiceLocalDate(LocalDate serviceLocalDate) {
442 this.serviceLocalDate = serviceLocalDate;
443 }
444
445 public void setFmlaEligible(boolean fmlaEligible) {
446 this.fmlaEligible = fmlaEligible;
447 }
448
449 public void setWorkersCompEligible(boolean workersCompEligible) {
450 this.workersCompEligible = workersCompEligible;
451 }
452
453 public void setTimezone(String timezone) {
454 this.timezone = timezone;
455 }
456
457 public void setCalendar(Calendar.Builder calendar) {
458 this.calendar = calendar;
459 }
460
461 public void setLeavePlanObj(LeavePlan.Builder leavePlanObj) {
462 this.leavePlanObj = leavePlanObj;
463 }
464
465 public void setPrincipalId(String principalId) {
466 if (StringUtils.isBlank(principalId)) {
467 throw new IllegalArgumentException("principalId is blank");
468 }
469 this.principalId = principalId;
470 }
471
472 public void setPayCalendar(String payCalendar) {
473 this.payCalendar = payCalendar;
474 }
475
476 public void setLeaveCalendar(String leaveCalendar) {
477 this.leaveCalendar = leaveCalendar;
478 }
479
480 public void setLeaveCalObj(Calendar.Builder leaveCalObj) {
481 this.leaveCalObj = leaveCalObj;
482 }
483
484 public void setHrPrincipalAttributeId(String hrPrincipalAttributeId) {
485 this.hrPrincipalAttributeId = hrPrincipalAttributeId;
486 }
487
488 public void setVersionNumber(Long versionNumber) {
489 this.versionNumber = versionNumber;
490 }
491
492 public void setObjectId(String objectId) {
493 this.objectId = objectId;
494 }
495
496 public void setActive(boolean active) {
497 this.active = active;
498 }
499
500 public void setId(String id) {
501 this.id = id;
502 }
503
504 public void setEffectiveLocalDate(LocalDate effectiveLocalDate) {
505 this.effectiveLocalDate = effectiveLocalDate;
506 }
507
508 public void setCreateTime(DateTime createTime) {
509 this.createTime = createTime;
510 }
511
512 public void setUserPrincipalId(String userPrincipalId) {
513 this.userPrincipalId = userPrincipalId;
514 }
515
516 }
517
518
519
520
521
522
523 static class Constants {
524
525 final static String ROOT_ELEMENT_NAME = "principalHRAttributes";
526 final static String TYPE_NAME = "PrincipalHRAttributesType";
527
528 }
529
530
531
532
533
534
535 static class Elements {
536
537 final static String NAME = "name";
538 final static String LEAVE_PLAN = "leavePlan";
539 final static String SERVICE_LOCAL_DATE = "serviceLocalDate";
540 final static String FMLA_ELIGIBLE = "fmlaEligible";
541 final static String WORKERS_COMP_ELIGIBLE = "workersCompEligible";
542 final static String TIMEZONE = "timezone";
543 final static String CALENDAR = "calendar";
544 final static String LEAVE_PLAN_OBJ = "leavePlanObj";
545 final static String PRINCIPAL_ID = "principalId";
546 final static String PAY_CALENDAR = "payCalendar";
547 final static String LEAVE_CALENDAR = "leaveCalendar";
548 final static String LEAVE_CAL_OBJ = "leaveCalObj";
549 final static String HR_PRINCIPAL_ATTRIBUTE_ID = "hrPrincipalAttributeId";
550 final static String ACTIVE = "active";
551 final static String ID = "id";
552 final static String EFFECTIVE_LOCAL_DATE = "effectiveLocalDate";
553 final static String CREATE_TIME = "createTime";
554 final static String USER_PRINCIPAL_ID = "userPrincipalId";
555
556 }
557
558 }