001package de.cuioss.test.generator.domain;
002
003import static de.cuioss.test.generator.Generators.fixedValues;
004
005import java.util.ArrayList;
006import java.util.List;
007
008import de.cuioss.test.generator.TypedGenerator;
009import de.cuioss.test.generator.internal.net.java.quickcheck.generator.PrimitiveGenerators;
010import de.cuioss.tools.string.Joiner;
011
012/**
013 * Provides Subjects for messages
014 *
015 * @author Oliver Wolff
016 *
017 */
018public class MailSubjectGenerator implements TypedGenerator<String> {
019
020    private final TypedGenerator<String> prefixes = fixedValues("Re:", "Fw:", "Answ:", "Yep:");
021    private final TypedGenerator<String> contents =
022        fixedValues("Hello", "Patient", "Document", "Record", "Yes", "No", "unknown", "Disease",
023                "Hospital", "Doctor", "Healthy", "Not seen", "Referral", "Message", "Injury", "See Also",
024                "Payment", "Registration", "Physician");
025
026    @Override
027    public String next() {
028        final List<String> elements = new ArrayList<>();
029        for (var i = 0; i < PrimitiveGenerators.integers(0, 3).next(); i++) {
030            elements.add(prefixes.next());
031        }
032        for (var i = 0; i < PrimitiveGenerators.integers(0, 7).next(); i++) {
033            elements.add(contents.next());
034        }
035        return Joiner.on(' ').join(elements);
036    }
037
038}