summaryrefslogtreecommitdiffstats
path: root/dcaedt_catalog/commons/src/main/java/org/onap/sdc/dcae/catalog/commons/MapBuilder.java
diff options
context:
space:
mode:
authorStone, Avi (as206k) <as206k@att.com>2018-04-12 15:46:31 +0300
committerStone, Avi (as206k) <as206k@att.com>2018-04-12 15:49:38 +0300
commit5032434b101f25fa44d2e1f8dc8393e30af1ed4f (patch)
tree2dc7d37a8048e025c7412af080640da4c9a22b65 /dcaedt_catalog/commons/src/main/java/org/onap/sdc/dcae/catalog/commons/MapBuilder.java
parent2205633792f95f46a02bbf8f87f0c2637265d924 (diff)
DCAE-D be initial commit
DCAE-D be initial commit Issue-ID: SDC-1218 Change-Id: Id18ba96c499e785aa9ac395fbaf32d57f08c281b Signed-off-by: Stone, Avi (as206k) <as206k@att.com>
Diffstat (limited to 'dcaedt_catalog/commons/src/main/java/org/onap/sdc/dcae/catalog/commons/MapBuilder.java')
-rw-r--r--dcaedt_catalog/commons/src/main/java/org/onap/sdc/dcae/catalog/commons/MapBuilder.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/dcaedt_catalog/commons/src/main/java/org/onap/sdc/dcae/catalog/commons/MapBuilder.java b/dcaedt_catalog/commons/src/main/java/org/onap/sdc/dcae/catalog/commons/MapBuilder.java
new file mode 100644
index 0000000..3aa2a56
--- /dev/null
+++ b/dcaedt_catalog/commons/src/main/java/org/onap/sdc/dcae/catalog/commons/MapBuilder.java
@@ -0,0 +1,80 @@
+package org.onap.sdc.dcae.catalog.commons;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.function.Function;
+
+import org.onap.sdc.dcae.catalog.commons.MapBuilder;
+
+import java.util.function.BiFunction;
+
+public class MapBuilder<K,V> {
+
+ private Map<K,V> map;
+
+ public MapBuilder() {
+ this.map = new HashMap<K,V>();
+ }
+
+ public boolean isEmpty() {
+ return this.map.isEmpty();
+ }
+
+ public MapBuilder<K,V> put(K theKey, V theValue) {
+ this.map.put(theKey, theValue);
+ return this;
+ }
+
+ public MapBuilder<K,V> putOpt(K theKey, V theValue) {
+ if (theValue != null) {
+ this.map.put(theKey, theValue);
+ }
+ return this;
+ }
+
+ public MapBuilder<K,V> put(final Map.Entry<? extends K, ? extends V> theEntry) {
+ this.map.put(theEntry.getKey(), theEntry.getValue());
+ return this;
+ }
+
+ public MapBuilder<K,V> putOpt(final Map.Entry<? extends K, ? extends V> theEntry) {
+ if (theEntry != null) {
+ this.map.put(theEntry.getKey(), theEntry.getValue());
+ }
+ return this;
+ }
+
+ public MapBuilder<K,V> putAll(final Iterable<? extends Map.Entry<? extends K, ? extends V>> theEntries) {
+ for (final Map.Entry<? extends K, ? extends V> e : theEntries) {
+ this.map.put(e.getKey(), e.getValue());
+ }
+ return this;
+ }
+
+ /* If theEntries contains multiple entries with the same key then the key gets a suffix in order to make it unique
+ .. */
+// public MapBuilder forceAll(final Iterable<? extends Map.Entry<? extends K, ? extends V>> theEntries,
+ public MapBuilder<K,V> forceAll(final Iterable<? extends Map.Entry<K, V>> theEntries,
+ Function<Map.Entry<K, V> , K> rekeyFunction) {
+ for (final Map.Entry<? extends K, ? extends V> e : theEntries) {
+ K key = e.getKey();
+ if (this.map.containsKey(key))
+ key = rekeyFunction.apply((Map.Entry<K,V>)e);
+ this.map.put(key, e.getValue());
+ }
+ return this;
+ }
+
+ public MapBuilder<K,V> putAll(final Map<? extends K, ? extends V> theMap) {
+ this.map.putAll(theMap);
+ return this;
+ }
+
+ public Map<K,V> build() {
+ return this.map;
+ }
+
+ public Map<K,V> buildOpt() {
+ return this.map.isEmpty() ? null : this.map;
+ }
+}