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.timesheet; 17 18 import java.util.List; 19 import java.util.Map; 20 21 import org.joda.time.LocalDate; 22 import org.kuali.kpme.core.api.document.calendar.CalendarDocumentContract; 23 import org.kuali.kpme.core.api.job.JobContract; 24 import org.kuali.kpme.tklm.api.time.timeblock.TimeBlock; 25 import org.kuali.kpme.tklm.api.time.timeblock.TimeBlockContract; 26 import org.kuali.kpme.tklm.api.time.timesummary.TimeSummaryContract; 27 28 29 30 /** 31 * <p>TimesheetDocumentContract interface</p> 32 * 33 */ 34 public interface TimesheetDocumentContract extends CalendarDocumentContract { 35 36 /** 37 * The list of Job objects associated with the TimesheetDocument 38 * 39 * <p> 40 * jobs of a TimesheetDocument 41 * <p> 42 * 43 * @return jobs for TimesheetDocument 44 */ 45 public List<? extends JobContract> getJobs(); 46 47 /** 48 * The list of TimeBlock objects associated with the TimesheetDocument 49 * 50 * <p> 51 * timeBlocks of a TimesheetDocument 52 * <p> 53 * 54 * @return timeBlocks for TimesheetDocument 55 */ 56 public List<TimeBlock> getTimeBlocks(); 57 58 /** 59 * The TimeSummary object associated with the TimesheetDocument 60 * 61 * <p> 62 * timeSummary of a TimesheetDocument 63 * <p> 64 * 65 * @return timeSummary for TimesheetDocument 66 */ 67 public TimeSummaryContract getTimeSummary(); 68 69 /** 70 * The principal id of the document header associated with the TimesheetDocument 71 * 72 * <p> 73 * getDocumentHeader().getPrincipalId() of a TimesheetDocument 74 * <p> 75 * 76 * @return getDocumentHeader().getPrincipalId() for TimesheetDocument 77 */ 78 public String getPrincipalId(); 79 80 /** 81 * The Job object associated with the jobNumber 82 * 83 * <p> 84 * job associated with the jobNumber 85 * <p> 86 * 87 * @param jobNumber number to retrieve Job object from jobNumberToJobMap 88 * @return Job object associated with the jobNumber 89 */ 90 public JobContract getJob(Long jobNumber); 91 92 /** 93 * The end period date of the calendar entry associated with the TimesheetDocument 94 * 95 * <p> 96 * getCalendarEntry().getEndPeriodFullDateTime().toLocalDate() of a TimesheetDocument 97 * <p> 98 * 99 * @return getCalendarEntry().getEndPeriodFullDateTime().toLocalDate() for TimesheetDocument 100 */ 101 public LocalDate getDocEndDate(); 102 103 /** 104 * The document id of the document header associated with the TimesheetDocument 105 * 106 * <p> 107 * this.getDocumentHeader().getDocumentId() of a TimesheetDocument 108 * <p> 109 * 110 * @return this.getDocumentHeader().getDocumentId() for TimesheetDocument 111 */ 112 public String getDocumentId(); 113 114 /** 115 * TODO: Put a better comment 116 * The map of earn code name and a list of begin date of time blocks associated with the TimesheetDocument 117 * 118 * <p> 119 * earnCodeMap of a TimesheetDocument 120 * <p> 121 * 122 * @return earnCodeMap for TimesheetDocument 123 */ 124 public Map<String, List<LocalDate>> getEarnCodeMap(); 125 126 /** 127 * TODO: Put a comment 128 * The map of assignment descriptions associated with the TimesheetDocument 129 * 130 * <p> 131 * <p> 132 * 133 * @param clockOnlyAssignments 134 * @return assignmentDescriptions 135 */ 136 public Map<String, String> getAssignmentDescriptions(boolean clockOnlyAssignments, LocalDate date); 137 138 }