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 import java.util.Date; 021 022 /** 023 * @version $Rev: 421852 $ $Date: 2006-07-14 03:02:19 -0700 (Fri, 14 Jul 2006) $ 024 */ 025 public abstract class DateTerm extends ComparisonTerm { 026 protected Date date; 027 028 protected DateTerm(int comparison, Date date) { 029 super(); 030 this.comparison = comparison; 031 this.date = date; 032 } 033 034 public Date getDate() { 035 return date; 036 } 037 038 public int getComparison() { 039 return comparison; 040 } 041 042 protected boolean match(Date match) { 043 long matchTime = match.getTime(); 044 long mytime = date.getTime(); 045 switch (comparison) { 046 case EQ: 047 return matchTime == mytime; 048 case NE: 049 return matchTime != mytime; 050 case LE: 051 return matchTime <= mytime; 052 case LT: 053 return matchTime < mytime; 054 case GT: 055 return matchTime > mytime; 056 case GE: 057 return matchTime >= mytime; 058 default: 059 return false; 060 } 061 } 062 063 public boolean equals(Object other) { 064 if (other == this) return true; 065 if (other instanceof DateTerm == false) return false; 066 final DateTerm term = (DateTerm) other; 067 return this.comparison == term.comparison && this.date.equals(term.date); 068 } 069 070 public int hashCode() { 071 return date.hashCode(); 072 } 073 }