1d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen/****************************************************************
2d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * Licensed to the Apache Software Foundation (ASF) under one   *
3d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * or more contributor license agreements.  See the NOTICE file *
4d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * distributed with this work for additional information        *
5d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * regarding copyright ownership.  The ASF licenses this file   *
6d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * to you under the Apache License, Version 2.0 (the            *
7d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * "License"); you may not use this file except in compliance   *
8d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * with the License.  You may obtain a copy of the License at   *
9d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *                                                              *
10d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *   http://www.apache.org/licenses/LICENSE-2.0                 *
11d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *                                                              *
12d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * Unless required by applicable law or agreed to in writing,   *
13d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * software distributed under the License is distributed on an  *
14d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
15d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * KIND, either express or implied.  See the License for the    *
16d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * specific language governing permissions and limitations      *
17d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * under the License.                                           *
18d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen ****************************************************************/
19d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
20d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenpackage org.apache.james.mime4j.field.address;
21d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
22d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenimport java.util.ArrayList;
23d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
24d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen/**
25d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * An immutable, random-access list of Mailbox objects.
26d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *
27d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *
28d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen */
29d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenpublic class MailboxList {
30d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
31d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	private ArrayList<Address> mailboxes;
32d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
33d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	/**
34d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 * @param mailboxes An ArrayList that contains only Mailbox objects.
35d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 * @param dontCopy true iff it is not possible for the mailboxes ArrayList to be modified by someone else.
36d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 */
37d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	public MailboxList(ArrayList<Address> mailboxes, boolean dontCopy) {
38d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen		if (mailboxes != null)
39d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen			this.mailboxes = (dontCopy ? mailboxes : new ArrayList<Address>(mailboxes));
40d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen		else
41d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen			this.mailboxes = new ArrayList<Address>(0);
42d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	}
43d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
44d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	/**
45d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 * The number of elements in this list.
46d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 */
47d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	public int size() {
48d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen		return mailboxes.size();
49d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	}
50d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
51d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	/**
52d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 * Gets an address.
53d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 */
54d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	public Mailbox get(int index) {
55d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen		if (0 > index || size() <= index)
56d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen			throw new IndexOutOfBoundsException();
57d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen		return (Mailbox)mailboxes.get(index);
58d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	}
59d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
60d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	/**
61d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 * Dumps a representation of this mailbox list to
62d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 * stdout, for debugging purposes.
63d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	 */
64d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	public void print() {
65d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen		for (int i = 0; i < size(); i++) {
66d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen			Mailbox mailbox = get(i);
67d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen			System.out.println(mailbox.toString());
68d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen		}
69d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen	}
70d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
71d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen}
72