package com.qianwen.core.tool.metadata; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.function.Supplier; import java.util.stream.Collectors; import lombok.NonNull; import org.apache.commons.collections4.MapUtils; import com.qianwen.core.tool.utils.BeanUtil; /* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/metadata/SimpleValues.class */ public class SimpleValues implements Values { @NonNull private final Map values; private SimpleValues(@NonNull final Map values) { if (values == null) { throw new NullPointerException("values is marked non-null but is null"); } this.values = values; } public static SimpleValues of(@NonNull final Map values) { return new SimpleValues(values); } @Override // org.springblade.core.tool.metadata.Values public Map getAllValues() { return new HashMap<>(this.values); } @Override // org.springblade.core.tool.metadata.Values public Optional getValue(String key) { return Optional.ofNullable(key) .map(this.values::get) .map(Value::simple); } @Override // org.springblade.core.tool.metadata.Values public Values merge(Values source) { Map merged = new HashMap<>(); merged.putAll(this.values); merged.putAll(source.getAllValues()); return Values.of(merged); } @Override // org.springblade.core.tool.metadata.Values public int size() { return this.values.size(); } @Override // org.springblade.core.tool.metadata.Values public Set getNonExistentKeys(Collection keys) { return (Set) keys.stream().filter(has -> { return !this.values.containsKey(has); }).collect(Collectors.toSet()); } @Override // org.springblade.core.tool.metadata.Values public String getString(String key, Supplier defaultValue) { if (MapUtils.isEmpty(this.values)) { return defaultValue.get(); } Object val = this.values.get(key); if (val == null) { return defaultValue.get(); } return String.valueOf(val); } @Override // org.springblade.core.tool.metadata.Values public Number getNumber(String key, Supplier defaultValue) { if (MapUtils.isEmpty(this.values)) { return defaultValue.get(); } Object val = this.values.get(key); if (val == null) { return defaultValue.get(); } if (val instanceof Number) { return (Number) val; } return (Number) BeanUtil.copyWithConvert(val, Number.class); } }