| package org.bouncycastle.util; |
| |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| /** |
| * A simple collection backed store. |
| */ |
| public class CollectionStore<T> |
| implements Store<T>, Iterable<T> |
| { |
| private Collection<T> _local; |
| |
| /** |
| * Basic constructor. |
| * |
| * @param collection - initial contents for the store, this is copied. |
| */ |
| public CollectionStore( |
| Collection<T> collection) |
| { |
| _local = new ArrayList<T>(collection); |
| } |
| |
| /** |
| * Return the matches in the collection for the passed in selector. |
| * |
| * @param selector the selector to match against. |
| * @return a possibly empty collection of matching objects. |
| */ |
| public Collection<T> getMatches(Selector<T> selector) |
| { |
| if (selector == null) |
| { |
| return new ArrayList<T>(_local); |
| } |
| else |
| { |
| List<T> col = new ArrayList<T>(); |
| Iterator<T> iter = _local.iterator(); |
| |
| while (iter.hasNext()) |
| { |
| T obj = iter.next(); |
| |
| if (selector.match(obj)) |
| { |
| col.add(obj); |
| } |
| } |
| |
| return col; |
| } |
| } |
| |
| public Iterator<T> iterator() |
| { |
| return getMatches(null).iterator(); |
| } |
| } |