View Javadoc
1   /**
2    * Copyright 2004-2014 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.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      * Private constructor used only by JAXB.
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      * A builder which can be used to construct {@link PrincipalHRAttributes} instances.  Enforces the constraints of the {@link PrincipalHRAttributesContract}.
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      * Defines some internal constants used on this class.
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      * A private class which exposes constants which define the XML element names to use when this object is marshalled to XML.
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 }