package org.opendolphin.demo.data;
public class LastNameGenerator extends AbstractValueGenerator<String> {
private static final String[] TITLE = {
"de ", "van ", "von ", "Mc", "Mac", "O'"
};
private static final String[] FIRST_PREFIX = {
"A", "Al", "Ben", "Ca", "Co", "De", "E", "El", "Fa", "Fur", "Gar", "Go", "Gut",
"He", "Lo", "In", "Ke", "Koe", "Mul", "New", "O", "Schwarz", "Rav", "U", "Za", "Zo"
};
private static final String[] FIRST_SUFFIX = {
"bel", "bi", "by", "del", "e", "en", "el", "le", "lis", "i",
"men", "mi", "nig", "om", "pen", "ro", "ru", "u", "von"
};
private static final String[] SECOND_PREFIX = {
"Berg", "Brend", "Egg", "Fell", "Flint", "Fred", "Gel", "Gold", "Holz", "I",
"King", "Lipp", "Port", "Ray", "Rock", "Smith", "Tar", "Tomb", "Wind"
};
private static final String[] SECOND_SUFFIX = {
"del", "e", "en", "er", "el", "le", "man", "sen", "son", "sor", "stone", "ter", "ton", "tosh"
};
public String randomValue() {
StringBuilder builder = new StringBuilder();
boolean useTitle = getRandomBoolean(0.1);
if (useTitle) {
builder.append(getRandomString(TITLE));
}
boolean useFirstPrefix = getRandomBoolean(0.8);
if (useFirstPrefix) {
builder.append(getRandomString(FIRST_PREFIX));
}
boolean useFirstSuffix = useFirstPrefix && getRandomBoolean(0.8);
if (useFirstSuffix) {
String baseName = getRandomString(FIRST_SUFFIX);
builder.append(baseName);
}
boolean useSecondPrefix = !useFirstPrefix || getRandomBoolean(0.2);
if (useSecondPrefix) {
String secondPrefix = getRandomString(SECOND_PREFIX);
if (useFirstPrefix) {
secondPrefix = secondPrefix.toLowerCase();
}
builder.append(secondPrefix);
}
boolean useSecondSuffix = !useFirstSuffix || getRandomBoolean(0.2);
if (useSecondSuffix) {
builder.append(getRandomString(SECOND_SUFFIX));
}
return builder.toString();
}
public static void main(String[] args) {
LastNameGenerator generator = new LastNameGenerator();
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("LastName: " + TITLE.length * FIRST_PREFIX.length * FIRST_PREFIX.length * SECOND_PREFIX.length * SECOND_SUFFIX.length + " variations possible");
}
}