task4/solution04/src/org/apidesign/apifest08/currency/DateRange.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@69
     1
package org.apidesign.apifest08.currency;
jaroslav@69
     2
jaroslav@69
     3
jaroslav@69
     4
import java.util.Date;
jaroslav@69
     5
jaroslav@69
     6
jaroslav@69
     7
public final class DateRange
jaroslav@69
     8
{
jaroslav@69
     9
    private final Date from;
jaroslav@69
    10
    private final Date till;
jaroslav@69
    11
    
jaroslav@69
    12
    DateRange(final Date f,
jaroslav@69
    13
              final Date t)
jaroslav@69
    14
    {
jaroslav@69
    15
        if(f == null && t != null)
jaroslav@69
    16
        {
jaroslav@69
    17
            throw new IllegalArgumentException("f was null but t was not");
jaroslav@69
    18
        }
jaroslav@69
    19
        
jaroslav@69
    20
        if(f != null && t == null)
jaroslav@69
    21
        {
jaroslav@69
    22
            throw new IllegalArgumentException("f was null but t was not");
jaroslav@69
    23
        }
jaroslav@69
    24
        
jaroslav@69
    25
        from = f;
jaroslav@69
    26
        till = t;
jaroslav@69
    27
    }
jaroslav@69
    28
    
jaroslav@69
    29
    public Date getFrom()
jaroslav@69
    30
    {
jaroslav@69
    31
        return (from);
jaroslav@69
    32
    }
jaroslav@69
    33
    
jaroslav@69
    34
    public Date getTill()
jaroslav@69
    35
    {
jaroslav@69
    36
        return (from);
jaroslav@69
    37
    }
jaroslav@69
    38
    
jaroslav@69
    39
    public boolean isInRange(final Date date)
jaroslav@69
    40
    {
jaroslav@69
    41
        final boolean retVal;
jaroslav@69
    42
jaroslav@69
    43
        if(date.equals(from) || date.equals(till))
jaroslav@69
    44
        {
jaroslav@69
    45
            retVal = true;
jaroslav@69
    46
        }
jaroslav@69
    47
        else if(date.after(from) && date.before(till))
jaroslav@69
    48
        {
jaroslav@69
    49
            retVal = true;
jaroslav@69
    50
        }
jaroslav@69
    51
        else
jaroslav@69
    52
        {
jaroslav@69
    53
            retVal = false;
jaroslav@69
    54
        }
jaroslav@69
    55
jaroslav@69
    56
        return (retVal);
jaroslav@69
    57
    }
jaroslav@69
    58
jaroslav@69
    59
    @Override
jaroslav@69
    60
    public boolean equals(Object obj) {
jaroslav@69
    61
        if (obj == null) {
jaroslav@69
    62
            return false;
jaroslav@69
    63
        }
jaroslav@69
    64
        if (getClass() != obj.getClass()) {
jaroslav@69
    65
            return false;
jaroslav@69
    66
        }
jaroslav@69
    67
        final DateRange other = (DateRange) obj;
jaroslav@69
    68
        if (this.from != other.from && (this.from == null || !this.from.equals(other.from))) {
jaroslav@69
    69
            return false;
jaroslav@69
    70
        }
jaroslav@69
    71
        if (this.till != other.till && (this.till == null || !this.till.equals(other.till))) {
jaroslav@69
    72
            return false;
jaroslav@69
    73
        }
jaroslav@69
    74
        return true;
jaroslav@69
    75
    }
jaroslav@69
    76
jaroslav@69
    77
    @Override
jaroslav@69
    78
    public int hashCode() {
jaroslav@69
    79
        int hash = 7;
jaroslav@69
    80
        hash = 89 * hash + (this.from != null ? this.from.hashCode() : 0);
jaroslav@69
    81
        hash = 89 * hash + (this.till != null ? this.till.hashCode() : 0);
jaroslav@69
    82
        return hash;
jaroslav@69
    83
    }
jaroslav@69
    84
jaroslav@69
    85
    @Override
jaroslav@69
    86
    public String toString()
jaroslav@69
    87
    {
jaroslav@69
    88
        return (from + " until " + till);
jaroslav@69
    89
    }
jaroslav@69
    90
jaroslav@69
    91
}