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

Code
Comments
Other
Rev Date Author Line
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 13   Wrapper around JSONArray that uses a filter
4771 19 Apr 18 nicklas 14   implementation before accepting values. For
4771 19 Apr 18 nicklas 15   example, use the {@link NotNullFilter} implementation
4771 19 Apr 18 nicklas 16   to ignore null values.
4771 19 Apr 18 nicklas 17   @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 }