
kr.jm.metric.config.mutator.field.FieldMeta Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jm-metric Show documentation
Show all versions of jm-metric Show documentation
FieldMap Transformer From Various Formatted Data
package kr.jm.metric.config.mutator.field;
import kr.jm.utils.datastructure.JMMap;
import kr.jm.utils.exception.JMExceptionManager;
import kr.jm.utils.helper.JMOptional;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@Slf4j
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class FieldMeta {
@Getter
protected Map unit;
private Map fieldMetaMap;
public FieldMeta(Map unit) {
this.unit = unit;
}
synchronized public Map extractFieldMetaMap() {
return Objects.requireNonNullElseGet(this.fieldMetaMap,
() -> this.fieldMetaMap = buildFlatMap(new HashMap<>()));
}
private Map buildFlatMap(Map flatMap) {
buildFlatMap(flatMap, "unit", unit);
return flatMap;
}
private void buildFlatMap(Map flatMap,
String field, Map nestedMap) {
JMOptional.getOptional(nestedMap).map(map -> removedNullMap(field, map))
.ifPresent(map -> flatMap.put(field, map));
}
private Map removedNullMap(String field, Map map) {
return JMMap.newFilteredChangedValueWithEntryMap(map, entry ->
checkNull(field, entry.getKey(), entry.getValue()),
Map.Entry::getValue);
}
private boolean checkNull(String field, String key, Object value) {
return Objects.nonNull(value) || JMExceptionManager
.handleExceptionAndReturnFalse(log,
new NullPointerException("value"), "checkNull", field,
key, null);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy