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

uk.co.caeldev.builder4test.RandomListBuilder Maven / Gradle / Ivy

package uk.co.caeldev.builder4test;

import uk.org.fyodor.generators.Generator;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class RandomListBuilder {

    private final int size;
    private final Creator creator;
    private final Map generators;
    private final Map values;

    private RandomListBuilder(int size, Creator creator) {
        this.size = size;
        this.creator = creator;
        values = new HashMap<>();
        generators = new HashMap<>();

    }

    public static  RandomListBuilder randomListBuilder(int size, Creator creator) {
        return new RandomListBuilder<>(size, creator);
    }

    public  RandomListBuilder override(Field field, Generator generator) {
        generators.put(field, generator);
        return this;
    }

    public  RandomListBuilder override(Field field, U value) {
        values.put(field, Optional.of(value));
        return this;
    }

    public List get() {
        LookUp lookUp = new RandomLookUp(values, generators);
        return IntStream.rangeClosed(1, size)
                .mapToObj(it -> EntityBuilder.entityBuilder(creator, lookUp).get())
                .collect(Collectors.toList());
    }
}