All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.wizzie.normalizer.funcs.impl.ReplaceMapper Maven / Gradle / Ivy

package io.wizzie.normalizer.funcs.impl;

import io.wizzie.metrics.MetricsManager;
import io.wizzie.normalizer.funcs.MapperFunction;
import org.apache.kafka.streams.KeyValue;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static com.cookingfox.guava_preconditions.Preconditions.checkNotNull;

public class ReplaceMapper extends MapperFunction {

    List> replacements;
    Map> replacementsMap = new HashMap<>();


    @Override
    public void prepare(Map properties, MetricsManager metricsManager) {
        replacements = checkNotNull((List>) properties.get("replacements"), "replacements cannot be null");

        for (Map entry : replacements) {
            String dimension = (String) entry.get("dimension");
            List> replaceValues = (List>) entry.get("replacements");
            Map valuesToReplace = new HashMap<>();
            for (Map replaceEntry : replaceValues) {
                valuesToReplace.put(replaceEntry.get("from"), replaceEntry.get("to"));
            }
            replacementsMap.put(dimension, valuesToReplace);
        }
        for (Map.Entry replacementsMapEntry : replacementsMap.entrySet()) {
            checkNotNull(replacementsMapEntry.getKey());
            checkNotNull(replacementsMapEntry.getValue());
        }
    }

    @Override
    public KeyValue> process(String key, Map value) {

        if (value != null) {
            for (Map.Entry> replacement : replacementsMap.entrySet()) {
                Object valueToReplace = value.get(replacement.getKey());
                for (Map.Entry newValue : replacement.getValue().entrySet()) {
                    if ((newValue.getKey() == null && valueToReplace == null) || (newValue.getKey() != null && newValue.getKey().equals(valueToReplace)))
                        value.put(replacement.getKey(), newValue.getValue());
                }
            }
            return new KeyValue<>(key, value);
        } else {
            return new KeyValue<>(key, null);
        }
    }

    @Override
    public void stop() {

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy