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.clock.location;
017    
018    import java.util.ArrayList;
019    import java.util.List;
020    
021    import org.kuali.hr.core.KPMEConstants;
022    import org.kuali.hr.job.Job;
023    import org.kuali.hr.time.authorization.DepartmentalRule;
024    import org.kuali.hr.time.department.Department;
025    import org.kuali.hr.time.rule.TkRule;
026    import org.kuali.hr.time.service.base.TkServiceLocator;
027    import org.kuali.hr.time.workarea.WorkArea;
028    import org.kuali.rice.kim.api.identity.Person;
029    
030    public class ClockLocationRule extends TkRule implements DepartmentalRule {
031    
032            private static final long serialVersionUID = 959554402289679184L;
033    
034            public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "ClockLocationRule";
035    
036            private String tkClockLocationRuleId;
037    
038            private Department department;
039            private String dept;
040            private String hrDeptId;
041            
042            private Long workArea;
043            private String tkWorkAreaId;
044            private String principalId;
045            private Long jobNumber;
046            private String hrJobId;
047    
048            private List<ClockLocationRuleIpAddress> ipAddresses = new ArrayList<ClockLocationRuleIpAddress>();
049            private String userPrincipalId;
050            private Boolean history;
051    
052            private WorkArea workAreaObj;
053            private Job job;
054            private transient Person principal;
055    
056            public Long getWorkArea() {
057                    return workArea;
058            }
059    
060            public void setWorkArea(Long workArea) {
061                    this.workArea = workArea;
062            }
063    
064            public String getPrincipalId() {
065                    return principalId;
066            }
067    
068            public void setPrincipalId(String principalId) {
069                    this.principalId = principalId;
070            }
071    
072            public String getUserPrincipalId() {
073                    return userPrincipalId;
074            }
075    
076            public void setUserPrincipalId(String userPrincipalId) {
077                    this.userPrincipalId = userPrincipalId;
078            }
079    
080            public Long getJobNumber() {
081                    return jobNumber;
082            }
083    
084            public void setJobNumber(Long jobNumber) {
085                    this.jobNumber = jobNumber;
086            }
087            public Department getDepartment() {
088                return department;
089            }
090    
091            public void setDepartment(Department department) {
092                this.department = department;
093            }
094    
095            public WorkArea getWorkAreaObj() {
096                return workAreaObj;
097            }
098    
099            public void setWorkAreaObj(WorkArea workAreaObj) {
100                this.workAreaObj = workAreaObj;
101            }
102    
103            public Job getJob() {
104                return job;
105            }
106    
107            public void setJob(Job job) {
108                this.job = job;
109            }
110    
111            public String getTkClockLocationRuleId() {
112                    return tkClockLocationRuleId;
113            }
114    
115            public void setTkClockLocationRuleId(String tkClockLocationRuleId) {
116                    this.tkClockLocationRuleId = tkClockLocationRuleId;
117            }
118    
119            public String getDept() {
120                    return dept;
121            }
122    
123            public void setDept(String dept) {
124                    this.dept = dept;
125            }
126    
127            public void setHistory(Boolean history) {
128                    this.history = history;
129            }
130    
131            public Boolean getHistory() {
132                    return history;
133            }
134    
135            public Person getPrincipal() {
136                    return principal;
137            }
138    
139            public void setPrincipal(Person principal) {
140                    this.principal = principal;
141            }
142    
143            public String getHrDeptId() {
144                    return hrDeptId;
145            }
146    
147            public void setHrDeptId(String hrDeptId) {
148                    this.hrDeptId = hrDeptId;
149            }
150    
151            public String getTkWorkAreaId() {
152                    return tkWorkAreaId;
153            }
154    
155            public void setTkWorkAreaId(String tkWorkAreaId) {
156                    this.tkWorkAreaId = tkWorkAreaId;
157            }
158    
159            public String getHrJobId() {
160                    return hrJobId;
161            }
162    
163            public void setHrJobId(String hrJobId) {
164                    this.hrJobId = hrJobId;
165            }
166    
167            @Override
168            public String getUniqueKey() {
169                    String clockLocKey = getDept()+"_"+getPrincipalId()+"_"+
170                    (getJobNumber()!=null ? getJobNumber().toString(): "") +"_" + 
171                    (getWorkArea() !=null ? getWorkArea().toString() : "");
172                    
173                    return clockLocKey;
174            }
175    
176            @Override
177            public String getId() {
178                    return getTkClockLocationRuleId();
179            }
180    
181            @Override
182            public void setId(String id) {
183                    setTkClockLocationRuleId(id);
184            }
185    
186            public List<ClockLocationRuleIpAddress> getIpAddresses() {
187                    if(ipAddresses.isEmpty()) {
188                            TkServiceLocator.getClockLocationRuleService().populateIPAddressesForCLR(this);
189                    }
190                    return ipAddresses;
191            }
192    
193            public void setIpAddresses(List<ClockLocationRuleIpAddress> ipAddresses) {
194                    this.ipAddresses = ipAddresses;
195            }
196            // for lookup and inquiry display only
197            public String getIpAddressesString() {
198                    String aString = "";
199                    for(ClockLocationRuleIpAddress ip : this.getIpAddresses()) {
200                            aString += ip.getIpAddress() + ", ";
201                    }
202                    return aString;
203            }
204    
205    
206    }