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