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 }