View Javadoc

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.util;
17  
18  import java.util.List;
19  
20  import org.joda.time.DateTimeZone;
21  import org.kuali.kpme.core.api.calendar.CalendarContract;
22  import org.kuali.kpme.core.api.calendar.entry.CalendarEntryContract;
23  import org.kuali.kpme.tklm.api.leave.block.LeaveBlockContract;
24  import org.kuali.kpme.tklm.api.time.flsa.FlsaWeekContract;
25  import org.kuali.kpme.tklm.api.time.timeblock.TimeBlockContract;
26  
27  /**
28   * <p>TkTimeBlockAggregateContract interface</p>
29   *
30   */
31  public interface TkTimeBlockAggregateContract {
32  	
33  	/**
34  	 * The list of TimeBlock objects associated with the TkTimeBlockAggregate
35  	 * 
36  	 * <p>
37  	 * the list of flattened time blocks of a TkTimeBlockAggregate
38  	 * </p>
39  	 * 
40  	 * @return the list of flattened time blocks for TkTimeBlockAggregate
41  	 */
42  	public List<? extends TimeBlockContract> getFlattenedTimeBlockList();
43  	
44  	/**
45  	 * The list of LeaveBlock objects associated with the TkTimeBlockAggregate
46  	 * 
47  	 * <p>
48  	 * the list of flattened leave blocks of a TkTimeBlockAggregate
49  	 * </p>
50  	 * 
51  	 * @return the list of flattened leave blocks for TkTimeBlockAggregate
52  	 */
53  	public List<? extends LeaveBlockContract> getFlattenedLeaveBlockList();
54  
55  	/**
56  	 * Provides a way to access all of the time blocks for a given week
57  	 * 
58  	 * <p>
59  	 * Outer list is 0 indexed list representing days in a week.
60  	 * Inner List are all of the time blocks for that day.
61  	 *
62  	 * Ex.
63  	 *
64  	 * List<List<TimeBlock>> week0 = getWeekTimeBlocks(0);
65  	 * List<TimeBlock> day0 = week0.get(0);
66  	 * </p>
67  	 * 
68  	 * @param week to retrieve time blocks for
69  	 * @return the list of time blocks for a given week
70  	 */
71  	public List<? extends List<? extends TimeBlockContract>> getWeekTimeBlocks(int week);
72  	
73  	/**
74  	 * Provides a way to access all of the leave blocks for a given week
75  	 * 
76  	 * <p>
77  	 * Outer list is 0 indexed list representing days in a week.
78  	 * Inner List are all of the leave blocks for that day.
79  	 *
80  	 * Ex.
81  	 *
82  	 *  List<List<LeaveBlock>> week0 = getWeekLeaveBlocks(0);
83  	 * List<LeaveBlock> day0 = week0.get(0);
84  	 * </p>
85  	 * 
86  	 * @param week to retrieve leave blocks for
87  	 * @return the list of leave blocks for a given week
88  	 */
89  	public List<? extends List<? extends LeaveBlockContract>> getWeekLeaveBlocks(int week);
90  
91  	/**
92  	 * TODO: Put a better comment
93  	 * The list of flsa weeks associated with the TkTimeBlockAggregate
94  	 * 
95  	 * <p>
96  	 * the list of flsa weeks of a TkTimeBlockAggregate
97  	 * <p>
98  	 * 
99  	 * @param The TimeZone to use when constructing this relative sorting
100 	 * @return the list of flsa weeks for TkTimeBlockAggregate
101 	 */
102 	public List<? extends FlsaWeekContract> getFlsaWeeks(DateTimeZone zone, int flsaDay, boolean isflsaDayPassed);
103 	
104 	/**
105 	 * TODO: Put a better comment
106 	 * The list of flsa weeks associated with the TkTimeBlockAggregate
107 	 * 
108 	 * <p>
109 	 * the list of flsa weeks of a TkTimeBlockAggregate
110 	 * <p>
111 	 * 
112 	 * @param zone 
113 	 * @param principalId
114 	 * @return the list of flsa weeks for TkTimeBlockAggregate
115 	 */
116 	public List<? extends List<? extends FlsaWeekContract>> getFlsaWeeks(DateTimeZone zone, String principalId);
117 	
118 	/**
119 	 * The number of aggregated weeks associated with the TkTimeBlockAggregate
120 	 * 
121 	 * <p>
122 	 * </p>
123 	 * 
124 	 * @return the number of weeks that this object represents.
125 	 */
126 	public int numberOfAggregatedWeeks();
127 
128 	/**
129 	 * The list of day TimeBlock objects associated with the TkTimeBlockAggregate
130 	 * 
131 	 * <p>
132 	 * dayTimeBlockList of a TkTimeBlockAggregate
133 	 * </p>
134 	 * 
135 	 * @return dayTimeBlockList for TkTimeBlockAggregate
136 	 */
137 	public List<? extends List<? extends TimeBlockContract>> getDayTimeBlockList();
138 	
139 	/**
140 	 * The list of day LeaveBlock objects associated with the TkTimeBlockAggregate
141 	 * 
142 	 * <p>
143 	 * dayLeaveBlockList of a TkTimeBlockAggregate
144 	 * </p>
145 	 * 
146 	 * @return dayLeaveBlockList for TkTimeBlockAggregate
147 	 */
148 	public List<? extends List<? extends LeaveBlockContract>> getDayLeaveBlockList();
149 
150 	/**
151 	 * The CalendarEntry object associated with the TkTimeBlockAggregate
152 	 * 
153 	 * <p>
154 	 * payCalendarEntry of a TkTimeBlockAggregate
155 	 * </p>
156 	 * 
157 	 * @return payCalendarEntry for TkTimeBlockAggregate
158 	 */
159 	public CalendarEntryContract getPayCalendarEntry();
160 	
161 	/**
162 	 * The Calendar object associated with the TkTimeBlockAggregate
163 	 * 
164 	 * <p>
165 	 * payCalendar of a TkTimeBlockAggregate
166 	 * </p>
167 	 * 
168 	 * @return payCalendar for TkTimeBlockAggregate
169 	 */
170 	public CalendarContract getPayCalendar();
171 
172 }