package com.codepoetics.octarine.records;
import java.util.HashSet;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
public class KeySet implements BiConsumer<Record, Consumer<String>> {
private final Set<Key<?>> keys = new HashSet<>();
public <T, K extends Key<T>> K add(K key) {
keys.add(key);
return key;
}
@Override
public void accept(Record record, Consumer<String> validationErrors) {
Set<Key<?>> keysInRecord = record.values().keySet();
keys.stream().filter(key -> !keysInRecord.contains(key)).forEach(key -> {
validationErrors.accept(String.format("Missing key \"%s\"", key.name()));
});
}
}