Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
TimePeriod |
|
| 1.6666666666666667;1.667 | ||||
TimePeriod$1 |
|
| 1.6666666666666667;1.667 | ||||
TimePeriod$EmptyTimePeriod |
|
| 1.6666666666666667;1.667 | ||||
TimePeriod$InfiniteTimePeriod |
|
| 1.6666666666666667;1.667 |
1 | /* | |
2 | * Copyright (c) 2009, Swiss Federal Department of Defence Civil Protection and Sport | |
3 | * (http://www.vbs.admin.ch) | |
4 | * Copyright (c) 2009, Ergon Informatik AG (http://www.ergon.ch) | |
5 | * All rights reserved. | |
6 | * | |
7 | * Licensed under the Open Permis License which accompanies this distribution, | |
8 | * and is available at http://www.openpermis.org/BSDlicenceKent.txt | |
9 | */ | |
10 | package org.openpermis.basic; | |
11 | ||
12 | import org.openpermis.policy.TimeStamp; | |
13 | ||
14 | ||
15 | /** | |
16 | * A period of time. | |
17 | * @since 0.3.0 | |
18 | */ | |
19 | public interface TimePeriod { | |
20 | ||
21 | //---- Static | |
22 | ||
23 | /** | |
24 | * An infinite period of time. | |
25 | * @since 0.3.0 | |
26 | */ | |
27 | public static final TimePeriod INFINITE = new InfiniteTimePeriod(); | |
28 | ||
29 | /** | |
30 | * An empty period of time. | |
31 | * @since 0.3.0 | |
32 | */ | |
33 | public static final TimePeriod EMPTY = new EmptyTimePeriod(); | |
34 | ||
35 | ||
36 | //---- Methods | |
37 | ||
38 | /** | |
39 | * Returns true if this time period contains current time. | |
40 | * @param currentTime a {@link TimeStamp}. | |
41 | * @return true if this time period contains current time. | |
42 | * @since 0.3.0 | |
43 | */ | |
44 | boolean contains (TimeStamp currentTime); | |
45 | ||
46 | /** | |
47 | * Returns a constrained time period. | |
48 | * @param constraint a {@link TimePeriodConstraint}. | |
49 | * @param timeStamp the current {@link TimeStamp}. | |
50 | * @return the constrained time period. | |
51 | * @since 0.3.0 | |
52 | */ | |
53 | TimePeriod constrain (TimePeriodConstraint constraint, TimeStamp timeStamp); | |
54 | ||
55 | /** | |
56 | * Returns a constrained time period. | |
57 | * @param period a {@link TimePeriod}. | |
58 | * @param timeStamp a {@link TimeStamp}. | |
59 | * @return the constrained time period. | |
60 | * @since 0.3.0 | |
61 | */ | |
62 | TimePeriod constrain (TimePeriod period, TimeStamp timeStamp); | |
63 | ||
64 | //---- Classes | |
65 | ||
66 | /** | |
67 | * An infinite period of time. | |
68 | * @since 0.3.0 | |
69 | */ | |
70 | 1 | public static final class InfiniteTimePeriod implements TimePeriod { |
71 | ||
72 | /** | |
73 | * @since 0.3.0 | |
74 | */ | |
75 | 1 | private InfiniteTimePeriod () { |
76 | // Prevents instantiation. | |
77 | 1 | } |
78 | ||
79 | /** | |
80 | * @since 0.3.0 | |
81 | */ | |
82 | public TimePeriod constrain (TimePeriodConstraint constraint, TimeStamp timeStamp) { | |
83 | 14 | if (constraint.getMinimumValidUpTo() != null) { |
84 | 0 | return TimePeriod.EMPTY; |
85 | } | |
86 | 14 | return this.constrain(constraint.getAbsolutePeriod(), timeStamp); |
87 | } | |
88 | ||
89 | /** | |
90 | * @since 0.3.0 | |
91 | */ | |
92 | public TimePeriod constrain (TimePeriod period, TimeStamp timeStamp) { | |
93 | 17 | return period; |
94 | } | |
95 | ||
96 | /** | |
97 | * @since 0.3.0 | |
98 | */ | |
99 | public boolean contains (TimeStamp currentTime) { | |
100 | 45 | return true; |
101 | } | |
102 | ||
103 | /** | |
104 | * @since 0.3.0 | |
105 | */ | |
106 | public boolean equals (Object object) { | |
107 | 19 | if (this == object) { |
108 | 19 | return true; |
109 | } | |
110 | 0 | if (object instanceof InfiniteTimePeriod) { |
111 | 0 | return true; |
112 | } | |
113 | 0 | return false; |
114 | } | |
115 | ||
116 | /** | |
117 | * @since 0.3.0 | |
118 | */ | |
119 | public int hashCode () { | |
120 | 12 | return this.getClass().hashCode(); |
121 | } | |
122 | ||
123 | } | |
124 | ||
125 | /** | |
126 | * An empty period of time. | |
127 | * @since 0.3.0 | |
128 | */ | |
129 | 1 | public static final class EmptyTimePeriod implements TimePeriod { |
130 | ||
131 | /** | |
132 | * @since 0.3.0 | |
133 | */ | |
134 | 1 | private EmptyTimePeriod () { |
135 | // Prevents instantiation. | |
136 | 1 | } |
137 | ||
138 | /** | |
139 | * @since 0.3.0 | |
140 | */ | |
141 | public TimePeriod constrain (TimePeriodConstraint constraint, TimeStamp currentTime) { | |
142 | 1 | return EMPTY; |
143 | } | |
144 | ||
145 | /** | |
146 | * @since 0.3.0 | |
147 | */ | |
148 | public TimePeriod constrain (TimePeriod period, TimeStamp timeStamp) { | |
149 | 2 | return EMPTY; |
150 | } | |
151 | ||
152 | /** | |
153 | * @since 0.3.0 | |
154 | */ | |
155 | public boolean contains (TimeStamp currentTime) { | |
156 | 2 | return false; |
157 | } | |
158 | ||
159 | /** | |
160 | * @since 0.3.0 | |
161 | */ | |
162 | public boolean equals (Object object) { | |
163 | 7 | if (this == object) { |
164 | 7 | return true; |
165 | } | |
166 | 0 | if (object instanceof EmptyTimePeriod) { |
167 | 0 | return true; |
168 | } | |
169 | 0 | return false; |
170 | } | |
171 | ||
172 | /** | |
173 | * @since 0.3.0 | |
174 | */ | |
175 | public int hashCode () { | |
176 | 0 | return this.getClass().hashCode(); |
177 | } | |
178 | } | |
179 | ||
180 | } |