package org.opendolphin.demo.data; public class CityNameGenerator extends AbstractValueGenerator<String> { private static final String[] PREFIXES = { "North", "South", "West", "East", "Upper", "Lower", "Middle", "New", "Old", "Free", "Little" }; private static final String[] BASE_NAMES = { "Ab", "Al", "Ash", "Ax", "Bark", "Barn", "Bed", "Bell", "Bright", "Bu", "Castle", "Co", "Dam", "Dol", "Ed", "Elm", "Ever", "Farm", "Field", "Fish", "Ful", "Goth", "Hamp", "Hill", "Ice", "Is", "Ken", "Knight", "Lo", "Lon", "Min", "Nor", "Or", "Os", "Pel", "Prince", "Red", "River", "Rich", "Rose", "Sea", "Stone", "Swamp", "Tall", "Tin", "Tri", "Up", "Val", "Van", "Well", "Wind", "York", "Zip", "Zo" }; private static final String[] FILLERS = { "ing", "sing", "er", "y", "ham" }; private static final String[] SUFFIXES = { "ford", "town", "ton", "dale", "ster", "borough", "burg", "shire", "port", "bridge", "mont", "ley", "bury", "by" }; public String randomValue() { StringBuilder builder = new StringBuilder(); boolean usePrefix = getRandomBoolean(0.5); if (usePrefix) { builder.append(getRandomString(PREFIXES)); } boolean useBase = !usePrefix || getRandomBoolean(0.5); if (useBase) { boolean useSeparator = usePrefix && getRandomBoolean(0.5); if (useSeparator) { builder.append(" "); } String baseName = getRandomString(BASE_NAMES); if (usePrefix && !useSeparator) { baseName = baseName.toLowerCase(); } builder.append(baseName); } boolean useFiller = getRandomBoolean(0.3); if (useFiller) { builder.append(getRandomString(FILLERS)); } boolean useSuffix = !useFiller || getRandomBoolean(0.5); if (useSuffix) { builder.append(getRandomString(SUFFIXES)); } return builder.toString(); } public static void main(String[] args) { CityNameGenerator generator = new CityNameGenerator(); for (int i = 1000; i < 2000; i++) { for (int j = 0; j < 10; j++) { System.out.print(i + " " + generator.randomValue() + ", "); } System.out.println(); } System.out.println("CityName: " + PREFIXES.length * BASE_NAMES.length * FILLERS.length * SUFFIXES.length + " variations possible"); } }