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