extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/json/FilteredJSONArray.java

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