1 package com.atlassian.core.util.collection;
2
3 import com.atlassian.core.util.ObjectUtils;
4 import org.apache.commons.collections.CollectionUtils;
5
6 import java.util.ArrayList;
7 import java.util.Collection;
8 import java.util.Collections;
9 import java.util.List;
10
11
12
13
14 public class EasyList
15 {
16
17
18
19
20
21 public static List buildNull()
22 {
23 List list = createList(1);
24 list.add(null);
25 return list;
26 }
27
28 public static List build(Object[] array)
29 {
30 List list = createList(array.length);
31
32 for (int i = 0; i < array.length; i++)
33 {
34 Object o = array[i];
35 list.add(o);
36 }
37
38 return list;
39 }
40
41 public static List buildNonNull(Object[] array)
42 {
43 List list;
44 if (array != null && array.length > 0)
45 {
46 list = createList(array.length);
47 for (int i = 0; i < array.length; i++)
48 {
49 Object o = array[i];
50 if (ObjectUtils.isNotEmpty(o))
51 {
52 list.add(o);
53 }
54 }
55 }
56 else
57 {
58 list = Collections.EMPTY_LIST;
59 }
60
61 return list;
62 }
63
64 public static List buildNonNull(Collection c)
65 {
66 List list;
67 if (c != null && !c.isEmpty())
68 {
69 list = build(CollectionUtils.predicatedCollection(c, ObjectUtils.getIsSetPredicate()));
70 }
71 else
72 {
73 list = Collections.EMPTY_LIST;
74 }
75
76 return list;
77 }
78
79 public static List buildNonNull(Object o)
80 {
81 if (ObjectUtils.isNotEmpty(o))
82 {
83 return build(o);
84 }
85 else
86 {
87 return build();
88 }
89 }
90
91 public static List build()
92 {
93 return Collections.EMPTY_LIST;
94 }
95
96 public static List build(Object o1)
97 {
98 List list = createList(1);
99
100 list.add(o1);
101
102 return list;
103 }
104
105 public static List build(Object o1, Object o2)
106 {
107 List list = createList(2);
108
109 list.add(o1);
110 list.add(o2);
111
112 return list;
113 }
114
115 public static List build(Object o1, Object o2, Object o3)
116 {
117 List list = createList(3);
118
119 list.add(o1);
120 list.add(o2);
121 list.add(o3);
122
123 return list;
124 }
125
126 public static List build(Object o1, Object o2, Object o3, Object o4)
127 {
128 List list = createList(4);
129
130 list.add(o1);
131 list.add(o2);
132 list.add(o3);
133 list.add(o4);
134
135 return list;
136 }
137
138 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5)
139 {
140 List list = createList(5);
141
142 list.add(o1);
143 list.add(o2);
144 list.add(o3);
145 list.add(o4);
146 list.add(o5);
147
148 return list;
149 }
150
151 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6)
152 {
153 List list = createList(6);
154
155 list.add(o1);
156 list.add(o2);
157 list.add(o3);
158 list.add(o4);
159 list.add(o5);
160 list.add(o6);
161
162 return list;
163 }
164
165 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7)
166 {
167 List list = createList(7);
168
169 list.add(o1);
170 list.add(o2);
171 list.add(o3);
172 list.add(o4);
173 list.add(o5);
174 list.add(o6);
175 list.add(o7);
176
177 return list;
178 }
179
180 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8)
181 {
182 List list = createList(8);
183
184 list.add(o1);
185 list.add(o2);
186 list.add(o3);
187 list.add(o4);
188 list.add(o5);
189 list.add(o6);
190 list.add(o7);
191 list.add(o8);
192
193 return list;
194 }
195
196 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9)
197 {
198 List list = createList(9);
199
200 list.add(o1);
201 list.add(o2);
202 list.add(o3);
203 list.add(o4);
204 list.add(o5);
205 list.add(o6);
206 list.add(o7);
207 list.add(o8);
208 list.add(o9);
209
210 return list;
211 }
212
213 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9, Object o10)
214 {
215 List list = createList(10);
216
217 list.add(o1);
218 list.add(o2);
219 list.add(o3);
220 list.add(o4);
221 list.add(o5);
222 list.add(o6);
223 list.add(o7);
224 list.add(o8);
225 list.add(o9);
226 list.add(o10);
227
228 return list;
229 }
230
231 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9, Object o10, Object o11)
232 {
233 List list = createList(11);
234
235 list.add(o1);
236 list.add(o2);
237 list.add(o3);
238 list.add(o4);
239 list.add(o5);
240 list.add(o6);
241 list.add(o7);
242 list.add(o8);
243 list.add(o9);
244 list.add(o10);
245 list.add(o11);
246
247 return list;
248 }
249
250 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9, Object o10,
251 Object o11, Object o12)
252 {
253 List list = createList(12);
254
255 list.add(o1);
256 list.add(o2);
257 list.add(o3);
258 list.add(o4);
259 list.add(o5);
260 list.add(o6);
261 list.add(o7);
262 list.add(o8);
263 list.add(o9);
264 list.add(o10);
265 list.add(o11);
266 list.add(o12);
267
268 return list;
269 }
270
271 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9, Object o10,
272 Object o11, Object o12, Object o13)
273 {
274 List list = createList(13);
275
276 list.add(o1);
277 list.add(o2);
278 list.add(o3);
279 list.add(o4);
280 list.add(o5);
281 list.add(o6);
282 list.add(o7);
283 list.add(o8);
284 list.add(o9);
285 list.add(o10);
286 list.add(o11);
287 list.add(o12);
288 list.add(o13);
289
290 return list;
291 }
292
293 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9, Object o10,
294 Object o11, Object o12, Object o13, Object o14)
295 {
296 List list = createList(14);
297
298 list.add(o1);
299 list.add(o2);
300 list.add(o3);
301 list.add(o4);
302 list.add(o5);
303 list.add(o6);
304 list.add(o7);
305 list.add(o8);
306 list.add(o9);
307 list.add(o10);
308 list.add(o11);
309 list.add(o12);
310 list.add(o13);
311 list.add(o14);
312
313 return list;
314 }
315
316 public static List build(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9, Object o10,
317 Object o11, Object o12, Object o13, Object o14, Object o15, Object o16, Object o17, Object o18, Object o19, Object o20, Object o21,
318 Object o22, Object o23, Object o24, Object o25, Object o26)
319 {
320 List list = createList(26);
321
322 list.add(o1);
323 list.add(o2);
324 list.add(o3);
325 list.add(o4);
326 list.add(o5);
327 list.add(o6);
328 list.add(o7);
329 list.add(o8);
330 list.add(o9);
331 list.add(o10);
332 list.add(o11);
333 list.add(o12);
334 list.add(o13);
335 list.add(o14);
336 list.add(o15);
337 list.add(o16);
338 list.add(o17);
339 list.add(o18);
340 list.add(o19);
341 list.add(o20);
342 list.add(o21);
343 list.add(o22);
344 list.add(o23);
345 list.add(o24);
346 list.add(o25);
347 list.add(o26);
348
349 return list;
350 }
351
352 public static List build(Collection collection)
353 {
354 if (collection == null) return null;
355 return new ArrayList(collection);
356 }
357
358 public static List createList(int size)
359 {
360 return new ArrayList(size);
361 }
362
363
364
365
366
367
368
369
370
371
372 public static List mergeLists(List a, List b, List c)
373 {
374 List d = EasyList.createList(0);
375 if (a != null)
376 {
377 d.addAll(a);
378 }
379 if (b != null)
380 {
381 d.addAll(b);
382 }
383 if (c != null)
384 {
385 d.addAll(c);
386 }
387 return d;
388 }
389
390
391
392
393
394
395
396
397
398
399
400
401
402 public static List shallowSplit(List list, int sublength)
403 {
404
405 int overflow = ((list.size() % sublength) > 0) ? 1 : 0;
406 List result = new ArrayList((list.size() / sublength) + overflow);
407 int i = 0;
408 while (i < list.size())
409 {
410 int endIndex = (i + sublength) > list.size() ? list.size() : i + sublength;
411 result.add(list.subList(i, endIndex));
412 i += sublength;
413 }
414
415 return result;
416 }
417 }