001    /**
002     *
003     * Copyright 2003-2006 The Apache Software Foundation
004     *
005     *  Licensed under the Apache License, Version 2.0 (the "License");
006     *  you may not use this file except in compliance with the License.
007     *  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    
018    package javax.mail.search;
019    
020    /**
021     * A Term that provides comparisons for integers.
022     *
023     * @version $Rev: 421852 $ $Date: 2006-07-14 03:02:19 -0700 (Fri, 14 Jul 2006) $
024     */
025    public abstract class IntegerComparisonTerm extends ComparisonTerm {
026        protected int number;
027    
028        protected IntegerComparisonTerm(int comparison, int number) {
029            super();
030            this.comparison = comparison;
031            this.number = number;
032        }
033    
034        public int getNumber() {
035            return number;
036        }
037    
038        public int getComparison() {
039            return comparison;
040        }
041    
042        protected boolean match(int match) {
043            switch (comparison) {
044            case EQ:
045                return match == number;
046            case NE:
047                return match != number;
048            case GT:
049                return match > number;
050            case GE:
051                return match >= number;
052            case LT:
053                return match < number;
054            case LE:
055                return match <= number;
056            default:
057                return false;
058            }
059        }
060    
061        public boolean equals(Object other) {
062            if (other == this) return true;
063            if (other instanceof IntegerComparisonTerm == false) return false;
064            final IntegerComparisonTerm term = (IntegerComparisonTerm) other;
065            return this.comparison == term.comparison && this.number == term.number;
066        }
067    
068        public int hashCode() {
069            return number;
070        }
071    }