package org.opendolphin.demo.data; public class FirstNameGenerator extends AbstractValueGenerator<String> { private static final String[] FIRST_PREFIX = { "Al", "An", "Ben", "Bo", "Chris", "Det", "Di", "El", "Hei", "How", "Isa", "Mo", "O", "Re", "Sam", "Su", "Tor", "U", "Wen", "Y", "Zo" }; private static final String[] FIRST_SUFFIX = { "ard", "bel", "di", "dy", "dres", "erk", "et", "ja", "ke", "lef", "mo", "na", "ni", "san", "son", "sten", "ti", "ton", "toph", "ris", "wa", "we" }; private static final String[] SECOND_PREFIX = { "An", "Ben", "Bo", "De", "Di", "Ed", "El", "Fred", "Mo", "Sam", "Su" }; private static final String[] SECOND_SUFFIX = { "a", "e", "er", "gar", "ke", "la", "o", "on", "ra", "te", "us" }; private static final String[] INITIALS = { "A.", "B.", "C.", "D.", "E.", "F.", "G.", "H.", "I.", "J.", "K.", "L.", "M.", "N.", "O.", "P.", "Q.", "R.", "S.", "T.", "U.", "V.", "W.", "X.", "Y.", "Z." }; public String randomValue() { StringBuilder builder = new StringBuilder(); boolean useFirstPrefix = getRandomBoolean(0.8); if (useFirstPrefix) { builder.append(getRandomString(FIRST_PREFIX)); } boolean useFirstSuffix = useFirstPrefix && getRandomBoolean(0.5); if (useFirstSuffix) { builder.append(getRandomString(FIRST_SUFFIX)); } boolean useSecondPrefix = getRandomBoolean(0.4); if (useSecondPrefix) { String secondPrefix = getRandomString(SECOND_PREFIX); if (useFirstPrefix) { secondPrefix = secondPrefix.toLowerCase(); } builder.append(secondPrefix); } boolean prefixUsed = useFirstPrefix || useSecondPrefix; boolean useSecondSuffix = prefixUsed && getRandomBoolean(0.5); if (useSecondSuffix) { builder.append(getRandomString(SECOND_SUFFIX)); } boolean useInitials = !prefixUsed || getRandomBoolean(0.2); if (useInitials) { if (prefixUsed) { builder.append(" "); } builder.append(getRandomString(INITIALS)); } return builder.toString(); } public static void main(String[] args) { FirstNameGenerator generator = new FirstNameGenerator(); for (int i = 0; i < 100; i++) { for (int j = 0; j < 20; j++) { System.out.print(generator.randomValue() + ", "); } System.out.println(); } System.out.println("FirstName: " + FIRST_PREFIX.length * SECOND_PREFIX.length * FIRST_SUFFIX.length * SECOND_SUFFIX.length * INITIALS.length + " variations possible"); } }