001/**
002 * Copyright 2005-2016 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.krad.lookup;
017
018import java.io.Serializable;
019import java.util.ArrayList;
020import java.util.Collection;
021import java.util.Iterator;
022import java.util.List;
023import java.util.ListIterator;
024import java.util.RandomAccess;
025
026
027public class CollectionIncomplete<T> implements List<T>, RandomAccess, Serializable {
028
029    private static final long serialVersionUID = 8683452581122892189L;
030        private final List<T> list;
031    private Long actualSizeIfTruncated;
032
033
034    /**
035     * @param collection
036     * @param actualSizeIfTruncated
037     */
038    public CollectionIncomplete(Collection<T> collection, Long actualSizeIfTruncated) {
039        super();
040        this.list = new ArrayList<T>(collection);
041        this.actualSizeIfTruncated = actualSizeIfTruncated;
042    }
043
044    /**
045     * @param arg0
046     * @param arg1
047     */
048    public void add(int arg0, T arg1) {
049        list.add(arg0, arg1);
050    }
051
052    /**
053     * @param arg0
054     * @return
055     */
056    public boolean add(T arg0) {
057        return list.add(arg0);
058    }
059
060    /**
061     * @param arg0
062     * @param arg1
063     * @return
064     */
065    public boolean addAll(int arg0, Collection<? extends T> arg1) {
066        return list.addAll(arg0, arg1);
067    }
068
069    /**
070     * @param arg0
071     * @return
072     */
073    public boolean addAll(Collection<? extends T> arg0) {
074        return list.addAll(arg0);
075    }
076
077    /**
078     * 
079     */
080    public void clear() {
081        list.clear();
082    }
083
084    /**
085     * @param arg0
086     * @return
087     */
088    public boolean contains(Object arg0) {
089        return list.contains(arg0);
090    }
091
092    /**
093     * @param arg0
094     * @return
095     */
096    public boolean containsAll(Collection<?> arg0) {
097        return list.containsAll(arg0);
098    }
099
100    /*
101     * (non-Javadoc)
102     * 
103     * @see java.lang.Object#equals(java.lang.Object)
104     */
105    public boolean equals(Object arg0) {
106        return list.equals(arg0);
107    }
108
109    /**
110     * @param arg0
111     * @return
112     */
113    public T get(int arg0) {
114        return list.get(arg0);
115    }
116
117    /*
118     * (non-Javadoc)
119     * 
120     * @see java.lang.Object#hashCode()
121     */
122    public int hashCode() {
123        return list.hashCode();
124    }
125
126    /**
127     * @param arg0
128     * @return
129     */
130    public int indexOf(Object arg0) {
131        return list.indexOf(arg0);
132    }
133
134    /**
135     * @return
136     */
137    public boolean isEmpty() {
138        return list.isEmpty();
139    }
140
141    /**
142     * @return
143     */
144    public Iterator<T> iterator() {
145        return list.iterator();
146    }
147
148    /**
149     * @param arg0
150     * @return
151     */
152    public int lastIndexOf(Object arg0) {
153        return list.lastIndexOf(arg0);
154    }
155
156    /**
157     * @return
158     */
159    public ListIterator<T> listIterator() {
160        return list.listIterator();
161    }
162
163    /**
164     * @param arg0
165     * @return
166     */
167    public ListIterator listIterator(int arg0) {
168        return list.listIterator(arg0);
169    }
170
171    /**
172     * @param arg0
173     * @return
174     */
175    public T remove(int arg0) {
176        return list.remove(arg0);
177    }
178
179    /**
180     * @param arg0
181     * @return
182     */
183    public boolean remove(Object arg0) {
184        return list.remove(arg0);
185    }
186
187    /**
188     * @param arg0
189     * @return
190     */
191    public boolean removeAll(Collection<?> arg0) {
192        return list.removeAll(arg0);
193    }
194
195    /**
196     * @param arg0
197     * @return
198     */
199    public boolean retainAll(Collection<?> arg0) {
200        return list.retainAll(arg0);
201    }
202
203    /**
204     * @param arg0
205     * @param arg1
206     * @return
207     */
208    public T set(int arg0, T arg1) {
209        return list.set(arg0, arg1);
210    }
211
212    /**
213     * @return
214     */
215    public int size() {
216        return list.size();
217    }
218
219    /**
220     * @param arg0
221     * @param arg1
222     * @return
223     */
224    public List<T> subList(int arg0, int arg1) {
225        return list.subList(arg0, arg1);
226    }
227
228    /**
229     * @return
230     */
231    public Object[] toArray() {
232        return list.toArray();
233    }
234
235    /**
236     * @param arg0
237     * @return
238     */
239    public <T> T[] toArray(T[] arg0) {
240        return list.toArray(arg0);
241    }
242
243    /*
244     * (non-Javadoc)
245     * 
246     * @see java.lang.Object#toString()
247     */
248    public String toString() {
249        return list.toString();
250    }
251
252    /**
253     * @return Returns the actualSizeIfTruncated.
254     */
255    public Long getActualSizeIfTruncated() {
256        return actualSizeIfTruncated;
257    }
258
259    /**
260     * @param actualSize The actualSizeIfTruncated to set.
261     */
262    public void setActualSizeIfTruncated(Long actualSizeIfTruncated) {
263        this.actualSizeIfTruncated = actualSizeIfTruncated;
264    }
265}