StorageBase class. @param the generic type @author Forge @version $Id: StorageBase.java 13590 2012-01-27 20:46:27Z Max mtg $
| 36 | * @version $Id: StorageBase.java 13590 2012-01-27 20:46:27Z Max mtg $ |
| 37 | */ |
| 38 | public class StorageBase<T> implements IStorage<T> { |
| 39 | protected final Map<String, T> map; |
| 40 | |
| 41 | public final static StorageBase<?> emptyMap = new StorageBase<>("Empty", null, new HashMap<>()); |
| 42 | public final String name, fullPath; |
| 43 | |
| 44 | public StorageBase(final String name0, final IItemReader<T> io) { |
| 45 | this(name0, io.getFullPath(), io.readAll()); |
| 46 | } |
| 47 | |
| 48 | public StorageBase(final String name0, final String fullPath0, final Map<String, T> map0) { |
| 49 | name = name0; |
| 50 | fullPath = fullPath0; |
| 51 | map = map0; |
| 52 | } |
| 53 | |
| 54 | @Override |
| 55 | public T get(final String name) { |
| 56 | return map.get(name); |
| 57 | } |
| 58 | |
| 59 | @Override |
| 60 | public final Collection<String> getItemNames() { |
| 61 | return new ArrayList<>(map.keySet()); |
| 62 | } |
| 63 | |
| 64 | @Override |
| 65 | public Iterator<T> iterator() { |
| 66 | return map.values().iterator(); |
| 67 | } |
| 68 | |
| 69 | @Override |
| 70 | public Stream<T> stream() { |
| 71 | return map.values().stream(); |
| 72 | } |
| 73 | |
| 74 | @Override |
| 75 | public boolean contains(String name) { |
| 76 | return name != null && map.containsKey(name); |
| 77 | } |
| 78 | |
| 79 | @Override |
| 80 | public int size() { |
| 81 | return map.size(); |
| 82 | } |
| 83 | |
| 84 | @Override |
| 85 | public T find(Predicate<T> condition) { |
| 86 | return IterableUtil.tryFind(map.values(), condition).orElse(null); |
| 87 | } |
| 88 | |
| 89 | @Override |
| 90 | public void add(String name, T item) { |
| 91 | throw new UnsupportedOperationException("This is a read-only storage"); |
| 92 | } |
| 93 | |
| 94 | @Override |
| 95 | public void add(T item) { |
nothing calls this directly
no outgoing calls
no test coverage detected