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.roles;
017    
018    import java.sql.Date;
019    
020    import org.apache.commons.lang.builder.HashCodeBuilder;
021    import org.kuali.hr.core.KPMEConstants;
022    import org.kuali.hr.location.Location;
023    import org.kuali.hr.time.HrBusinessObject;
024    import org.kuali.hr.time.department.Department;
025    import org.kuali.hr.time.position.Position;
026    import org.kuali.hr.time.service.base.TkServiceLocator;
027    import org.kuali.hr.time.util.TKUtils;
028    import org.kuali.hr.time.workarea.WorkArea;
029    import org.kuali.kfs.coa.businessobject.Chart;
030    import org.kuali.rice.kim.api.identity.Person;
031    import org.kuali.rice.kim.api.services.KimApiServiceLocator;
032    
033    public class TkRole extends HrBusinessObject {
034    
035            private static final long serialVersionUID = -2123815189941339343L;
036    
037            public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "TkRole";
038    
039            private String hrRolesId;
040            private String principalId;
041            private String roleName;
042            private String userPrincipalId;
043            private Long workArea;
044            private String department;
045        private String chart;
046            private Long hrDeptId;
047            private String positionNumber;
048            private Date expirationDate;
049    
050        /**
051         * These objects are used by Lookups to provide links on the maintenance
052         * page. They are not necessarily going to be populated.
053         */
054            private transient Person person;
055        private transient Department departmentObj;
056        private transient WorkArea workAreaObj;
057        private transient Chart chartObj;
058        private transient Position positionObj;
059        
060        private Location locationObj;
061    
062        public Chart getChartObj() {
063            return chartObj;
064        }
065    
066        public void setChartObj(Chart chartObj) {
067            this.chartObj = chartObj;
068        }
069    
070        public Department getDepartmentObj() {
071            return departmentObj;
072        }
073    
074        public void setDepartmentObj(Department departmentObj) {
075            this.departmentObj = departmentObj;
076            if (departmentObj != null) {
077                this.department = departmentObj.getDept();
078                this.workAreaObj= null;
079                this.workArea = null;
080            }
081        }
082    
083        public WorkArea getWorkAreaObj() {
084            return workAreaObj;
085        }
086    
087        public void setWorkAreaObj(WorkArea workAreaObj) {
088            this.workAreaObj = workAreaObj;
089            if (workAreaObj != null) {
090                this.workArea = workAreaObj.getWorkArea();
091                this.departmentObj = TkServiceLocator.getDepartmentService().getDepartment(workAreaObj.getDept(), TKUtils.getCurrentDate());
092                this.department = workAreaObj.getDept();
093            }
094        }
095    
096        public String getHrRolesId() {
097                    return hrRolesId;
098            }
099        
100            public void setHrRolesId(String hrRolesId) {
101                    this.hrRolesId = hrRolesId;
102            }
103            
104            public String getPrincipalId() {
105                    return principalId;
106            }
107            
108            public void setPrincipalId(String principalId) {
109                    this.principalId = principalId;
110            setPerson(KimApiServiceLocator.getPersonService().getPerson(this.principalId));
111            }
112            
113            public String getRoleName() {
114                    return roleName;
115            }
116            
117            public void setRoleName(String roleName) {
118                    this.roleName = roleName;
119            }
120            
121            public String getUserPrincipalId() {
122                    return userPrincipalId;
123            }
124            
125            public void setUserPrincipalId(String userPrincipalId) {
126                    this.userPrincipalId = userPrincipalId;
127            }
128            
129            public Long getWorkArea() {
130                    return workArea;
131            }
132            
133            public void setWorkArea(Long workArea) {
134                    this.workArea = workArea;
135            }
136            
137            public String getDepartment() {
138                    return department;
139            }
140            
141            public void setDepartment(String department) {
142                    this.department = department;
143            }
144    
145            public Person getPerson() {
146                    return person;
147            }
148            
149            public void setPerson(Person person) {
150                    this.person = person;
151            }
152            
153            public Long getHrDeptId() {
154                    return hrDeptId;
155            }
156            
157            public void setHrDeptId(Long hrDeptId) {
158                    this.hrDeptId = hrDeptId;
159            }
160    
161        public String getChart() {
162            return chart;
163        }
164    
165        public void setChart(String chart) {
166            this.chart = chart;
167        }
168    
169        /**
170         * This method supports maintenance and lookup pages.
171         */
172        public String getUserName() {
173            if (person == null) {
174                person = KimApiServiceLocator.getPersonService().getPerson(this.principalId);
175            }
176    
177            return (person != null) ? person.getName() : "";
178        }
179    
180            public void setPositionNumber(String positionNumber) {
181                    this.positionNumber = positionNumber;
182            }
183    
184            public String getPositionNumber() {
185                    return positionNumber;
186            }
187    
188            public Date getExpirationDate() {
189                    return expirationDate;
190            }
191    
192            public void setExpirationDate(Date expirationDate) {
193                    this.expirationDate = expirationDate;
194            }
195    
196            public void setPositionObj(Position positionObj) {
197                    this.positionObj = positionObj;
198            }
199    
200            public Position getPositionObj() {
201                    return positionObj;
202            }
203    
204            @Override
205            public String getUniqueKey() {
206                    return principalId + "_" + positionNumber != null ? positionNumber.toString() : "" +"_"+
207                                    roleName + "_" + workArea != null ? workArea.toString() : "" + "_" +
208                                    department + "_" + chart;
209            }
210    
211            @Override
212            public String getId() {
213                    return getHrRolesId();
214            }
215    
216            @Override
217            public void setId(String id) {
218                    setHrRolesId(id);
219            }
220    
221            public Location getLocationObj() {
222                    return locationObj;
223            }
224    
225            public void setLocationObj(Location locationObj) {
226                    this.locationObj = locationObj;
227            }
228    
229        @Override
230        public int hashCode() {
231            return HashCodeBuilder.reflectionHashCode(this);
232        }
233    
234        @Override
235        public boolean equals(Object o) {
236            if (this == o) return true;
237            if (o == null || getClass() != o.getClass()) return false;
238    
239            TkRole tkRole = (TkRole) o;
240    
241            if (chart != null ? !chart.equals(tkRole.chart) : tkRole.chart != null) return false;
242            if (chartObj != null ? !chartObj.equals(tkRole.chartObj) : tkRole.chartObj != null) return false;
243            if (department != null ? !department.equals(tkRole.department) : tkRole.department != null) return false;
244            if (departmentObj != null ? !departmentObj.equals(tkRole.departmentObj) : tkRole.departmentObj != null)
245                return false;
246            if (expirationDate != null ? !expirationDate.equals(tkRole.expirationDate) : tkRole.expirationDate != null)
247                return false;
248            if (hrDeptId != null ? !hrDeptId.equals(tkRole.hrDeptId) : tkRole.hrDeptId != null) return false;
249            if (!hrRolesId.equals(tkRole.hrRolesId)) return false;
250            if (locationObj != null ? !locationObj.equals(tkRole.locationObj) : tkRole.locationObj != null) return false;
251            if (person != null ? !person.equals(tkRole.person) : tkRole.person != null) return false;
252            if (positionNumber != null ? !positionNumber.equals(tkRole.positionNumber) : tkRole.positionNumber != null)
253                return false;
254            if (positionObj != null ? !positionObj.equals(tkRole.positionObj) : tkRole.positionObj != null) return false;
255            if (principalId != null ? !principalId.equals(tkRole.principalId) : tkRole.principalId != null) return false;
256            if (roleName != null ? !roleName.equals(tkRole.roleName) : tkRole.roleName != null) return false;
257            if (userPrincipalId != null ? !userPrincipalId.equals(tkRole.userPrincipalId) : tkRole.userPrincipalId != null)
258                return false;
259            if (workArea != null ? !workArea.equals(tkRole.workArea) : tkRole.workArea != null) return false;
260            if (workAreaObj != null ? !workAreaObj.equals(tkRole.workAreaObj) : tkRole.workAreaObj != null) return false;
261    
262            return true;
263        }
264    }