package com.airlock.iam.common.domain.model.encoder;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

public final class ValueMapStringEncoder implements ValueMapEncoder {
   private final Function<String, String> stringTransformer;

   @Override
   public Map<String, Object> encodeValues(Map<String, Object> values) {
      return values.entrySet().stream().collect(HashMap::new, (m, e) -> m.put(e.getKey(), this.sanitizeEntryValue(e.getValue())), Map::putAll);
   }

   private Object sanitizeEntryValue(Object value) {
      return value instanceof String stringValue ? this.stringTransformer.apply(stringValue) : value;
   }

   @SuppressFBWarnings(justification = "generated code")
   public ValueMapStringEncoder(Function<String, String> stringTransformer) {
      this.stringTransformer = stringTransformer;
   }
}
