jaroslav@66
|
1 |
package org.apidesign.apifest08.currency;
|
jaroslav@66
|
2 |
|
jaroslav@66
|
3 |
import java.util.Date;
|
jaroslav@66
|
4 |
|
jaroslav@66
|
5 |
/**
|
jaroslav@66
|
6 |
* Date util helper class.
|
jaroslav@66
|
7 |
* @author ked
|
jaroslav@66
|
8 |
*/
|
jaroslav@66
|
9 |
final class DateUtil {
|
jaroslav@66
|
10 |
|
jaroslav@66
|
11 |
private DateUtil() {};
|
jaroslav@66
|
12 |
|
jaroslav@66
|
13 |
static boolean isInRange(Date instant, Date from, Date till) {
|
jaroslav@66
|
14 |
if ((from == null || instant.equals(from) || instant.after(from)) &&
|
jaroslav@66
|
15 |
(till == null || instant.before(till))) {
|
jaroslav@66
|
16 |
return true;
|
jaroslav@66
|
17 |
} else {
|
jaroslav@66
|
18 |
return false;
|
jaroslav@66
|
19 |
}
|
jaroslav@66
|
20 |
}
|
jaroslav@66
|
21 |
|
jaroslav@66
|
22 |
static boolean isRangesOverlapping(Date fromA, Date tillA, Date fromB, Date tillB) {
|
jaroslav@66
|
23 |
if ((fromA == null && tillA == null) || (fromB == null && tillB == null)) {
|
jaroslav@66
|
24 |
return true;
|
jaroslav@66
|
25 |
}
|
jaroslav@66
|
26 |
if (fromA != null && isInRange(fromA, fromB, tillB)) {
|
jaroslav@66
|
27 |
return true;
|
jaroslav@66
|
28 |
}
|
jaroslav@66
|
29 |
if (tillA != null && !tillA.equals(fromB) && isInRange(tillA, fromB, tillB)) {
|
jaroslav@66
|
30 |
return true;
|
jaroslav@66
|
31 |
}
|
jaroslav@66
|
32 |
if (fromB != null && isInRange(fromB, fromA, tillA)) {
|
jaroslav@66
|
33 |
return true;
|
jaroslav@66
|
34 |
}
|
jaroslav@66
|
35 |
if (tillB != null && !tillB.equals(fromA) && isInRange(tillB, fromA, tillA)) {
|
jaroslav@66
|
36 |
return true;
|
jaroslav@66
|
37 |
}
|
jaroslav@66
|
38 |
return false;
|
jaroslav@66
|
39 |
}
|
jaroslav@66
|
40 |
|
jaroslav@66
|
41 |
static Date getRangesIntersectionBottom(Date fromA, Date fromB) {
|
jaroslav@66
|
42 |
if (fromA == null) {
|
jaroslav@66
|
43 |
return fromB;
|
jaroslav@66
|
44 |
}
|
jaroslav@66
|
45 |
if (fromB == null) {
|
jaroslav@66
|
46 |
return fromA;
|
jaroslav@66
|
47 |
}
|
jaroslav@66
|
48 |
if (fromA.after(fromB)) {
|
jaroslav@66
|
49 |
return fromA;
|
jaroslav@66
|
50 |
} else {
|
jaroslav@66
|
51 |
return fromB;
|
jaroslav@66
|
52 |
}
|
jaroslav@66
|
53 |
}
|
jaroslav@66
|
54 |
|
jaroslav@66
|
55 |
static Date getRangesIntersectionTop(Date tillA, Date tillB) {
|
jaroslav@66
|
56 |
if (tillA == null) {
|
jaroslav@66
|
57 |
return tillB;
|
jaroslav@66
|
58 |
}
|
jaroslav@66
|
59 |
if (tillB == null) {
|
jaroslav@66
|
60 |
return tillA;
|
jaroslav@66
|
61 |
}
|
jaroslav@66
|
62 |
if (tillA.before(tillB)) {
|
jaroslav@66
|
63 |
return tillA;
|
jaroslav@66
|
64 |
} else {
|
jaroslav@66
|
65 |
return tillB;
|
jaroslav@66
|
66 |
}
|
jaroslav@66
|
67 |
}
|
jaroslav@66
|
68 |
}
|