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 }