001package de.cuioss.test.generator.domain;
002
003import de.cuioss.test.generator.TypedGenerator;
004
005/**
006 * Creates arbitrary {@link Person} objects
007 *
008 * @author Oliver Wolff
009 *
010 */
011public class PersonGenerator implements TypedGenerator<Person> {
012
013    private final TypedGenerator<String> firstNames = NameGenerators.FIRSTNAMES_ANY_ENGLISH.generator();
014    private final TypedGenerator<String> familyNames = NameGenerators.FAMILY_NAMES_ENGLISH.generator();
015    private final TypedGenerator<String> organizations = OrganizationNameGenerator.READABLE.generator();
016    private final TypedGenerator<String> titles = TitleGenerator.READABLE.generator();
017
018    @Override
019    public Person next() {
020        final var firstname = firstNames.next();
021        final var lastname = familyNames.next();
022        return Person.builder().email(EmailGenerator.createEmail(firstname, lastname)).firstname(firstname)
023                .lastname(lastname).organisation(organizations.next()).title(titles.next()).build();
024    }
025
026}