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<String, Object> values;
|
|
private SimpleValues(@NonNull final Map<String, Object> 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<String, Object> values) {
|
return new SimpleValues(values);
|
}
|
|
@Override // org.springblade.core.tool.metadata.Values
|
public Map<String, Object> getAllValues() {
|
return new HashMap<>(this.values);
|
}
|
|
@Override // org.springblade.core.tool.metadata.Values
|
public Optional<Value> getValue(String key) {
|
|
|
return
|
Optional.<String>ofNullable(key)
|
.map(this.values::get)
|
.map(Value::simple);
|
}
|
|
@Override // org.springblade.core.tool.metadata.Values
|
public Values merge(Values source) {
|
Map<String, Object> 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<String> getNonExistentKeys(Collection<String> 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<String> 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<Number> 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);
|
}
|
}
|