diff --git a/.gitignore b/.gitignore index 885bff8..47d33b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,17 @@ -# binar -target/* +# Eclipse +.classpath .project -.settings .classpath/target -.classpath \ No newline at end of file +.settings/ + +# Intellij +.idea/ +*.iml +*.iws + +# Mac +.DS_Store + +# Maven +log/ +target/ \ No newline at end of file diff --git a/pom.xml b/pom.xml index feb85cc..ddd2a5f 100644 --- a/pom.xml +++ b/pom.xml @@ -1,99 +1,139 @@ - 4.0.0 - org.fluttercode.datafactory - datafactory - 0.9-SNAPSHOT - DataFactory - Library to generate data for testing - - - org.sonatype.oss - oss-parent - 3 - - - http://www.andygibson.net/blog/projects/ - - - - Andy Gibson - - Developer - - contact@andygibson.net - www.andygibson.net - - - - - - LGPL Version 3 - http://www.gnu.org/licenses/lgpl-3.0.txt - repo - - - - - - scm:git:git://github.com/andygibson/datafactory.git - scm:git:git://github.com/andygibson/datafactory - scm:git:git@github.com:andygibson/datafactory.git - - - - - junit - junit - 4.8.2 - jar - test - - - - - - org.apache.maven.plugins - maven-release-plugin - 2.0 - - forked-path - true - - - - - org.apache.maven.plugins - maven-install-plugin - 2.3.1 - - - - org.apache.maven.plugins - maven-resources-plugin - 2.4.3 - - - - org.apache.maven.plugins - maven-deploy-plugin - 2.5 - - - - - org.apache.maven.plugins - - maven-compiler-plugin - 2.0.2 - - 1.5 - 1.5 - - - - - - - - \ No newline at end of file + 4.0.0 + org.fluttercode.datafactory + datafactory + 0.10-SNAPSHOT + + + 1.6.5 + + + DataFactory + Library to generate data for testing + http://lnkd.in/Kre-kR + + + + Andy Gibson + + Developer + + contact@andygibson.net + www.andygibson.net + + + Bart Van Bos + + Developer + + bartvanbos@allbits.org + http://lnkd.in/Kre-kR + + + + + + LGPL Version 3 + http://www.gnu.org/licenses/lgpl-3.0.txt + repo + + + + + scm:git:git://github.com/boeboe/datafactory.git + scm:git:git://github.com/boeboe/datafactory + scm:git:git@github.com:boeboe/datafactory.git + datafactory-0.9 + + + + + junit + junit + 4.11 + jar + test + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5 + + forked-path + true + + + + + org.apache.maven.plugins + maven-install-plugin + 2.5.2 + + + + org.apache.maven.plugins + maven-resources-plugin + 2.6 + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.5 + 1.5 + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + + org.sonatype.plugins + nexus-staging-maven-plugin + ${nexus.version} + + + default-deploy + deploy + + deploy + + + + + nexus-allbits + http://nexus.allbits.org:8081/nexus/content/repositories/releases/ + true + + + + + + + + nexus-allbits + Internal Releases + http://nexus.allbits.org:8081/nexus/content/repositories/releases/ + + + nexus-allbits + Internal Snapshots + http://nexus.allbits.org:8081/nexus/content/repositories/snapshots/ + + + diff --git a/readme.txt b/readme.txt index 0474624..d773770 100644 --- a/readme.txt +++ b/readme.txt @@ -1 +1,2 @@ -Java library for creating test data \ No newline at end of file +Java library for creating test data + diff --git a/src/main/java/org/fluttercode/datafactory/AddressDataValues.java b/src/main/java/org/fluttercode/datafactory/AddressDataValues.java index 3a7b9f3..d1becde 100644 --- a/src/main/java/org/fluttercode/datafactory/AddressDataValues.java +++ b/src/main/java/org/fluttercode/datafactory/AddressDataValues.java @@ -23,23 +23,47 @@ * */ - public interface AddressDataValues { - - /** - * @return Array of street address - */ - String[] getStreetNames(); - - /** - * @return Array of cities - */ - String[] getCities(); - - /** - * Returns a list of address suffixes such as "Lane", "Drive","Parkway" - * @return Array of address suffixes - */ - String[] getAddressSuffixes(); + /** + * Returns an array of street addresses. + * + * @return array of street addresses + */ + String[] getStreetNames(); + + /** + * Returns an array of cities. + * + * @return array of cities + */ + String[] getCities(); + + /** + * Returns an array of address suffixes such as "Lane", "Drive", "Parkway". + * + * @return array of address suffixes + */ + String[] getAddressSuffixes(); + + /** + * Returns an array of countries. + * + * @return array of countries + */ + String[] getCountries(); + + /** + * Returns an array of country abbreviations. + * + * @return array of country abbreviations + */ + String[] getCountriesShort(); + + /** + * Returns an array of nationalities. + * + * @return array of nationalities + */ + String[] getNationalities(); } diff --git a/src/main/java/org/fluttercode/datafactory/ContentDataValues.java b/src/main/java/org/fluttercode/datafactory/ContentDataValues.java index 8591347..78f77fb 100644 --- a/src/main/java/org/fluttercode/datafactory/ContentDataValues.java +++ b/src/main/java/org/fluttercode/datafactory/ContentDataValues.java @@ -25,11 +25,13 @@ public interface ContentDataValues { - String[] getWords(); + String[] getWords(); - String[] getBusinessTypes(); + String[] getBusinessTypes(); - String[] getEmailHosts(); + String[] getEmailHosts(); - String[] getTlds(); + String[] getTlds(); + + String[] getOccupations(); } diff --git a/src/main/java/org/fluttercode/datafactory/NameDataValues.java b/src/main/java/org/fluttercode/datafactory/NameDataValues.java index 7bed105..45f3396 100644 --- a/src/main/java/org/fluttercode/datafactory/NameDataValues.java +++ b/src/main/java/org/fluttercode/datafactory/NameDataValues.java @@ -23,12 +23,14 @@ * */ - public interface NameDataValues { - String[] getFirstNames(); - String[] getLastNames(); - String[] getPrefixes(); - String[] getSuffixes(); + String[] getFirstNames(); + + String[] getLastNames(); + + String[] getPrefixes(); + + String[] getSuffixes(); } diff --git a/src/main/java/org/fluttercode/datafactory/impl/DataFactory.java b/src/main/java/org/fluttercode/datafactory/impl/DataFactory.java index c9163b7..d156b6f 100644 --- a/src/main/java/org/fluttercode/datafactory/impl/DataFactory.java +++ b/src/main/java/org/fluttercode/datafactory/impl/DataFactory.java @@ -1,701 +1,718 @@ -package org.fluttercode.datafactory.impl; - -/* - * Copyright 2011, Andrew M Gibson - * - * www.andygibson.net - * - * This file is part of DataFactory. - * - * DataValve is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * DataValve is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * - * You should have received a copy of the GNU Lesser General Public License - * along with DataValve. If not, see . - * - */ - -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Properties; -import java.util.Random; - -import org.fluttercode.datafactory.AddressDataValues; -import org.fluttercode.datafactory.ContentDataValues; -import org.fluttercode.datafactory.NameDataValues; - -/** - * Class that provides a number of methods for generating test data through - * helper components. These components implement interfaces that provide an - * interface to accessing the test data. Components can be replaced with other - * components to allow more suitable data to be used. - * - * @author Andy Gibson - * - */ -/** - * @author GIBSOA01 - * - */ -public final class DataFactory { - - private static Random random = new Random(93285); - - private NameDataValues nameDataValues = new DefaultNameDataValues(); - private AddressDataValues addressDataValues = new DefaultAddressDataValues(); - private ContentDataValues contentDataValues = new DefaultContentDataValues(); - - /** - * Returns a random item from a list of items. - * - * @param - * Item type in the list and to return - * @param items - * List of items to choose from - * @return Item from the list - */ - public T getItem(List items) { - return getItem(items, 100, null); - } - - /** - * Returns a random item from a list of items or the null depending on the - * probability parameter. The probability determines the chance (in %) of - * returning an item off the list versus null. - * - * @param - * Item type in the list and to return - * @param items - * List of items to choose from - * @param probability - * chance (in %, 100 being guaranteed) of returning an item from - * the list - * @return Item from the list or null if the probability test fails. - */ - public T getItem(List items, int probability) { - return getItem(items, probability, null); - } - - /** - * Returns a random item from a list of items or the defaultItem depending - * on the probability parameter. The probability determines the chance (in - * %) of returning an item off the list versus the default value. - * - * @param - * Item type in the list and to return - * @param items - * List of items to choose from - * @param probability - * chance (in %, 100 being guaranteed) of returning an item from - * the list - * @param defaultItem - * value to return if the probability test fails - * @return Item from the list or the default value - */ - public T getItem(List items, int probability, T defaultItem) { - if (items == null) { - throw new IllegalArgumentException("Item list cannot be null"); - } - if (items.isEmpty()) { - throw new IllegalArgumentException("Item list cannot be empty"); - } - - return chance(probability) ? items.get(random.nextInt(items.size())) - : defaultItem; - } - - /** - * Returns a random item from an array of items - * - * @param - * Array item type and the type to return - * @param items - * Array of items to choose from - * @return Item from the array - */ - public T getItem(T[] items) { - return getItem(items, 100, null); - } - - /** - * Returns a random item from an array of items or null depending on the - * probability parameter. The probability determines the chance (in %) of - * returning an item from the array versus null. - * - * @param - * Array item type and the type to return - * @param items - * Array of items to choose from - * @param probability - * chance (in %, 100 being guaranteed) of returning an item from - * the array - * @return Item from the array or the default value - */ - public T getItem(T[] items, int probability) { - return getItem(items, probability, null); - } - - /** - * Returns a random item from an array of items or the defaultItem depending - * on the probability parameter. The probability determines the chance (in - * %) of returning an item from the array versus the default value. - * - * @param - * Array item type and the type to return - * @param items - * Array of items to choose from - * @param probability - * chance (in %, 100 being guaranteed) of returning an item from - * the array - * @param defaultItem - * value to return if the probability test fails - * @return Item from the array or the default value - */ - public T getItem(T[] items, int probability, T defaultItem) { - if (items == null) { - throw new IllegalArgumentException("Item array cannot be null"); - } - if (items.length == 0) { - throw new IllegalArgumentException("Item array cannot be empty"); - } - return chance(probability) ? items[random.nextInt(items.length)] - : defaultItem; - } - - /** - * @return A random first name - */ - public String getFirstName() { - return getItem(nameDataValues.getFirstNames()); - } - - /** - * Returns a combination of first and last name values in one string - * - * @return - */ - public String getName() { - return getItem(nameDataValues.getFirstNames()) + " " - + getItem(nameDataValues.getLastNames()); - } - - /** - * @return A random last name - */ - public String getLastName() { - return getItem(nameDataValues.getLastNames()); - } - - /** - * @return A random street name - */ - public String getStreetName() { - return getItem(addressDataValues.getStreetNames()); - } - - /** - * @return A random street suffix - */ - public String getStreetSuffix() { - return getItem(addressDataValues.getAddressSuffixes()); - } - - /** - * Generates a random city value - * - * @return City as a string - */ - public String getCity() { - return getItem(addressDataValues.getCities()); - } - - /** - * Generates an address value consisting of house number, street name and - * street suffix. i.e. 543 Larkhill Road - * - * @return Address as a string - */ - public String getAddress() { - int num = 404 + random.nextInt(1400); - return num + " " + getStreetName() + " " + getStreetSuffix(); - } - - /** - * Generates line 2 for a street address (usually an Apt. or Suite #). - * Returns null if the probabilty test fails. - * - * @param probability - * Chance as % of have a value returned instead of null. - * @return Street address line two or null if the probability test fails - */ - public String getAddressLine2(int probability) { - return getAddressLine2(probability, null); - } - - /** - * Generates line 2 for a street address (usually an Apt. or Suite #). - * Returns default value if the probabilty test fails. - * - * @param probability - * Chance as % of have a value returned instead of null. - * @param defaultValue - * Value to return if the probability test fails. - * @return Street address line two or null if the probability test fails - */ - public String getAddressLine2(int probability, String defaultValue) { - return chance(probability) ? getAddressLine2() : defaultValue; - } - - /** - * Generates line 2 for a street address (usually an Apt. or Suite #). - * Returns default value if the probabilty test fails. - * - * @return Street address line 2 - */ - public String getAddressLine2() { - int test = random.nextInt(100); - if (test < 50) { - return "Apt #" + 100 + random.nextInt(1000); - } else { - return "Suite #" + 100 + random.nextInt(1000); - } - } - - /** - * Creates a random birthdate within the range of 1955 to 1985 - * - * @return Date representing a birthdate - */ - public Date getBirthDate() { - Date base = new Date(0); - return getDate(base, -365 * 15, 365 * 15); - } - - /** - * Returns a random int value. - * - * @return random number - */ - public int getNumber() { - return getNumberBetween(Integer.MIN_VALUE, Integer.MAX_VALUE); - } - - /** - * Returns a random number between 0 and max - * - * @param max - * Maximum value of result - * @return random number no more than max - */ - public int getNumberUpTo(int max) { - return getNumberBetween(0, max); - } - - /** - * Returns a number betwen min and max - * - * @param min - * minimum value of result - * @param max - * maximum value of result - * @return Random number within range - */ - public int getNumberBetween(int min, int max) { - - if (max < min) { - throw new IllegalArgumentException(String.format( - "Minimum must be less than minimum (min=%d, max=%d)", min, - max)); - } - - return min + random.nextInt(max - min); - } - - /** - * Builds a date from the year, month, day values passed in - * - * @param year - * The year of the final {@link Date} result - * @param month - * The month of the final {@link Date} result (from 1-12) - * @param day - * The day of the final {@link Date} result - * @return Date representing the passed in values. - */ - public Date getDate(int year, int month, int day) { - Calendar cal = Calendar.getInstance(); - cal.clear(); - cal.set(year, month - 1, day, 0, 0, 0); - return cal.getTime(); - } - - /** - * Returns a random date which is in the range baseData + - * minDaysFromData to baseData + - * maxDaysFromData. This method does not alter the time - * component and the time is set to the time value of the base date. - * - * @param baseDate - * Date to start from - * @param minDaysFromDate - * minimum number of days from the baseDate the result can be - * @param maxDaysFromDate - * maximum number of days from the baseDate the result can be - * @return A random date - */ - public Date getDate(Date baseDate, int minDaysFromDate, int maxDaysFromDate) { - Calendar cal = Calendar.getInstance(); - cal.setTime(baseDate); - int diff = minDaysFromDate - + (random.nextInt(maxDaysFromDate - minDaysFromDate)); - cal.add(Calendar.DATE, diff); - return cal.getTime(); - } - - /** - * Returns a random date between two dates. This method will alter the time - * component of the dates - * - * @param minDate - * Minimum date that can be returned - * @param maxDate - * Maximum date that can be returned - * @return random date between these two dates. - */ - public Date getDateBetween(Date minDate, Date maxDate) { - // this can break if seconds is an int - long seconds = (maxDate.getTime() - minDate.getTime()) / 1000; - seconds = (long) (random.nextDouble() * seconds); - Date result = new Date(); - result.setTime(minDate.getTime() + (seconds * 1000)); - return result; - } - - /** - * Returns random text made up of english words of length - * length - * - * @param length - * length of returned string - * - * @return string made up of actual words with length length - */ - public String getRandomText(int length) { - return getRandomText(length, length); - } - - /** - * Returns random text made up of english words - * - * @param minLength - * minimum length of returned string - * @param maxLength - * maximum length of returned string - * @return string of length between min and max length - */ - public String getRandomText(int minLength, int maxLength) { - validateMinMaxParams(minLength, maxLength); - - StringBuilder sb = new StringBuilder(maxLength); - int length = minLength; - if (maxLength != minLength) { - length = length + random.nextInt(maxLength - minLength); - } - while (length > 0) { - if (sb.length() != 0) { - sb.append(" "); - length--; - } - String word = getRandomWord(length); - sb.append(word); - length = length - word.length(); - } - return sb.toString(); - - } - - private void validateMinMaxParams(int minLength, int maxLength) { - if (minLength < 0) { - throw new IllegalArgumentException( - "Minimum length must be a non-negative number"); - } - - if (maxLength < 0) { - throw new IllegalArgumentException( - "Maximum length must be a non-negative number"); - } - - if (maxLength < minLength) { - throw new IllegalArgumentException( - String.format( - "Minimum length must be less than maximum length (min=%d, max=%d)", - minLength, maxLength)); - } - } - - /** - * @return a random character - */ - public char getRandomChar() { - return (char) (random.nextInt(26) + 'a'); - } - - /** - * Return a string containing length random characters - * - * @param length - * number of characters to use in the string - * @return A string containing length random characters - */ - public String getRandomChars(int length) { - return getRandomChars(length, length); - } - - /** - * Return a string containing between length random characters - * - * @param length - * number of characters to use in the string - * @return A string containing length random characters - */ - public String getRandomChars(int minLength, int maxLength) { - validateMinMaxParams(minLength, maxLength); - StringBuilder sb = new StringBuilder(maxLength); - - int length = minLength; - if (maxLength != minLength) { - length = length + random.nextInt(maxLength - minLength); - } - while (length > 0) { - sb.append(getRandomChar()); - length--; - } - return sb.toString(); - } - - /** - * Returns a word of a length between 1 and 10 characters. - * - * @return A work of max length 10 - */ - public String getRandomWord() { - return getItem(contentDataValues.getWords()); - } - - /** - * Returns a valid word with a length of length - * characters. - * - * @param length - * maximum length of the word - * @return a word of a length up to length characters - */ - public String getRandomWord(int length) { - return getRandomWord(length, length); - } - - /** - * Returns a valid word with a length of up to length - * characters. If the exactLength parameter is set, then the - * word will be exactly length characters in length. - * - * @param length - * maximum length of the returned string - * @param exactLength - * indicates if the word should have a length of - * length - * @return a string with a length that matches the specified parameters. - */ - public String getRandomWord(int length, boolean exactLength) { - if (exactLength) { - return getRandomWord(length, length); - } - return getRandomWord(0, length); - } - - /** - * Returns a valid word based on the length range passed in. The length will - * always be between the min and max length range inclusive. - * - * @param minLength minimum length of the word - * @param maxLength maximum length of the word - * @return a word of a length between min and max length - */ - public String getRandomWord(int minLength, int maxLength) { - validateMinMaxParams(minLength, maxLength); - - // special case if we need a single char - if (maxLength == 1) { - if (chance(50)) { - return "a"; - } - return "I"; - } - - String value = null; - - // start from random pos and find the first word of the right size - String[] words = contentDataValues.getWords(); - int pos = random.nextInt(words.length); - for (int i = 0; i < words.length; i++) { - int idx = (i + pos) % words.length; - String test = words[idx]; - if (test.length() >= minLength && test.length() <= maxLength) { - return test; - } - } - // we haven't a word for this length so generate one - return getRandomChars(minLength, maxLength); - } - - /** - * - * @param chance - * Chance of a suffix being returned - * @return - */ - public String getSuffix(int chance) { - return getItem(nameDataValues.getSuffixes(), chance); - } - - /** - * Return a person prefix or null if the odds are too low. - * - * @param chance - * Odds of a prefix being returned - * @return Prefix string - */ - public String getPrefix(int chance) { - return getItem(nameDataValues.getPrefixes(), chance); - } - - /** - * Returns a string containing a set of numbers with a fixed number of - * digits - * - * @param digits - * number of digits in the final number - * @return Random number as a string with a fixed length - */ - public String getNumberText(int digits) { - String result = ""; - for (int i = 0; i < digits; i++) { - result = result + random.nextInt(10); - } - return result; - } - - /** - * Generates a random business name by taking a city name and additing a - * business onto it. - * - * @return A random business name - */ - public String getBusinessName() { - return getCity() + " " + getItem(contentDataValues.getBusinessTypes()); - } - - /** - * Generates an email address - * - * @return an email address - */ - public String getEmailAddress() { - int test = random.nextInt(100); - String email = ""; - if (test < 50) { - // name and initial - email = getFirstName().charAt(0) + getLastName(); - } else { - // 2 words - email = getItem(contentDataValues.getWords()) - + getItem(contentDataValues.getWords()); - } - if (random.nextInt(100) > 80) { - email = email + random.nextInt(100); - } - email = email + "@" + getItem(contentDataValues.getEmailHosts()) + "." - + getItem(contentDataValues.getTlds()); - return email.toLowerCase(); - } - - /** - * Gives you a true/false based on a probability with a random number - * generator. Can be used to optionally add elements. - * - *
-	 * if (DataFactory.chance(70)) {
-	 * 	// 70% chance of this code being executed
-	 * }
-	 * 
- * - * @param chance - * % chance of returning true - * @return - */ - public boolean chance(int chance) { - return random.nextInt(100) < chance; - } - - public NameDataValues getNameDataValues() { - return nameDataValues; - } - - /** - * Call randomize with a seed value to reset the random number generator. By - * using the same seed over different tests, you will should get the same - * results out for the same data generation calls. - * - * @param seed - * Seed value to use to generate random numbers - */ - public void randomize(int seed) { - random = new Random(seed); - } - - /** - * Set this to provide your own list of name data values by passing it a - * class that implements the {@link NameDataValues} interface which just - * returns the String arrays to use for the test data. - * - * @param nameDataValues - * Object holding the set of data values to use - */ - public void setNameDataValues(NameDataValues nameDataValues) { - this.nameDataValues = nameDataValues; - } - - /** - * Set this to provide your own list of address data values by passing it a - * class that implements the {@link AddressDataValues} interface which just - * returns the String arrays to use for the test data. - * - * @param addressDataValues - * Object holding the set of data values to use - */ - public void setAddressDataValues(AddressDataValues addressDataValues) { - this.addressDataValues = addressDataValues; - } - - /** - * Set this to provide your own list of content data values by passing it a - * class that implements the {@link ContentDataValues} interface which just - * returns the String arrays to use for the test data. - * - * @param contentDataValues - * Object holding the set of data values to use - */ - public void setContentDataValues(ContentDataValues contentDataValues) { - this.contentDataValues = contentDataValues; - } - -} +package org.fluttercode.datafactory.impl; + +/* + * Copyright 2011, Andrew M Gibson + * + * www.andygibson.net + * + * This file is part of DataFactory. + * + * DataValve is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * DataValve is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR a PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * + * You should have received a copy of the GNU Lesser General Public License + * along with DataValve. If not, see . + * + */ + +import org.fluttercode.datafactory.AddressDataValues; +import org.fluttercode.datafactory.ContentDataValues; +import org.fluttercode.datafactory.NameDataValues; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Random; + +/** + * Class that provides a number of methods for generating test data through + * helper components. These components implement interfaces that provide an + * interface to accessing the test data. Components can be replaced with other + * components to allow more suitable data to be used. + * + * @author Andy Gibson, Bart Van Bos + */ + +public final class DataFactory { + + private static Random random = new Random(93285); + + private NameDataValues nameDataValues = new DefaultNameDataValues(); + private AddressDataValues addressDataValues = new + DefaultAddressDataValues(); + private ContentDataValues contentDataValues = new + DefaultContentDataValues(); + + /** + * Returns a random item from a list of items. + * + * @param Item type in the list and to return + * @param items List of items to choose from + * @return Item from the list + */ + public T getItem(List items) { + return getItem(items, 100, null); + } + + /** + * Returns a random item from a list of items or the null depending on the + * probability parameter. The probability determines the chance (in %) of + * returning an item off the list versus null. + * + * @param Item type in the list and to return + * @param items List of items to choose from + * @param probability chance (in %, 100 being guaranteed) of returning an + * item from + * the list + * @return Item from the list or null if the probability test fails. + */ + public T getItem(List items, int probability) { + return getItem(items, probability, null); + } + + /** + * Returns a random item from a list of items or the defaultItem depending + * on the probability parameter. The probability determines the chance (in + * %) of returning an item off the list versus the default value. + * + * @param Item type in the list and to return + * @param items List of items to choose from + * @param probability chance (in %, 100 being guaranteed) of returning an + * item from + * the list + * @param defaultItem value to return if the probability test fails + * @return Item from the list or the default value + */ + public T getItem(List items, int probability, T defaultItem) { + if (items == null) { + throw new IllegalArgumentException("Item list cannot be null"); + } + if (items.isEmpty()) { + throw new IllegalArgumentException("Item list cannot be empty"); + } + + return chance(probability) ? items.get(random.nextInt(items.size())) + : defaultItem; + } + + /** + * Returns a random item from an array of items. + * + * @param Array item type and the type to return + * @param items Array of items to choose from + * @return Item from the array + */ + public T getItem(T[] items) { + return getItem(items, 100, null); + } + + /** + * Returns a random item from an array of items or null depending on the + * probability parameter. The probability determines the chance (in %) of + * returning an item from the array versus null. + * + * @param Array item type and the type to return + * @param items Array of items to choose from + * @param probability chance (in %, 100 being guaranteed) of returning an + * item from + * the array + * @return Item from the array or the default value + */ + public T getItem(T[] items, int probability) { + return getItem(items, probability, null); + } + + /** + * Returns a random item from an array of items or the defaultItem depending + * on the probability parameter. The probability determines the chance (in + * %) of returning an item from the array versus the default value. + * + * @param Array item type and the type to return + * @param items Array of items to choose from + * @param probability chance (in %, 100 being guaranteed) of returning an + * item from + * the array + * @param defaultItem value to return if the probability test fails + * @return Item from the array or the default value + */ + public T getItem(T[] items, int probability, T defaultItem) { + if (items == null) { + throw new IllegalArgumentException("Item array cannot be null"); + } + if (items.length == 0) { + throw new IllegalArgumentException("Item array cannot be empty"); + } + return chance(probability) ? items[random.nextInt(items.length)] + : defaultItem; + } + + /** + * Get a random first name. + * + * @return a random first name + */ + public String getFirstName() { + return getItem(nameDataValues.getFirstNames()); + } + + /** + * Returns a combination of first and last name values in one string. + * + * @return a combination of first and last name values + */ + public String getName() { + return getItem(nameDataValues.getFirstNames()) + " " + + getItem(nameDataValues.getLastNames()); + } + + /** + * Get a random last name. + * + * @return a random last name + */ + public String getLastName() { + return getItem(nameDataValues.getLastNames()); + } + + /** + * Get a random street name. + * + * @return a random street name + */ + public String getStreetName() { + return getItem(addressDataValues.getStreetNames()); + } + + /** + * Get a random street suffix. + * + * @return a random street suffix + */ + public String getStreetSuffix() { + return getItem(addressDataValues.getAddressSuffixes()); + } + + /** + * Generates a random city value. + * + * @return city as a string + */ + public String getCity() { + return getItem(addressDataValues.getCities()); + } + + /** + * Generates an address value consisting of house number, street name and + * street suffix. i.e. 543 Larkhill Road. + * + * @return address as a string + */ + public String getAddress() { + int num = 404 + random.nextInt(1400); + return num + " " + getStreetName() + " " + getStreetSuffix(); + } + + /** + * Generates line 2 for a street address (usually an Apt. or Suite #). + * Returns null if the probabilty test fails. + * + * @param probability Chance as % of have a value returned instead of null + * @return street address line two or null if the probability test fails + */ + public String getAddressLine2(int probability) { + return getAddressLine2(probability, null); + } + + /** + * Generates line 2 for a street address (usually an Apt. or Suite #). + * Returns default value if the probability test fails. + * + * @param probability Chance as % of have a value returned instead of null + * @param defaultValue Value to return if the probability test fails + * @return street address line two or null if the probability test fails + */ + public String getAddressLine2(int probability, String defaultValue) { + return chance(probability) ? getAddressLine2() : defaultValue; + } + + /** + * Generates line 2 for a street address (usually an Apt. or Suite #). + * Returns default value if the probabilty test fails. + * + * @return street address line 2 + */ + public String getAddressLine2() { + int test = random.nextInt(100); + if (test < 50) { + return "Apt #" + 100 + random.nextInt(1000); + } else { + return "Suite #" + 100 + random.nextInt(1000); + } + } + + /** + * Generates a random country value. + * + * @return country as a string + */ + public String getCountry() { + return getItem(addressDataValues.getCountries()); + } + + /** + * Generates a random country abbreviation value. + * + * @return country abbreviation as a string + */ + public String getCountryShort() { + return getItem(addressDataValues.getCountriesShort()); + } + + /** + * Generates a random nationality value. + * + * @return nationality as a string + */ + public String getNationality() { + return getItem(addressDataValues.getNationalities()); + } + + /** + * Creates a random birthdate within the range of 1955 to 1985. + * + * @return Date representing a birthdate + */ + public Date getBirthDate() { + Date base = new Date(0); + return getDate(base, -365 * 15, 365 * 15); + } + + /** + * Get a random occupation. + * + * @return a random occupation + */ + public String getOccupation() { + return getItem(contentDataValues.getOccupations()); + } + + /** + * Returns a random int value. + * + * @return random integer number + */ + public int getNumber() { + return getNumberBetween(Integer.MIN_VALUE, Integer.MAX_VALUE); + } + + /** + * Returns a random number between 0 and max. + * + * @param max Maximum value of result + * @return random number no more than max + */ + public int getNumberUpTo(int max) { + return getNumberBetween(0, max); + } + + /** + * Returns a number between min and max. + * + * @param min minimum value of result + * @param max maximum value of result + * @return random number within range + */ + public int getNumberBetween(int min, int max) { + + if (max < min) { + throw new IllegalArgumentException(String.format( + "Minimum must be less than minimum (min=%d, max=%d)", min, + max)); + } + + return min + random.nextInt(max - min); + } + + /** + * Builds a date from the year, month, day values passed in. + * + * @param year The year of the final {@link Date} result + * @param month The month of the final {@link Date} result (from 1-12) + * @param day The day of the final {@link Date} result + * @return Date representing the passed in values. + */ + public Date getDate(int year, int month, int day) { + Calendar cal = Calendar.getInstance(); + cal.clear(); + cal.set(year, month - 1, day, 0, 0, 0); + return cal.getTime(); + } + + /** + * Returns a random date which is in the range baseData + + * minDaysFromData to baseData + + * maxDaysFromData. This method does not alter the time + * component and the time is set to the time value of the base date. + * + * @param baseDate Date to start from + * @param minDaysFromDate minimum number of days from the baseDate the + * result can be + * @param maxDaysFromDate maximum number of days from the baseDate the + * result can be + * @return a random date + */ + public Date getDate(Date baseDate, int minDaysFromDate, + int maxDaysFromDate) { + Calendar cal = Calendar.getInstance(); + cal.setTime(baseDate); + int diff = minDaysFromDate + + (random.nextInt(maxDaysFromDate - minDaysFromDate)); + cal.add(Calendar.DATE, diff); + return cal.getTime(); + } + + /** + * Returns a random date between two dates. This method will alter the time + * component of the dates. + * + * @param minDate Minimum date that can be returned + * @param maxDate Maximum date that can be returned + * @return random date between these two dates. + */ + public Date getDateBetween(Date minDate, Date maxDate) { + // this can break if seconds is an int + long seconds = (maxDate.getTime() - minDate.getTime()) / 1000; + seconds = (long) (random.nextDouble() * seconds); + Date result = new Date(); + result.setTime(minDate.getTime() + (seconds * 1000)); + return result; + } + + /** + * Returns random text made up of english words with given length. + * + * @param length length of returned string + * @return string made up of actual words with given length + */ + public String getRandomText(int length) { + return getRandomText(length, length); + } + + /** + * Returns random text made up of english words. + * + * @param minLength minimum length of returned string + * @param maxLength maximum length of returned string + * @return string of length between min and max length + */ + public String getRandomText(int minLength, int maxLength) { + validateMinMaxParams(minLength, maxLength); + + StringBuilder sb = new StringBuilder(maxLength); + int length = minLength; + if (maxLength != minLength) { + length = length + random.nextInt(maxLength - minLength); + } + while (length > 0) { + if (sb.length() != 0) { + sb.append(" "); + length--; + } + String word = getRandomWord(length); + sb.append(word); + length = length - word.length(); + } + return sb.toString(); + + } + + private void validateMinMaxParams(int minLength, int maxLength) { + if (minLength < 0) { + throw new IllegalArgumentException( + "Minimum length must be a non-negative number"); + } + + if (maxLength < 0) { + throw new IllegalArgumentException( + "Maximum length must be a non-negative number"); + } + + if (maxLength < minLength) { + throw new IllegalArgumentException( + String.format( + "Minimum length must be less than maximum length " + + "(min=%d, max=%d)", + minLength, maxLength)); + } + } + + /** + * Get a random character. + * + * @return a random character + */ + public char getRandomChar() { + return (char) (random.nextInt(26) + 'a'); + } + + /** + * Return a string containing length random characters. + * + * @param length number of characters to use in the string + * @return a string containing length random characters + */ + public String getRandomChars(int length) { + return getRandomChars(length, length); + } + + /** + * Return a string containing between length random characters. + * + * @param minLength minimum number of characters to use in the string + * @param maxLength maximum number of characters to use in the string + * @return a string containing length random characters + */ + public String getRandomChars(int minLength, int maxLength) { + validateMinMaxParams(minLength, maxLength); + StringBuilder sb = new StringBuilder(maxLength); + + int length = minLength; + if (maxLength != minLength) { + length = length + random.nextInt(maxLength - minLength); + } + while (length > 0) { + sb.append(getRandomChar()); + length--; + } + return sb.toString(); + } + + /** + * Returns a word of a length between 1 and 10 characters. + * + * @return a work of max length 10 + */ + public String getRandomWord() { + return getItem(contentDataValues.getWords()); + } + + /** + * Returns a valid word with a length of length + * characters. + * + * @param length maximum length of the word + * @return a word of a length up to length characters + */ + public String getRandomWord(int length) { + return getRandomWord(length, length); + } + + /** + * Returns a valid word with a length of up to length + * characters. If the exactLength parameter is set, then the + * word will be exactly length characters in length. + * + * @param length maximum length of the returned string + * @param exactLength indicates if the word should have a length of + * length + * @return a string with a length that matches the specified parameters + */ + public String getRandomWord(int length, boolean exactLength) { + if (exactLength) { + return getRandomWord(length, length); + } + return getRandomWord(0, length); + } + + /** + * Returns a valid word based on the length range passed in. The length will + * always be between the min and max length range inclusive. + * + * @param minLength minimum length of the word + * @param maxLength maximum length of the word + * @return a word of a length between min and max length + */ + public String getRandomWord(int minLength, int maxLength) { + validateMinMaxParams(minLength, maxLength); + + // special case if we need a single char + if (maxLength == 1) { + if (chance(50)) { + return "a"; + } + return "I"; + } + + // start from random pos and find the first word of the right size + String[] words = contentDataValues.getWords(); + int pos = random.nextInt(words.length); + for (int i = 0; i < words.length; i++) { + int idx = (i + pos) % words.length; + String test = words[idx]; + if (test.length() >= minLength && test.length() <= maxLength) { + return test; + } + } + // we haven't a word for this length so generate one + return getRandomChars(minLength, maxLength); + } + + /** + * Get a random name suffix. + * + * @param chance Chance of a suffix being returned + * @return a name suffix + */ + public String getSuffix(int chance) { + return getItem(nameDataValues.getSuffixes(), chance); + } + + /** + * Return a person prefix or null if the odds are too low. + * + * @param chance Odds of a prefix being returned + * @return Prefix string + */ + public String getPrefix(int chance) { + return getItem(nameDataValues.getPrefixes(), chance); + } + + /** + * Returns a string containing a set of numbers with a fixed number of + * digits. + * + * @param digits number of digits in the final number + * @return random number as a string with a fixed length + */ + public String getNumberText(int digits) { + StringBuffer result = new StringBuffer(); + for (int i = 0; i < digits; i++) { + result.append(random.nextInt(10)); + } + return result.toString(); + } + + /** + * Returns a string containing a set of hexadecimals characters with a + * fixed length. + * + * @param length number of hex chars in the final number + * @return random number as a string with a fixed length + */ + public String getHexText(int length) { + StringBuffer sb = new StringBuffer(); + while (sb.length() < length) { + sb.append(Integer.toHexString(random.nextInt())); + } + + return sb.toString().substring(0, length); + } + + /** + * Generates a random business name by taking a city name and adding a + * business onto it. + * + * @return a random business name + */ + public String getBusinessName() { + return getCity() + " " + getItem(contentDataValues.getBusinessTypes()); + } + + /** + * Generates a random email address. + * + * @return an email address + */ + public String getEmailAddress() { + int test = random.nextInt(100); + String email = ""; + if (test < 50) { + // name and initial + email = getFirstName().charAt(0) + getLastName(); + } else { + // 2 words + email = getItem(contentDataValues.getWords()) + + getItem(contentDataValues.getWords()); + } + if (random.nextInt(100) > 80) { + email = email + random.nextInt(100); + } + email = email + "@" + getItem(contentDataValues.getEmailHosts()) + "." + + getItem(contentDataValues.getTlds()); + return email.toLowerCase(); + } + + /** + * Gives you a true/false based on a probability with a random number + * generator. Can be used to optionally add elements. + * + *
+     * if (DataFactory.chance(70)) {
+     * 	// 70% chance of this code being executed
+     * }
+     * 
+ * + * @param chance % chance of returning true + * @return a true/false based on a probability + */ + public boolean chance(int chance) { + return random.nextInt(100) < chance; + } + + public NameDataValues getNameDataValues() { + return nameDataValues; + } + + /** + * Set this to provide your own list of name data values by passing it a + * class that implements the {@link NameDataValues} interface which just + * returns the String arrays to use for the test data. + * + * @param nameDataValues Object holding the set of data values to use + */ + public void setNameDataValues(NameDataValues nameDataValues) { + this.nameDataValues = nameDataValues; + } + + /** + * Call randomize with a seed value to reset the random number generator. By + * using the same seed over different tests, you will should get the same + * results out for the same data generation calls. + * + * @param seed Seed value to use to generate random numbers + */ + public void randomize(int seed) { + random = new Random(seed); + } + + /** + * Set this to provide your own list of address data values by passing it a + * class that implements the {@link AddressDataValues} interface which just + * returns the String arrays to use for the test data. + * + * @param addressDataValues Object holding the set of data values to use + */ + public void setAddressDataValues(AddressDataValues addressDataValues) { + this.addressDataValues = addressDataValues; + } + + /** + * Set this to provide your own list of content data values by passing it a + * class that implements the {@link ContentDataValues} interface which just + * returns the String arrays to use for the test data. + * + * @param contentDataValues Object holding the set of data values to use + */ + public void setContentDataValues(ContentDataValues contentDataValues) { + this.contentDataValues = contentDataValues; + } + +} diff --git a/src/main/java/org/fluttercode/datafactory/impl/DefaultAddressDataValues.java b/src/main/java/org/fluttercode/datafactory/impl/DefaultAddressDataValues.java index 6ae758d..fb89b30 100644 --- a/src/main/java/org/fluttercode/datafactory/impl/DefaultAddressDataValues.java +++ b/src/main/java/org/fluttercode/datafactory/impl/DefaultAddressDataValues.java @@ -27,354 +27,476 @@ public class DefaultAddressDataValues implements AddressDataValues { - private static String[] streetNames = { "Aberdeen", "Abington", "Academy", - "Adair", "Adams", "Adamsville", "Aeryview", "Agines", "Airport", - "Airwood", "Akron", "Alameda", "Albert", "Albright", "Alburn", - "Alexis", "Alfred", "Alice", "Alkire", "Allen", "Allison", "Alvin", - "Ambarassdor", "Amber", "Amhurst", "Amsterdam", "Antigua", - "Applegate", "Arborwood", "Arcadia", "Arch", "Archer", "Arlington", - "Armco", "Armstrong", "Arnold", "Arrowhead", "Arthur", "Ashburton", - "Ashley", "Aspen", "Athena", "Athens", "Atlantic", "Auburn", - "Austin", "Avalon", "Avon", "Axline", "Ayers", "Babbs", "Back", - "Bagley", "Bailey", "Baird", "Baker", "Ball", "Ballard", "Ballov", - "Bank", "Bardith", "Barkey", "Barkley", "Barnes", "Barr", "Basil", - "Basin", "Bateman", "Baughman", "Beam", "Beard", "Beatty", - "Beauty", "Beech", "Beechcreek", "Beechmont", "Beeline", "Belden", - "Bell", "Bellflower", "Bellview", "Bellwood", "Belmont", - "Benjamin", "Bennett", "Benwood", "Berkley", "Best", "Bethesda", - "Beulah", "Beverly", "Bexley", "Billingsley", "Bissett", "Bisson", - "Black", "Blackburn", "Blackrun", "Blackstone", "Blackwood", - "Blaine", "Blalock", "Blandy", "Blennerhassett", "Blocksom", - "Bloomfield", "Blossom", "Blue", "Bluff", "Bobby", "Bodmann", - "Boggs", "Bolen", "Bolton", "Bonaparte", "Bonifield", "Bonnair", - "Bonsels", "Boston", "Bottom", "Bowman", "Bowser", "Bowtown", - "Bradington", "Branch", "Brandywine", "Breezewood", "Brewers", - "Briarbush", "Briarcliff", "Briarleigh", "Brick", "Bridge", - "Brighton", "Brill", "Bristol", "Britton", "Broad", "Broadvue", - "Broadway", "Brookfield", "Brookover", "Brookside", "Brown", - "Browns", "Bryan", "Buck", "Buckeye", "Buckingham", "Burbank", - "Burlington", "Burnell", "Burnet", "Burns", "Busch", "Butler", - "Butter", "Buttermilk", "Byrne", "Caleb", "Calvert", "Cambon", - "Cambridge", "Camden", "Camp", "Campbell", "Canal", "Candlestick", - "Canewood", "Canfield", "Cannelville", "Canneville", "Cannon", - "Carbondale", "Carey", "Carl", "Carlisle", "Carlton", "Carlysle", - "Carmen", "Carol", "Carpenter", "Carroll", "Carson", "Carver", - "Cass", "Caston", "Castor", "Catalpa", "Cathy", "Catt", "Cattail", - "Cattle", "Cecil", "Cedar", "Cedarhurst", "Celina", "Cementary", - "Cemetery", "Center", "Central", "Ceramic", "Chalfant", - "Chandlersville", "Chapman", "Chardon", "Charlene", "Charles", - "Chase", "Chatauqua", "Chatham", "Cheney", "Cherlick", "Cherry", - "Chesapeake", "Chester", "Chesterfield", "Chestnut", "Chevington", - "Chewelah", "Childrens", "Chillicothe", "China", "Choctaw", - "Christopher", "Christy", "Church", "Churchfield", "Circle", - "Circleville", "Clairbourne", "Claire", "Clarence", "Clarendon", - "Clarice", "Clark", "Clary", "Clay", "Claysville", "Clearcreek", - "Clearey", "Clearport", "Clearview", "Cleve", "Cleveland", - "Clevenger", "Cliffrock", "Cliffwood", "Clinton", "Clover", - "Cloveridge", "Clyde", "Coburg", "Cochran", "Codell", "Cohen", - "Colburn", "College", "Collingwood", "Collins", "Colony", - "Columbia", "Columbus", "Comin", "Commissioner", "Commonwealth", - "Conn", "Convers", "Coopermill", "Cooperriders", "Cooperwell", - "Cornell", "Cornstill", "Coronado", "Corvus", "Corwin", "Cosgrave", - "Coshocton", "Cottage", "Countiss", "Countryside", "Court", "Cove", - "Coventry", "Cowden", "Cranfield", "Crawford", "Creamery", - "Creedmoor", "Creekview", "Crestway", "Crock", "Crooks", "Crosier", - "Cross", "Crossgate", "Crow", "Crown", "Culbertson", "Curtis", - "Dads", "Daisy", "Dale", "Dallman", "Dana", "Daniels", "Danville", - "Darcie", "Darla", "Darlington", "Date", "Davis", "Dawnlight", - "Dawson", "Dearborn", "December", "Decrow", "Deer", "Deerfield", - "Deerpath", "Deewood", "Dellwood", "Delmont", "Delwood", "Denbigh", - "Denlinger", "Denmark", "Denning", "Dennis", "Denny", "Depot", - "Detroit", "Devin", "Devlin", "Dewey", "Diagonal", "Dickinson", - "Dickson", "Dietz", "Dillon", "Discovery", "Dixie", "Dixon", - "Dogwood", "Dona", "Donald", "Dooleys", "Dorothy", "Doru", - "Douglas", "Dowling", "Downard", "Downing", "Dragoo", "Dresden", - "Dryden", "Dundee", "Dunham", "Dunzweiler", "Durban", "Duvall", - "Dyer", "East", "Easter", "Eastern", "Eastfield", "Eastlawn", - "Eastman", "Eastmoor", "Eastport", "Eastview", "Eastward", - "Eastwood", "Eaton", "Echo", "Edalbert", "Eddie", "Eddy", "Ederer", - "Edgewater", "Edison", "Edna", "Edward", "Edwards", "Eldwood", - "Elfin", "Elida", "Elizabeth", "Ellen", "Eller", "Ellis", - "Ellsworth", "Elmville", "Emily", "Englewood", "Enon", "Eppley", - "Erie", "Erin", "Essex", "Euclid", "Evans", "Evansport", "Evelyn", - "Evergreen", "Ewing", "Exchange", "Extension", "Fair", "Fairall", - "Fairbanks", "Faircrest", "Fairmont", "Fairmount", "Fairview", - "Fairway", "Fallsburg", "Falt", "Farson", "Fawn", "Faye", - "Fayette", "Federal", "Ferncliff", "Fernstone", "Ferrell", "Fess", - "Field", "Findley", "First", "Fishers", "Fitzgerald", "Fleek", - "Fleming", "Flint", "Flintridge", "Flintwood", "Florence", - "Forest", "Forry", "Foster", "Founds", "Fountain", "Fowlers", - "Foxfire", "Frame", "Francis", "Franklin", "Frazeysburg", - "Freeborn", "Freedom", "Frick", "Friendship", "Frisco", "Fritter", - "Front", "Frontier", "Fulbrook", "Fulton", "Fultonrose", - "Galbraith", "Galena", "Galigher", "Galighner", "Gallia", "Galway", - "Gant", "Gantz", "Garden", "Gardenway", "Garey", "Garfield", - "Garner", "Garrell", "Garrett", "Garst", "Gaslight", "Gayla", - "Genessee", "George", "Gest", "Gibbard", "Gifford", "Gilbert", - "Glade", "Glena", "Glenaven", "Glendale", "Glenhaven", "Glenn", - "Glenwillow", "Glenwood", "Glessner", "Goddard", "Gomber", - "Goosecreek", "Gordon", "Gorrell", "Gorsuch", "Goslen", "Grace", - "Graffis", "Grand", "Grandview", "Granger", "Grant", "Granville", - "Gratiot-Newark", "Gray", "Graylock", "Green", "Greenbriar", - "Greenbrier", "Greengold", "Greenhouse", "Greenville", "Greenwood", - "Greiner", "Grieves", "Grove", "Guava", "Haessler", "Hale", "Hall", - "Hamburg", "Hamilton", "Hamline", "Hampton", "Hanawalt", "Hannah", - "Hannawalt", "Hanover", "Hanson", "Harbor", "Hardesty", "Harding", - "Hardy", "Harkers", "Harlan", "Harmon", "Harmony", "Harper", - "Harris", "Harrison", "Harshman", "Hartford", "Hartman", - "Hartville", "Hartwell", "Harvey", "Haught", "Hawk", "Hawkes", - "Hayes", "Hazel", "Hazlett", "Heath", "Heber", "Hebron", "Heckak", - "Heckel", "Hedgewood", "Helene", "Helpar", "Hendershot", "Henry", - "Heritage", "Herron", "Hewitt", "Hickam", "Hickman", "Hickory", - "Hicks", "Hideaway", "Higgins", "High", "Highland", "Highview", - "Hilbish", "Hildreth", "Hill", "Hinman", "Hogans", "Hoge", - "Hoiles", "Holbein", "Holbert", "Holliday", "Holmes", "Home", - "Homeless", "Homer", "Homes", "Homestead", "Homewood", "Hoover", - "Hopewell", "Hospital", "Howard", "Howell", "Hudson", "Huey", - "Hughes", "Humphrey", "Hunt", "Hunter", "Hunterdon", "Huntington", - "Idaho", "Idlewood", "Ildewood", "Iliamna", "Imlay", - "Independence", "Indiana", "Indianola", "Inwood", "Ireland", - "Iron", "Island", "Jackson", "James", "Jamestown", "Jannett", - "Jefferson", "Jenkins", "Jensen", "Jessamine", "Jewett", "Jewitt", - "Jody", "John", "Johnson", "Johnstown", "Jonathan", "Jones", - "Jordan", "Joyce", "Juanita", "Julian", "Juniper", "Kahler", - "Katherine", "Kauffman", "Kearns", "Keen", "Kegs", "Kelly", - "Kennedy", "Kenny", "Kensington", "Kenton", "Kerri", "Kettering", - "Kevrob", "Keystone", "Kibler", "Kimes", "King", "Kings", - "Kingsley", "Kingswood", "Kinsman", "Kinzel", "Kirk", "Klotz", - "Knipe", "Knox", "Kopchak", "Kossuch", "Lacon", "Lafayette", - "Lagonda", "Lake", "Lakeside", "Lakewood", "Lambert", "Lancaster", - "Lancaster-Chillicoth", "Lander", "Laneway", "Langan", "Lark", - "Larkspur", "Larry", "Larzelere", "Lasalle", "Lashley", "Laurel", - "Lavona", "Lawhead", "Lawn", "Lawndale", "Lawson", "Lawyers", - "Layton", "Lazelere", "Lectric", "Ledbetter", "Leedom", "Leffler", - "Lefter", "Legion", "Lenox", "Lent", "Leon", "Leonard", - "Leonardville", "Leslie", "Lesslar", "Lewis", "Lexington", - "Liberty", "Licking", "Lillian", "Lima", "Limestone", "Lincoln", - "Lincolnway", "Lindale", "Lindbergh", "Linden", "Lindsay", "Linn", - "Linwood", "Lisa", "Lithopolis", "Livingston", "Lock", "Locksmith", - "Locust", "Lodge", "Lomita", "London", "Long", "Lookout", "Lost", - "Loudon", "Louise", "Lovers", "Lubring", "Lucas", "Lucasburg", - "Luck", "Lundgren", "Lutz", "Macedonia", "Mackenzie", "Madison", - "Mailey", "Main", "Malibu", "Manning", "Manor", "Mansfield", - "Maple", "Maplecraft", "Mapleview", "Maplewood", "Marchmont", - "Marietta", "Marion", "Mark", "Market", "Marketing", "Marlo", - "Marne", "Marsha", "Marshdale", "Martin", "Martinel", "Mary", - "Mast", "Matthews", "Mayfair", "Maysville", "Mcarthur", "Mccarley", - "Mccaslin", "Mcclain", "Mcclure", "Mcconnell", "Mcconnellsville", - "Mcdaniel", "Mcdonald", "Mcfarland", "Mcintire", "Mckaig", - "Mckeever", "Mckinley", "Mcmillan", "Mcowens", "Mead", "Meadow", - "Meadowbrook", "Meadowhaven", "Meadowood", "Mechanicsburg", "Meek", - "Melick", "Melrose", "Memory", "Meridian", "Meriwether", "Merlin", - "Merriam", "Merrick", "Merrimac", "Merryhill", "Mershon", - "Messimer", "Metro", "Miami", "Michael", "Michigan", "Middle", - "Middlefork", "Middleton", "Midway", "Milagra", "Military", "Mill", - "Miller", "Millers", "Milton", "Miner", "Missouri", "Mitchell", - "Moccasin", "Mock", "Mohawk", "Mollysrock", "Mona", "Monroe", - "Montague", "Montgomery", "Moonlight", "Moore", "Moorehead", - "Moores", "Moorewood", "Morgan", "Morgantown", "Morganville", - "Morningstar", "Morrison", "Morse", "Mound", "Moxadarla", - "Moxahala", "Muirwood", "Mulberry", "Mundy", "Munson", "Murray", - "Muskingum", "Musselman", "Myrtle", "Nancy", "Narrows", "National", - "Navy", "Neal", "Neil", "Nelson", "Neptune", "Newark", "Newgate", - "Newlon", "Newman", "Newport", "Nichalas", "Nolan", "None", - "Nor-Bixbey", "Nora", "Norfield", "Normandy", "Norris", "North", - "Northcrest", "Northland", "Norwich", "Norwood", "Nottingham", - "Nottinghamshire", "Nugent", "Oakland", "Oakwood", "Obetz", - "Odell", "Ohio", "Okey", "Olive", "Olney", "Ontario", "Opera", - "Orange", "Orchard", "Orders", "Orton", "Osage", "Osceola", - "Otterbein", "Overlook", "Owens", "Oxford", "Paint", "Palamino", - "Pallas", "Palmer", "Palmeraway", "Palmwood", "Palomino", - "Paragon", "Parish", "Park", "Parker", "Parks", "Parkview", - "Parkway", "Parkwood", "Parliament", "Parry", "Partridge", "Patch", - "Patricia", "Peachblow", "Pear", "Pearl", "Pembroke", "Penn", - "Penney", "Pennisula", "Pennsylvania", "Penrick", "Perdue", - "Perine", "Perkins", "Perry", "Perryton", "Pershing", "Peters", - "Petersburg", "Peterson", "Pfeifer", "Pfeiffer", "Philadelphia", - "Phillips", "Pickwick", "Pierce", "Pike", "Pine", "Pinecrest", - "Pinetown", "Pineview", "Pinewood", "Pinkerton", "Pinkley", - "Pioneer", "Piper", "Plainfield", "Plantation", "Playford", - "Pleasant", "Pleasantview", "Pleasantville", "Pointe", "Poplar", - "Portage", "Porter", "Portland", "Potters", "Potts", "Powell", - "Prame", "Pratt", "Price", "Princeton", "Prior", "Prison", - "Promway", "Prospect", "Pryor", "Public", "Purdy", "Purvis", - "Putnam", "Quarry", "Quick", "Quincy", "Quinlan", "Race", "Radnor", - "Raiders", "Railroad", "Rains", "Raintree", "Range", "Rankin", - "Ransbottom", "Raven", "Ravenwood", "Rawson", "Reading", "Ream", - "Redman", "Redondo", "Reed", "Reeves", "Rehl", "Restless", - "Reynolds", "Rhonda", "Rice", "Richards", "Richey", "Richman", - "Richmond", "Richvale", "Richwood", "Rider", "Ridge", "Ridgefield", - "Ridgeland", "Ridgeview", "Ridgewood", "Rigby", "Riggin", "Rigny", - "Ritchey", "Ritenour", "River", "Riverside", "Riverview", - "Roadayle", "Robertson", "Robin", "Robinson", "Robinwood", "Rock", - "Rockville", "Roemer", "Roland", "Rollins", "Rondayle", - "Roosevelt", "Roper", "Rose", "Roseville", "Rosewood", "Rowland", - "Royalton", "Royma", "Rucker", "Runyan", "Russell", "Rustle", - "Ruth", "Ryan", "Salem", "Salgarber", "Sally", "Saltzgaber", - "Sampson", "Samuel", "Sand", "Sandhurst", "Sandra", "Sandusky", - "Sandvik", "Santoy", "Sarah", "Scarborough", "Scenic", "Schaum", - "Schneider", "Scholl", "School", "Schuler", "Schultz", "Schwallie", - "Scott", "Scout", "Sealover", "Seaman", "Seborn", "Sells", - "Selsam", "Senator", "Seroco", "Sevall", "Severt", "Seward", - "Seymore", "Shady", "Shagbark", "Shaliman", "Shandon", "Sharon", - "Sharonwood", "Shasta", "Shaw", "Shawnee", "Sheandoah", "Sheila", - "Shellhart", "Shenandoah", "Shepherd", "Sherborne", "Sheridan", - "Sherman", "Sherwood", "Shindern", "Shinick", "Shinnick", - "Shiplett", "Shoop", "Shore", "Short", "Shumaker", "Sibley", - "Silliman", "Silmore", "Skyline", "Skyview", "Slack", "Smithfield", - "Smithwood", "Snoke", "Snyder", "Sofin", "Solida", "Somers", - "Somerset", "Sonora", "Souder", "South", "Southard", "Southeast", - "Southern", "Southward", "Spangler", "Sparling", "Spellman", - "Spence", "Spencer", "Spielbusch", "Spratt", "Spring", - "Springdale", "Spruce", "Spry", "Stacy", "Stalder", "Stalling", - "Stanley", "Stansberry", "Stanton", "Stanway", "State", "Steele", - "Stein", "Stephens", "Stevens", "Stevy", "Stewart", "Stiers", - "Stillmeadow", "Stillwell", "Stine", "Stiver", "Stokely", "Stone", - "Stonecreek", "Stormont", "Stout", "Stoutsville", "Strawberry", - "Street", "Sturtz", "Stygler", "Sudbury", "Sugargrove", - "Sugartree", "Summit", "Sundale", "Sunflower", "Sunkel", "Sunray", - "Sunrise", "Sunset", "Superior", "Surger", "Swans", "Swartz", - "Swingle", "Sycamore", "Talford", "Talley", "Tamarron", "Tammy", - "Tannehill", "Tarkman", "Taylor", "Teakwood", "Tedrick", "Temple", - "Terrace", "Terry", "Theobald", "Third", "Thomas", "Thompson", - "Thorn", "Thornberry", "Thornhill", "Thurman", "Tiffany", - "Tileston", "Titus", "Todd", "Toni", "Towers", "Town", "Trabue", - "Traci", "Traco", "Tranquility", "Treehouse", "Tremont", "Trend", - "Tridelphia", "Tupedo", "Turner", "Turtle", "Tuscarawas", - "Twimenhill", "Tyman", "Underwood", "Uneeda", "Union", "Unknown", - "Valley", "Vance", "Vaughn", "Venture", "Venus", "Vernon", - "Vetter", "Vicki", "Victory", "Villa", "Village", "Vine", "Vinsel", - "Virginia", "Vista", "Vroom", "Wabash", "Wacker", "Wakatomika", - "Waldolf", "Walker", "Wall", "Wallwork", "Walnut", "Walter", - "Waltham", "Ward", "Wargo", "Warner", "Warners", "Warren", - "Warwick", "Washington", "Water", "Waters", "Watkins", "Watson", - "Watts", "Wayne", "Weaver", "Webb", "Webster", "Wedgewood", - "Weedon", "Weller", "Wells", "Wentz", "Wessex", "West", - "Westbourne", "Western", "Westmoor", "Westmore", "Westwood", - "Wetsell", "Whaley", "Wheatland", "Wheelabout", "Wheeler", - "Wheeling", "Whipple", "Whites", "Whitman", "Wilhelm", "Wilkins", - "Williams", "Willis", "Willow", "Wilmer", "Wilmington", "Wilshire", - "Wilson", "Winding", "Windmill", "Windsong", "Winfield", - "Winlwood", "Winter", "Winton", "Wise", "Wisteria", "Wogan", - "Wolfe", "Wolford", "Woodberry", "Woodbrook", "Woodland", - "Woodlawn", "Woolper", "Workman", "Wortman", "Wrexham", "Yale", - "Yingling", "Yost", "Young", "Zane", "Zanesville", "Zella" + private static String[] streetNames = {"Aberdeen", "Abington", "Academy", + "Adair", "Adams", "Adamsville", "Aeryview", "Agines", "Airport", + "Airwood", "Akron", "Alameda", "Albert", "Albright", "Alburn", + "Alexis", "Alfred", "Alice", "Alkire", "Allen", "Allison", "Alvin", + "Ambarassdor", "Amber", "Amhurst", "Amsterdam", "Antigua", + "Applegate", "Arborwood", "Arcadia", "Arch", "Archer", "Arlington", + "Armco", "Armstrong", "Arnold", "Arrowhead", "Arthur", "Ashburton", + "Ashley", "Aspen", "Athena", "Athens", "Atlantic", "Auburn", + "Austin", "Avalon", "Avon", "Axline", "Ayers", "Babbs", "Back", + "Bagley", "Bailey", "Baird", "Baker", "Ball", "Ballard", "Ballov", + "Bank", "Bardith", "Barkey", "Barkley", "Barnes", "Barr", "Basil", + "Basin", "Bateman", "Baughman", "Beam", "Beard", "Beatty", + "Beauty", "Beech", "Beechcreek", "Beechmont", "Beeline", "Belden", + "Bell", "Bellflower", "Bellview", "Bellwood", "Belmont", + "Benjamin", "Bennett", "Benwood", "Berkley", "Best", "Bethesda", + "Beulah", "Beverly", "Bexley", "Billingsley", "Bissett", "Bisson", + "Black", "Blackburn", "Blackrun", "Blackstone", "Blackwood", + "Blaine", "Blalock", "Blandy", "Blennerhassett", "Blocksom", + "Bloomfield", "Blossom", "Blue", "Bluff", "Bobby", "Bodmann", + "Boggs", "Bolen", "Bolton", "Bonaparte", "Bonifield", "Bonnair", + "Bonsels", "Boston", "Bottom", "Bowman", "Bowser", "Bowtown", + "Bradington", "Branch", "Brandywine", "Breezewood", "Brewers", + "Briarbush", "Briarcliff", "Briarleigh", "Brick", "Bridge", + "Brighton", "Brill", "Bristol", "Britton", "Broad", "Broadvue", + "Broadway", "Brookfield", "Brookover", "Brookside", "Brown", + "Browns", "Bryan", "Buck", "Buckeye", "Buckingham", "Burbank", + "Burlington", "Burnell", "Burnet", "Burns", "Busch", "Butler", + "Butter", "Buttermilk", "Byrne", "Caleb", "Calvert", "Cambon", + "Cambridge", "Camden", "Camp", "Campbell", "Canal", "Candlestick", + "Canewood", "Canfield", "Cannelville", "Canneville", "Cannon", + "Carbondale", "Carey", "Carl", "Carlisle", "Carlton", "Carlysle", + "Carmen", "Carol", "Carpenter", "Carroll", "Carson", "Carver", + "Cass", "Caston", "Castor", "Catalpa", "Cathy", "Catt", "Cattail", + "Cattle", "Cecil", "Cedar", "Cedarhurst", "Celina", "Cementary", + "Cemetery", "Center", "Central", "Ceramic", "Chalfant", + "Chandlersville", "Chapman", "Chardon", "Charlene", "Charles", + "Chase", "Chatauqua", "Chatham", "Cheney", "Cherlick", "Cherry", + "Chesapeake", "Chester", "Chesterfield", "Chestnut", "Chevington", + "Chewelah", "Childrens", "Chillicothe", "China", "Choctaw", + "Christopher", "Christy", "Church", "Churchfield", "Circle", + "Circleville", "Clairbourne", "Claire", "Clarence", "Clarendon", + "Clarice", "Clark", "Clary", "Clay", "Claysville", "Clearcreek", + "Clearey", "Clearport", "Clearview", "Cleve", "Cleveland", + "Clevenger", "Cliffrock", "Cliffwood", "Clinton", "Clover", + "Cloveridge", "Clyde", "Coburg", "Cochran", "Codell", "Cohen", + "Colburn", "College", "Collingwood", "Collins", "Colony", + "Columbia", "Columbus", "Comin", "Commissioner", "Commonwealth", + "Conn", "Convers", "Coopermill", "Cooperriders", "Cooperwell", + "Cornell", "Cornstill", "Coronado", "Corvus", "Corwin", "Cosgrave", + "Coshocton", "Cottage", "Countiss", "Countryside", "Court", "Cove", + "Coventry", "Cowden", "Cranfield", "Crawford", "Creamery", + "Creedmoor", "Creekview", "Crestway", "Crock", "Crooks", "Crosier", + "Cross", "Crossgate", "Crow", "Crown", "Culbertson", "Curtis", + "Dads", "Daisy", "Dale", "Dallman", "Dana", "Daniels", "Danville", + "Darcie", "Darla", "Darlington", "Date", "Davis", "Dawnlight", + "Dawson", "Dearborn", "December", "Decrow", "Deer", "Deerfield", + "Deerpath", "Deewood", "Dellwood", "Delmont", "Delwood", "Denbigh", + "Denlinger", "Denmark", "Denning", "Dennis", "Denny", "Depot", + "Detroit", "Devin", "Devlin", "Dewey", "Diagonal", "Dickinson", + "Dickson", "Dietz", "Dillon", "Discovery", "Dixie", "Dixon", + "Dogwood", "Dona", "Donald", "Dooleys", "Dorothy", "Doru", + "Douglas", "Dowling", "Downard", "Downing", "Dragoo", "Dresden", + "Dryden", "Dundee", "Dunham", "Dunzweiler", "Durban", "Duvall", + "Dyer", "East", "Easter", "Eastern", "Eastfield", "Eastlawn", + "Eastman", "Eastmoor", "Eastport", "Eastview", "Eastward", + "Eastwood", "Eaton", "Echo", "Edalbert", "Eddie", "Eddy", "Ederer", + "Edgewater", "Edison", "Edna", "Edward", "Edwards", "Eldwood", + "Elfin", "Elida", "Elizabeth", "Ellen", "Eller", "Ellis", + "Ellsworth", "Elmville", "Emily", "Englewood", "Enon", "Eppley", + "Erie", "Erin", "Essex", "Euclid", "Evans", "Evansport", "Evelyn", + "Evergreen", "Ewing", "Exchange", "Extension", "Fair", "Fairall", + "Fairbanks", "Faircrest", "Fairmont", "Fairmount", "Fairview", + "Fairway", "Fallsburg", "Falt", "Farson", "Fawn", "Faye", + "Fayette", "Federal", "Ferncliff", "Fernstone", "Ferrell", "Fess", + "Field", "Findley", "First", "Fishers", "Fitzgerald", "Fleek", + "Fleming", "Flint", "Flintridge", "Flintwood", "Florence", + "Forest", "Forry", "Foster", "Founds", "Fountain", "Fowlers", + "Foxfire", "Frame", "Francis", "Franklin", "Frazeysburg", + "Freeborn", "Freedom", "Frick", "Friendship", "Frisco", "Fritter", + "Front", "Frontier", "Fulbrook", "Fulton", "Fultonrose", + "Galbraith", "Galena", "Galigher", "Galighner", "Gallia", "Galway", + "Gant", "Gantz", "Garden", "Gardenway", "Garey", "Garfield", + "Garner", "Garrell", "Garrett", "Garst", "Gaslight", "Gayla", + "Genessee", "George", "Gest", "Gibbard", "Gifford", "Gilbert", + "Glade", "Glena", "Glenaven", "Glendale", "Glenhaven", "Glenn", + "Glenwillow", "Glenwood", "Glessner", "Goddard", "Gomber", + "Goosecreek", "Gordon", "Gorrell", "Gorsuch", "Goslen", "Grace", + "Graffis", "Grand", "Grandview", "Granger", "Grant", "Granville", + "Gratiot-Newark", "Gray", "Graylock", "Green", "Greenbriar", + "Greenbrier", "Greengold", "Greenhouse", "Greenville", "Greenwood", + "Greiner", "Grieves", "Grove", "Guava", "Haessler", "Hale", "Hall", + "Hamburg", "Hamilton", "Hamline", "Hampton", "Hanawalt", "Hannah", + "Hannawalt", "Hanover", "Hanson", "Harbor", "Hardesty", "Harding", + "Hardy", "Harkers", "Harlan", "Harmon", "Harmony", "Harper", + "Harris", "Harrison", "Harshman", "Hartford", "Hartman", + "Hartville", "Hartwell", "Harvey", "Haught", "Hawk", "Hawkes", + "Hayes", "Hazel", "Hazlett", "Heath", "Heber", "Hebron", "Heckak", + "Heckel", "Hedgewood", "Helene", "Helpar", "Hendershot", "Henry", + "Heritage", "Herron", "Hewitt", "Hickam", "Hickman", "Hickory", + "Hicks", "Hideaway", "Higgins", "High", "Highland", "Highview", + "Hilbish", "Hildreth", "Hill", "Hinman", "Hogans", "Hoge", + "Hoiles", "Holbein", "Holbert", "Holliday", "Holmes", "Home", + "Homeless", "Homer", "Homes", "Homestead", "Homewood", "Hoover", + "Hopewell", "Hospital", "Howard", "Howell", "Hudson", "Huey", + "Hughes", "Humphrey", "Hunt", "Hunter", "Hunterdon", "Huntington", + "Idaho", "Idlewood", "Ildewood", "Iliamna", "Imlay", + "Independence", "Indiana", "Indianola", "Inwood", "Ireland", + "Iron", "Island", "Jackson", "James", "Jamestown", "Jannett", + "Jefferson", "Jenkins", "Jensen", "Jessamine", "Jewett", "Jewitt", + "Jody", "John", "Johnson", "Johnstown", "Jonathan", "Jones", + "Jordan", "Joyce", "Juanita", "Julian", "Juniper", "Kahler", + "Katherine", "Kauffman", "Kearns", "Keen", "Kegs", "Kelly", + "Kennedy", "Kenny", "Kensington", "Kenton", "Kerri", "Kettering", + "Kevrob", "Keystone", "Kibler", "Kimes", "King", "Kings", + "Kingsley", "Kingswood", "Kinsman", "Kinzel", "Kirk", "Klotz", + "Knipe", "Knox", "Kopchak", "Kossuch", "Lacon", "Lafayette", + "Lagonda", "Lake", "Lakeside", "Lakewood", "Lambert", "Lancaster", + "Lancaster-Chillicoth", "Lander", "Laneway", "Langan", "Lark", + "Larkspur", "Larry", "Larzelere", "Lasalle", "Lashley", "Laurel", + "Lavona", "Lawhead", "Lawn", "Lawndale", "Lawson", "Lawyers", + "Layton", "Lazelere", "Lectric", "Ledbetter", "Leedom", "Leffler", + "Lefter", "Legion", "Lenox", "Lent", "Leon", "Leonard", + "Leonardville", "Leslie", "Lesslar", "Lewis", "Lexington", + "Liberty", "Licking", "Lillian", "Lima", "Limestone", "Lincoln", + "Lincolnway", "Lindale", "Lindbergh", "Linden", "Lindsay", "Linn", + "Linwood", "Lisa", "Lithopolis", "Livingston", "Lock", "Locksmith", + "Locust", "Lodge", "Lomita", "London", "Long", "Lookout", "Lost", + "Loudon", "Louise", "Lovers", "Lubring", "Lucas", "Lucasburg", + "Luck", "Lundgren", "Lutz", "Macedonia", "Mackenzie", "Madison", + "Mailey", "Main", "Malibu", "Manning", "Manor", "Mansfield", + "Maple", "Maplecraft", "Mapleview", "Maplewood", "Marchmont", + "Marietta", "Marion", "Mark", "Market", "Marketing", "Marlo", + "Marne", "Marsha", "Marshdale", "Martin", "Martinel", "Mary", + "Mast", "Matthews", "Mayfair", "Maysville", "Mcarthur", "Mccarley", + "Mccaslin", "Mcclain", "Mcclure", "Mcconnell", "Mcconnellsville", + "Mcdaniel", "Mcdonald", "Mcfarland", "Mcintire", "Mckaig", + "Mckeever", "Mckinley", "Mcmillan", "Mcowens", "Mead", "Meadow", + "Meadowbrook", "Meadowhaven", "Meadowood", "Mechanicsburg", "Meek", + "Melick", "Melrose", "Memory", "Meridian", "Meriwether", "Merlin", + "Merriam", "Merrick", "Merrimac", "Merryhill", "Mershon", + "Messimer", "Metro", "Miami", "Michael", "Michigan", "Middle", + "Middlefork", "Middleton", "Midway", "Milagra", "Military", "Mill", + "Miller", "Millers", "Milton", "Miner", "Missouri", "Mitchell", + "Moccasin", "Mock", "Mohawk", "Mollysrock", "Mona", "Monroe", + "Montague", "Montgomery", "Moonlight", "Moore", "Moorehead", + "Moores", "Moorewood", "Morgan", "Morgantown", "Morganville", + "Morningstar", "Morrison", "Morse", "Mound", "Moxadarla", + "Moxahala", "Muirwood", "Mulberry", "Mundy", "Munson", "Murray", + "Muskingum", "Musselman", "Myrtle", "Nancy", "Narrows", "National", + "Navy", "Neal", "Neil", "Nelson", "Neptune", "Newark", "Newgate", + "Newlon", "Newman", "Newport", "Nichalas", "Nolan", "None", + "Nor-Bixbey", "Nora", "Norfield", "Normandy", "Norris", "North", + "Northcrest", "Northland", "Norwich", "Norwood", "Nottingham", + "Nottinghamshire", "Nugent", "Oakland", "Oakwood", "Obetz", + "Odell", "Ohio", "Okey", "Olive", "Olney", "Ontario", "Opera", + "Orange", "Orchard", "Orders", "Orton", "Osage", "Osceola", + "Otterbein", "Overlook", "Owens", "Oxford", "Paint", "Palamino", + "Pallas", "Palmer", "Palmeraway", "Palmwood", "Palomino", + "Paragon", "Parish", "Park", "Parker", "Parks", "Parkview", + "Parkway", "Parkwood", "Parliament", "Parry", "Partridge", "Patch", + "Patricia", "Peachblow", "Pear", "Pearl", "Pembroke", "Penn", + "Penney", "Pennisula", "Pennsylvania", "Penrick", "Perdue", + "Perine", "Perkins", "Perry", "Perryton", "Pershing", "Peters", + "Petersburg", "Peterson", "Pfeifer", "Pfeiffer", "Philadelphia", + "Phillips", "Pickwick", "Pierce", "Pike", "Pine", "Pinecrest", + "Pinetown", "Pineview", "Pinewood", "Pinkerton", "Pinkley", + "Pioneer", "Piper", "Plainfield", "Plantation", "Playford", + "Pleasant", "Pleasantview", "Pleasantville", "Pointe", "Poplar", + "Portage", "Porter", "Portland", "Potters", "Potts", "Powell", + "Prame", "Pratt", "Price", "Princeton", "Prior", "Prison", + "Promway", "Prospect", "Pryor", "Public", "Purdy", "Purvis", + "Putnam", "Quarry", "Quick", "Quincy", "Quinlan", "Race", "Radnor", + "Raiders", "Railroad", "Rains", "Raintree", "Range", "Rankin", + "Ransbottom", "Raven", "Ravenwood", "Rawson", "Reading", "Ream", + "Redman", "Redondo", "Reed", "Reeves", "Rehl", "Restless", + "Reynolds", "Rhonda", "Rice", "Richards", "Richey", "Richman", + "Richmond", "Richvale", "Richwood", "Rider", "Ridge", "Ridgefield", + "Ridgeland", "Ridgeview", "Ridgewood", "Rigby", "Riggin", "Rigny", + "Ritchey", "Ritenour", "River", "Riverside", "Riverview", + "Roadayle", "Robertson", "Robin", "Robinson", "Robinwood", "Rock", + "Rockville", "Roemer", "Roland", "Rollins", "Rondayle", + "Roosevelt", "Roper", "Rose", "Roseville", "Rosewood", "Rowland", + "Royalton", "Royma", "Rucker", "Runyan", "Russell", "Rustle", + "Ruth", "Ryan", "Salem", "Salgarber", "Sally", "Saltzgaber", + "Sampson", "Samuel", "Sand", "Sandhurst", "Sandra", "Sandusky", + "Sandvik", "Santoy", "Sarah", "Scarborough", "Scenic", "Schaum", + "Schneider", "Scholl", "School", "Schuler", "Schultz", "Schwallie", + "Scott", "Scout", "Sealover", "Seaman", "Seborn", "Sells", + "Selsam", "Senator", "Seroco", "Sevall", "Severt", "Seward", + "Seymore", "Shady", "Shagbark", "Shaliman", "Shandon", "Sharon", + "Sharonwood", "Shasta", "Shaw", "Shawnee", "Sheandoah", "Sheila", + "Shellhart", "Shenandoah", "Shepherd", "Sherborne", "Sheridan", + "Sherman", "Sherwood", "Shindern", "Shinick", "Shinnick", + "Shiplett", "Shoop", "Shore", "Short", "Shumaker", "Sibley", + "Silliman", "Silmore", "Skyline", "Skyview", "Slack", "Smithfield", + "Smithwood", "Snoke", "Snyder", "Sofin", "Solida", "Somers", + "Somerset", "Sonora", "Souder", "South", "Southard", "Southeast", + "Southern", "Southward", "Spangler", "Sparling", "Spellman", + "Spence", "Spencer", "Spielbusch", "Spratt", "Spring", + "Springdale", "Spruce", "Spry", "Stacy", "Stalder", "Stalling", + "Stanley", "Stansberry", "Stanton", "Stanway", "State", "Steele", + "Stein", "Stephens", "Stevens", "Stevy", "Stewart", "Stiers", + "Stillmeadow", "Stillwell", "Stine", "Stiver", "Stokely", "Stone", + "Stonecreek", "Stormont", "Stout", "Stoutsville", "Strawberry", + "Street", "Sturtz", "Stygler", "Sudbury", "Sugargrove", + "Sugartree", "Summit", "Sundale", "Sunflower", "Sunkel", "Sunray", + "Sunrise", "Sunset", "Superior", "Surger", "Swans", "Swartz", + "Swingle", "Sycamore", "Talford", "Talley", "Tamarron", "Tammy", + "Tannehill", "Tarkman", "Taylor", "Teakwood", "Tedrick", "Temple", + "Terrace", "Terry", "Theobald", "Third", "Thomas", "Thompson", + "Thorn", "Thornberry", "Thornhill", "Thurman", "Tiffany", + "Tileston", "Titus", "Todd", "Toni", "Towers", "Town", "Trabue", + "Traci", "Traco", "Tranquility", "Treehouse", "Tremont", "Trend", + "Tridelphia", "Tupedo", "Turner", "Turtle", "Tuscarawas", + "Twimenhill", "Tyman", "Underwood", "Uneeda", "Union", "Unknown", + "Valley", "Vance", "Vaughn", "Venture", "Venus", "Vernon", + "Vetter", "Vicki", "Victory", "Villa", "Village", "Vine", "Vinsel", + "Virginia", "Vista", "Vroom", "Wabash", "Wacker", "Wakatomika", + "Waldolf", "Walker", "Wall", "Wallwork", "Walnut", "Walter", + "Waltham", "Ward", "Wargo", "Warner", "Warners", "Warren", + "Warwick", "Washington", "Water", "Waters", "Watkins", "Watson", + "Watts", "Wayne", "Weaver", "Webb", "Webster", "Wedgewood", + "Weedon", "Weller", "Wells", "Wentz", "Wessex", "West", + "Westbourne", "Western", "Westmoor", "Westmore", "Westwood", + "Wetsell", "Whaley", "Wheatland", "Wheelabout", "Wheeler", + "Wheeling", "Whipple", "Whites", "Whitman", "Wilhelm", "Wilkins", + "Williams", "Willis", "Willow", "Wilmer", "Wilmington", "Wilshire", + "Wilson", "Winding", "Windmill", "Windsong", "Winfield", + "Winlwood", "Winter", "Winton", "Wise", "Wisteria", "Wogan", + "Wolfe", "Wolford", "Woodberry", "Woodbrook", "Woodland", + "Woodlawn", "Woolper", "Workman", "Wortman", "Wrexham", "Yale", + "Yingling", "Yost", "Young", "Zane", "Zanesville", "Zella" - }; + }; - private static String[] addressSuffixes = { "Avenue", "Boulevard", - "Circle", "Crescent", "Court", "Drive", "Heights", "Lane", "Park", - "Path", "Parkway", "Place", "Road", "Ridge", "Run", "Square", - "Street", "Station", "Terrace", "Trail", "Way", "Rd", "Ln", "St", - "Blvd", "Ave", "Drv" }; + private static String[] addressSuffixes = {"Avenue", "Boulevard", + "Circle", "Crescent", "Court", "Drive", "Heights", "Lane", "Park", + "Path", "Parkway", "Place", "Road", "Ridge", "Run", "Square", + "Street", "Station", "Terrace", "Trail", "Way", "Rd", "Ln", "St", + "Blvd", "Ave", "Drv"}; - private static String[] cities = { "Abba", "Abbeville", "Acworth", - "Adairsville", "Adel", "Adrian", "Ailey", "Alamo", "Alapaha", - "Albany", "Allenhurst", "Alma", "Alma", "Alpharetta", "Alston", - "Amboy", "Ambrose", "Americus", "Appling", "Arlington", "Ashburn", - "Athens", "Atkinson", "Atlanta", "Attapulgus", "Auburn", "Augusta", - "Augusta-Richmond County", "Austell", "Avondale Estates", "Axson", - "Baconton", "Baden", "Bainbridge", "Bainbridge", "Baldwin", - "Bannockburn", "Barnesville", "Barney", "Barretts", "Barwick", - "Baxley", "Bemiss", "Berkeley Lake", "Berlin", "Blackshear", - "Blairsville", "Blakely", "Bloomingdale", "Blue Ridge", "Bogart", - "Boston", "Bowdon", "Bowens Mill", "Bowman", "Braselton", "Bremen", - "Brinson", "Bristol", "Bronwood", "Brookfield", "Brooklet", - "Brooks", "Broxton", "Brunswick", "Buchanan", "Buena Vista", - "Buford", "Bushnell", "Byromville", "Byron", "Cairo", "Camilla", - "Canton", "Carnesville", "Carrollton", "Cartersville", - "Cave Spring", "Cecil", "Cedartown", "Centerville", "Chamblee", - "Chatsworth", "Chauncey", "Chester", "Chickamauga", "Chula", - "Clarkston", "Claxton", "Clayton", "Cleveland", "Clyatteville", - "Clyo", "Cobbtown", "Cochran", "Cogdell", "Cohutta", "Colesburg", - "College Park", "Collins", "Colquitt", "Columbus", "Commerce", - "Conyers", "Coolidge", "Cordele", "Cornelia", "Council", - "Country Club Estate", "Coverdale", "Covington", "Cox", - "Crawfordville", "Crescent", "Culloden", "Cumming", "Cusseta", - "Cuthbert", "Dacula", "Dahlonega", "Daisy", "Dakota", "Dallas", - "Dalton", "Damascus", "Danielsville", "Darien", "Dasher", "Dawson", - "Dawsonville", "Decatur", "Denmark", "Dillard", "Dixie", - "Dock Junction", "Doerun", "Donalsonville", "Doraville", "Douglas", - "Douglasville", "Dover Bluff", "Dupont", "Dublin", "Dudley", - "Duluth", "Dunwoody", "East Dublin", "East Point", "Eastman", - "Eatonton", "Ebenezer", "Edison", "Edith", "Egypt", "Elberton", - "Eldorado", "Ellabelle", "Ellaville", "Ellenton", "Ellijay", - "Enigma", "Euharlee", "Eulonia", "Everitt", "Fairburn", "Fairmont", - "Fargo", "Fayetteville", "Fitzgerald", "Flemington", - "Flowery Branch", "Folkston", "Forest Park", "Forsyth", - "Fort Gaines", "Fort Oglethorpe", "Fort Stewart", "Fort Valley", - "Franklin", "Fruitland", "Funston", "Gainesville", "Garden City", - "Garfield", "Geneva", "Georgetown", "Gibson", "Glennville", - "Glenwood", "Glory", "Graham", "Gray", "Greensboro", "Greenville", - "Griffin", "Grooverville", "Groveland", "Grovetown", "Gumbranch", - "Guyton", "Hagan", "Hahira", "Hamilton", "Hampton", "Hapeville", - "Harding", "Harding", "Hardwicke", "Harrietts Bluff", "Hartwell", - "Hawkinsville", "Haylon", "Hazlehurst", "Helena", "Hepzibah", - "Hiawassee", "Hickox", "Higgston", "Hinesville", "Hiram", - "Hoboken", "Hogansville", "Holly Springs", "Holt", "Homeland", - "Homer", "Homerville", "Hopeulikit", "Hortense", "Howell", "Inaha", - "Iron City", "Irwinton", "Irwinville", "Isle Of Hope-Dutch Island", - "Jackson", "Janis", "Jasper", "Jefferson", "Jeffersonville", - "Jesup", "Johns Creek", "Jonesboro", "Keller", "Kennesaw", - "Kinderlou", "Kings Bay Base", "Kingsland", "Kirkland", "Kite", - "Lafayette", "Lagrange", "Lake City", "Lake Park", "Lakeland", - "Lanier", "Lawrenceville", "Lax", "Leary", "Leefield", "Leesburg", - "Lenox", "Lexington", "Lilburn", "Lincolnton", "Lithonia", - "Locust Grove", "Loganville", "Lookout Mountain", "Louisville", - "Lovejoy", "Ludowici", "Lulaton", "Lumber City", "Lumpkin", - "Lyons", "Macon", "Madison", "Manassas", "Manchester", "Marietta", - "Maxeys", "Mayday", "Mcdonough", "Mcintosh", "Mcintyre", "Mcrae", - "Meigs", "Meldrim", "Mershon", "Metter", "Midway", "Milan", - "Milledgeville", "Millen", "Milton", "Moniac", "Monroe", - "Montezuma", "Montgomery", "Monticello", "Montrose", "Mora", - "Morgan", "Morrow", "Morven", "Moultrie", "Mount Vernon", - "Mount Zion", "Mountain Park", "Mystic", "Nahunta", "Nankin", - "Nashville", "Needmore", "Nelson", "Nevils", "New Rock Hill", - "Newnan", "Newton", "Nicholls", "Norcross", "Norman Park", - "Oakwood", "Ochlocknee", "Ocilla", "Odum", "Offerman", "Offerman", - "Oglethorpe", "Omega", "Osterfield", "Ousley", "Oxford", - "Palmetto", "Parrott", "Patterson", "Peachtree City Website", - "Pearson", "Pelham", "Pembroke", "Perry", "Phillipsburg", - "Pine Lake", "Pineora", "Pineview", "Pooler", "Port Wentworth", - "Portal", "Potter", "Poulan", "Powder Springs", "Preston", - "Pridgen", "Pulaski", "Queensland", "Quitman", "Ray City", - "Rebecca", "Register", "Reidsville", "Remerton", "Rentz", - "Retreat", "Riceboro", "Richmond Hill", "Ridgeville", "Rincon", - "Ringgold", "Riverdale", "Riverside", "Rochelle", "Rockingham", - "Rockmart", "Rome", "Roswell", "Royston", "Rutledge", - "Saint George", "Sale City", "Sandersville", "Sandy Springs", - "Sasser", "Savannah", "Screven", "Senoia", "Sessoms", "Shawnee", - "Shellman Bluff", "Sirmans", "Skidaway Island", "Smithville", - "Smyrna", "Snellville", "Social Circle", "Soperton", - "South Newport", "Sparks", "Sparta", "Springfield", "Strongsville", - "St. Simons Island", "Statenville", "Statesboro", "Sterling", - "Stillmore", "Stillwell", "Stilson", "Stockbridge", "Stockton", - "Stone Mountain", "Sugar Hill", "Sumner", "Sunbury", "Sunsweet", - "Surrency", "Suwanee", "Swainsboro", "Sycamore", "Sylvania", - "Sylvester", "Talbotton", "Tallapoosa", "Tarboro", "Tarver", - "Temple", "Thalman", "Thelma", "Thomaston", "Thomasville", - "Thomson", "Thunderbolt", "Tifton", "Toccoa", "Toomsboro", - "Townsend", "Trenton", "Trudie", "Tucker", "Twin City", - "Twin Peaks", "Tybee Island", "Tyrone", "Unadilla", "Union City", - "Unionville", "Upton", "Uvalda", "Valdosta", "Valona", - "Vernonburg", "Vidalia", "Vienna", "Villa Rica", "Walthourville", - "Warrenton", "Warwick", "Washington", "Waterloo", "Watkinsville", - "Waverly", "Waycross", "Waynesboro", "Waynesville", "Weber", - "West Green", "West Point", "Westwood", "Whigham", "White Oak", - "Whitmarsh Island", "Willacoochee", "Wilmington Island", "Winder", - "Winokur", "Withers", "Woodbine", "Woodstock", "Worth", "Wray", - "Wrightsville" }; + private static String[] cities = {"Abba", "Abbeville", "Acworth", + "Adairsville", "Adel", "Adrian", "Ailey", "Alamo", "Alapaha", + "Albany", "Allenhurst", "Alma", "Alma", "Alpharetta", "Alston", + "Amboy", "Ambrose", "Americus", "Appling", "Arlington", "Ashburn", + "Athens", "Atkinson", "Atlanta", "Attapulgus", "Auburn", "Augusta", + "Augusta-Richmond County", "Austell", "Avondale Estates", "Axson", + "Baconton", "Baden", "Bainbridge", "Bainbridge", "Baldwin", + "Bannockburn", "Barnesville", "Barney", "Barretts", "Barwick", + "Baxley", "Bemiss", "Berkeley Lake", "Berlin", "Blackshear", + "Blairsville", "Blakely", "Bloomingdale", "Blue Ridge", "Bogart", + "Boston", "Bowdon", "Bowens Mill", "Bowman", "Braselton", "Bremen", + "Brinson", "Bristol", "Bronwood", "Brookfield", "Brooklet", + "Brooks", "Broxton", "Brunswick", "Buchanan", "Buena Vista", + "Buford", "Bushnell", "Byromville", "Byron", "Cairo", "Camilla", + "Canton", "Carnesville", "Carrollton", "Cartersville", + "Cave Spring", "Cecil", "Cedartown", "Centerville", "Chamblee", + "Chatsworth", "Chauncey", "Chester", "Chickamauga", "Chula", + "Clarkston", "Claxton", "Clayton", "Cleveland", "Clyatteville", + "Clyo", "Cobbtown", "Cochran", "Cogdell", "Cohutta", "Colesburg", + "College Park", "Collins", "Colquitt", "Columbus", "Commerce", + "Conyers", "Coolidge", "Cordele", "Cornelia", "Council", + "Country Club Estate", "Coverdale", "Covington", "Cox", + "Crawfordville", "Crescent", "Culloden", "Cumming", "Cusseta", + "Cuthbert", "Dacula", "Dahlonega", "Daisy", "Dakota", "Dallas", + "Dalton", "Damascus", "Danielsville", "Darien", "Dasher", "Dawson", + "Dawsonville", "Decatur", "Denmark", "Dillard", "Dixie", + "Dock Junction", "Doerun", "Donalsonville", "Doraville", "Douglas", + "Douglasville", "Dover Bluff", "Dupont", "Dublin", "Dudley", + "Duluth", "Dunwoody", "East Dublin", "East Point", "Eastman", + "Eatonton", "Ebenezer", "Edison", "Edith", "Egypt", "Elberton", + "Eldorado", "Ellabelle", "Ellaville", "Ellenton", "Ellijay", + "Enigma", "Euharlee", "Eulonia", "Everitt", "Fairburn", "Fairmont", + "Fargo", "Fayetteville", "Fitzgerald", "Flemington", + "Flowery Branch", "Folkston", "Forest Park", "Forsyth", + "Fort Gaines", "Fort Oglethorpe", "Fort Stewart", "Fort Valley", + "Franklin", "Fruitland", "Funston", "Gainesville", "Garden City", + "Garfield", "Geneva", "Georgetown", "Gibson", "Glennville", + "Glenwood", "Glory", "Graham", "Gray", "Greensboro", "Greenville", + "Griffin", "Grooverville", "Groveland", "Grovetown", "Gumbranch", + "Guyton", "Hagan", "Hahira", "Hamilton", "Hampton", "Hapeville", + "Harding", "Harding", "Hardwicke", "Harrietts Bluff", "Hartwell", + "Hawkinsville", "Haylon", "Hazlehurst", "Helena", "Hepzibah", + "Hiawassee", "Hickox", "Higgston", "Hinesville", "Hiram", + "Hoboken", "Hogansville", "Holly Springs", "Holt", "Homeland", + "Homer", "Homerville", "Hopeulikit", "Hortense", "Howell", "Inaha", + "Iron City", "Irwinton", "Irwinville", "Isle Of Hope-Dutch Island", + "Jackson", "Janis", "Jasper", "Jefferson", "Jeffersonville", + "Jesup", "Johns Creek", "Jonesboro", "Keller", "Kennesaw", + "Kinderlou", "Kings Bay Base", "Kingsland", "Kirkland", "Kite", + "Lafayette", "Lagrange", "Lake City", "Lake Park", "Lakeland", + "Lanier", "Lawrenceville", "Lax", "Leary", "Leefield", "Leesburg", + "Lenox", "Lexington", "Lilburn", "Lincolnton", "Lithonia", + "Locust Grove", "Loganville", "Lookout Mountain", "Louisville", + "Lovejoy", "Ludowici", "Lulaton", "Lumber City", "Lumpkin", + "Lyons", "Macon", "Madison", "Manassas", "Manchester", "Marietta", + "Maxeys", "Mayday", "Mcdonough", "Mcintosh", "Mcintyre", "Mcrae", + "Meigs", "Meldrim", "Mershon", "Metter", "Midway", "Milan", + "Milledgeville", "Millen", "Milton", "Moniac", "Monroe", + "Montezuma", "Montgomery", "Monticello", "Montrose", "Mora", + "Morgan", "Morrow", "Morven", "Moultrie", "Mount Vernon", + "Mount Zion", "Mountain Park", "Mystic", "Nahunta", "Nankin", + "Nashville", "Needmore", "Nelson", "Nevils", "New Rock Hill", + "Newnan", "Newton", "Nicholls", "Norcross", "Norman Park", + "Oakwood", "Ochlocknee", "Ocilla", "Odum", "Offerman", "Offerman", + "Oglethorpe", "Omega", "Osterfield", "Ousley", "Oxford", + "Palmetto", "Parrott", "Patterson", "Peachtree City Website", + "Pearson", "Pelham", "Pembroke", "Perry", "Phillipsburg", + "Pine Lake", "Pineora", "Pineview", "Pooler", "Port Wentworth", + "Portal", "Potter", "Poulan", "Powder Springs", "Preston", + "Pridgen", "Pulaski", "Queensland", "Quitman", "Ray City", + "Rebecca", "Register", "Reidsville", "Remerton", "Rentz", + "Retreat", "Riceboro", "Richmond Hill", "Ridgeville", "Rincon", + "Ringgold", "Riverdale", "Riverside", "Rochelle", "Rockingham", + "Rockmart", "Rome", "Roswell", "Royston", "Rutledge", + "Saint George", "Sale City", "Sandersville", "Sandy Springs", + "Sasser", "Savannah", "Screven", "Senoia", "Sessoms", "Shawnee", + "Shellman Bluff", "Sirmans", "Skidaway Island", "Smithville", + "Smyrna", "Snellville", "Social Circle", "Soperton", + "South Newport", "Sparks", "Sparta", "Springfield", "Strongsville", + "St. Simons Island", "Statenville", "Statesboro", "Sterling", + "Stillmore", "Stillwell", "Stilson", "Stockbridge", "Stockton", + "Stone Mountain", "Sugar Hill", "Sumner", "Sunbury", "Sunsweet", + "Surrency", "Suwanee", "Swainsboro", "Sycamore", "Sylvania", + "Sylvester", "Talbotton", "Tallapoosa", "Tarboro", "Tarver", + "Temple", "Thalman", "Thelma", "Thomaston", "Thomasville", + "Thomson", "Thunderbolt", "Tifton", "Toccoa", "Toomsboro", + "Townsend", "Trenton", "Trudie", "Tucker", "Twin City", + "Twin Peaks", "Tybee Island", "Tyrone", "Unadilla", "Union City", + "Unionville", "Upton", "Uvalda", "Valdosta", "Valona", + "Vernonburg", "Vidalia", "Vienna", "Villa Rica", "Walthourville", + "Warrenton", "Warwick", "Washington", "Waterloo", "Watkinsville", + "Waverly", "Waycross", "Waynesboro", "Waynesville", "Weber", + "West Green", "West Point", "Westwood", "Whigham", "White Oak", + "Whitmarsh Island", "Willacoochee", "Wilmington Island", "Winder", + "Winokur", "Withers", "Woodbine", "Woodstock", "Worth", "Wray", + "Wrightsville"}; - public String[] getCities() { - return cities; - } + private static String[] countries = {"Andorra", "United Arab Emirates", + "Afghanistan", "Antigua and Barbuda", "Anguilla", "Albania", + "Armenia", "Angola", "Antarctica", "Argentina", "American Samoa", + "Austria", "Australia", "Aruba", "Azerbaijan", "Bosnia Herzegovina", + "Barbados", "Bangladesh", "Belgium", "Burkina Faso", "Bulgaria", + "Bahrain", "Burundi", "Benin", "Bermuda", "Brunei Darussalam", + "Bolivia", "Caribbean Netherlands ", "Brazil", "Bahamas", "Bhutan", + "Bouvet Island", "Botswana", "Belarus", "Belize", "Canada", "Congo", + "Central African Republic", "Congo", "Switzerland", "Cook Islands", + "Chile", "Cameroon", "China", "Colombia", "Costa Rica", "Cuba", + "Cape Verde", "Christmas Island", "Cyprus", "Czech Republic", + "Germany", "Djibouti", "Denmark", "Dominica", "Dominican Republic", + "Algeria", "Ecuador", "Estonia", "Egypt", "Western Sahara", + "Eritrea", "Spain", "Ethiopia", "Finland", "Fiji", + "Falkland Islands", "Faroe Islands", "France", "Gabon", + "United Kingdom", "Grenada", "Georgia", "French Guiana", "Guernsey", + "Ghana", "Gibraltar", "Greenland", "Gambia", "Guinea", "Guadeloupe", + "Equatorial Guinea", "Greece", "Guatemala", "Guam", "Guinea-Bissau", + "Guyana", "Hong Kong", "Honduras", "Croatia", "Haiti", "Hungary", + "Indonesia", "Ireland", "Israel", "Isle of Man", "India", "Iraq", + "Iran", "Iceland", "Italy", "Jersey", "Jamaica", "Jordan", "Japan", + "Kenya", "Kyrgyzstan", "Cambodia", "Kiribati", "Comoros", + "North Korea", "South Korea", "Kuwait", "Cayman Islands", + "Kazakhstan", "Lao People", "Lebanon", "Saint Lucia", + "Liechtenstein", "Sri Lanka", "Liberia", "Lesotho", "Lithuania", + "Luxembourg", "Latvia", "Libya", "Morocco", "Monaco", "Moldova", + "Montenegro", "Madagascar", "Marshall Islands", "Macedonia", "Mali", + "Myanmar", "Mongolia", "Macau", "Northern Mariana Islands", + "Martinique", "Mauritania", "Montserrat", "Malta", "Mauritius", + "Maldives", "Malawi", "Mexico", "Malaysia", "Mozambique", "Namibia", + "New Caledonia", "Niger", "Norfolk Island", "Nigeria", "Nicaragua", + "The Netherlands", "Norway", "Nepal", "Nauru", "Niue", + "New Zealand", "Oman", "Panama", "Peru", "French Polynesia", + "Papua New Guinea", "Philippines", "Pakistan", "Poland", "Pitcairn", + "Puerto Rico", "Palestine", "Portugal", "Palau", "Paraguay", + "Qatar", "Romania", "Serbia", "Russian Federation", "Rwanda", + "Saudi Arabia", "Solomon Islands", "Seychelles", "Sudan", "Sweden", + "Singapore", "Saint Helena", "Slovenia", "Slovakia", "Sierra Leone", + "San Marino", "Senegal", "Somalia", "Suriname", "South Sudan", + "El Salvador", "Sint Maarten", "Syria", "Swaziland", "Chad", "Togo", + "Thailand", "Tajikistan", "Tokelau", "Timor-Leste", "Turkmenistan", + "Tunisia", "Tonga", "Turkey", "Trinidad and Tobago", "Tuvalu", + "Taiwan", "Tanzania", "Ukraine", "Uganda", "United States", + "Uruguay", "Uzbekistan", "Vatican", "Venezuela", "Vietnam", + "Vanuatu", "Samoa", "Yemen", "Mayotte", "South Africa", "Zambia", + "Zimbabwe"}; - public String[] getStreetNames() { - return streetNames; - } + private static String[] countriesShort = {"AD", "AE", "AF", "AG", "AI", + "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AZ", "BA", + "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BM", "BN", "BO", + "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CD", "CF", + "CG", "CH", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CX", + "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", + "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FO", "FR", "GA", "GB", + "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", + "GR", "GT", "GU", "GW", "GY", "HK", "HN", "HR", "HT", "HU", "ID", + "IE", "IL", "IM", "IN", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", + "JP", "KE", "KG", "KH", "KI", "KM", "KP", "KR", "KW", "KY", "KZ", + "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", + "MA", "MC", "MD", "ME", "MG", "MH", "MK", "ML", "MM", "MN", "MO", + "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", + "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", + "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PN", "PR", + "PS", "PT", "PW", "PY", "QA", "RO", "RS", "RU", "RW", "SA", "SB", + "SC", "SD", "SE", "SG", "SH", "SI", "SK", "SL", "SM", "SN", "SO", + "SR", "SS", "SV", "SX", "SY", "SZ", "TD", "TG", "TH", "TJ", "TK", + "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", + "US", "UY", "UZ", "VA", "VE", "VN", "VU", "WS", "YE", "YT", "ZA", + "ZM", "ZW"}; - public String[] getAddressSuffixes() { - return addressSuffixes; - } + private static String[] nationalities = {"Afghan", "Albanian", "Algerian", + "American", "Andorran", "Angolan", "Antiguans", "Argentinean", + "Armenian", "Australian", "Austrian", "Azerbaijani", "Bahamian", + "Bahraini", "Bangladeshi", "Barbadian", "Barbudans", "Batswana", + "Belarusian", "Belgian", "Belizean", "Beninese", "Bhutanese", + "Bolivian", "Bosnian", "Brazilian", "British", "Bruneian", + "Bulgarian", "Burkinabe", "Burmese", "Burundian", "Cambodian", + "Cameroonian", "Canadian", "Cape Verdean", "Central African", + "Chadian", "Chilean", "Chinese", "Colombian", "Comoran", + "Congolese", "Costa Rican", "Croatian", "Cuban", "Cypriot", "Czech", + "Danish", "Djibouti", "Dominican", "Dutch", "East Timorese", + "Ecuadorean", "Egyptian", "Emirian", "Equatorial Guinean", + "Eritrean", "Estonian", "Ethiopian", "Fijian", "Filipino", + "Finnish", "French", "Gabonese", "Gambian", "Georgian", "German", + "Ghanaian", "Greek", "Grenadian", "Guatemalan", "Guinea-Bissauan", + "Guinean", "Guyanese", "Haitian", "Herzegovinian", "Honduran", + "Hungarian", "Icelander", "Indian", "Indonesian", "Iranian", + "Iraqi", "Irish", "Israeli", "Italian", "Ivorian", "Jamaican", + "Japanese", "Jordanian", "Kazakhstani", "Kenyan", + "Kittian and Nevisian", "Kuwaiti", "Kyrgyz", "Laotian", "Latvian", + "Lebanese", "Liberian", "Libyan", "Liechtensteiner", "Lithuanian", + "Luxembourger", "Macedonian", "Malagasy", "Malawian", "Malaysian", + "Maldivan", "Malian", "Maltese", "Marshallese", "Mauritanian", + "Mauritian", "Mexican", "Micronesian", "Moldovan", "Monacan", + "Mongolian", "Moroccan", "Mosotho", "Motswana", "Mozambican", + "Namibian", "Nauruan", "Nepalese", "Netherlander", "New Zealander", + "Ni-Vanuatu", "Nicaraguan", "Nigerian", "Nigerien", "North Korean", + "Northern Irish", "Norwegian", "Omani", "Pakistani", "Palauan", + "Panamanian", "Papua New Guinean", "Paraguayan", "Peruvian", + "Polish", "Portuguese", "Qatari", "Romanian", "Russian", "Rwandan", + "Saint Lucian", "Salvadoran", "Samoan", "San Marinese", + "Sao Tomean", "Saudi", "Scottish", "Senegalese", "Serbian", + "Seychellois", "Sierra Leonean", "Singaporean", "Slovakian", + "Slovenian", "Solomon Islander", "Somali", "South African", + "South Korean", "Spanish", "Sri Lankan", "Sudanese", "Surinamer", + "Swazi", "Swedish", "Swiss", "Syrian", "Taiwanese", "Tajik", + "Tanzanian", "Thai", "Togolese", "Tongan", + "Trinidadian or Tobagonian", "Tunisian", "Turkish", "Tuvaluan", + "Ugandan", "Ukrainian", "Uruguayan", "Uzbekistani", "Venezuelan", + "Vietnamese", "Welsh", "Yemenite", "Zambian", "Zimbabwean"}; + public String[] getCities() { + return cities; + } + + public String[] getStreetNames() { + return streetNames; + } + + public String[] getAddressSuffixes() { + return addressSuffixes; + } + + public String[] getCountries() { + return countries; + } + + public String[] getCountriesShort() { + return countriesShort; + } + + public String[] getNationalities() { + return nationalities; + } } diff --git a/src/main/java/org/fluttercode/datafactory/impl/DefaultContentDataValues.java b/src/main/java/org/fluttercode/datafactory/impl/DefaultContentDataValues.java index f7fa7fb..127f85f 100644 --- a/src/main/java/org/fluttercode/datafactory/impl/DefaultContentDataValues.java +++ b/src/main/java/org/fluttercode/datafactory/impl/DefaultContentDataValues.java @@ -27,56 +27,75 @@ public class DefaultContentDataValues implements ContentDataValues { - public static String[] words = { "throw", "ball", "hat", "red", "worn", - "list", "words", "computer", "in", "out", "hot", "cold", "warp", - "speed", "captain", "assert", "hold", "room", "ship", "lost", "is", - "television", "show", "about", "plane", "crash", "island", - "monster", "trees", "banging", "smoke", "where", "are", "we", - "was", "asked", "no", "rescue", "came", "build", "fire", "waited", - "days", "moved", "to", "caves", "found", "with", "ghost", "dad", - "in", "white", "rabbit", "lock", "discovered", "hatch", "with", - "boon", "secretly", "hid", "it", "while", "trying", "to", "open", - "it", "until", "sidekick", "died", "as", "sacrifice", "island", - "demanded", "many", "had", "dreams", "or", "visions", "others", - "came", "took", "people", "who", "are", "they", "what", "do", - "they", "want", "light", "came", "on", "through", "window", - "leader", "is", "a", "good", "man", "numbers", "in", "room", - "enter", "keys", "computer", "end", "of", "world", "wicket", - "magnetic", "pull", "shepherd", "always", "wrong", "much", - "suspense", "what", "to", "do", "when", "it", "ends", "I", "will", - "have", "to", "find", "something", "else", "to", "pique", "my", - "interest", "or maybe", "write", "lots", "of", "code", "probably", - "should", "have", "generated", "this", "text", "automatically", - "so", "will", "from", "the", "web", "ending", "badly", "library", - "handled", "books", "constantly", "headphones", "of", "ill", "on", - "it's", "sill","sits","sofa" }; + public static String[] words = {"throw", "ball", "hat", "red", "worn", + "list", "words", "computer", "in", "out", "hot", "cold", "warp", + "speed", "captain", "assert", "hold", "room", "ship", "lost", "is", + "television", "show", "about", "plane", "crash", "island", + "monster", "trees", "banging", "smoke", "where", "are", "we", + "was", "asked", "no", "rescue", "came", "build", "fire", "waited", + "days", "moved", "to", "caves", "found", "with", "ghost", "dad", + "in", "white", "rabbit", "lock", "discovered", "hatch", "with", + "boon", "secretly", "hid", "it", "while", "trying", "to", "open", + "it", "until", "sidekick", "died", "as", "sacrifice", "island", + "demanded", "many", "had", "dreams", "or", "visions", "others", + "came", "took", "people", "who", "are", "they", "what", "do", + "they", "want", "light", "came", "on", "through", "window", + "leader", "is", "a", "good", "man", "numbers", "in", "room", + "enter", "keys", "computer", "end", "of", "world", "wicket", + "magnetic", "pull", "shepherd", "always", "wrong", "much", + "suspense", "what", "to", "do", "when", "it", "ends", "I", "will", + "have", "to", "find", "something", "else", "to", "pique", "my", + "interest", "or maybe", "write", "lots", "of", "code", "probably", + "should", "have", "generated", "this", "text", "automatically", + "so", "will", "from", "the", "web", "ending", "badly", "library", + "handled", "books", "constantly", "headphones", "of", "ill", "on", + "it's", "sill", "sits", "sofa"}; - private static String[] businessTypes = { "Furnishings", "Bakery", - "Accounting", "Textiles", "Manufacturing", "Industries", - "Pro Services", "Landscaping", "Realty", "Travel", - "Medical supplies", "Office supplies", "Insurance", "Software", - "Motors", "Cafe", "Services", "Gymnasium", "Motor Services", - "Signs", "Development", "Studios", "Engineering", "Development" }; + private static String[] businessTypes = {"Furnishings", "Bakery", + "Accounting", "Textiles", "Manufacturing", "Industries", + "Pro Services", "Landscaping", "Realty", "Travel", + "Medical supplies", "Office supplies", "Insurance", "Software", + "Motors", "Cafe", "Services", "Gymnasium", "Motor Services", + "Signs", "Development", "Studios", "Engineering", "Development"}; - private static String[] emailHosts = { "gma1l", "hotma1l", "yah00", - "somema1l", "everyma1l", "ma1lbox", "b1zmail", "ma1l2u" }; + private static String[] emailHosts = {"gma1l", "hotma1l", "yah00", + "somema1l", "everyma1l", "ma1lbox", "b1zmail", "ma1l2u"}; - private static String[] tlds = { "org", "net", "com", "biz", "us", "co.uk" }; + private static String[] tlds = {"org", "net", "com", "biz", "us", "co.uk"}; - public String[] getWords() { - return words; - } + private static String[] occupations = {"Accountant", "Auditor", "Actor", + "Actuary", "Anesthesiologist", "Archivist", "Astronomer", + "Audiologist", "Bailiff", "Baker", "Barber", "Bartender", + "Boilermaker", "Breeder", "Carpenter", "Cashier", "Chemist", + "Chiropractor", "Choreographer", "Clergy", "Concierge", "Curator", + "Dancer", "Dishwasher", "Economist", "Editor", "Electrician", + "Embalmer", "Epidemiologist", "Faller", "Firefighter", "Forester", + "Geographer", "Glazier", "Historian", "Hydrologist", "Lawyer", + "Legislator", "Librarian", "Logistician", "Machinist", + "Mathematician", "Microbiologist", "Model", "Optometrist", + "Orthodontist", "Paperhanger", "Pharmacist", "Photographer", + "Physicist", "Pipelayer", "Podiatrist", "Prosthodontist", + "Psychiatrist", "Rigger", "Roofer", "Shampooer", "Sociologist", + "Statistician", "Stonemason", "Surgeon", "Surveyor", "Taper", + "Telemarketer", "Teller", "Upholsterer", "Veterinarian"}; - public String[] getBusinessTypes() { - return businessTypes; - } + public String[] getWords() { + return words; + } - public String[] getEmailHosts() { - return emailHosts; - } + public String[] getBusinessTypes() { + return businessTypes; + } - public String[] getTlds() { - return tlds; - } + public String[] getEmailHosts() { + return emailHosts; + } + public String[] getTlds() { + return tlds; + } + + public String[] getOccupations() { + return occupations; + } } diff --git a/src/main/java/org/fluttercode/datafactory/impl/DefaultNameDataValues.java b/src/main/java/org/fluttercode/datafactory/impl/DefaultNameDataValues.java index 3c1fd80..b84df88 100644 --- a/src/main/java/org/fluttercode/datafactory/impl/DefaultNameDataValues.java +++ b/src/main/java/org/fluttercode/datafactory/impl/DefaultNameDataValues.java @@ -27,269 +27,269 @@ public class DefaultNameDataValues implements NameDataValues { - private static String[] suffixes = { "II", "III", "Phd", "Jr", "Sr" }; - private static String[] prefixes = { "Mr", "Mrs", "Ms" }; - private static String[] firstNames = { "Aaron", "Abby", "Abigail", "Adam", - "Alan", "Albert", "Alex", "Alexandra", "Alexis", "Alice", "Alicia", - "Alisha", "Alissa", "Allen", "Allison", "Alyssa", "Amanda", - "Amber", "Amy", "Andrea", "Andrew", "Andy", "Angel", "Angela", - "Angie", "Anita", "Ann", "Anna", "Annette", "Anthony", "Antonio", - "April", "Arthur", "Ashley", "Audrey", "Austin", "Autumn", "Baby", - "Barb", "Barbara", "Becky", "Benjamin", "Beth", "Bethany", "Betty", - "Beverly", "Bill", "Billie", "Billy", "Blake", "Bob", "Bobbie", - "Bobby", "Bonnie", "Brad", "Bradley", "Brady", "Brandi", "Brandon", - "Brandy", "Breanna", "Brenda", "Brent", "Brett", "Brian", - "Brianna", "Brittany", "Brooke", "Brooklyn", "Bruce", "Bryan", - "Caleb", "Cameron", "Candy", "Carl", "Carla", "Carmen", "Carol", - "Carolyn", "Carrie", "Casey", "Cassandra", "Catherine", "Cathy", - "Chad", "Charlene", "Charles", "Charlie", "Charlotte", "Chase", - "Chasity", "Chastity", "Chelsea", "Cheryl", "Chester", "Cheyenne", - "Chris", "Christian", "Christina", "Christine", "Christoph", - "Christopher", "Christy", "Chuck", "Cindy", "Clara", "Clarence", - "Clayton", "Clifford", "Clint", "Cody", "Colton", "Connie", - "Corey", "Cory", "Courtney", "Craig", "Crystal", "Curtis", - "Cynthia", "Dakota", "Dale", "Dallas", "Dalton", "Dan", "Dana", - "Daniel", "Danielle", "Danny", "Darla", "Darlene", "Darrell", - "Darren", "Dave", "David", "Dawn", "Dean", "Deanna", "Debbie", - "Deborah", "Debra", "Denise", "Dennis", "Derek", "Derrick", - "Destiny", "Devin", "Diana", "Diane", "Dillon", "Dixie", "Dominic", - "Don", "Donald", "Donna", "Donnie", "Doris", "Dorothy", "Doug", - "Douglas", "Drew", "Duane", "Dustin", "Dusty", "Dylan", "Earl", - "Ed", "Eddie", "Edward", "Elaine", "Elizabeth", "Ellen", "Emily", - "Eric", "Erica", "Erika", "Erin", "Ernest", "Ethan", "Eugene", - "Eva", "Evelyn", "Everett", "Faith", "Father", "Felicia", "Floyd", - "Francis", "Frank", "Fred", "Gabriel", "Gage", "Gail", "Gary", - "Gene", "George", "Gerald", "Gina", "Ginger", "Glen", "Glenn", - "Gloria", "Grace", "Greg", "Gregory", "Haley", "Hannah", "Harley", - "Harold", "Harry", "Heath", "Heather", "Heidi", "Helen", "Herbert", - "Holly", "Hope", "Howard", "Hunter", "Ian", "Isaac", "Jack", - "Jackie", "Jacob", "Jade", "Jake", "James", "Jamie", "Jan", "Jane", - "Janet", "Janice", "Jared", "Jasmine", "Jason", "Jay", "Jean", - "Jeannie", "Jeff", "Jeffery", "Jeffrey", "Jenna", "Jennifer", - "Jenny", "Jeremiah", "Jeremy", "Jerry", "Jesse", "Jessica", - "Jessie", "Jill", "Jim", "Jimmy", "Joann", "Joanne", "Jodi", - "Jody", "Joe", "Joel", "Joey", "John", "Johnathan", "Johnny", - "Jon", "Jonathan", "Jonathon", "Jordan", "Joseph", "Josh", - "Joshua", "Joyce", "Juanita", "Judy", "Julia", "Julie", "Justin", - "Kaitlyn", "Karen", "Katelyn", "Katherine", "Kathleen", "Kathryn", - "Kathy", "Katie", "Katrina", "Kay", "Kayla", "Kaylee", "Keith", - "Kelly", "Kelsey", "Ken", "Kendra", "Kenneth", "Kenny", "Kevin", - "Kim", "Kimberly", "Kris", "Krista", "Kristen", "Kristin", - "Kristina", "Kristy", "Kyle", "Kylie", "Lacey", "Laken", "Lance", - "Larry", "Laura", "Lawrence", "Leah", "Lee", "Leonard", "Leroy", - "Leslie", "Levi", "Lewis", "Linda", "Lindsay", "Lindsey", "Lisa", - "Lloyd", "Logan", "Lois", "Loretta", "Lori", "Louis", "Lynn", - "Madison", "Mandy", "Marcus", "Margaret", "Maria", "Mariah", - "Marie", "Marilyn", "Marion", "Mark", "Marlene", "Marsha", - "Martha", "Martin", "Marty", "Marvin", "Mary", "Mary ann", "Mason", - "Matt", "Matthew", "Max", "Megan", "Melanie", "Melinda", "Melissa", - "Melody", "Michael", "Michelle", "Mickey", "Mike", "Mindy", - "Miranda", "Misty", "Mitchell", "Molly", "Monica", "Morgan", - "Mother", "Myron", "Nancy", "Natasha", "Nathan", "Nicholas", - "Nick", "Nicole", "Nina", "Noah", "Norma", "Norman", "Olivia", - "Paige", "Pam", "Pamela", "Pat", "Patricia", "Patrick", "Patty", - "Paul", "Paula", "Peggy", "Penny", "Pete", "Phillip", "Phyllis", - "Rachael", "Rachel", "Ralph", "Randall", "Randi", "Randy", "Ray", - "Raymond", "Rebecca", "Regina", "Renee", "Rex", "Rhonda", - "Richard", "Rick", "Ricky", "Rita", "Rob", "Robbie", "Robert", - "Roberta", "Robin", "Rochelle", "Rocky", "Rod", "Rodney", "Roger", - "Ron", "Ronald", "Ronda", "Ronnie", "Rose", "Roxanne", "Roy", - "Russ", "Russell", "Rusty", "Ruth", "Ryan", "Sabrina", "Sally", - "Sam", "Samantha", "Samuel", "Sandra", "Sandy", "Sara", "Sarah", - "Savannah", "Scott", "Sean", "Seth", "Shanda", "Shane", "Shanna", - "Shannon", "Sharon", "Shaun", "Shawn", "Shawna", "Sheila", - "Shelly", "Sher", "Sherri", "Sherry", "Shirley", "Sierra", - "Skyler", "Stacey", "Stacy", "Stanley", "Stephanie", "Stephen", - "Steve", "Steven", "Sue", "Summer", "Susan", "Sydney", "Tabatha", - "Tabitha", "Tamara", "Tammy", "Tara", "Tasha", "Tashia", "Taylor", - "Ted", "Teresa", "Terri", "Terry", "Tessa", "Thelma", "Theresa", - "Thomas", "Tia", "Tiffany", "Tim", "Timmy", "Timothy", "Tina", - "Todd", "Tom", "Tommy", "Toni", "Tony", "Tonya", "Tracey", - "Tracie", "Tracy", "Travis", "Trent", "Trevor", "Trey", "Trisha", - "Tristan", "Troy", "Tyler", "Tyrone", "Unborn", "Valerie", - "Vanessa", "Vernon", "Veronica", "Vicki", "Vickie", "Vicky", - "Victor", "Victoria", "Vincent", "Virginia", "Vivian", "Walter", - "Wanda", "Wayne", "Wendy", "Wesley", "Whitney", "William", - "Willie", "Wyatt", "Zachary" }; + private static String[] suffixes = {"II", "III", "Phd", "Jr", "Sr"}; + private static String[] prefixes = {"Mr", "Mrs", "Ms"}; + private static String[] firstNames = {"Aaron", "Abby", "Abigail", "Adam", + "Alan", "Albert", "Alex", "Alexandra", "Alexis", "Alice", "Alicia", + "Alisha", "Alissa", "Allen", "Allison", "Alyssa", "Amanda", + "Amber", "Amy", "Andrea", "Andrew", "Andy", "Angel", "Angela", + "Angie", "Anita", "Ann", "Anna", "Annette", "Anthony", "Antonio", + "April", "Arthur", "Ashley", "Audrey", "Austin", "Autumn", "Baby", + "Barb", "Barbara", "Becky", "Benjamin", "Beth", "Bethany", "Betty", + "Beverly", "Bill", "Billie", "Billy", "Blake", "Bob", "Bobbie", + "Bobby", "Bonnie", "Brad", "Bradley", "Brady", "Brandi", "Brandon", + "Brandy", "Breanna", "Brenda", "Brent", "Brett", "Brian", + "Brianna", "Brittany", "Brooke", "Brooklyn", "Bruce", "Bryan", + "Caleb", "Cameron", "Candy", "Carl", "Carla", "Carmen", "Carol", + "Carolyn", "Carrie", "Casey", "Cassandra", "Catherine", "Cathy", + "Chad", "Charlene", "Charles", "Charlie", "Charlotte", "Chase", + "Chasity", "Chastity", "Chelsea", "Cheryl", "Chester", "Cheyenne", + "Chris", "Christian", "Christina", "Christine", "Christoph", + "Christopher", "Christy", "Chuck", "Cindy", "Clara", "Clarence", + "Clayton", "Clifford", "Clint", "Cody", "Colton", "Connie", + "Corey", "Cory", "Courtney", "Craig", "Crystal", "Curtis", + "Cynthia", "Dakota", "Dale", "Dallas", "Dalton", "Dan", "Dana", + "Daniel", "Danielle", "Danny", "Darla", "Darlene", "Darrell", + "Darren", "Dave", "David", "Dawn", "Dean", "Deanna", "Debbie", + "Deborah", "Debra", "Denise", "Dennis", "Derek", "Derrick", + "Destiny", "Devin", "Diana", "Diane", "Dillon", "Dixie", "Dominic", + "Don", "Donald", "Donna", "Donnie", "Doris", "Dorothy", "Doug", + "Douglas", "Drew", "Duane", "Dustin", "Dusty", "Dylan", "Earl", + "Ed", "Eddie", "Edward", "Elaine", "Elizabeth", "Ellen", "Emily", + "Eric", "Erica", "Erika", "Erin", "Ernest", "Ethan", "Eugene", + "Eva", "Evelyn", "Everett", "Faith", "Father", "Felicia", "Floyd", + "Francis", "Frank", "Fred", "Gabriel", "Gage", "Gail", "Gary", + "Gene", "George", "Gerald", "Gina", "Ginger", "Glen", "Glenn", + "Gloria", "Grace", "Greg", "Gregory", "Haley", "Hannah", "Harley", + "Harold", "Harry", "Heath", "Heather", "Heidi", "Helen", "Herbert", + "Holly", "Hope", "Howard", "Hunter", "Ian", "Isaac", "Jack", + "Jackie", "Jacob", "Jade", "Jake", "James", "Jamie", "Jan", "Jane", + "Janet", "Janice", "Jared", "Jasmine", "Jason", "Jay", "Jean", + "Jeannie", "Jeff", "Jeffery", "Jeffrey", "Jenna", "Jennifer", + "Jenny", "Jeremiah", "Jeremy", "Jerry", "Jesse", "Jessica", + "Jessie", "Jill", "Jim", "Jimmy", "Joann", "Joanne", "Jodi", + "Jody", "Joe", "Joel", "Joey", "John", "Johnathan", "Johnny", + "Jon", "Jonathan", "Jonathon", "Jordan", "Joseph", "Josh", + "Joshua", "Joyce", "Juanita", "Judy", "Julia", "Julie", "Justin", + "Kaitlyn", "Karen", "Katelyn", "Katherine", "Kathleen", "Kathryn", + "Kathy", "Katie", "Katrina", "Kay", "Kayla", "Kaylee", "Keith", + "Kelly", "Kelsey", "Ken", "Kendra", "Kenneth", "Kenny", "Kevin", + "Kim", "Kimberly", "Kris", "Krista", "Kristen", "Kristin", + "Kristina", "Kristy", "Kyle", "Kylie", "Lacey", "Laken", "Lance", + "Larry", "Laura", "Lawrence", "Leah", "Lee", "Leonard", "Leroy", + "Leslie", "Levi", "Lewis", "Linda", "Lindsay", "Lindsey", "Lisa", + "Lloyd", "Logan", "Lois", "Loretta", "Lori", "Louis", "Lynn", + "Madison", "Mandy", "Marcus", "Margaret", "Maria", "Mariah", + "Marie", "Marilyn", "Marion", "Mark", "Marlene", "Marsha", + "Martha", "Martin", "Marty", "Marvin", "Mary", "Mary ann", "Mason", + "Matt", "Matthew", "Max", "Megan", "Melanie", "Melinda", "Melissa", + "Melody", "Michael", "Michelle", "Mickey", "Mike", "Mindy", + "Miranda", "Misty", "Mitchell", "Molly", "Monica", "Morgan", + "Mother", "Myron", "Nancy", "Natasha", "Nathan", "Nicholas", + "Nick", "Nicole", "Nina", "Noah", "Norma", "Norman", "Olivia", + "Paige", "Pam", "Pamela", "Pat", "Patricia", "Patrick", "Patty", + "Paul", "Paula", "Peggy", "Penny", "Pete", "Phillip", "Phyllis", + "Rachael", "Rachel", "Ralph", "Randall", "Randi", "Randy", "Ray", + "Raymond", "Rebecca", "Regina", "Renee", "Rex", "Rhonda", + "Richard", "Rick", "Ricky", "Rita", "Rob", "Robbie", "Robert", + "Roberta", "Robin", "Rochelle", "Rocky", "Rod", "Rodney", "Roger", + "Ron", "Ronald", "Ronda", "Ronnie", "Rose", "Roxanne", "Roy", + "Russ", "Russell", "Rusty", "Ruth", "Ryan", "Sabrina", "Sally", + "Sam", "Samantha", "Samuel", "Sandra", "Sandy", "Sara", "Sarah", + "Savannah", "Scott", "Sean", "Seth", "Shanda", "Shane", "Shanna", + "Shannon", "Sharon", "Shaun", "Shawn", "Shawna", "Sheila", + "Shelly", "Sher", "Sherri", "Sherry", "Shirley", "Sierra", + "Skyler", "Stacey", "Stacy", "Stanley", "Stephanie", "Stephen", + "Steve", "Steven", "Sue", "Summer", "Susan", "Sydney", "Tabatha", + "Tabitha", "Tamara", "Tammy", "Tara", "Tasha", "Tashia", "Taylor", + "Ted", "Teresa", "Terri", "Terry", "Tessa", "Thelma", "Theresa", + "Thomas", "Tia", "Tiffany", "Tim", "Timmy", "Timothy", "Tina", + "Todd", "Tom", "Tommy", "Toni", "Tony", "Tonya", "Tracey", + "Tracie", "Tracy", "Travis", "Trent", "Trevor", "Trey", "Trisha", + "Tristan", "Troy", "Tyler", "Tyrone", "Unborn", "Valerie", + "Vanessa", "Vernon", "Veronica", "Vicki", "Vickie", "Vicky", + "Victor", "Victoria", "Vincent", "Virginia", "Vivian", "Walter", + "Wanda", "Wayne", "Wendy", "Wesley", "Whitney", "William", + "Willie", "Wyatt", "Zachary"}; - private static String[] lastNames = { "Abbott", "Acevedo", "Acosta", - "Adams", "Adkins", "Aguilar", "Aguirre", "Albert", "Alexander", - "Alford", "Allen", "Allison", "Alston", "Alvarado", "Alvarez", - "Anderson", "Andrews", "Anthony", "Armstrong", "Arnold", "Ashley", - "Atkins", "Atkinson", "Austin", "Avery", "Avila", "Ayala", "Ayers", - "Bailey", "Baird", "Baker", "Baldwin", "Ball", "Ballard", "Banks", - "Barber", "Smith", "Johnson", "Williams", "Jones", "Brown", - "Davis", "Miller", "Wilson", "Moore", "Taylor", "Thomas", - "Jackson", "Barker", "Barlow", "Barnes", "Barnett", "Barr", - "Barrera", "Barrett", "Barron", "Barry", "Bartlett", "Barton", - "Bass", "Bates", "Battle", "Bauer", "Baxter", "Beach", "Bean", - "Beard", "Beasley", "Beck", "Becker", "Bell", "Bender", "Benjamin", - "Bennett", "Benson", "Bentley", "Benton", "Berg", "Berger", - "Bernard", "Berry", "Best", "Bird", "Bishop", "Black", "Blackburn", - "Blackwell", "Blair", "Blake", "Blanchard", "Blankenship", - "Blevins", "Bolton", "Bond", "Bonner", "Booker", "Boone", "Booth", - "Bowen", "Bowers", "Bowman", "Boyd", "Boyer", "Boyle", "Bradford", - "Bradley", "Bradshaw", "Brady", "Branch", "Bray", "Brennan", - "Brewer", "Bridges", "Briggs", "Bright", "Britt", "Brock", - "Brooks", "Browning", "Bruce", "Bryan", "Bryant", "Buchanan", - "Buck", "Buckley", "Buckner", "Bullock", "Burch", "Burgess", - "Burke", "Burks", "Burnett", "Burns", "Burris", "Burt", "Burton", - "Bush", "Butler", "Byers", "Byrd", "Cabrera", "Cain", "Calderon", - "Caldwell", "Calhoun", "Callahan", "Camacho", "Cameron", - "Campbell", "Campos", "Cannon", "Cantrell", "Cantu", "Cardenas", - "Carey", "Carlson", "Carney", "Carpenter", "Carr", "Carrillo", - "Carroll", "Carson", "Carter", "Carver", "Case", "Casey", "Cash", - "Castaneda", "Castillo", "Castro", "Cervantes", "Chambers", "Chan", - "Chandler", "Chaney", "Chang", "Chapman", "Charles", "Chase", - "Chavez", "Chen", "Cherry", "Christensen", "Christian", "Church", - "Clark", "Clarke", "Clay", "Clayton", "Clements", "Clemons", - "Cleveland", "Cline", "Cobb", "Cochran", "Coffey", "Cohen", "Cole", - "Coleman", "Collier", "Collins", "Colon", "Combs", "Compton", - "Conley", "Conner", "Conrad", "Contreras", "Conway", "Cook", - "Cooke", "Cooley", "Cooper", "Copeland", "Cortez", "Cote", - "Cotton", "Cox", "Craft", "Craig", "Crane", "Crawford", "Crosby", - "Cross", "Cruz", "Cummings", "Cunningham", "Curry", "Curtis", - "Dale", "Dalton", "Daniel", "Daniels", "Daugherty", "Davenport", - "David", "Davidson", "Dawson", "Day", "Dean", "Decker", "Dejesus", - "Delacruz", "Delaney", "Deleon", "Delgado", "Dennis", "Diaz", - "Dickerson", "Dickinson", "Dillard", "Dillon", "Dixon", "Dodson", - "Dominguez", "Donaldson", "Donovan", "Dorsey", "Dotson", "Douglas", - "Downs", "Doyle", "Drake", "Dudley", "Duffy", "Duke", "Duncan", - "Dunlap", "Dunn", "Duran", "Durham", "Dyer", "Eaton", "Edwards", - "Elliott", "Ellis", "Ellison", "Emerson", "England", "English", - "Erickson", "Espinoza", "Estes", "Estrada", "Evans", "Everett", - "Ewing", "Farley", "Farmer", "Farrell", "Faulkner", "Ferguson", - "Fernandez", "Ferrell", "Fields", "Figueroa", "Finch", "Finley", - "Fischer", "Fisher", "Fitzgerald", "Fitzpatrick", "Fleming", - "Fletcher", "Flores", "Flowers", "Floyd", "Flynn", "Foley", - "Forbes", "Ford", "Foreman", "Foster", "Fowler", "Fox", "Francis", - "Franco", "Frank", "Franklin", "Franks", "Frazier", "Frederick", - "Freeman", "French", "Frost", "Fry", "Frye", "Fuentes", "Fuller", - "Fulton", "Gaines", "Gallagher", "Gallegos", "Galloway", "Gamble", - "Garcia", "Gardner", "Garner", "Garrett", "Garrison", "Garza", - "Gates", "Gay", "Gentry", "George", "Gibbs", "Gibson", "Gilbert", - "Giles", "Gill", "Gillespie", "Gilliam", "Gilmore", "Glass", - "Glenn", "Glover", "Goff", "Golden", "Gomez", "Gonzales", - "Gonzalez", "Good", "Goodman", "Goodwin", "Gordon", "Gould", - "Graham", "Grant", "Graves", "Gray", "Green", "Greene", "Greer", - "Gregory", "Griffin", "Griffith", "Grimes", "Gross", "Guerra", - "Guerrero", "Guthrie", "Gutierrez", "Guy", "Guzman", "Hahn", - "Hale", "Haley", "Hall", "Hamilton", "Hammond", "Hampton", - "Hancock", "Haney", "Hansen", "Hanson", "Hardin", "Harding", - "Hardy", "Harmon", "Harper", "Harris", "Harrington", "Harrison", - "Hart", "Hartman", "Harvey", "Hatfield", "Hawkins", "Hayden", - "Hayes", "Haynes", "Hays", "Head", "Heath", "Hebert", "Henderson", - "Hendricks", "Hendrix", "Henry", "Hensley", "Henson", "Herman", - "Hernandez", "Herrera", "Herring", "Hess", "Hester", "Hewitt", - "Hickman", "Hicks", "Higgins", "Hill", "Hines", "Hinton", "Hobbs", - "Hodge", "Hodges", "Hoffman", "Hogan", "Holcomb", "Holden", - "Holder", "Holland", "Holloway", "Holman", "Holmes", "Holt", - "Hood", "Hooper", "Hoover", "Hopkins", "Hopper", "Horn", "Horne", - "Horton", "House", "Houston", "Howard", "Howe", "Howell", - "Hubbard", "Huber", "Hudson", "Huff", "Huffman", "Hughes", "Hull", - "Humphrey", "Hunt", "Hunter", "Hurley", "Hurst", "Hutchinson", - "Hyde", "Ingram", "Irwin", "Jacobs", "Jacobson", "James", "Jarvis", - "Jefferson", "Jenkins", "Jennings", "Jensen", "Jimenez", "Johns", - "Johnston", "Jordan", "Joseph", "Joyce", "Joyner", "Juarez", - "Justice", "Kane", "Kaufman", "Keith", "Keller", "Kelley", "Kelly", - "Kemp", "Kennedy", "Kent", "Kerr", "Key", "Kidd", "Kim", "King", - "Kinney", "Kirby", "Kirk", "Kirkland", "Klein", "Kline", "Knapp", - "Knight", "Knowles", "Knox", "Koch", "Kramer", "Lamb", "Lambert", - "Lancaster", "Landry", "Lane", "Lang", "Langley", "Lara", "Larsen", - "Larson", "Lawrence", "Lawson", "Le", "Leach", "Leblanc", "Lee", - "Leon", "Leonard", "Lester", "Levine", "Levy", "Lewis", "Lindsay", - "Lindsey", "Little", "Livingston", "Lloyd", "Logan", "Long", - "Lopez", "Lott", "Love", "Lowe", "Lowery", "Lucas", "Luna", - "Lynch", "Lynn", "Lyons", "Macdonald", "Macias", "Mack", "Madden", - "Maddox", "Maldonado", "Malone", "Mann", "Manning", "Marks", - "Marquez", "Marsh", "Marshall", "Martin", "Martinez", "Mason", - "Massey", "Mathews", "Mathis", "Matthews", "Maxwell", "May", - "Mayer", "Maynard", "Mayo", "Mays", "McBride", "McCall", - "McCarthy", "McCarty", "McClain", "McClure", "McConnell", - "McCormick", "McCoy", "McCray", "McCullough", "McDaniel", - "McDonald", "McDowell", "McFadden", "McFarland", "McGee", - "McGowan", "McGuire", "McIntosh", "McIntyre", "McKay", "McKee", - "McKenzie", "McKinney", "McKnight", "McLaughlin", "McLean", - "McLeod", "McMahon", "McMillan", "McNeil", "McPherson", "Meadows", - "Medina", "Mejia", "Melendez", "Melton", "Mendez", "Mendoza", - "Mercado", "Mercer", "Merrill", "Merritt", "Meyer", "Meyers", - "Michael", "Middleton", "Miles", "Mills", "Miranda", "Mitchell", - "Molina", "Monroe", "Montgomery", "Montoya", "Moody", "Moon", - "Mooney", "Morales", "Moran", "Moreno", "Morgan", "Morin", - "Morris", "Morrison", "Morrow", "Morse", "Morton", "Moses", - "Mosley", "Moss", "Mueller", "Mullen", "Mullins", "Munoz", - "Murphy", "Murray", "Myers", "Nash", "Navarro", "Neal", "Nelson", - "Newman", "Newton", "Nguyen", "Nichols", "Nicholson", "Nielsen", - "Nieves", "Nixon", "Noble", "Noel", "Nolan", "Norman", "Norris", - "Norton", "Nunez", "Obrien", "Ochoa", "Oconnor", "Odom", - "Odonnell", "Oliver", "Olsen", "Olson", "O'neal", "O'neil", - "O'neill", "Orr", "Ortega", "Ortiz", "Osborn", "Osborne", "Owen", - "Owens", "Pace", "Pacheco", "Padilla", "Page", "Palmer", "Park", - "Parker", "Parks", "Parrish", "Parsons", "Pate", "Patel", - "Patrick", "Patterson", "Patton", "Paul", "Payne", "Pearson", - "Peck", "Pena", "Pennington", "Perez", "Perkins", "Perry", - "Peters", "Petersen", "Peterson", "Petty", "Phelps", "Phillips", - "Pickett", "Pierce", "Pittman", "Pitts", "Pollard", "Poole", - "Pope", "Porter", "Potter", "Potts", "Powell", "Powers", "Pratt", - "Preston", "Price", "Prince", "Pruitt", "Puckett", "Pugh", "Quinn", - "Ramirez", "Ramos", "Ramsey", "Randall", "Randolph", "Rasmussen", - "Ratliff", "Ray", "Raymond", "Reed", "Reese", "Reeves", "Reid", - "Reilly", "Reyes", "Reynolds", "Rhodes", "Rice", "Rich", "Richard", - "Richards", "Richardson", "Richmond", "Riddle", "Riggs", "Riley", - "Rios", "Rivas", "Rivera", "Rivers", "Roach", "Robbins", - "Roberson", "Roberts", "Robertson", "Robinson", "Robles", "Rocha", - "Rodgers", "Rodriguez", "Rodriquez", "Rogers", "Rojas", "Rollins", - "Roman", "Romero", "Rosa", "Rosales", "Rosario", "Rose", "Ross", - "Roth", "Rowe", "Rowland", "Roy", "Ruiz", "Rush", "Russell", - "Russo", "Rutledge", "Ryan", "Salas", "Salazar", "Salinas", - "Sampson", "Sanchez", "Sanders", "Sandoval", "Sanford", "Santana", - "Santiago", "Santos", "Sargent", "Saunders", "Savage", "Sawyer", - "Schmidt", "Schneider", "Schroeder", "Schultz", "Schwartz", - "Scott", "Sears", "Sellers", "Serrano", "Sexton", "Shaffer", - "Shannon", "Sharp", "Sharpe", "Shaw", "Shelton", "Shepard", - "Shepherd", "Sheppard", "Sherman", "Shields", "Short", "Silva", - "Simmons", "Simon", "Simpson", "Sims", "Singleton", "Skinner", - "Slater", "Sloan", "Small", "Snider", "Snow", "Snyder", "Solis", - "Solomon", "Sosa", "Soto", "Sparks", "Spears", "Spence", "Spencer", - "Stafford", "Stanley", "Stanton", "Stark", "Steele", "Stein", - "Stephens", "Stephenson", "Stevens", "Stevenson", "Stewart", - "Stokes", "Stone", "Stout", "Strickland", "Strong", "Stuart", - "Suarez", "Sullivan", "Summers", "Sutton", "Swanson", "Sweeney", - "Sweet", "Sykes", "Talley", "Tanner", "Tate", "Terrell", "Terry", - "Thompson", "Thornton", "Tillman", "Todd", "Torres", "Townsend", - "Tran", "Travis", "Trevino", "Trujillo", "Tucker", "Turner", - "Tyler", "Tyson", "Underwood", "Valdez", "Valencia", "Valentine", - "Valenzuela", "Vance", "Vang", "Vargas", "Vasquez", "Vaughan", - "Vaughn", "Vazquez", "Vega", "Velasquez", "Velazquez", "Velez", - "Van halen", "Vincent", "Vinson", "Wade", "Wagner", "Walker", - "Wall", "Wallace", "Waller", "Walls", "Walsh", "Walter", "Walters", - "Walton", "Ward", "Ware", "Warner", "Warren", "Washington", - "Waters", "Watkins", "Watson", "Watts", "Weaver", "Webb", "Weber", - "Webster", "Weeks", "Weiss", "Welch", "Wells", "West", "Wheeler", - "Whitaker", "White", "Whitehead", "Whitfield", "Whitley", - "Whitney", "Wiggins", "Wilcox", "Wilder", "Wiley", "Wilkerson", - "Wilkins", "Wilkinson", "William", "Williamson", "Willis", - "Winters", "Wise", "Witt", "Wolf", "Wolfe", "Wong", "Wood", - "Woodard", "Woods", "Woodward", "Wooten", "Workman", "Wright", - "Wyatt", "Wynn", "Yang", "Yates", "York", "Young", "Zamora", - "Zimmerman" + private static String[] lastNames = {"Abbott", "Acevedo", "Acosta", + "Adams", "Adkins", "Aguilar", "Aguirre", "Albert", "Alexander", + "Alford", "Allen", "Allison", "Alston", "Alvarado", "Alvarez", + "Anderson", "Andrews", "Anthony", "Armstrong", "Arnold", "Ashley", + "Atkins", "Atkinson", "Austin", "Avery", "Avila", "Ayala", "Ayers", + "Bailey", "Baird", "Baker", "Baldwin", "Ball", "Ballard", "Banks", + "Barber", "Smith", "Johnson", "Williams", "Jones", "Brown", + "Davis", "Miller", "Wilson", "Moore", "Taylor", "Thomas", + "Jackson", "Barker", "Barlow", "Barnes", "Barnett", "Barr", + "Barrera", "Barrett", "Barron", "Barry", "Bartlett", "Barton", + "Bass", "Bates", "Battle", "Bauer", "Baxter", "Beach", "Bean", + "Beard", "Beasley", "Beck", "Becker", "Bell", "Bender", "Benjamin", + "Bennett", "Benson", "Bentley", "Benton", "Berg", "Berger", + "Bernard", "Berry", "Best", "Bird", "Bishop", "Black", "Blackburn", + "Blackwell", "Blair", "Blake", "Blanchard", "Blankenship", + "Blevins", "Bolton", "Bond", "Bonner", "Booker", "Boone", "Booth", + "Bowen", "Bowers", "Bowman", "Boyd", "Boyer", "Boyle", "Bradford", + "Bradley", "Bradshaw", "Brady", "Branch", "Bray", "Brennan", + "Brewer", "Bridges", "Briggs", "Bright", "Britt", "Brock", + "Brooks", "Browning", "Bruce", "Bryan", "Bryant", "Buchanan", + "Buck", "Buckley", "Buckner", "Bullock", "Burch", "Burgess", + "Burke", "Burks", "Burnett", "Burns", "Burris", "Burt", "Burton", + "Bush", "Butler", "Byers", "Byrd", "Cabrera", "Cain", "Calderon", + "Caldwell", "Calhoun", "Callahan", "Camacho", "Cameron", + "Campbell", "Campos", "Cannon", "Cantrell", "Cantu", "Cardenas", + "Carey", "Carlson", "Carney", "Carpenter", "Carr", "Carrillo", + "Carroll", "Carson", "Carter", "Carver", "Case", "Casey", "Cash", + "Castaneda", "Castillo", "Castro", "Cervantes", "Chambers", "Chan", + "Chandler", "Chaney", "Chang", "Chapman", "Charles", "Chase", + "Chavez", "Chen", "Cherry", "Christensen", "Christian", "Church", + "Clark", "Clarke", "Clay", "Clayton", "Clements", "Clemons", + "Cleveland", "Cline", "Cobb", "Cochran", "Coffey", "Cohen", "Cole", + "Coleman", "Collier", "Collins", "Colon", "Combs", "Compton", + "Conley", "Conner", "Conrad", "Contreras", "Conway", "Cook", + "Cooke", "Cooley", "Cooper", "Copeland", "Cortez", "Cote", + "Cotton", "Cox", "Craft", "Craig", "Crane", "Crawford", "Crosby", + "Cross", "Cruz", "Cummings", "Cunningham", "Curry", "Curtis", + "Dale", "Dalton", "Daniel", "Daniels", "Daugherty", "Davenport", + "David", "Davidson", "Dawson", "Day", "Dean", "Decker", "Dejesus", + "Delacruz", "Delaney", "Deleon", "Delgado", "Dennis", "Diaz", + "Dickerson", "Dickinson", "Dillard", "Dillon", "Dixon", "Dodson", + "Dominguez", "Donaldson", "Donovan", "Dorsey", "Dotson", "Douglas", + "Downs", "Doyle", "Drake", "Dudley", "Duffy", "Duke", "Duncan", + "Dunlap", "Dunn", "Duran", "Durham", "Dyer", "Eaton", "Edwards", + "Elliott", "Ellis", "Ellison", "Emerson", "England", "English", + "Erickson", "Espinoza", "Estes", "Estrada", "Evans", "Everett", + "Ewing", "Farley", "Farmer", "Farrell", "Faulkner", "Ferguson", + "Fernandez", "Ferrell", "Fields", "Figueroa", "Finch", "Finley", + "Fischer", "Fisher", "Fitzgerald", "Fitzpatrick", "Fleming", + "Fletcher", "Flores", "Flowers", "Floyd", "Flynn", "Foley", + "Forbes", "Ford", "Foreman", "Foster", "Fowler", "Fox", "Francis", + "Franco", "Frank", "Franklin", "Franks", "Frazier", "Frederick", + "Freeman", "French", "Frost", "Fry", "Frye", "Fuentes", "Fuller", + "Fulton", "Gaines", "Gallagher", "Gallegos", "Galloway", "Gamble", + "Garcia", "Gardner", "Garner", "Garrett", "Garrison", "Garza", + "Gates", "Gay", "Gentry", "George", "Gibbs", "Gibson", "Gilbert", + "Giles", "Gill", "Gillespie", "Gilliam", "Gilmore", "Glass", + "Glenn", "Glover", "Goff", "Golden", "Gomez", "Gonzales", + "Gonzalez", "Good", "Goodman", "Goodwin", "Gordon", "Gould", + "Graham", "Grant", "Graves", "Gray", "Green", "Greene", "Greer", + "Gregory", "Griffin", "Griffith", "Grimes", "Gross", "Guerra", + "Guerrero", "Guthrie", "Gutierrez", "Guy", "Guzman", "Hahn", + "Hale", "Haley", "Hall", "Hamilton", "Hammond", "Hampton", + "Hancock", "Haney", "Hansen", "Hanson", "Hardin", "Harding", + "Hardy", "Harmon", "Harper", "Harris", "Harrington", "Harrison", + "Hart", "Hartman", "Harvey", "Hatfield", "Hawkins", "Hayden", + "Hayes", "Haynes", "Hays", "Head", "Heath", "Hebert", "Henderson", + "Hendricks", "Hendrix", "Henry", "Hensley", "Henson", "Herman", + "Hernandez", "Herrera", "Herring", "Hess", "Hester", "Hewitt", + "Hickman", "Hicks", "Higgins", "Hill", "Hines", "Hinton", "Hobbs", + "Hodge", "Hodges", "Hoffman", "Hogan", "Holcomb", "Holden", + "Holder", "Holland", "Holloway", "Holman", "Holmes", "Holt", + "Hood", "Hooper", "Hoover", "Hopkins", "Hopper", "Horn", "Horne", + "Horton", "House", "Houston", "Howard", "Howe", "Howell", + "Hubbard", "Huber", "Hudson", "Huff", "Huffman", "Hughes", "Hull", + "Humphrey", "Hunt", "Hunter", "Hurley", "Hurst", "Hutchinson", + "Hyde", "Ingram", "Irwin", "Jacobs", "Jacobson", "James", "Jarvis", + "Jefferson", "Jenkins", "Jennings", "Jensen", "Jimenez", "Johns", + "Johnston", "Jordan", "Joseph", "Joyce", "Joyner", "Juarez", + "Justice", "Kane", "Kaufman", "Keith", "Keller", "Kelley", "Kelly", + "Kemp", "Kennedy", "Kent", "Kerr", "Key", "Kidd", "Kim", "King", + "Kinney", "Kirby", "Kirk", "Kirkland", "Klein", "Kline", "Knapp", + "Knight", "Knowles", "Knox", "Koch", "Kramer", "Lamb", "Lambert", + "Lancaster", "Landry", "Lane", "Lang", "Langley", "Lara", "Larsen", + "Larson", "Lawrence", "Lawson", "Le", "Leach", "Leblanc", "Lee", + "Leon", "Leonard", "Lester", "Levine", "Levy", "Lewis", "Lindsay", + "Lindsey", "Little", "Livingston", "Lloyd", "Logan", "Long", + "Lopez", "Lott", "Love", "Lowe", "Lowery", "Lucas", "Luna", + "Lynch", "Lynn", "Lyons", "Macdonald", "Macias", "Mack", "Madden", + "Maddox", "Maldonado", "Malone", "Mann", "Manning", "Marks", + "Marquez", "Marsh", "Marshall", "Martin", "Martinez", "Mason", + "Massey", "Mathews", "Mathis", "Matthews", "Maxwell", "May", + "Mayer", "Maynard", "Mayo", "Mays", "McBride", "McCall", + "McCarthy", "McCarty", "McClain", "McClure", "McConnell", + "McCormick", "McCoy", "McCray", "McCullough", "McDaniel", + "McDonald", "McDowell", "McFadden", "McFarland", "McGee", + "McGowan", "McGuire", "McIntosh", "McIntyre", "McKay", "McKee", + "McKenzie", "McKinney", "McKnight", "McLaughlin", "McLean", + "McLeod", "McMahon", "McMillan", "McNeil", "McPherson", "Meadows", + "Medina", "Mejia", "Melendez", "Melton", "Mendez", "Mendoza", + "Mercado", "Mercer", "Merrill", "Merritt", "Meyer", "Meyers", + "Michael", "Middleton", "Miles", "Mills", "Miranda", "Mitchell", + "Molina", "Monroe", "Montgomery", "Montoya", "Moody", "Moon", + "Mooney", "Morales", "Moran", "Moreno", "Morgan", "Morin", + "Morris", "Morrison", "Morrow", "Morse", "Morton", "Moses", + "Mosley", "Moss", "Mueller", "Mullen", "Mullins", "Munoz", + "Murphy", "Murray", "Myers", "Nash", "Navarro", "Neal", "Nelson", + "Newman", "Newton", "Nguyen", "Nichols", "Nicholson", "Nielsen", + "Nieves", "Nixon", "Noble", "Noel", "Nolan", "Norman", "Norris", + "Norton", "Nunez", "Obrien", "Ochoa", "Oconnor", "Odom", + "Odonnell", "Oliver", "Olsen", "Olson", "O'neal", "O'neil", + "O'neill", "Orr", "Ortega", "Ortiz", "Osborn", "Osborne", "Owen", + "Owens", "Pace", "Pacheco", "Padilla", "Page", "Palmer", "Park", + "Parker", "Parks", "Parrish", "Parsons", "Pate", "Patel", + "Patrick", "Patterson", "Patton", "Paul", "Payne", "Pearson", + "Peck", "Pena", "Pennington", "Perez", "Perkins", "Perry", + "Peters", "Petersen", "Peterson", "Petty", "Phelps", "Phillips", + "Pickett", "Pierce", "Pittman", "Pitts", "Pollard", "Poole", + "Pope", "Porter", "Potter", "Potts", "Powell", "Powers", "Pratt", + "Preston", "Price", "Prince", "Pruitt", "Puckett", "Pugh", "Quinn", + "Ramirez", "Ramos", "Ramsey", "Randall", "Randolph", "Rasmussen", + "Ratliff", "Ray", "Raymond", "Reed", "Reese", "Reeves", "Reid", + "Reilly", "Reyes", "Reynolds", "Rhodes", "Rice", "Rich", "Richard", + "Richards", "Richardson", "Richmond", "Riddle", "Riggs", "Riley", + "Rios", "Rivas", "Rivera", "Rivers", "Roach", "Robbins", + "Roberson", "Roberts", "Robertson", "Robinson", "Robles", "Rocha", + "Rodgers", "Rodriguez", "Rodriquez", "Rogers", "Rojas", "Rollins", + "Roman", "Romero", "Rosa", "Rosales", "Rosario", "Rose", "Ross", + "Roth", "Rowe", "Rowland", "Roy", "Ruiz", "Rush", "Russell", + "Russo", "Rutledge", "Ryan", "Salas", "Salazar", "Salinas", + "Sampson", "Sanchez", "Sanders", "Sandoval", "Sanford", "Santana", + "Santiago", "Santos", "Sargent", "Saunders", "Savage", "Sawyer", + "Schmidt", "Schneider", "Schroeder", "Schultz", "Schwartz", + "Scott", "Sears", "Sellers", "Serrano", "Sexton", "Shaffer", + "Shannon", "Sharp", "Sharpe", "Shaw", "Shelton", "Shepard", + "Shepherd", "Sheppard", "Sherman", "Shields", "Short", "Silva", + "Simmons", "Simon", "Simpson", "Sims", "Singleton", "Skinner", + "Slater", "Sloan", "Small", "Snider", "Snow", "Snyder", "Solis", + "Solomon", "Sosa", "Soto", "Sparks", "Spears", "Spence", "Spencer", + "Stafford", "Stanley", "Stanton", "Stark", "Steele", "Stein", + "Stephens", "Stephenson", "Stevens", "Stevenson", "Stewart", + "Stokes", "Stone", "Stout", "Strickland", "Strong", "Stuart", + "Suarez", "Sullivan", "Summers", "Sutton", "Swanson", "Sweeney", + "Sweet", "Sykes", "Talley", "Tanner", "Tate", "Terrell", "Terry", + "Thompson", "Thornton", "Tillman", "Todd", "Torres", "Townsend", + "Tran", "Travis", "Trevino", "Trujillo", "Tucker", "Turner", + "Tyler", "Tyson", "Underwood", "Valdez", "Valencia", "Valentine", + "Valenzuela", "Vance", "Vang", "Vargas", "Vasquez", "Vaughan", + "Vaughn", "Vazquez", "Vega", "Velasquez", "Velazquez", "Velez", + "Van halen", "Vincent", "Vinson", "Wade", "Wagner", "Walker", + "Wall", "Wallace", "Waller", "Walls", "Walsh", "Walter", "Walters", + "Walton", "Ward", "Ware", "Warner", "Warren", "Washington", + "Waters", "Watkins", "Watson", "Watts", "Weaver", "Webb", "Weber", + "Webster", "Weeks", "Weiss", "Welch", "Wells", "West", "Wheeler", + "Whitaker", "White", "Whitehead", "Whitfield", "Whitley", + "Whitney", "Wiggins", "Wilcox", "Wilder", "Wiley", "Wilkerson", + "Wilkins", "Wilkinson", "William", "Williamson", "Willis", + "Winters", "Wise", "Witt", "Wolf", "Wolfe", "Wong", "Wood", + "Woodard", "Woods", "Woodward", "Wooten", "Workman", "Wright", + "Wyatt", "Wynn", "Yang", "Yates", "York", "Young", "Zamora", + "Zimmerman" - }; + }; - public String[] getFirstNames() { - return firstNames; - } + public String[] getFirstNames() { + return firstNames; + } - public String[] getLastNames() { - return lastNames; - } + public String[] getLastNames() { + return lastNames; + } - public String[] getPrefixes() { - return prefixes; - } + public String[] getPrefixes() { + return prefixes; + } - public String[] getSuffixes() { - return suffixes; - } + public String[] getSuffixes() { + return suffixes; + } } diff --git a/src/test/java/org/fluttercode/datafactory/impl/DataFactoryTextTest.java b/src/test/java/org/fluttercode/datafactory/impl/DataFactoryTextTest.java index 6b555c1..505eeaf 100644 --- a/src/test/java/org/fluttercode/datafactory/impl/DataFactoryTextTest.java +++ b/src/test/java/org/fluttercode/datafactory/impl/DataFactoryTextTest.java @@ -6,157 +6,162 @@ public class DataFactoryTextTest { - private DataFactory dataFactory; - private final int ITERATION_COUNT = 100000; - - @Before - public void initTest() { - dataFactory = new DataFactory(); - dataFactory.randomize(73438); - } - - @Test - public void shouldReturnRandomWordsOfVariedLength() { - for (int i = 0; i < ITERATION_COUNT; i++) { - int maxLength = dataFactory.getNumberUpTo(12); - - String word = dataFactory.getRandomWord(maxLength, false); - Assert.assertTrue("Wrong size word", word.length() <= maxLength); - } - } - - @Test - public void shouldReturnRandomWordsOfSpecificLength() { - for (int i = 0; i < ITERATION_COUNT; i++) { - int maxLength = dataFactory.getNumberUpTo(12); - - String word = dataFactory.getRandomWord(maxLength, true); - Assert.assertTrue("Wrong size word", word.length() == maxLength); - } - } - - @Test - public void shouldReturnRandomWordsOfSpecificLength2() { - for (int i = 0; i < ITERATION_COUNT; i++) { - int maxLength = dataFactory.getNumberUpTo(12); - - String word = dataFactory.getRandomWord(maxLength, true); - Assert.assertTrue("Wrong size word", word.length() == maxLength); - } - } - - @Test - public void shouldReturnTextOfSpecificLength() { - for (int i = 0; i < ITERATION_COUNT; i++) { - int len = dataFactory.getNumberUpTo(40); - String text = dataFactory.getRandomText(len); - Assert.assertNotNull(text); - Assert.assertTrue(String.format( - "Length does not match (%d, expected %d) '%s' ", - text.length(), len, text), len == text.length()); - - } - } - - @Test - public void shouldReturnTextWithinBoundedLengths() { - for (int i = 0; i < ITERATION_COUNT; i++) { - int minLen = 10 + dataFactory.getNumberUpTo(20); - int maxLen = minLen + dataFactory.getNumberUpTo(10); - - String text = dataFactory.getRandomText(minLen, maxLen); - - Assert.assertNotNull(text); - - String msg = String - .format("Length (%d) is less than expected minimum (%d) for iteration %d - text = '%s'", - text.length(), minLen, i, text); - Assert.assertTrue(msg, minLen <= text.length()); - - msg = String - .format("Length (%d) is more than expected (%d) for iteration %d - text = %s", - text.length(), maxLen, i, text); - Assert.assertTrue(msg, maxLen >= text.length()); - - } - } - - @Test - public void shouldReturnRandomWordsUpToLength() { - for (int i = 0; i < ITERATION_COUNT; i++) { - int maxLength = dataFactory.getNumberUpTo(30); - - String word = dataFactory.getRandomWord(maxLength, false); - Assert.assertTrue("Wrong size word", word.length() <= maxLength); - } - - } - - //Test param checking on randomWord() - - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnNegativeLengthForRandomWord() { - dataFactory.getRandomWord(-1); - } - - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnNegativeMinLenForRandomWord() { - dataFactory.getRandomWord(-1,10); - } - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnNegativeMaxLenForRandomWord() { - dataFactory.getRandomWord(0,-10); - } - - - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnInvalidSizeLenForRandomWord() { - dataFactory.getRandomWord(10,2); - } - - - //Test param checking on randomText() - - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnNegativeLengthForRandomText() { - dataFactory.getRandomText(-1); - } - - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnNegativeMinLenForRandomText() { - dataFactory.getRandomText(-1,10); - } - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnNegativeMaxLenForRandomText() { - dataFactory.getRandomText(0,-10); - } - - - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnInvalidSizeLenForRandomText() { - dataFactory.getRandomText(10,2); - } - - - //Test param checking on randomChars() - - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnNegativeLengthForRandomChars() { - dataFactory.getRandomChars(-1); - } - - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnNegativeMinLenForRandomChars() { - dataFactory.getRandomChars(-1,10); - } - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnNegativeMaxLenForRandomChars() { - dataFactory.getRandomChars(0,-10); - } - - - @Test(expected=IllegalArgumentException.class) - public void shouldErrorOnInvalidSizeLenForRandomChars() { - dataFactory.getRandomChars(10,2); - } + private final int ITERATION_COUNT = 100000; + private DataFactory dataFactory; + + @Before + public void initTest() { + dataFactory = new DataFactory(); + dataFactory.randomize(73438); + } + + @Test + public void shouldReturnRandomWordsOfVariedLength() { + for (int i = 0; i < ITERATION_COUNT; i++) { + int maxLength = dataFactory.getNumberUpTo(12); + + String word = dataFactory.getRandomWord(maxLength, false); + Assert.assertTrue("Wrong size word", word.length() <= maxLength); + } + } + + @Test + public void shouldReturnRandomWordsOfSpecificLength() { + for (int i = 0; i < ITERATION_COUNT; i++) { + int maxLength = dataFactory.getNumberUpTo(12); + + String word = dataFactory.getRandomWord(maxLength, true); + Assert.assertTrue("Wrong size word", word.length() == maxLength); + } + } + + @Test + public void shouldReturnRandomWordsOfSpecificLength2() { + for (int i = 0; i < ITERATION_COUNT; i++) { + int maxLength = dataFactory.getNumberUpTo(12); + + String word = dataFactory.getRandomWord(maxLength, true); + Assert.assertTrue("Wrong size word", word.length() == maxLength); + } + } + + @Test + public void shouldReturnTextOfSpecificLength() { + for (int i = 0; i < ITERATION_COUNT; i++) { + int len = dataFactory.getNumberUpTo(40); + String text = dataFactory.getRandomText(len); + Assert.assertNotNull(text); + Assert.assertTrue(String.format( + "Length does not match (%d, expected %d) '%s' ", + text.length(), len, text), len == text.length()); + + } + } + + @Test + public void shouldReturnTextWithinBoundedLengths() { + for (int i = 0; i < ITERATION_COUNT; i++) { + int minLen = 10 + dataFactory.getNumberUpTo(20); + int maxLen = minLen + dataFactory.getNumberUpTo(10); + + String text = dataFactory.getRandomText(minLen, maxLen); + + Assert.assertNotNull(text); + + String msg = String + .format("Length (%d) is less than expected minimum (%d) " + + "for iteration %d - text = '%s'", + text.length(), minLen, i, text); + Assert.assertTrue(msg, minLen <= text.length()); + + msg = String + .format("Length (%d) is more than expected (%d) for " + + "iteration %d - text = %s", + text.length(), maxLen, i, text); + Assert.assertTrue(msg, maxLen >= text.length()); + + } + } + + @Test + public void shouldReturnRandomWordsUpToLength() { + for (int i = 0; i < ITERATION_COUNT; i++) { + int maxLength = dataFactory.getNumberUpTo(30); + + String word = dataFactory.getRandomWord(maxLength, false); + Assert.assertTrue("Wrong size word", word.length() <= maxLength); + } + + } + + //Test param checking on randomWord() + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnNegativeLengthForRandomWord() { + dataFactory.getRandomWord(-1); + } + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnNegativeMinLenForRandomWord() { + dataFactory.getRandomWord(-1, 10); + } + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnNegativeMaxLenForRandomWord() { + dataFactory.getRandomWord(0, -10); + } + + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnInvalidSizeLenForRandomWord() { + dataFactory.getRandomWord(10, 2); + } + + + //Test param checking on randomText() + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnNegativeLengthForRandomText() { + dataFactory.getRandomText(-1); + } + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnNegativeMinLenForRandomText() { + dataFactory.getRandomText(-1, 10); + } + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnNegativeMaxLenForRandomText() { + dataFactory.getRandomText(0, -10); + } + + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnInvalidSizeLenForRandomText() { + dataFactory.getRandomText(10, 2); + } + + + //Test param checking on randomChars() + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnNegativeLengthForRandomChars() { + dataFactory.getRandomChars(-1); + } + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnNegativeMinLenForRandomChars() { + dataFactory.getRandomChars(-1, 10); + } + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnNegativeMaxLenForRandomChars() { + dataFactory.getRandomChars(0, -10); + } + + + @Test(expected = IllegalArgumentException.class) + public void shouldErrorOnInvalidSizeLenForRandomChars() { + dataFactory.getRandomChars(10, 2); + } }