summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/funcdata/ExtendedMap.java
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2020-04-12 13:11:11 -0400
committerBen Culkin <scorpress@gmail.com>2020-04-12 13:11:11 -0400
commit3819027f642df549622c478331391ad3a25a9c4f (patch)
treeb1bec757c149bf3f82ce9658e71f30c300d419f6 /base/src/main/java/bjc/utils/funcdata/ExtendedMap.java
parent780a3da69b66921fb7bf7b5779fb44830bb45ddc (diff)
Finish esodata extraction
Finished extracting the old version of esodata, and fixed all the local issues
Diffstat (limited to 'base/src/main/java/bjc/utils/funcdata/ExtendedMap.java')
-rw-r--r--base/src/main/java/bjc/utils/funcdata/ExtendedMap.java149
1 files changed, 0 insertions, 149 deletions
diff --git a/base/src/main/java/bjc/utils/funcdata/ExtendedMap.java b/base/src/main/java/bjc/utils/funcdata/ExtendedMap.java
deleted file mode 100644
index a2ace67..0000000
--- a/base/src/main/java/bjc/utils/funcdata/ExtendedMap.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package bjc.utils.funcdata;
-
-import java.util.function.BiConsumer;
-import java.util.function.Consumer;
-import java.util.function.Function;
-
-import bjc.utils.funcutils.ListUtils;
-
-/**
- * An extended version of a map, that stores values into a map, but can look
- * into a different one for others.
- *
- * @author Ben Culkin
- *
- * @param <KeyType>
- * The type of the keys of the map.
- *
- * @param <ValueType>
- * The type of the values of the map.
- */
-class ExtendedMap<KeyType, ValueType> implements IMap<KeyType, ValueType> {
- /* The map we delegate lookups to. */
- private final IMap<KeyType, ValueType> delegate;
- /* The map we store things in. */
- private final IMap<KeyType, ValueType> store;
-
- /**
- * Create a new extended map.
- *
- * @param delegate
- * The map to lookup things in.
- *
- * @param store
- * The map to store things in.
- */
- public ExtendedMap(final IMap<KeyType, ValueType> delegate, final IMap<KeyType, ValueType> store) {
- this.delegate = delegate;
- this.store = store;
- }
-
- @Override
- public void clear() {
- store.clear();
- }
-
- @Override
- public boolean containsKey(final KeyType key) {
- if(store.containsKey(key)) return true;
-
- return delegate.containsKey(key);
- }
-
- @Override
- public IMap<KeyType, ValueType> extend() {
- return new ExtendedMap<>(this, new FunctionalMap<>());
- }
-
- @Override
- public void forEach(final BiConsumer<KeyType, ValueType> action) {
- store.forEach(action);
-
- delegate.forEach(action);
- }
-
- @Override
- public void forEachKey(final Consumer<KeyType> action) {
- store.forEachKey(action);
-
- delegate.forEachKey(action);
- }
-
- @Override
- public void forEachValue(final Consumer<ValueType> action) {
- store.forEachValue(action);
-
- delegate.forEachValue(action);
- }
-
- @Override
- public ValueType get(final KeyType key) {
- if(store.containsKey(key)) return store.get(key);
-
- return delegate.get(key);
- }
-
- @Override
- public int size() {
- return store.size() + delegate.size();
- }
-
- @Override
- public IList<KeyType> keyList() {
- return ListUtils.mergeLists(store.keyList(), delegate.keyList());
- }
-
- @Override
- public <MappedValue> IMap<KeyType, MappedValue> transform(final Function<ValueType, MappedValue> transformer) {
- return new TransformedValueMap<>(this, transformer);
- }
-
- @Override
- public ValueType put(final KeyType key, final ValueType val) {
- return store.put(key, val);
- }
-
- @Override
- public ValueType remove(final KeyType key) {
- if(!store.containsKey(key)) return delegate.remove(key);
-
- return store.remove(key);
- }
-
- @Override
- public IList<ValueType> valueList() {
- return ListUtils.mergeLists(store.valueList(), delegate.valueList());
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + (delegate == null ? 0 : delegate.hashCode());
- result = prime * result + (store == null ? 0 : store.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if(this == obj) return true;
- if(obj == null) return false;
- if(!(obj instanceof ExtendedMap)) return false;
-
- final ExtendedMap<?, ?> other = (ExtendedMap<?, ?>) obj;
-
- if(delegate == null) {
- if(other.delegate != null) return false;
- } else if(!delegate.equals(other.delegate)) return false;
- if(store == null) {
- if(other.store != null) return false;
- } else if(!store.equals(other.store)) return false;
-
- return true;
- }
-
- @Override
- public String toString() {
- return String.format("ExtendedMap [delegate=%s, store=%s]", delegate, store);
- }
-}