1 /**
2 * Copyright 2010 The Kuali Foundation Licensed under the
3 * Educational Community License, Version 2.0 (the "License"); you may
4 * not use this file except in compliance with the License. You may
5 * obtain a copy of the License at
6 *
7 * http://www.osedu.org/licenses/ECL-2.0
8 *
9 * Unless required by applicable law or agreed to in writing,
10 * software distributed under the License is distributed on an "AS IS"
11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12 * or implied. See the License for the specific language governing
13 * permissions and limitations under the License.
14 */
15
16 package org.kuali.student.enrollment.acal.infc;
17
18 import java.util.Date;
19
20 import org.kuali.student.r2.common.infc.IdEntity;
21
22
23 /**
24 * Information about a key date. A key date may represent a single
25 * point in time or a range depending on the value of isDateRange().
26 *
27 * @impl maps to a Milestone with a type that is one of the key dates
28 * @author tom
29 * @since Tue Apr 05 14:22:34 EDT 2011
30 */
31
32 public interface KeyDate
33 extends IdEntity {
34
35 /**
36 * Tests if this key date is an all day event. An all-day event
37 * does not have a meaningful time component in the date.
38 *
39 * @name Is All Day
40 * @required
41 */
42 public Boolean getIsAllDay();
43
44 /**
45 * Tests if this KeyDate is relative to another KeyDate.
46 *
47 * @name Is Relative To Key Date
48 * @required
49 * @impl maps to isRelative
50 */
51 public Boolean getIsRelativeToKeyDate();
52
53 /**
54 * Gets the anchor KeyDate to which this KeyDate is relative.
55 *
56 * @name Relative Anchor KeyDate Id
57 * @impl maps to relativeAnchorMilestoneId
58 */
59 public String getRelativeAnchorKeyDateId();
60
61 /**
62 * Tests if this key date has a date range.
63 *
64 * @return true if the end date is different than the start
65 * date, false if the start end end date are the same
66 * @name Is Date Range
67 * @required
68 */
69 public Boolean getIsDateRange();
70
71 /**
72 * The start date and time of the key date.
73 *
74 * @name Start Date
75 */
76 public Date getStartDate();
77
78 /**
79 * The end date and time of the key date. The end
80 * date must be equal to or greater that the start.
81 *
82 * @name End Date
83 */
84 public Date getEndDate();
85 }