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.Arrays; 021 import javax.mail.Message; 022 023 /** 024 * @version $Rev: 421852 $ $Date: 2006-07-14 03:02:19 -0700 (Fri, 14 Jul 2006) $ 025 */ 026 public final class OrTerm extends SearchTerm { 027 protected SearchTerm[] terms; 028 029 public OrTerm(SearchTerm a, SearchTerm b) { 030 terms = new SearchTerm[]{a, b}; 031 } 032 033 public OrTerm(SearchTerm[] terms) { 034 this.terms = terms; 035 } 036 037 public SearchTerm[] getTerms() { 038 return terms; 039 } 040 041 public boolean match(Message message) { 042 for (int i = 0; i < terms.length; i++) { 043 SearchTerm term = terms[i]; 044 if (term.match(message)) { 045 return true; 046 } 047 } 048 return false; 049 } 050 051 public boolean equals(Object other) { 052 if (other == this) return true; 053 if (other instanceof OrTerm == false) return false; 054 return Arrays.equals(terms, ((OrTerm) other).terms); 055 } 056 057 public int hashCode() { 058 int hash = 0; 059 for (int i = 0; i < terms.length; i++) { 060 hash = hash * 37 + terms[i].hashCode(); 061 } 062 return hash; 063 } 064 }