1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.util;
21  
22  import java.util.ArrayList;
23  import java.util.Collection;
24  import java.util.Iterator;
25  
26  /**
27   * <a href="UniqueList.java.html"><b><i>View Source</i></b></a>
28   *
29   * @author Brian Wing Shun Chan
30   *
31   */
32  public class UniqueList<E> extends ArrayList<E> {
33  
34      public UniqueList() {
35          super();
36      }
37  
38      public boolean add(E e) {
39          if (!contains(e)) {
40              return super.add(e);
41          }
42          else {
43              return false;
44          }
45      }
46  
47      public void add(int index, E e) {
48          if (!contains(e)) {
49              super.add(index, e);
50          }
51      }
52  
53      public boolean addAll(Collection<? extends E> c) {
54          c = new ArrayList<E>(c);
55  
56          Iterator<? extends E> itr = c.iterator();
57  
58          while (itr.hasNext()) {
59              E e = itr.next();
60  
61              if (contains(e)) {
62                  itr.remove();
63              }
64          }
65  
66          return super.addAll(c);
67      }
68  
69      public boolean addAll(int index, Collection<? extends E> c) {
70          c = new ArrayList<E>(c);
71  
72          Iterator<? extends E> itr = c.iterator();
73  
74          while (itr.hasNext()) {
75              E e = itr.next();
76  
77              if (contains(e)) {
78                  itr.remove();
79              }
80          }
81  
82          return super.addAll(index, c);
83      }
84  
85      public E set(int index, E e) {
86          if (!contains(e)) {
87              return super.set(index, e);
88          }
89          else {
90              return e;
91          }
92      }
93  
94  }