Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package org.litesoft.core.simpletypes.temporal;

import org.litesoft.core.simpletypes.temporal.nonpublic.*;

/**
 * A Simple Timestamp Range object with variable resolution from the Hour thru the Millisecond.
 */
public final class SimpleTimestampRange extends AbstractWithTimeRes<SimpleTimestampRange>
{
    private SimpleTimestamp mFromInclusive = null;
    private SimpleTimestamp mToExclusive = null;

    /**
     * @deprecated - for Serialization
     */
    protected SimpleTimestampRange()
    {
    }

    public SimpleTimestampRange( TimeRes pResolution )
    {
        super( pResolution );
    }

    public SimpleTimestampRange( TimeRes pResolution, SimpleTimestamp pFromInclusive, SimpleTimestamp pToExclusive )
    {
        this( pResolution );
        setFromInclusive( pFromInclusive );
        setToExclusive( pToExclusive );
    }

    public SimpleTimestampRange copy()
    {
        return new SimpleTimestampRange( this.getTimeRes(), this.mFromInclusive, this.mToExclusive );
    }

    /**
     * @param pFromInclusive - null means infite past (e.g. beginning of day)
     *
     * @throws IllegalArgumentException if !null and Resolution does NOT match
     */
    public void setFromInclusive( SimpleTimestamp pFromInclusive )
            throws IllegalArgumentException
    {
        mFromInclusive = checkRes( pFromInclusive );
    }

    /**
     * @return null means infite past (e.g. beginning of day)
     */
    public SimpleTimestamp getFromInclusive()
    {
        return mFromInclusive;
    }

    /**
     * @param pToExclusive - null means infite past (e.g. beginning of day)
     *
     * @throws IllegalArgumentException if !null and Resolution does NOT match
     */
    public void setToExclusive( SimpleTimestamp pToExclusive )
            throws IllegalArgumentException
    {
        mToExclusive = checkRes( pToExclusive );
    }

    /**
     * @return null means infite future (e.g. rest of the day)
     */
    public SimpleTimestamp getToExclusive()
    {
        return mToExclusive;
    }

    private SimpleTimestamp checkRes( SimpleTimestamp pToCheck )
            throws IllegalArgumentException
    {
        if ( (pToCheck != null) )
        {
            TimeRes thisRes = this.getTimeRes();
            TimeRes themRes = pToCheck.getTimeRes();
            if ( !thisRes.equals( themRes ) )
            {
                throw new IllegalArgumentException( "Expected " + thisRes + ", but got " + themRes );
            }
        }
        return pToCheck;
    }

    public boolean isValidRangeValid()
    {
        return (mFromInclusive == null) || (mToExclusive == null) || mFromInclusive.before( mToExclusive );
    }

    public boolean equals( Object o )
    {
        return (this == o) || //
               ((o instanceof SimpleTimestampRange) && equals( (SimpleTimestampRange) o ));
    }

    public boolean equals( SimpleTimestampRange them )
    {
        return (this == them) || //
               ((them != null) //
                && equal( this.getTimeRes(), them.getTimeRes() ) //
                && equal( this.mFromInclusive, them.mFromInclusive ) //
                && equal( this.mToExclusive, them.mToExclusive ) //
               );
    }

    public int hashCode()
    {
        return hashCodeEm( calcHashCode( mFromInclusive ), //
                           calcHashCode( mToExclusive ), //
                           calcHashCode( getTimeRes() ) );
    }

    public int compareTo( SimpleTimestampRange them )
    {
        return compareEm( compare( this.getTimeRes(), them.getTimeRes() ), //
                          compare( this.mFromInclusive, them.mFromInclusive ), //
                          compare( this.mToExclusive, them.mToExclusive ) );
    }

    public String toString()
    {
        if ( (mFromInclusive == null) && (mToExclusive == null) )
        {
            return "Whenever";
        }
        if ( mFromInclusive == null )
        {
            return "Whenever|" + mToExclusive;
        }
        if ( mToExclusive == null )
        {
            return mFromInclusive + "|Whenever";
        }
        if ( mFromInclusive.before( mToExclusive ) )
        {
            return mFromInclusive + "|" + mToExclusive;
        }
        return mFromInclusive + "!<" + mToExclusive;
    }
}

Commits for litesoft/trunk/Java/core/Anywhere/src/org/litesoft/core/simpletypes/temporal/SimpleTimestampRange.java

Diff revisions: vs.
Revision Author Commited Message
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000