001    /*
002     * Copyright 2010 the original author or authors.
003     * 
004     *  Licensed under the Apache License, Version 2.0 (the "License");
005     *  you may not use this file except in compliance with the License.
006     *  You may obtain a copy of the License at
007     *
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     *
010     *  Unless required by applicable law or agreed to in writing, software
011     *  distributed under the License is distributed on an "AS IS" BASIS,
012     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     *  See the License for the specific language governing permissions and
014     *  limitations under the License.
015     */
016    package com.hs.mail.imap.message;
017    
018    /**
019     * 
020     * @author Won Chul Doh
021     * @since Jan 28, 2010
022     *
023     */
024    public class SequenceRange {
025    
026            private long min;
027            private long max;
028    
029            public SequenceRange(long num) {
030                    this.min = num;
031                    this.max = num;
032            }
033    
034            public SequenceRange(long min, long max) {
035                    this.min = min;
036                    this.max = max;
037            }
038    
039            public long getMin() {
040                    return min;
041            }
042    
043            public long getMax() {
044                    return max;
045            }
046    
047            public boolean includes(long num) {
048                    return min <= num && num <= max;
049            }
050    
051            public int hashCode() {
052                    final int PRIME = 31;
053                    int result = 1;
054                    result = PRIME * result + (int) (max ^ (max >>> 32));
055                    result = PRIME * result + (int) (min ^ (min >>> 32));
056                    return result;
057            }
058    
059            public boolean equals(Object obj) {
060                    return obj instanceof SequenceRange && equals((SequenceRange) obj);
061            }
062    
063            public boolean equals(SequenceRange range) {
064                    return (min == range.min && max == range.max);
065            }
066            
067    }