001 /** 002 * Copyright 2004-2014 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.kpme.core.util; 017 018 import java.math.BigDecimal; 019 import java.math.MathContext; 020 import java.math.RoundingMode; 021 import java.util.ArrayList; 022 import java.util.HashMap; 023 import java.util.HashSet; 024 import java.util.LinkedHashMap; 025 import java.util.List; 026 import java.util.Map; 027 import java.util.Set; 028 029 import org.joda.time.format.DateTimeFormat; 030 import org.joda.time.format.DateTimeFormatter; 031 import org.kuali.kpme.core.KPMEConstants; 032 import org.kuali.kpme.core.accrualcategory.AccrualCategory; 033 import org.kuali.kpme.core.earncode.EarnCode; 034 import org.kuali.kpme.core.earncode.security.EarnCodeType; 035 import org.kuali.kpme.core.leaveplan.LeavePlan; 036 import org.kuali.rice.kew.api.KewApiConstants; 037 import org.kuali.rice.kew.api.document.DocumentStatus; 038 039 public class HrConstants { 040 041 /** 042 * The following were moved up from TkConstants 043 * @author dgodfrey 044 * 045 */ 046 047 public static final int DEFAULT_CACHE_TIME = 900; 048 public static final String TK_TARGET_USER_PERSON = "tkTargetPerson"; 049 050 public static final class DOCUMENT_ACTIONS { 051 public static final String ROUTE = "R"; 052 public static final String APPROVE = "A"; 053 public static final String DISAPPROVE = "D"; 054 public static final String REFRESH = "H"; 055 } 056 057 public static final class BATCH_JOB_ACTIONS { 058 public static final String BATCH_JOB_INITIATE = "BI"; 059 public static final String BATCH_JOB_ROUTE = "BR"; 060 public static final String BATCH_JOB_APPROVE = "BA"; 061 } 062 063 public static final class ROUTE_STATUS { 064 public static final String INITIATED = DocumentStatus.INITIATED.getCode(); 065 public static final String ENROUTE = DocumentStatus.ENROUTE.getCode(); 066 public static final String FINAL = DocumentStatus.FINAL.getCode(); 067 public static final String CANCEL = DocumentStatus.CANCELED.getCode(); 068 public static final String SAVED = DocumentStatus.SAVED.getCode(); 069 public static final String DISAPPROVED = DocumentStatus.DISAPPROVED.getCode(); 070 public static final String EXCEPTION = DocumentStatus.EXCEPTION.getCode(); 071 } 072 073 // Pay Frequency Type 074 public static final class PAY_FREQUENCY { 075 public static final String PAY_FREQUENCY_WEEK = "W"; 076 public static final String PAY_FREQUENCY_BI_WEEK = "BW"; 077 public static final String PAY_FREQUENCY_SEMI_MONTH = "SM"; 078 public static final String PAY_FREQUENCY_MONTH = "M"; 079 } 080 081 public static final Map<String, String> DOC_ROUTE_STATUS = new LinkedHashMap<String, String>(8); 082 083 static { 084 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_INITIATED_CD, KewApiConstants.ROUTE_HEADER_INITIATED_LABEL); 085 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_SAVED_CD, KewApiConstants.ROUTE_HEADER_SAVED_LABEL); 086 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_ENROUTE_CD, KewApiConstants.ROUTE_HEADER_ENROUTE_LABEL); 087 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_FINAL_CD, KewApiConstants.ROUTE_HEADER_FINAL_LABEL); 088 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_CANCEL_CD, KewApiConstants.ROUTE_HEADER_CANCEL_LABEL); 089 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_DISAPPROVED_CD, KewApiConstants.ROUTE_HEADER_DISAPPROVED_LABEL); 090 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_EXCEPTION_CD, KewApiConstants.ROUTE_HEADER_EXCEPTION_LABEL); 091 092 } 093 094 public static final class BATCH_JOB_NAMES { 095 public static final String INITIATE = "Initiate"; 096 public static final String END_PAY_PERIOD = "End Pay Period"; 097 public static final String END_REPORTING_PERIOD = "End Reporting Period"; 098 public static final String EMPLOYEE_APPROVAL = "Employee Approval"; 099 public static final String MISSED_PUNCH_APPROVAL = "Missed Punch Approval"; 100 public static final String SUPERVISOR_APPROVAL = "Supervisor Approval"; 101 public static final String PAYROLL_APPROVAL = "Payroll Approval"; 102 public static final String LEAVE_CALENDAR_DELINQUENCY = "Leave Calendar Delinquency"; 103 } 104 105 public static final List<String> TIME_ZONES = new ArrayList<String>(); 106 107 static { 108 TIME_ZONES.add("America/Chicago"); 109 TIME_ZONES.add("America/Denver"); 110 TIME_ZONES.add("America/Detroit"); 111 TIME_ZONES.add("America/Indiana/Indianapolis"); 112 TIME_ZONES.add("America/Phoenix"); 113 } 114 115 /** 116 * 117 * Refactoring starts here from TkConstants... 118 * 119 */ 120 public static final Map<String, String> SERVICE_UNIT_OF_TIME = new LinkedHashMap<String, String>(3); 121 122 static { 123 SERVICE_UNIT_OF_TIME.put("Y", "Years"); 124 SERVICE_UNIT_OF_TIME.put("M", "Months"); 125 //SERVICE_UNIT_OF_TIME.put("H", "Hours"); 126 } 127 128 public static final Map<String, String> UNIT_OF_TIME = new LinkedHashMap<String, String>(2); 129 130 static { 131 UNIT_OF_TIME.put("D", "Days"); 132 UNIT_OF_TIME.put("H", "Hours"); 133 } 134 135 public static final Map<String, String> MAX_BAL_FLAG = new LinkedHashMap<String, String>(2); 136 137 static { 138 MAX_BAL_FLAG.put("Y", "Yes"); 139 MAX_BAL_FLAG.put("N", "No"); 140 } 141 142 public static final Map<String, String> MAX_BALANCE_ACTION_FREQUENCY = new LinkedHashMap<String, String>(3); 143 144 static { 145 MAX_BALANCE_ACTION_FREQUENCY.put("LA", "Leave Approve"); 146 MAX_BALANCE_ACTION_FREQUENCY.put("YE", "Year End"); 147 MAX_BALANCE_ACTION_FREQUENCY.put("OD", "On Demand"); 148 //MAX_BALANCE_ACTION_FREQUENCY.put("NA", "Not Applicable"); 149 } 150 151 public static final String ASSIGNMENT_KEY_DELIMITER = "_"; 152 public static final String HOLIDAY_EARN_CODE = "HOL"; 153 // Special System earn code to represent lunch deductions. 154 public static final String LUNCH_EARN_CODE = "LUN"; 155 156 /* these are quick hacks to allow these values to be checked in jsp/tag files */ 157 public String getLUNCH_EARN_CODE() { 158 return LUNCH_EARN_CODE; 159 } 160 161 public String getEARN_CODE_AMOUNT() { 162 return EARN_CODE_AMOUNT; 163 } 164 165 public String getHOLIDAY_EARN_CODE() { 166 return HOLIDAY_EARN_CODE; 167 } 168 /* end hack */ 169 170 public static final String TK_TARGET_USER_RETURN = "tkTargetReturn"; 171 172 public static final String WILDCARD_CHARACTER = "%"; 173 public static final Long WILDCARD_LONG = -1L; 174 175 public static final DateTimeFormatter DT_BASIC_DATE_FORMAT = DateTimeFormat.forPattern("MM/dd/yyyy"); 176 177 public static final String FLSA_STATUS_NON_EXEMPT ="NE"; 178 public static final String FLSA_STATUS_EXEMPT ="E"; 179 180 // Timesheet document ID request parameter name 181 public static final String TIMESHEET_DOCUMENT_ID_REQUEST_NAME = "tdocid"; 182 183 // earn code type 184 public static final String EARN_CODE_HOUR = "H"; 185 public static final String EARN_CODE_TIME = "T"; 186 public static final String EARN_CODE_AMOUNT = "A"; 187 public static final String EARN_CODE_OVT = "OVT"; 188 189 public static final String EARN_CODE_DAY = "D"; 190 191 public static final String EFFECTIVE_DATE_FIELD = "effectiveDate"; 192 193 public static final Map<String, Set<String>> CLASS_INQUIRY_KEY_MAP = new HashMap<String, Set<String>>(4); 194 195 static { 196 Set<String> keys = new HashSet<String>(); 197 keys.add("leavePlan"); 198 keys.add("effectiveDate"); 199 CLASS_INQUIRY_KEY_MAP.put(LeavePlan.class.getName(), keys); 200 201 keys = new HashSet<String>(); 202 keys.add("accrualCategory"); 203 keys.add("effectiveDate"); 204 CLASS_INQUIRY_KEY_MAP.put(AccrualCategory.class.getName(), keys); 205 206 keys = new HashSet<String>(); 207 keys.add("earnCode"); 208 keys.add("effectiveDate"); 209 CLASS_INQUIRY_KEY_MAP.put(EarnCode.class.getName(), keys); 210 } 211 212 public static final Map<String, String> EARN_CODE_SECURITY_TYPE = new HashMap<String, String>(); 213 214 static { 215 EARN_CODE_SECURITY_TYPE.put(EarnCodeType.LEAVE.getCode(), "Leave"); 216 EARN_CODE_SECURITY_TYPE.put(EarnCodeType.TIME.getCode(), "Time"); 217 EARN_CODE_SECURITY_TYPE.put(EarnCodeType.BOTH.getCode(), "Time and Leave"); 218 } 219 /** 220 * 221 * The following were moved up from LMConstants 222 * 223 * @author dgodfrey 224 * 225 */ 226 227 public static final String SERVICE_TIME_YEAR = "year"; 228 public static final String SERVICE_TIME_MONTHS = "month"; 229 230 231 // Action history 232 public static final class ACTION { 233 public static final String DELETE = "D"; 234 public static final String ADD = "A"; 235 public static final String MODIFIED = "M"; 236 } 237 238 public static final class ACTION_AT_MAX_BALANCE { 239 public static final String LOSE = "L"; 240 public static final String TRANSFER = "T"; 241 public static final String PAYOUT = "P"; 242 } 243 244 public static final Map<String, String> ACTION_AT_MAX_BALANCE_MAP = new LinkedHashMap<String, String>(3); 245 246 static { 247 ACTION_AT_MAX_BALANCE_MAP.put(ACTION_AT_MAX_BALANCE.TRANSFER, "Transfer"); 248 ACTION_AT_MAX_BALANCE_MAP.put(ACTION_AT_MAX_BALANCE.PAYOUT, "Payout"); 249 ACTION_AT_MAX_BALANCE_MAP.put(ACTION_AT_MAX_BALANCE.LOSE, "Lose"); 250 //ACTION_AT_MAX_BALANCE.put("NA", "Not Applicable"); 251 } 252 253 public static final class MAX_BAL_ACTION_FREQ { 254 public static final String LEAVE_APPROVE = "LA"; 255 public static final String YEAR_END = "YE"; 256 public static final String ON_DEMAND = "OD"; 257 } 258 259 // Request status 260 public static final class REQUEST_STATUS{ 261 public static final String PLANNED="P"; 262 public static final String REQUESTED="R"; 263 public static final String APPROVED="A"; 264 public static final String DISAPPROVED = "D"; 265 public static final String DEFERRED="F"; 266 public static final String USAGE = "U"; 267 } 268 269 public static final Map<String, String> ROUND_OPTION_MAP = new HashMap<String, String>(2); 270 static { 271 ROUND_OPTION_MAP.put("T", "Traditional"); 272 ROUND_OPTION_MAP.put("R", "Truncate"); 273 } 274 275 276 public static final Map<String, String> REQUEST_STATUS_STRINGS = new HashMap<String, String>(6); 277 278 static { 279 REQUEST_STATUS_STRINGS.put(HrConstants.REQUEST_STATUS.PLANNED, "Planned"); 280 REQUEST_STATUS_STRINGS.put(HrConstants.REQUEST_STATUS.REQUESTED, "Requested"); 281 REQUEST_STATUS_STRINGS.put(HrConstants.REQUEST_STATUS.APPROVED, "Approved"); 282 REQUEST_STATUS_STRINGS.put(HrConstants.REQUEST_STATUS.DISAPPROVED, "Disapproved"); 283 REQUEST_STATUS_STRINGS.put(HrConstants.REQUEST_STATUS.DEFERRED, "Deferred"); 284 REQUEST_STATUS_STRINGS.put(HrConstants.REQUEST_STATUS.USAGE, "Usage"); 285 } 286 287 public static final class RECORD_METHOD { 288 public static final String TIME = "T"; 289 public static final String HOUR = "H"; 290 public static final String AMOUNT = "A"; 291 public static final String DAY = "D"; 292 } 293 294 public static final Map<String, String> RECORD_METHOD_MAP = new HashMap<String, String>(2); 295 static { 296 RECORD_METHOD_MAP.put(RECORD_METHOD.TIME, "Time"); 297 RECORD_METHOD_MAP.put(RECORD_METHOD.HOUR, "Hours"); 298 RECORD_METHOD_MAP.put(RECORD_METHOD.AMOUNT, "Amount"); 299 RECORD_METHOD_MAP.put(RECORD_METHOD.DAY, "Days"); 300 } 301 302 public static final Map<String, String> ACCRUAL_BALANCE_ACTION_MAP = new LinkedHashMap<String, String>(2); 303 static { 304 ACCRUAL_BALANCE_ACTION_MAP.put(ACCRUAL_BALANCE_ACTION.NONE, "None"); 305 ACCRUAL_BALANCE_ACTION_MAP.put(ACCRUAL_BALANCE_ACTION.USAGE, "Usage"); 306 ACCRUAL_BALANCE_ACTION_MAP.put(ACCRUAL_BALANCE_ACTION.ADJUSTMENT, "Adjustment"); 307 } 308 309 //No occurrences found in workspace 310 public static final class ACCRUAL_BALANCE_ACTION { 311 public static final String NONE = "N"; 312 public static final String USAGE = "U"; 313 public static final String ADJUSTMENT = "A"; 314 } 315 316 public static final Map<String, String> EARN_CODE_USAGE_LIMIT_MAP = new LinkedHashMap<String, String>(2); 317 static { 318 EARN_CODE_USAGE_LIMIT_MAP.put("I", "Include"); 319 EARN_CODE_USAGE_LIMIT_MAP.put("E", "Exclude"); 320 } 321 322 public static final String LEAVE_CALENDAR_TYPE = "leaveCalendar"; 323 public static final String PAY_CALENDAR_TYPE = "payCalendar"; 324 public static final Integer PAGE_SIZE = 20; 325 public static final String APPROVAL_TABLE_ID = "row"; 326 public static final String TASK_DEFAULT_DESP = "Default"; 327 public static final int BIG_DECIMAL_SCALE = 2; 328 public static final RoundingMode BIG_DECIMAL_SCALE_ROUNDING = RoundingMode.HALF_EVEN; 329 public static final BigDecimal BIG_DECIMAL_SCALED_ZERO = BigDecimal.ZERO.setScale(HrConstants.BIG_DECIMAL_SCALE, HrConstants.BIG_DECIMAL_SCALE_ROUNDING); 330 public static final MathContext MATH_CONTEXT = new MathContext(5, BIG_DECIMAL_SCALE_ROUNDING); 331 332 public static final BigDecimal BIG_DECIMAL_NEGATIVE_ONE = new BigDecimal("-1"); 333 public static final BigDecimal BIG_DECIMAL_1000 = BigDecimal.TEN.multiply(BigDecimal.TEN).multiply(BigDecimal.TEN); 334 public static final BigDecimal BIG_DECIMAL_60 = BigDecimal.TEN.multiply(new BigDecimal("6")); 335 public static final BigDecimal BIG_DECIMAL_MS_IN_H = BIG_DECIMAL_1000.multiply(BIG_DECIMAL_60).multiply(BIG_DECIMAL_60); 336 public static final BigDecimal BIG_DECIMAL_MS_IN_M = BIG_DECIMAL_1000.multiply(BIG_DECIMAL_60); 337 public static final BigDecimal BIG_DECIMAL_HRS_IN_DAY = new BigDecimal(24); 338 339 public static final class CacheNamespace { 340 public static final String MODULE_NAME = "core"; 341 public static final String NAMESPACE_PREFIX = KPMEConstants.CacheNamespace.ROOT_NAMESPACE_PREFIX + "/" 342 + MODULE_NAME + "/"; 343 public static final String KPME_GLOBAL_CACHE_NAME = NAMESPACE_PREFIX + "Global"; 344 } 345 }