task4/solution11/src/org/apidesign/apifest08/currency/DateUtil.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 25 Oct 2008 20:53:00 +0200
changeset 84 2ae6e4aa7aef
permissions -rw-r--r--
Solutions by Petr Smid
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
}