|
|||||||||||||||||||
| Source file | Conditionals | Statements | Methods | TOTAL | |||||||||||||||
| FetchProfile.java | - | 0% | 0% | 0% |
|
||||||||||||||
| 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; | |
| 19 | ||
| 20 | import java.util.ArrayList; | |
| 21 | import java.util.List; | |
| 22 | ||
| 23 | /** | |
| 24 | * A FetchProfile defines a list of message attributes that a client wishes to prefetch | |
| 25 | * from the server during a fetch operation. | |
| 26 | * | |
| 27 | * Clients can either specify individual headers, or can reference common profiles | |
| 28 | * as defined by {@link FetchProfile.Item FetchProfile.Item}. | |
| 29 | * | |
| 30 | * @version $Rev: 421852 $ $Date: 2006-07-14 03:02:19 -0700 (Fri, 14 Jul 2006) $ | |
| 31 | */ | |
| 32 | public class FetchProfile { | |
| 33 | /** | |
| 34 | * Inner class that defines sets of headers that are commonly bundled together | |
| 35 | * in a FetchProfile. | |
| 36 | */ | |
| 37 | public static class Item { | |
| 38 | /** | |
| 39 | * Item for fetching information about the content of the message. | |
| 40 | * | |
| 41 | * This includes all the headers about the content including but not limited to: | |
| 42 | * Content-Type, Content-Disposition, Content-Description, Size and Line-Count | |
| 43 | */ | |
| 44 | public static final Item CONTENT_INFO = new Item("Content-Info"); | |
| 45 | ||
| 46 | /** | |
| 47 | * Item for fetching information about the envelope of the message. | |
| 48 | * | |
| 49 | * This includes all the headers comprising the envelope including but not limited to: | |
| 50 | * From, To, Cc, Bcc, Reply-To, Subject and Date | |
| 51 | * | |
| 52 | * For IMAP4, this should also include the ENVELOPE data item. | |
| 53 | * | |
| 54 | */ | |
| 55 | public static final Item ENVELOPE = new Item("Envelope"); | |
| 56 | ||
| 57 | /** | |
| 58 | * Item for fetching information about message flags. | |
| 59 | * Generall corresponds to the X-Flags header. | |
| 60 | */ | |
| 61 | public static final Item FLAGS = new Item("Flags"); | |
| 62 | ||
| 63 | 0 | protected Item(String name) { |
| 64 | // hmmm, name is passed in but we are not allowed to provide accessors | |
| 65 | // or to override equals/hashCode so what use is it? | |
| 66 | } | |
| 67 | } | |
| 68 | ||
| 69 | // use Lists as we don't expect contains to be called often and the number of elements should be small | |
| 70 | private final List items = new ArrayList(); | |
| 71 | private final List headers = new ArrayList(); | |
| 72 | ||
| 73 | /** | |
| 74 | * Add a predefined profile of headers. | |
| 75 | * | |
| 76 | * @param item the profile to add | |
| 77 | */ | |
| 78 | 0 | public void add(Item item) { |
| 79 | 0 | items.add(item); |
| 80 | } | |
| 81 | ||
| 82 | /** | |
| 83 | * Add a specific header. | |
| 84 | * @param header the header whose value should be prefetched | |
| 85 | */ | |
| 86 | 0 | public void add(String header) { |
| 87 | 0 | headers.add(header); |
| 88 | } | |
| 89 | ||
| 90 | /** | |
| 91 | * Determine if the given profile item is already included. | |
| 92 | * @param item the profile to check for | |
| 93 | * @return true if the profile item is already included | |
| 94 | */ | |
| 95 | 0 | public boolean contains(Item item) { |
| 96 | 0 | return items.contains(item); |
| 97 | } | |
| 98 | ||
| 99 | /** | |
| 100 | * Determine if the specified header is already included. | |
| 101 | * @param header the header to check for | |
| 102 | * @return true if the header is already included | |
| 103 | */ | |
| 104 | 0 | public boolean contains(String header) { |
| 105 | 0 | return headers.contains(header); |
| 106 | } | |
| 107 | ||
| 108 | /** | |
| 109 | * Get the profile items already included. | |
| 110 | * @return the items already added to this profile | |
| 111 | */ | |
| 112 | 0 | public Item[] getItems() { |
| 113 | 0 | return (Item[]) items.toArray(new Item[items.size()]); |
| 114 | } | |
| 115 | ||
| 116 | /** Get the headers that have already been included. | |
| 117 | * @return the headers already added to this profile | |
| 118 | */ | |
| 119 | 0 | public String[] getHeaderNames() { |
| 120 | 0 | return (String[]) headers.toArray(new String[headers.size()]); |
| 121 | } | |
| 122 | } |
|
||||||||||