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.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 import java.util.TimeZone; 029 030 import org.joda.time.DateTimeZone; 031 import org.joda.time.format.DateTimeFormat; 032 import org.joda.time.format.DateTimeFormatter; 033 import org.kuali.hr.time.accrual.AccrualCategory; 034 import org.kuali.hr.time.earncode.EarnCode; 035 import org.kuali.rice.kew.api.KewApiConstants; 036 import org.kuali.rice.kew.api.document.DocumentStatus; 037 038 public class TkConstants { 039 040 public static final class RECORD_METHOD { 041 public static final String TIME = "T"; 042 public static final String HOUR = "H"; 043 public static final String AMOUNT = "A"; 044 public static final String DAY = "D"; 045 } 046 047 public static final Map<String, String> RECORD_METHOD_MAP = new HashMap<String, String>(2); 048 static { 049 RECORD_METHOD_MAP.put(RECORD_METHOD.TIME, "Time"); 050 RECORD_METHOD_MAP.put(RECORD_METHOD.HOUR, "Hours"); 051 RECORD_METHOD_MAP.put(RECORD_METHOD.AMOUNT, "Amount"); 052 RECORD_METHOD_MAP.put(RECORD_METHOD.DAY, "Days"); 053 } 054 055 public static final int DEFAULT_CACHE_TIME = 900; 056 public static final String TK_TARGET_USER_RETURN = "tkTargetReturn"; 057 public static final String TK_TARGET_USER_PERSON = "tkTargetPerson"; 058 059 public static final String WILDCARD_CHARACTER = "%"; 060 public static final Long WILDCARD_LONG = -1L; 061 062 //in days 063 public static final Integer LENGTH_OF_WORK_SCHEDULE = 10; 064 065 public static final String CLOCK_IN = "CI"; 066 public static final String CLOCK_OUT = "CO"; 067 public static final String LUNCH_IN = "LI"; // Coming back from Lunch 068 public static final String LUNCH_OUT = "LO"; // Leaving for Lunch 069 070 public static final List<String> ON_THE_CLOCK_CODES = new ArrayList<String>(); 071 072 static { 073 ON_THE_CLOCK_CODES.add(CLOCK_IN); 074 ON_THE_CLOCK_CODES.add(LUNCH_IN); 075 } 076 077 // action history 078 public static final String DELETE = "DELETE"; 079 public static final String ADD = "ADD"; 080 public static final String MODIFIED = "MODIFIED"; 081 082 // earn code type 083 public static final String EARN_CODE_HOUR = "H"; 084 public static final String EARN_CODE_TIME = "T"; 085 public static final String EARN_CODE_AMOUNT = "A"; 086 public static final String EARN_CODE_OVT = "OVT"; 087 public static final String EARN_CODE_CPE = "CPE"; 088 public static final String EARN_CODE_DAY = "D"; 089 090 public static final String GMT_TIME_ZONE_ID = "Etc/GMT"; 091 public static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone(GMT_TIME_ZONE_ID); 092 //public static final String SYSTEM_TIME_ZONE = TimeZone.getDefault().getDisplayName(); 093 094 //public static final DateTimeZone SYSTEM_DATE_TIME_ZONE = DateTimeZone.forID(TKUtils.getSystemTimeZone()); 095 public static DateTimeFormatter DT_BASIC_TIME_FORMAT = DateTimeFormat.forPattern("hh:mm aa"); 096 public static DateTimeFormatter DT_MILITARY_TIME_FORMAT = DateTimeFormat.forPattern("H:mm"); 097 public static DateTimeFormatter DT_BASIC_DATE_FORMAT = DateTimeFormat.forPattern("MM/dd/yyyy"); 098 public static DateTimeFormatter DT_ABBREV_DATE_FORMAT = DateTimeFormat.forPattern("MM/dd"); 099 public static DateTimeFormatter DT_FULL_DATE_TIME_FORMAT = DateTimeFormat.forPattern("MM/dd/yyyy hh:mm aa"); 100 101 public static final int BIG_DECIMAL_SCALE = 2; 102 public static final RoundingMode BIG_DECIMAL_SCALE_ROUNDING = RoundingMode.HALF_EVEN; 103 public static final BigDecimal BIG_DECIMAL_SCALED_ZERO = BigDecimal.ZERO.setScale(TkConstants.BIG_DECIMAL_SCALE, TkConstants.BIG_DECIMAL_SCALE_ROUNDING); 104 public static final BigDecimal BIG_DECIMAL_NEGATIVE_ONE = new BigDecimal("-1"); 105 106 public static final MathContext MATH_CONTEXT = new MathContext(5, BIG_DECIMAL_SCALE_ROUNDING); 107 public static final BigDecimal BIG_DECIMAL_1000 = BigDecimal.TEN.multiply(BigDecimal.TEN).multiply(BigDecimal.TEN); 108 public static final BigDecimal BIG_DECIMAL_60 = BigDecimal.TEN.multiply(new BigDecimal("6")); 109 public static final BigDecimal BIG_DECIMAL_MS_IN_H = BIG_DECIMAL_1000.multiply(BIG_DECIMAL_60).multiply(BIG_DECIMAL_60); 110 public static final BigDecimal BIG_DECIMAL_MS_IN_M = BIG_DECIMAL_1000.multiply(BIG_DECIMAL_60); 111 public static final BigDecimal BIG_DECIMAL_HRS_IN_DAY = new BigDecimal(24); 112 113 public static final String SUPER_USER = TkConstants.ROLE_TK_SYS_ADMIN; 114 115 //Used to map job locations to specify the timezone for display purposes 116 public static final Map<String, String> LOCATION_TO_TIME_ZONE_MAP = new HashMap<String, String>(); 117 118 static { 119 LOCATION_TO_TIME_ZONE_MAP.put("NW", "America/Chicago"); 120 } 121 122 /** 123 * The following ROLE_* constants need to match what is in the workflow database. They will be 124 * used internally to obtain a reference to the underlying IDs in the workflow system. 125 * <p/> 126 * Used in *ValuesFinder classes for maintenance page dropdowns. 127 */ 128 public static final String ROLE_NAMESAPCE = "KUALI"; 129 public static final String ROLE_TK_GLOBAL_VO = "TK_GLOBAL_VO"; 130 public static final String ROLE_TK_DEPT_VO = "TK_DEPT_VO"; 131 public static final String ROLE_LV_DEPT_VO = "LV_DEPT_VO"; // KPME-1411 132 public static final String ROLE_TK_LOCATION_VO = "TK_LOCATION_VO"; 133 public static final String ROLE_TK_REVIEWER = "TK_REVIEWER"; 134 public static final String ROLE_TK_APPROVER = "TK_APPROVER"; 135 public static final String ROLE_TK_APPROVER_DELEGATE = "TK_APPROVER_DELEGATE"; 136 public static final String ROLE_TK_EMPLOYEE = "TK_EMPLOYEE"; 137 public static final String ROLE_TK_LOCATION_ADMIN = "TK_ORG_ADMIN"; 138 public static final String ROLE_TK_DEPT_ADMIN = "TK_DEPT_ADMIN"; 139 public static final String ROLE_LV_DEPT_ADMIN = "LV_DEPT_ADMIN"; // KPME-1411 140 public static final String ROLE_TK_SYS_ADMIN = "TK_SYS_ADMIN"; 141 public static final String ROLE_WORK_AREA_QUALIFIER_ID = "workArea"; 142 public static final List<String> ROLE_ASSIGNMENT_FOR_WORK_AREA = new ArrayList<String>(2); 143 public static final List<String> ROLE_ASSIGNMENT_FOR_USER_ROLES = new ArrayList<String>(6); 144 public static final Map<String, String> ALL_ROLES_MAP = new HashMap<String, String>(); 145 public static final List<String> ROLE_ASSIGNMENT_FOR_WORK_AREA_OT_EDIT = new ArrayList<String>(3); 146 147 static { 148 ROLE_ASSIGNMENT_FOR_WORK_AREA.add(TkConstants.ROLE_TK_APPROVER); 149 ROLE_ASSIGNMENT_FOR_USER_ROLES.add(TkConstants.ROLE_TK_GLOBAL_VO); 150 ROLE_ASSIGNMENT_FOR_USER_ROLES.add(TkConstants.ROLE_TK_DEPT_VO); 151 ROLE_ASSIGNMENT_FOR_USER_ROLES.add(TkConstants.ROLE_TK_DEPT_ADMIN); 152 ROLE_ASSIGNMENT_FOR_USER_ROLES.add(TkConstants.ROLE_TK_REVIEWER); 153 ROLE_ASSIGNMENT_FOR_USER_ROLES.add(TkConstants.ROLE_TK_APPROVER); 154 ROLE_ASSIGNMENT_FOR_USER_ROLES.add(TkConstants.ROLE_TK_APPROVER_DELEGATE); 155 ROLE_ASSIGNMENT_FOR_USER_ROLES.add(TkConstants.ROLE_TK_LOCATION_ADMIN); 156 ROLE_ASSIGNMENT_FOR_USER_ROLES.add(TkConstants.ROLE_TK_LOCATION_VO); 157 ROLE_ASSIGNMENT_FOR_USER_ROLES.add(TkConstants.ROLE_TK_SYS_ADMIN); 158 159 ROLE_ASSIGNMENT_FOR_WORK_AREA_OT_EDIT.add(TkConstants.ROLE_TK_EMPLOYEE); 160 ROLE_ASSIGNMENT_FOR_WORK_AREA_OT_EDIT.add(TkConstants.ROLE_TK_APPROVER); 161 ROLE_ASSIGNMENT_FOR_WORK_AREA_OT_EDIT.add(TkConstants.ROLE_TK_APPROVER_DELEGATE); 162 ROLE_ASSIGNMENT_FOR_WORK_AREA_OT_EDIT.add(TkConstants.ROLE_TK_DEPT_ADMIN); 163 164 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_REVIEWER, "Reviewer"); // attach at 'work area' level, like approvers without departmental rules 165 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_GLOBAL_VO, "Global View Only"); // can see everything in the system, but not modify 166 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_DEPT_VO, "Time Department View Only"); // can only see objects belonging to a department 167 ALL_ROLES_MAP.put(TkConstants.ROLE_LV_DEPT_VO, "Leave Department View Only"); // kpme1411 168 169 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_LOCATION_VO, "Location View Only"); 170 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_APPROVER, "Approver"); // attach at 'work area', view only departmental rules 171 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_APPROVER_DELEGATE, "Approver Delegate"); // attach at 'work area' 172 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_EMPLOYEE, "Employee"); // only people with active assignments have this role. 173 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_LOCATION_ADMIN, "Location Admin"); // location admin rename 174 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_DEPT_ADMIN, "Time Department Admin"); 175 ALL_ROLES_MAP.put(TkConstants.ROLE_LV_DEPT_ADMIN, "Leave Department Admin"); // kpme1411 176 ALL_ROLES_MAP.put(TkConstants.ROLE_TK_SYS_ADMIN, "System Admin"); 177 178 } 179 180 public static final class ACTIONS { 181 public static final String CLOCK_IN = "clockIn"; 182 public static final String CLOCK_OUT = "clockOut"; 183 public static final String ADD_TIME_BLOCK = "addTimeBlock"; 184 public static final String UPDATE_TIME_BLOCK = "updateTimeBlock"; 185 public static final String DELETE_TIME_BLOCK = "deleteTimeBlock"; 186 } 187 188 public static final List<String> ClOCK_ACTIONS = new ArrayList<String>(); 189 190 static { 191 ClOCK_ACTIONS.add("CI"); 192 ClOCK_ACTIONS.add("CO"); 193 ClOCK_ACTIONS.add("LI"); // Coming back for Lunch 194 ClOCK_ACTIONS.add("LO"); // Leaving for Lunch 195 } 196 197 /** 198 * Simplistic state transition map, created statically for speed. 199 */ 200 public static final Map<String, Set<String>> CLOCK_ACTION_TRANSITION_MAP = new HashMap<String, Set<String>>(4); 201 202 static { 203 Set<String> ci = new HashSet<String>(); 204 ci.add(LUNCH_OUT); 205 ci.add(CLOCK_OUT); 206 207 Set<String> co = new HashSet<String>(); 208 co.add(CLOCK_IN); 209 210 Set<String> li = new HashSet<String>(); 211 li.add(CLOCK_OUT); 212 213 Set<String> lo = new HashSet<String>(); 214 lo.add(LUNCH_IN); 215 216 CLOCK_ACTION_TRANSITION_MAP.put(CLOCK_IN, ci); 217 CLOCK_ACTION_TRANSITION_MAP.put(CLOCK_OUT, co); 218 CLOCK_ACTION_TRANSITION_MAP.put(LUNCH_IN, li); 219 CLOCK_ACTION_TRANSITION_MAP.put(LUNCH_OUT, lo); 220 } 221 222 // available Clock actions to choose from when user's modifying an existing Missed Punch Document based on 223 // the initial clock action 224 public static final Map<String, Set<String>> CLOCK_AVAILABLE_ACTION_MAP = new HashMap<String, Set<String>>(4); 225 226 static { 227 Set<String> ci = new HashSet<String>(); 228 ci.add(CLOCK_IN); 229 230 Set<String> co = new HashSet<String>(); 231 co.add(CLOCK_OUT); 232 co.add(LUNCH_OUT); 233 234 Set<String> li = new HashSet<String>(); 235 li.add(LUNCH_IN); 236 237 Set<String> lo = new HashSet<String>(); 238 lo.add(CLOCK_OUT); 239 lo.add(LUNCH_OUT); 240 241 CLOCK_AVAILABLE_ACTION_MAP.put(CLOCK_IN, ci); 242 CLOCK_AVAILABLE_ACTION_MAP.put(CLOCK_OUT, co); 243 CLOCK_AVAILABLE_ACTION_MAP.put(LUNCH_IN, li); 244 CLOCK_AVAILABLE_ACTION_MAP.put(LUNCH_OUT, lo); 245 } 246 247 public static final Map<String, String> CLOCK_ACTION_STRINGS = new HashMap<String, String>(4); 248 249 static { 250 CLOCK_ACTION_STRINGS.put(CLOCK_IN, "Clock In"); 251 CLOCK_ACTION_STRINGS.put(CLOCK_OUT, "Clock Out"); 252 CLOCK_ACTION_STRINGS.put(LUNCH_IN, "Lunch In"); // Coming back for Lunch 253 CLOCK_ACTION_STRINGS.put(LUNCH_OUT, "Lunch Out"); // Going to Lunch 254 } 255 256 public static final class DOCUMENT_ACTIONS { 257 public static final String ROUTE = "R"; 258 public static final String APPROVE = "A"; 259 public static final String DISAPPROVE = "D"; 260 } 261 262 public static final class BATCH_JOB_ACTIONS { 263 public static final String BATCH_JOB_INITIATE = "BI"; 264 public static final String BATCH_JOB_ROUTE = "BR"; 265 public static final String BATCH_JOB_APPROVE = "BA"; 266 } 267 268 public static final class ROUTE_STATUS { 269 public static final String INITIATED = DocumentStatus.INITIATED.getCode(); 270 public static final String ENROUTE = DocumentStatus.ENROUTE.getCode(); 271 public static final String FINAL = DocumentStatus.FINAL.getCode(); 272 public static final String CANCEL = DocumentStatus.CANCELED.getCode(); 273 public static final String SAVED = DocumentStatus.SAVED.getCode(); 274 public static final String DISAPPROVED = DocumentStatus.DISAPPROVED.getCode(); 275 public static final String EXCEPTION = DocumentStatus.EXCEPTION.getCode(); 276 } 277 278 public static final Map<String, String> DOC_ROUTE_STATUS = new HashMap<String, String>(8); 279 280 static { 281 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_INITIATED_CD, KewApiConstants.ROUTE_HEADER_INITIATED_LABEL); 282 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_CANCEL_CD, KewApiConstants.ROUTE_HEADER_CANCEL_LABEL); 283 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_ENROUTE_CD, KewApiConstants.ROUTE_HEADER_ENROUTE_LABEL); 284 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_FINAL_CD, KewApiConstants.ROUTE_HEADER_FINAL_LABEL); 285 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_DISAPPROVED_CD, KewApiConstants.ROUTE_HEADER_DISAPPROVED_LABEL); 286 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_EXCEPTION_CD, KewApiConstants.ROUTE_HEADER_EXCEPTION_LABEL); 287 DOC_ROUTE_STATUS.put(KewApiConstants.ROUTE_HEADER_SAVED_CD, KewApiConstants.ROUTE_HEADER_SAVED_LABEL); 288 } 289 290 public static final class BATCH_JOB_ENTRY_STATUS { 291 public static final String SCHEDULED = "S"; 292 public static final String RUNNING = "R"; 293 public static final String FINISHED = "F"; 294 public static final String EXCEPTION = "E"; 295 } 296 297 public static final class BATCH_JOB_NAMES { 298 public static final String INITIATE = "Initiate"; 299 public static final String APPROVE = "Approve"; 300 public static final String PAY_PERIOD_END = "Pay Period End"; 301 public static final String SUPERVISOR_APPROVAL = "Supervisor Approval"; 302 public static final String BATCH_APPROVE_MISSED_PUNCH = "Batch Approve Missed Punch"; 303 } 304 305 public static final String BATCH_JOB_USER_PRINCIPAL_ID = "admin"; 306 307 public static final String ASSIGNMENT_KEY_DELIMITER = "_"; 308 public static final String HOLIDAY_EARN_CODE = "HOL"; 309 // Special System earn code to represent lunch deductions. 310 public static final String LUNCH_EARN_CODE = "LUN"; 311 312 // calendar navigation 313 public static final String NEXT_TIMESHEET = "next"; 314 public static final String PREV_TIMESHEET = "prev"; 315 316 // Timesheet document ID request parameter name 317 public static final String TIMESHEET_DOCUMENT_ID_REQUEST_NAME = "tdocid"; 318 // document ID request parameter name 319 public static final String DOCUMENT_ID_REQUEST_NAME = "docid"; 320 //Threshold in hours for clockin highlighting on approvers tab 321 public static final Integer NUMBER_OF_HOURS_CLOCKED_IN_APPROVE_TAB_HIGHLIGHT = 12; 322 323 public static final List<String> TIME_ZONES = new ArrayList<String>(); 324 325 static { 326 TIME_ZONES.add("America/Chicago"); 327 TIME_ZONES.add("America/Denver"); 328 TIME_ZONES.add("America/Detroit"); 329 TIME_ZONES.add("America/Indiana/Indianapolis"); 330 TIME_ZONES.add("America/Phoenix"); 331 } 332 333 public String getLUNCH_EARN_CODE() { 334 return LUNCH_EARN_CODE; 335 } 336 337 public String getEARN_CODE_AMOUNT() { 338 return EARN_CODE_AMOUNT; 339 } 340 341 public String getHOLIDAY_EARN_CODE() { 342 return HOLIDAY_EARN_CODE; 343 } 344 345 public static final Map<String, String> DOCUMENT_STATUS = new HashMap<String, String>(); 346 347 static { 348 DOCUMENT_STATUS.put("I", "Initiated"); 349 DOCUMENT_STATUS.put("S", "Saved"); 350 DOCUMENT_STATUS.put("R", "Enroute"); 351 DOCUMENT_STATUS.put("F", "Final"); 352 } 353 354 public static class ConfigSettings { 355 public static final String SESSION_TIMEOUT = "session.timeout"; 356 public static final String KPME_SYSTEM_TIMEZONE = "kpme.system.timezone"; 357 } 358 359 public static final Integer PAGE_SIZE = 20; 360 public static final String APPROVAL_TABLE_ID = "row"; 361 362 public static final String IP_SEPERATOR = "."; 363 public static final String IP_WILDCARD_PATTERN = "(%|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))"; 364 365 public static final String TASK_DEFAULT_DESP = "Default"; 366 367 public static final Map<String, String> ACCRUAL_EARN_INTERVAL = new LinkedHashMap<String, String>(6); 368 369 static { 370 ACCRUAL_EARN_INTERVAL.put("D", "Daily"); 371 ACCRUAL_EARN_INTERVAL.put("W", "Weekly"); 372 ACCRUAL_EARN_INTERVAL.put("S", "Semi-Monthly"); 373 ACCRUAL_EARN_INTERVAL.put("M", "Monthly"); 374 ACCRUAL_EARN_INTERVAL.put("Y", "Yearly"); 375 ACCRUAL_EARN_INTERVAL.put("N", "No Accrual"); 376 } 377 378 public static final Map<String, String> SERVICE_UNIT_OF_TIME = new LinkedHashMap<String, String>(3); 379 380 static { 381 SERVICE_UNIT_OF_TIME.put("Y", "Years"); 382 SERVICE_UNIT_OF_TIME.put("M", "Months"); 383 //SERVICE_UNIT_OF_TIME.put("H", "Hours"); 384 } 385 386 public static final Map<String, String> UNIT_OF_TIME = new LinkedHashMap<String, String>(2); 387 388 static { 389 UNIT_OF_TIME.put("D", "Days"); 390 UNIT_OF_TIME.put("H", "Hours"); 391 } 392 393 public static final Map<String, String> MAX_BAL_FLAG = new LinkedHashMap<String, String>(2); 394 395 static { 396 MAX_BAL_FLAG.put("Y", "Yes"); 397 MAX_BAL_FLAG.put("N", "No"); 398 } 399 400 public static final Map<String, String> MAX_BALANCE_ACTION_FREQUENCY = new LinkedHashMap<String, String>(3); 401 402 static { 403 MAX_BALANCE_ACTION_FREQUENCY.put("LA", "Leave Approve"); 404 MAX_BALANCE_ACTION_FREQUENCY.put("YE", "Year End"); 405 //MAX_BALANCE_ACTION_FREQUENCY.put("NA", "Not Applicable"); 406 } 407 408 public static final Map<String, String> ACTION_AT_MAX_BALANCE = new LinkedHashMap<String, String>(3); 409 410 static { 411 ACTION_AT_MAX_BALANCE.put("T", "Transfer"); 412 ACTION_AT_MAX_BALANCE.put("P", "Payout"); 413 ACTION_AT_MAX_BALANCE.put("L", "Lose"); 414 //ACTION_AT_MAX_BALANCE.put("NA", "Not Applicable"); 415 } 416 417 public static final Map<String, String> UNUSED_TIME = new LinkedHashMap<String, String>(3); 418 419 static { 420 UNUSED_TIME.put("NUTA", "No Unused Time Allowed"); 421 UNUSED_TIME.put("T", "Transfer"); 422 UNUSED_TIME.put("B", "Bank"); 423 } 424 425 public static final Map<String, String> EMPLOYEE_OVERRIDE_TYPE = new LinkedHashMap<String, String>(5); 426 427 static { 428 EMPLOYEE_OVERRIDE_TYPE.put("MB", "Max Balance"); 429 EMPLOYEE_OVERRIDE_TYPE.put("MTA", "Max Transfer Amount"); 430 EMPLOYEE_OVERRIDE_TYPE.put("MPA", "Max Payout Amount"); 431 EMPLOYEE_OVERRIDE_TYPE.put("MU", "Max Usage"); 432 EMPLOYEE_OVERRIDE_TYPE.put("MAC", "Max Annual Carryover"); 433 } 434 435 public static final String DAILY_OVT_CODE = "DOT"; 436 437 public static final Map<String, Set<String>> CLASS_INQUIRY_KEY_MAP = new HashMap<String, Set<String>>(4); 438 439 static { 440 Set<String> keys = new HashSet<String>(); 441 keys.add("accrualCategory"); 442 keys.add("effectiveDate"); 443 CLASS_INQUIRY_KEY_MAP.put(AccrualCategory.class.getName(), keys); 444 445 keys = new HashSet<String>(); 446 keys.add("earnCode"); 447 keys.add("effectiveDate"); 448 CLASS_INQUIRY_KEY_MAP.put(EarnCode.class.getName(), keys); 449 } 450 451 public static final String FLSA_STATUS_NON_EXEMPT ="NE"; 452 public static final String FLSA_STATUS_EXEMPT ="E"; 453 }