1 /** 2 * Copyright 2004-2014 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.kpme.tklm.api.time.timeblock; 17 18 import org.joda.time.DateTime; 19 import org.joda.time.LocalDate; 20 import org.joda.time.LocalTime; 21 import org.kuali.kpme.core.api.block.CalendarBlockContract; 22 import org.kuali.kpme.core.api.mo.UserModified; 23 import org.kuali.kpme.tklm.api.time.timehourdetail.TimeHourDetailContract; 24 25 import java.math.BigDecimal; 26 import java.util.List; 27 28 29 /** 30 * <p>TimeBlockContract interface</p> 31 * 32 */ 33 public interface TimeBlockContract extends CalendarBlockContract, UserModified, Comparable<TimeBlockContract> { 34 35 36 /** 37 * The beginTimestamp (Time) associated with the TimeBlock 38 * 39 * <p> 40 * beginTimestamp wrapped in Time object of a TimeBlock 41 * <p> 42 * 43 * @return new Time(beginTimestamp.getTime()) 44 */ 45 public LocalTime getBeginTime(); 46 47 /** 48 * The beginTimestamp (Datetime) associated with the TimeBlock 49 * 50 * <p> 51 * beginTimestamp wrapped in DateTime object of a TimeBlock 52 * <p> 53 * 54 * @return new DateTime(beginTimestamp) 55 */ 56 public DateTime getBeginDateTime(); 57 58 59 /** 60 * The endTimestamp (Time) associated with the TimeBlock 61 * 62 * <p> 63 * endTimestamp wrapped in Time object of a TimeBlock 64 * <p> 65 * 66 * @return new Time(endTimestamp.getTime()) 67 */ 68 public LocalTime getEndTime(); 69 70 /** 71 * The endTimestamp (DateTime) associated with the TimeBlock 72 * 73 * <p> 74 * endTimestamp wrapped in DateTime object of a TimeBlock 75 * <p> 76 * 77 * @return new DateTime(endTimestamp) 78 */ 79 public DateTime getEndDateTime(); 80 81 /** 82 * Flag the shows if the timeblock has been created by a clock log 83 * 84 * <p> 85 * clockLogCreated flag of a Timeblock 86 * </p> 87 * 88 * @return Y if created, N if not 89 */ 90 public Boolean isClockLogCreated(); 91 92 /** 93 * The hours associated with the TimeBlock 94 * 95 * <p> 96 * hours of a TimeBlock 97 * <p> 98 * 99 * @return hours for TimeBlock 100 */ 101 public BigDecimal getHours(); 102 103 /** 104 * The minutes associated with the TimeBlock (directly related to hours) 105 * 106 * <p> 107 * total minutes of a TimeBlock 108 * <p> 109 * 110 * @return total minutes for TimeBlock 111 */ 112 public BigDecimal getTotalMinutes(); 113 114 /** 115 * The amount associated with the TimeBlock 116 * 117 * <p> 118 * amount of a TimeBlock 119 * <p> 120 * 121 * @return amount for TimeBlock 122 */ 123 public BigDecimal getAmount(); 124 125 /** 126 * The userPrincipalId associated with the TimeBlock 127 * 128 * <p> 129 * userPrincipalId of a TimeBlock 130 * <p> 131 * 132 * @return userPrincipalId for TimeBlock 133 */ 134 public String getUserPrincipalId(); 135 136 /** 137 * The timestamp associated with the TimeBlock 138 * 139 * <p> 140 * timestamp of a TimeBlock 141 * <p> 142 * 143 * @return timestamp for TimeBlock 144 */ 145 public DateTime getCreateTime(); 146 147 /** 148 * The primary key of a TimeBlock entry saved in a database 149 * 150 * <p> 151 * tkTimeBlockId of a TimeBlock 152 * <p> 153 * 154 * @return tkTimeBlockId for TimeBlock 155 */ 156 public String getTkTimeBlockId(); 157 158 /** 159 * The list of TimeHourDetail objects associated with the TimeBlock 160 * 161 * <p> 162 * timeHourDetails of a TimeBlock 163 * <p> 164 * 165 * @return timeHourDetails for TimeBlock 166 */ 167 public List<? extends TimeHourDetailContract> getTimeHourDetails(); 168 169 /** 170 * The flag that indicates if the TimeBlock will be pushed back or not 171 * 172 * <p> 173 * A timeblock will be pushed back if the timeblock is still within the previous interval. 174 * </p> 175 * 176 * @return Y if pushed back, N if not 177 */ 178 public Boolean isPushBackward(); 179 180 /** 181 * The Timeblock begin time to display with the user's Timezone taken into account and applied to this DateTime object. 182 * 183 * <p> 184 * Use this call for all GUI/Display related rendering of the END timestamp of the given time block. 185 * Timeblocks require pre-processing before there will be a non-null return value here. 186 * <p> 187 * 188 * @return beginTimeDisplay for TimeBlock 189 */ 190 public DateTime getBeginTimeDisplay(); 191 192 /** 193 * The Timeblock begin time (Date) associated with the TimeBlock 194 * 195 * <p> 196 * <p> 197 * 198 * @return Date object representing getBeginTimeDisplay() 199 */ 200 //public DateTime getBeginTimeDisplay(); 201 202 /** 203 * The date portion of the Timeblock begin time associated with the TimeBlock 204 * 205 * <p> 206 * <p> 207 * 208 * @return a string representing the getBeginTimeDisplay() in MM/dd/yyyy format 209 */ 210 public String getBeginTimeDisplayDateOnlyString(); 211 212 /** 213 * The time portion of the Timeblock begin time associated with the TimeBlock 214 * 215 * <p> 216 * <p> 217 * 218 * @return a string representing getBeginTimeDisplay() in hh:mm aa format 219 */ 220 public String getBeginTimeDisplayTimeOnlyString(); 221 222 /** 223 * The date portion of the Timeblock end time associated with the TimeBlock 224 * 225 * <p> 226 * <p> 227 * 228 * @return a string representing getEndTimeDisplay() in MM/dd/yyyy format 229 */ 230 public String getEndTimeDisplayDateOnlyString(); 231 232 /** 233 * The time portion of the Timeblock end time associated with the TimeBlock 234 * 235 * <p> 236 * <p> 237 * 238 * @return a string representing the getEndTimeDisplay() in hh:mm aa format 239 */ 240 public String getEndTimeDisplayTimeOnlyString(); 241 242 /** 243 * The Timeblock end time to display with the user's Timezone taken into account and applied to this DateTime object. 244 * 245 * <p> 246 * Use this call for all GUI/Display related rendering of the END timestamp of the given time block. 247 * Timeblocks require pre-processing before there will be a non-null return value here. 248 * <p> 249 * 250 * @return endTimeDisplay for TimeBlock 251 */ 252 public DateTime getEndTimeDisplay(); 253 254 /** 255 * The clock log begin id associated with the TimeBlock 256 * 257 * <p> 258 * clockLogBeginId of a TimeBlock 259 * <p> 260 * 261 * @return clockLogBeginId for TimeBlock 262 */ 263 public String getClockLogBeginId(); 264 265 /** 266 * The clock log end id associated with the TimeBlock 267 * 268 * <p> 269 * clockLogEndId of a TimeBlock 270 * <p> 271 * 272 * @return clockLogEndId for TimeBlock 273 */ 274 public String getClockLogEndId(); 275 276 /** 277 * The assignment key associated with the TimeBlock 278 * 279 * <p> 280 * assignmentKey of a TimeBlock 281 * <p> 282 * 283 * @return assignmentKey for TimeBlock 284 */ 285 public String getAssignmentKey(); 286 287 /** 288 * The assignment description associated with the TimeBlock 289 * 290 * <p> 291 * assignment description of a TimeBlock 292 * <p> 293 * 294 * @return assignment description for TimeBlock 295 */ 296 public String getAssignmentDescription(); 297 298 /** 299 * The earn code type associated with the TimeBlock 300 * 301 * <p> 302 * earnCodeType of a TimeBlock 303 * <p> 304 * 305 * @return earnCodeType for TimeBlock 306 */ 307 public String getEarnCodeType(); 308 309 /** 310 * Indicates if the user has permission to edit/delete the TimeBlock 311 * 312 * <p> 313 * </p> 314 * 315 * @return Y if user has a permission to edit/delete this time block, N if not 316 */ 317 //public Boolean getEditable(); 318 319 /** 320 * The principalId associated with the TimeBlock 321 * 322 * <p> 323 * principalId of a TimeBlock 324 * <p> 325 * 326 * @return principalId for TimeBlock 327 */ 328 public String getPrincipalId(); 329 330 /** 331 * TODO: Put a better comment 332 * The overtimePref associated with the TimeBlock 333 * 334 * <p> 335 * overtimePref of a TimeBlock 336 * <p> 337 * 338 * @return overtimePref for TimeBlock 339 */ 340 public String getOvertimePref(); 341 342 /** 343 * The actual begin time string associated with the TimeBlock 344 * 345 * <p> 346 * It applies grace period rule to times of time block. This string is for GUI of Actual time inquiry 347 * <p> 348 * 349 * @return actual begin time string for TimeBlock 350 */ 351 public String getActualBeginTimeString(); 352 353 /** 354 * The actual end time string associated with the TimeBlock 355 * 356 * <p> 357 * It applies grace period rule to times of time block. This string is for GUI of Actual time inquiry 358 * <p> 359 * 360 * @return actual end time string for TimeBlock 361 */ 362 public String getActualEndTimeString(); 363 364 /** 365 * Indicates if this user has a permission to delete this time block 366 * 367 * <p> 368 * </p> 369 * 370 * @return Y if user has a permission to delete this time block, N if not 371 */ 372 //public Boolean getDeleteable(); 373 374 /** 375 * Indicates if overtime earn code can be edited 376 * 377 * <p> 378 * </p> 379 * 380 * @return Y if overtime earn code can be edited, N if not 381 */ 382 //public Boolean getOvertimeEditable(); 383 384 /** 385 * Indicates if this user has a permission to edit this time block 386 * 387 * <p> 388 * </p> 389 * 390 * @return Y if user has a permission to edit this time block, N if not 391 */ 392 //public Boolean getTimeBlockEditable(); 393 394 /** 395 * TODO: Make sure this comment is right 396 * The flag that indicates if lunch hour is deleted 397 * 398 * <p> 399 * lunchDeleted flag of a TimeBlock 400 * </p> 401 * 402 * @return Y if deleted, N if not 403 */ 404 public boolean isLunchDeleted(); 405 406 /** 407 * The id of the CalendarBlock object associated with the TimeBlock 408 * 409 * <p> 410 * super.hrCalendarBlockId a TimeBlock 411 * <p> 412 * 413 * @return super.hrCalendarBlockId for TimeBlock 414 */ 415 public String getHrCalendarBlockId(); 416 417 public DateTime getLeaveDateTime(); 418 419 DateTime getActionDateTime(); 420 String getClockAction(); 421 String getMissedPunchDocId(); 422 String getMissedPunchDocStatus(); 423 String getAssignmentValue(); 424 Boolean isClockedByMissedPunch(); 425 boolean isMissedPunchClockIn(); 426 boolean isMissedPunchClockOut(); 427 428 }