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.assignment;
017    
018    import java.util.regex.Matcher;
019    import java.util.regex.Pattern;
020    
021    import org.apache.log4j.Logger;
022    import org.kuali.hr.time.util.TkConstants;
023    
024    public class AssignmentDescriptionKey {
025            private static final Logger LOG = Logger.getLogger(AssignmentDescriptionKey.class);
026    
027            private Long jobNumber;
028            private Long workArea;
029            private Long task;
030    
031        public AssignmentDescriptionKey() {
032    
033        }
034    
035        // djunk - added this constructor since we are essentially working on units
036        // of assignments and their keys
037        public AssignmentDescriptionKey(Assignment a) {
038            if (a != null) {
039                this.jobNumber = a.getJobNumber();
040                this.workArea = a.getWorkArea();
041                this.task = a.getTask();
042            }
043        }
044    
045            public AssignmentDescriptionKey(String jobNumer, String workArea, String task) {
046                    this.jobNumber = Long.parseLong(jobNumer);
047                    this.workArea = Long.parseLong(workArea);
048                    this.task = Long.parseLong(task);
049            }
050            public AssignmentDescriptionKey(Long jobNumer, Long workArea, Long task) {
051                    this.jobNumber = jobNumer;
052                    this.workArea = workArea;
053                    this.task = task;
054            }
055            public AssignmentDescriptionKey(String assignmentKey) {
056    
057                    try {
058                    Pattern keyPattern = Pattern.compile("^\\d{1,}_\\d{1,}_\\d{1,}");
059                    Matcher match = keyPattern.matcher(assignmentKey);
060                    if(!match.matches()) {
061                            throw new RuntimeException("the format of the assignment key is wrong. it should be jobNumber_workArea_task");
062                    }
063    
064                    String[] key = assignmentKey.split(TkConstants.ASSIGNMENT_KEY_DELIMITER);
065    
066                    this.jobNumber = Long.parseLong(key[0]);
067                    this.workArea = Long.parseLong(key[1]);
068                    this.task = Long.parseLong(key[2]);
069                    }
070                    catch(NullPointerException npe) {
071                            LOG.error("The assignment key is null");
072                    }
073    
074            }
075            public Long getJobNumber() {
076                    return jobNumber;
077            }
078            public void setJobNumber(Long jobNumber) {
079                    this.jobNumber = jobNumber;
080            }
081            public Long getWorkArea() {
082                    return workArea;
083            }
084            public void setWorkArea(Long workArea) {
085                    this.workArea = workArea;
086            }
087            public Long getTask() {
088                    return task;
089            }
090            public void setTask(Long task) {
091                    this.task = task;
092            }
093    
094        @Override
095        public String toString() {
096            return "jobNumber: " + jobNumber + "; workArea: " + workArea + "; task: " + task;
097        }
098    
099        public String toAssignmentKeyString() {
100            return jobNumber + TkConstants.ASSIGNMENT_KEY_DELIMITER + workArea + TkConstants.ASSIGNMENT_KEY_DELIMITER + task;
101        }
102    
103    
104        public static String getAssignmentKeyString(Assignment a) {
105            return a.getJobNumber() + TkConstants.ASSIGNMENT_KEY_DELIMITER + a.getWorkArea() + TkConstants.ASSIGNMENT_KEY_DELIMITER + a.getTask();
106        }
107    }