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 }