4771 |
19 Apr 18 |
nicklas |
1 |
package net.sf.basedb.relax.json; |
4771 |
19 Apr 18 |
nicklas |
2 |
|
4771 |
19 Apr 18 |
nicklas |
3 |
import java.util.ArrayList; |
4771 |
19 Apr 18 |
nicklas |
4 |
import java.util.Collection; |
4771 |
19 Apr 18 |
nicklas |
5 |
import java.util.List; |
4771 |
19 Apr 18 |
nicklas |
6 |
|
4771 |
19 Apr 18 |
nicklas |
7 |
import org.json.simple.JSONArray; |
4771 |
19 Apr 18 |
nicklas |
8 |
|
4771 |
19 Apr 18 |
nicklas |
9 |
import net.sf.basedb.util.filter.Filter; |
4771 |
19 Apr 18 |
nicklas |
10 |
import net.sf.basedb.util.filter.NotNullFilter; |
4771 |
19 Apr 18 |
nicklas |
11 |
|
4771 |
19 Apr 18 |
nicklas |
12 |
/** |
4771 |
19 Apr 18 |
nicklas |
Wrapper around JSONArray that uses a filter |
4771 |
19 Apr 18 |
nicklas |
implementation before accepting values. For |
4771 |
19 Apr 18 |
nicklas |
example, use the {@link NotNullFilter} implementation |
4771 |
19 Apr 18 |
nicklas |
to ignore null values. |
4771 |
19 Apr 18 |
nicklas |
@since 1.2 |
4771 |
19 Apr 18 |
nicklas |
18 |
*/ |
4771 |
19 Apr 18 |
nicklas |
19 |
@SuppressWarnings({"rawtypes", "unchecked"}) |
4771 |
19 Apr 18 |
nicklas |
20 |
public class FilteredJSONArray |
4771 |
19 Apr 18 |
nicklas |
21 |
extends JSONArray |
4771 |
19 Apr 18 |
nicklas |
22 |
{ |
4771 |
19 Apr 18 |
nicklas |
23 |
|
4771 |
19 Apr 18 |
nicklas |
24 |
private static final long serialVersionUID = -5032543945179269026L; |
4771 |
19 Apr 18 |
nicklas |
25 |
private final Filter filter; |
4771 |
19 Apr 18 |
nicklas |
26 |
|
4771 |
19 Apr 18 |
nicklas |
27 |
public FilteredJSONArray(Filter filter) |
4771 |
19 Apr 18 |
nicklas |
28 |
{ |
4771 |
19 Apr 18 |
nicklas |
29 |
this.filter = filter; |
4771 |
19 Apr 18 |
nicklas |
30 |
} |
4771 |
19 Apr 18 |
nicklas |
31 |
|
4771 |
19 Apr 18 |
nicklas |
32 |
@Override |
4771 |
19 Apr 18 |
nicklas |
33 |
public void add(int index, Object element) |
4771 |
19 Apr 18 |
nicklas |
34 |
{ |
4771 |
19 Apr 18 |
nicklas |
35 |
if (filter.evaluate(element)) super.add(index, element); |
4771 |
19 Apr 18 |
nicklas |
36 |
} |
4771 |
19 Apr 18 |
nicklas |
37 |
|
4771 |
19 Apr 18 |
nicklas |
38 |
@Override |
4771 |
19 Apr 18 |
nicklas |
39 |
public boolean add(Object e) |
4771 |
19 Apr 18 |
nicklas |
40 |
{ |
4771 |
19 Apr 18 |
nicklas |
41 |
return filter.evaluate(e) ? super.add(e) : false; |
4771 |
19 Apr 18 |
nicklas |
42 |
} |
4771 |
19 Apr 18 |
nicklas |
43 |
|
4771 |
19 Apr 18 |
nicklas |
44 |
@Override |
4771 |
19 Apr 18 |
nicklas |
45 |
public boolean addAll(Collection c) |
4771 |
19 Apr 18 |
nicklas |
46 |
{ |
4771 |
19 Apr 18 |
nicklas |
47 |
List c2 = new ArrayList(c.size()); |
4771 |
19 Apr 18 |
nicklas |
48 |
for (Object e : c) |
4771 |
19 Apr 18 |
nicklas |
49 |
{ |
4771 |
19 Apr 18 |
nicklas |
50 |
if (filter.evaluate(e)) c2.add(e); |
4771 |
19 Apr 18 |
nicklas |
51 |
} |
4771 |
19 Apr 18 |
nicklas |
52 |
return super.addAll(c2); |
4771 |
19 Apr 18 |
nicklas |
53 |
} |
4771 |
19 Apr 18 |
nicklas |
54 |
|
4771 |
19 Apr 18 |
nicklas |
55 |
@Override |
4771 |
19 Apr 18 |
nicklas |
56 |
public boolean addAll(int index, Collection c) |
4771 |
19 Apr 18 |
nicklas |
57 |
{ |
4771 |
19 Apr 18 |
nicklas |
58 |
List c2 = new ArrayList(c.size()); |
4771 |
19 Apr 18 |
nicklas |
59 |
for (Object e : c) |
4771 |
19 Apr 18 |
nicklas |
60 |
{ |
4771 |
19 Apr 18 |
nicklas |
61 |
if (filter.evaluate(e)) c2.add(e); |
4771 |
19 Apr 18 |
nicklas |
62 |
} |
4771 |
19 Apr 18 |
nicklas |
63 |
return super.addAll(index, c2); |
4771 |
19 Apr 18 |
nicklas |
64 |
} |
4771 |
19 Apr 18 |
nicklas |
65 |
|
4771 |
19 Apr 18 |
nicklas |
66 |
|
4771 |
19 Apr 18 |
nicklas |
67 |
|
4771 |
19 Apr 18 |
nicklas |
68 |
} |