View Javadoc

1   /**
2    *
3    * Copyright 2003-2006 The Apache Software Foundation
4    *
5    *  Licensed under the Apache License, Version 2.0 (the "License");
6    *  you may not use this file except in compliance with the License.
7    *  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   *  Unless required by applicable law or agreed to in writing, software
12   *  distributed under the License is distributed on an "AS IS" BASIS,
13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   *  See the License for the specific language governing permissions and
15   *  limitations under the License.
16   */
17  
18  package javax.mail.search;
19  
20  import javax.mail.Address;
21  import javax.mail.Message;
22  import javax.mail.MessagingException;
23  
24  /**
25   * @version $Rev: 421852 $ $Date: 2006-07-14 03:02:19 -0700 (Fri, 14 Jul 2006) $
26   */
27  public final class RecipientStringTerm extends AddressStringTerm {
28      private Message.RecipientType type;
29  
30      public RecipientStringTerm(Message.RecipientType type, String pattern) {
31          super(pattern);
32          this.type = type;
33      }
34  
35      public Message.RecipientType getRecipientType() {
36          return type;
37      }
38  
39      public boolean match(Message message) {
40          try {
41              Address from[] = message.getRecipients(type);
42              for (int i = 0; i < from.length; i++) {
43                  Address address = from[i];
44                  if (match(address)) {
45                      return true;
46                  }
47              }
48              return false;
49          } catch (MessagingException e) {
50              return false;
51          }
52      }
53  
54      public boolean equals(Object other) {
55          if (other == this) return true;
56          if (other instanceof RecipientStringTerm == false) return false;
57          final RecipientStringTerm otherTerm = (RecipientStringTerm) other;
58          return this.pattern.equals(otherTerm.pattern) && this.type == otherTerm.type;
59      }
60  
61      public int hashCode() {
62          return pattern.hashCode();
63      }
64  }