├── .gitignore ├── LICENSE ├── README.md ├── arandomizer ├── .gitignore ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── infoedge │ │ └── android │ │ └── arandomizer │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── infoedge │ │ │ └── android │ │ │ └── arandomizer │ │ │ └── DroidGenerator.java │ └── res │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── infoedge │ └── android │ └── arandomizer │ └── ExampleUnitTest.java ├── build.gradle ├── example ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── infoedge │ │ └── randomizer │ │ └── example │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── infoedge │ │ │ └── randomizer │ │ │ └── example │ │ │ ├── CustomCreditCardNumberGenerator.java │ │ │ ├── CustomEmailGenerator.java │ │ │ ├── Test.java │ │ │ ├── model │ │ │ └── Person.java │ │ │ └── ui │ │ │ └── DummyActivity.java │ └── res │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── infoedge │ └── randomizer │ └── example │ └── ExampleUnitTest.java ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── jrandomizer ├── .gitignore ├── build.gradle └── src │ ├── main │ └── java │ │ └── com │ │ └── infoedge │ │ └── jrandomizer │ │ ├── Generator.java │ │ ├── Pair.java │ │ ├── Reflector.java │ │ ├── StandAlone.java │ │ ├── Utils.java │ │ ├── adapters │ │ ├── BooleanToBooleanAdapter.java │ │ ├── ConversionAdapter.java │ │ ├── DoubleToDoubleAdapter.java │ │ ├── DoubleToFloatAdapter.java │ │ ├── DoubleToIntAdapter.java │ │ ├── DoubleToLongAdapter.java │ │ ├── DoubleToStringAdapter.java │ │ ├── IntToIntAdapter.java │ │ ├── IntToLongAdapter.java │ │ ├── IntToStringAdapter.java │ │ ├── LongToIntAdapter.java │ │ ├── LongToLongAdapter.java │ │ ├── LongToStringAdapter.java │ │ ├── ObjectToObjectAdapter.java │ │ └── StringToStringAdapter.java │ │ ├── annotations │ │ ├── AppBundleID.java │ │ ├── AppName.java │ │ ├── AppVersion.java │ │ ├── Avatar.java │ │ ├── BooleanValue.java │ │ ├── City.java │ │ ├── CollectionDescriptor.java │ │ ├── ColorName.java │ │ ├── CompanyName.java │ │ ├── Country.java │ │ ├── CountryCode.java │ │ ├── CreditCardNumber.java │ │ ├── CreditCardType.java │ │ ├── Currency.java │ │ ├── CurrencyCode.java │ │ ├── CustomGenerator.java │ │ ├── CustomList.java │ │ ├── DateValue.java │ │ ├── DomainName.java │ │ ├── DummyImageUrl.java │ │ ├── Email.java │ │ ├── Encrypt.java │ │ ├── FileName.java │ │ ├── FirstName.java │ │ ├── Frequency.java │ │ ├── FullName.java │ │ ├── Gender.java │ │ ├── GenerateUsing.java │ │ ├── Guid.java │ │ ├── HexColor.java │ │ ├── IpAddressV4.java │ │ ├── IpAddressV6.java │ │ ├── Isbn.java │ │ ├── JobTitle.java │ │ ├── Language.java │ │ ├── LastName.java │ │ ├── Latitude.java │ │ ├── LinkedInSkill.java │ │ ├── Longitude.java │ │ ├── MD5.java │ │ ├── MacAddress.java │ │ ├── Mapping.java │ │ ├── MimeType.java │ │ ├── Money.java │ │ ├── Number.java │ │ ├── Paragraphs.java │ │ ├── Phone.java │ │ ├── Race.java │ │ ├── ReferenceRecord.java │ │ ├── ReferencedRecord.java │ │ ├── RowNumber.java │ │ ├── SHA1.java │ │ ├── SHA256.java │ │ ├── SSN.java │ │ ├── Sentences.java │ │ ├── Sequence.java │ │ ├── ShirtSize.java │ │ ├── State.java │ │ ├── StreetAddress.java │ │ ├── Suffix.java │ │ ├── Time.java │ │ ├── TimeZone.java │ │ ├── Title.java │ │ ├── TopLevelDomain.java │ │ ├── URL.java │ │ ├── Username.java │ │ └── Words.java │ │ ├── exceptions │ │ └── RandomDataGeneratorException.java │ │ ├── generators │ │ ├── AppBundleIdGenerator.java │ │ ├── AppNameGenerator.java │ │ ├── AppVersionGenerator.java │ │ ├── AvatarGenerator.java │ │ ├── BooleanGenerator.java │ │ ├── CityGenerator.java │ │ ├── ColorNameGenerator.java │ │ ├── CompanyNameGenerator.java │ │ ├── CountryCodeGenerator.java │ │ ├── CountryGenerator.java │ │ ├── CreditCardNumberGenerator.java │ │ ├── CreditCardTypeGenerator.java │ │ ├── CurrencyCodeGenerator.java │ │ ├── CurrencyGenerator.java │ │ ├── CustomListGenerator.java │ │ ├── DateValueGenerator.java │ │ ├── DelegateGenerationRule.java │ │ ├── DomainNameGenerator.java │ │ ├── DummyImageUrlGenerator.java │ │ ├── EmailGenerator.java │ │ ├── EncryptGenerator.java │ │ ├── FileNameGenerator.java │ │ ├── FirstNameGenerator.java │ │ ├── FrequencyGenerator.java │ │ ├── FullNameGenerator.java │ │ ├── GenderGenerator.java │ │ ├── GenerationRule.java │ │ ├── GuidGenerator.java │ │ ├── HexColorGenerator.java │ │ ├── InvalidGenerator.java │ │ ├── IpAddressV4Generator.java │ │ ├── IpAddressV6Generator.java │ │ ├── IsbnGenerator.java │ │ ├── JobTitleGenerator.java │ │ ├── LanguageGenerator.java │ │ ├── LastNameGenerator.java │ │ ├── LatitudeGenerator.java │ │ ├── LinkedInSkillGenerator.java │ │ ├── LongitudeGenerator.java │ │ ├── MD5Generator.java │ │ ├── MacAddressGenerator.java │ │ ├── MimeTypeGenerator.java │ │ ├── MoneyGenerator.java │ │ ├── NumberGenerator.java │ │ ├── ParagraphsGenerator.java │ │ ├── PhoneGenerator.java │ │ ├── RaceGenerator.java │ │ ├── RandomArrayGenerator.java │ │ ├── RandomListGenerator.java │ │ ├── ReferenceRecordGenerator.java │ │ ├── RowNumberGenerator.java │ │ ├── SHA1Generator.java │ │ ├── SHA256Generator.java │ │ ├── SSNGenerator.java │ │ ├── SentencesGenerator.java │ │ ├── SequenceGenerator.java │ │ ├── ShirtSizeGenerator.java │ │ ├── StateGenerator.java │ │ ├── StreetAddressGenerator.java │ │ ├── SuffixGenerator.java │ │ ├── TimeGenerator.java │ │ ├── TimeZoneGenerator.java │ │ ├── TitleGenerator.java │ │ ├── TopLevelDomainGenerator.java │ │ ├── URLGenerator.java │ │ ├── UsernameGenerator.java │ │ └── WordsGenerator.java │ │ └── providers │ │ ├── AppBundleIdProvider.java │ │ ├── AppNameProvider.java │ │ ├── AvatarProvider.java │ │ ├── CityProvider.java │ │ ├── ColorNameProvider.java │ │ ├── CompanyNameProvider.java │ │ ├── CountryCodeProvider.java │ │ ├── CountryProvider.java │ │ ├── CreditCardTypeProvider.java │ │ ├── CurrencyCodeProvider.java │ │ ├── CurrencyProvider.java │ │ ├── DomainNameProvider.java │ │ ├── EmailProvider.java │ │ ├── EncryptProvider.java │ │ ├── FileNameProvider.java │ │ ├── FirstNameFemaleProvider.java │ │ ├── FirstNameMaleProvider.java │ │ ├── FirstNameMixProvider.java │ │ ├── FrequencyProvider.java │ │ ├── FromJsonProvider.java │ │ ├── FullNameProvider.java │ │ ├── GuidProvider.java │ │ ├── JobTitleProvider.java │ │ ├── LanguageProvider.java │ │ ├── LinkedInSkillProvider.java │ │ ├── MimeTypeProvider.java │ │ ├── ParagraphsProvider.java │ │ ├── Provider.java │ │ ├── ProviderFactory.java │ │ ├── RaceProvider.java │ │ ├── SentencesProvider.java │ │ ├── ShirtSizeProvider.java │ │ ├── StateProvider.java │ │ ├── StreetAddressProvider.java │ │ ├── SuffixProvider.java │ │ ├── TimeZoneProvider.java │ │ ├── TitleProvider.java │ │ ├── TopLevelDomainProvider.java │ │ ├── URLProvider.java │ │ ├── UsernameProvider.java │ │ └── WordsProvider.java │ └── test │ └── java │ └── com │ └── infoedge │ └── jrandomizer │ └── test │ ├── AppBundleGeneratorTest.java │ ├── AppNameGeneratorTest.java │ ├── AppVersionGeneratorTest.java │ ├── AvatarGeneratorTest.java │ ├── CityGeneratorTest.java │ └── CreditCardNumberTest.java └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | .idea 11 | -------------------------------------------------------------------------------- /arandomizer/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /arandomizer/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | Properties properties = new Properties() 4 | properties.load(project.rootProject.file('local.properties').newDataInputStream()) 5 | 6 | ext { 7 | bintrayRepo = 'maven' 8 | bintrayName = 'arandomizer' 9 | 10 | publishedGroupId = 'com.infoedge' 11 | libraryName = 'arandomizer' 12 | artifact = 'arandomizer' 13 | 14 | libraryDescription = 'Library generates random data' 15 | 16 | siteUrl = 'https://github.com/android-Infoedge/randomizer' 17 | gitUrl = 'https://github.com/android-Infoedge/randomizer.git' 18 | 19 | libraryVersion = '0.1-beta1' 20 | 21 | developerId = 'android-infoedge' 22 | developerName = properties.getProperty('developer.name') 23 | developerEmail = properties.getProperty('developer.email') 24 | 25 | licenseName = 'The Apache Software License, Version 2.0' 26 | licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt' 27 | allLicenses = ["Apache-2.0"] 28 | } 29 | 30 | 31 | android { 32 | compileSdkVersion 24 33 | buildToolsVersion "24.0.0" 34 | 35 | defaultConfig { 36 | minSdkVersion 15 37 | targetSdkVersion 24 38 | versionCode 1 39 | versionName "1.0" 40 | 41 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 42 | 43 | } 44 | buildTypes { 45 | release { 46 | minifyEnabled false 47 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 48 | } 49 | } 50 | } 51 | 52 | dependencies { 53 | compile fileTree(dir: 'libs', include: ['*.jar']) 54 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 55 | exclude group: 'com.android.support', module: 'support-annotations' 56 | }) 57 | compile 'com.android.support:appcompat-v7:24.1.1' 58 | testCompile 'junit:junit:4.12' 59 | // compile project(':jrandomizer') 60 | compile 'com.infoedge:jrandomizer:0.1-beta1' 61 | } 62 | 63 | apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle' 64 | apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle' 65 | 66 | -------------------------------------------------------------------------------- /arandomizer/src/androidTest/java/com/infoedge/android/arandomizer/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.android.arandomizer; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.infoedge.android.arandomizer.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /arandomizer/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /arandomizer/src/main/java/com/infoedge/android/arandomizer/DroidGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.android.arandomizer; 2 | 3 | import android.os.AsyncTask; 4 | 5 | import com.infoedge.jrandomizer.Generator; 6 | import com.infoedge.jrandomizer.Generator.OnDataGenerationListener; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Created by gagandeep on 2/8/16. 12 | */ 13 | 14 | public final class DroidGenerator { 15 | 16 | private Generator mGenerator; 17 | 18 | public DroidGenerator(Class target) { 19 | mGenerator = new Generator<>(target); 20 | } 21 | 22 | public TARGET generate() { 23 | return generate(1).get(0); 24 | } 25 | 26 | public List generate(int records) { 27 | return mGenerator.generate(records); 28 | } 29 | 30 | public void generateAsync(OnDataGenerationListener listener) { 31 | generateAsync(1, listener); 32 | } 33 | 34 | public void generateAsync(int numberOfRecords,OnDataGenerationListener listener) { 35 | new DataGenerationTask(listener, numberOfRecords).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 36 | } 37 | 38 | private class DataGenerationTask extends AsyncTask> { 39 | 40 | private OnDataGenerationListener mListener; 41 | private int records; 42 | 43 | public DataGenerationTask(OnDataGenerationListener mListener, int records) { 44 | this.mListener = mListener; 45 | this.records = records; 46 | } 47 | 48 | 49 | @Override 50 | protected List doInBackground(Void... voids) { 51 | return generate(records); 52 | } 53 | 54 | @Override 55 | protected void onPostExecute(List targets) { 56 | if (mListener != null) { 57 | mListener.onDataGenerated(targets); 58 | } 59 | } 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /arandomizer/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ARandomizer 3 | 4 | -------------------------------------------------------------------------------- /arandomizer/src/test/java/com/infoedge/android/arandomizer/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.android.arandomizer; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.2.1' 9 | classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4' 10 | classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' 11 | // NOTE: Do not place your application dependencies here; they belong 12 | // in the individual module build.gradle files 13 | } 14 | } 15 | 16 | allprojects { 17 | repositories { 18 | jcenter() 19 | maven { 20 | url 'https://dl.bintray.com/android-infoedge/maven/' 21 | } 22 | } 23 | } 24 | 25 | task clean(type: Delete) { 26 | delete rootProject.buildDir 27 | } 28 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /example/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 24 5 | buildToolsVersion "24.0.0" 6 | 7 | defaultConfig { 8 | applicationId "com.infoedge.randomizer.example" 9 | minSdkVersion 15 10 | targetSdkVersion 24 11 | versionCode 1 12 | versionName "1.0" 13 | 14 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 15 | 16 | } 17 | buildTypes { 18 | release { 19 | minifyEnabled false 20 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 21 | } 22 | } 23 | } 24 | 25 | dependencies { 26 | compile fileTree(dir: 'libs', include: ['*.jar']) 27 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 28 | exclude group: 'com.android.support', module: 'support-annotations' 29 | }) 30 | compile 'com.android.support:appcompat-v7:24.1.1' 31 | testCompile 'junit:junit:4.12' 32 | compile 'com.jakewharton.timber:timber:4.1.2' 33 | compile "com.android.support:cardview-v7:24.1.1" 34 | compile "com.android.support:recyclerview-v7:24.1.1" 35 | compile 'com.github.bumptech.glide:glide:3.5.2' 36 | compile 'com.jakewharton:butterknife:7.0.1' 37 | compile project(':arandomizer') 38 | } 39 | -------------------------------------------------------------------------------- /example/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /home/gagandeep/Setups/android-sdk-linux/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /example/src/androidTest/java/com/infoedge/randomizer/example/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.randomizer.example; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.infoedge.randomizer.example", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /example/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /example/src/main/java/com/infoedge/randomizer/example/CustomCreditCardNumberGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.randomizer.example; 2 | 3 | import com.infoedge.jrandomizer.annotations.CreditCardNumber; 4 | import com.infoedge.jrandomizer.generators.GenerationRule; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 12/8/16. 9 | */ 10 | public class CustomCreditCardNumberGenerator extends GenerationRule { 11 | 12 | public CustomCreditCardNumberGenerator(CreditCardNumber annotation, ProviderFactory providerFactory) { 13 | super(annotation, providerFactory); 14 | } 15 | 16 | //Will be called automatically to generate random data from source 17 | @Override 18 | public String generate() { 19 | return CARD_NUMBERS[getRandom().nextInt(CARD_NUMBERS.length)]; 20 | } 21 | 22 | //Provide your own data 23 | private final String[] CARD_NUMBERS = {"0111-0666-9888-7666","0777-9453-5672-7765"}; 24 | } 25 | -------------------------------------------------------------------------------- /example/src/main/java/com/infoedge/randomizer/example/CustomEmailGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.randomizer.example; 2 | 3 | import com.infoedge.jrandomizer.annotations.Email; 4 | import com.infoedge.jrandomizer.generators.DelegateGenerationRule; 5 | import com.infoedge.jrandomizer.generators.GenerationRule; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | /** 9 | * Created by gagandeep on 12/8/16. 10 | */ 11 | 12 | public class CustomEmailGenerator extends DelegateGenerationRule { 13 | 14 | public CustomEmailGenerator(Email annotation, ProviderFactory providerFactory, GenerationRule mCoreGenerator) { 15 | super(annotation, providerFactory, mCoreGenerator); 16 | } 17 | 18 | @Override 19 | public String generate() { 20 | return getCoreRandomData().toUpperCase(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /example/src/main/java/com/infoedge/randomizer/example/Test.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.randomizer.example; 2 | 3 | /** 4 | * Created by gagandeep on 12/8/16. 5 | */ 6 | 7 | public class Test { 8 | } 9 | -------------------------------------------------------------------------------- /example/src/main/java/com/infoedge/randomizer/example/model/Person.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.randomizer.example.model; 2 | 3 | import com.infoedge.jrandomizer.annotations.Avatar; 4 | import com.infoedge.jrandomizer.annotations.CollectionDescriptor; 5 | import com.infoedge.jrandomizer.annotations.CreditCardNumber; 6 | import com.infoedge.jrandomizer.annotations.CustomGenerator; 7 | import com.infoedge.jrandomizer.annotations.DateValue; 8 | import com.infoedge.jrandomizer.annotations.Email; 9 | import com.infoedge.jrandomizer.annotations.FullName; 10 | import com.infoedge.jrandomizer.annotations.Number; 11 | import com.infoedge.jrandomizer.annotations.Phone; 12 | import com.infoedge.jrandomizer.generators.EmailGenerator; 13 | import com.infoedge.randomizer.example.CustomCreditCardNumberGenerator; 14 | import com.infoedge.randomizer.example.CustomEmailGenerator; 15 | 16 | import java.util.List; 17 | 18 | /** 19 | * Created by gagandeep on 12/8/16. 20 | */ 21 | 22 | public class Person { 23 | 24 | @Email 25 | @CustomGenerator(generator = CustomEmailGenerator.class,delegate = EmailGenerator.class) 26 | @CollectionDescriptor(min = 2,max = 5) 27 | public List emails; 28 | } 29 | -------------------------------------------------------------------------------- /example/src/main/java/com/infoedge/randomizer/example/ui/DummyActivity.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.randomizer.example.ui; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.Nullable; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.util.Log; 7 | 8 | import com.infoedge.android.arandomizer.DroidGenerator; 9 | import com.infoedge.jrandomizer.Generator; 10 | import com.infoedge.randomizer.example.model.Person; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * Created by gagandeep on 12/8/16. 16 | */ 17 | 18 | public class DummyActivity extends AppCompatActivity { 19 | 20 | @Override 21 | protected void onCreate(@Nullable Bundle savedInstanceState) { 22 | super.onCreate(savedInstanceState); 23 | DroidGenerator generator = new DroidGenerator<>(Person.class); 24 | List persons = generator.generate(5); 25 | 26 | for (Person person : persons) { 27 | Log.e("DUMMY", person.toString()); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /example/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android-Infoedge/randomizer/27bbe6879d4a4fa555c0c3962498e82b2d536d40/example/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android-Infoedge/randomizer/27bbe6879d4a4fa555c0c3962498e82b2d536d40/example/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android-Infoedge/randomizer/27bbe6879d4a4fa555c0c3962498e82b2d536d40/example/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android-Infoedge/randomizer/27bbe6879d4a4fa555c0c3962498e82b2d536d40/example/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android-Infoedge/randomizer/27bbe6879d4a4fa555c0c3962498e82b2d536d40/example/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /example/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Example 3 | 4 | -------------------------------------------------------------------------------- /example/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /example/src/test/java/com/infoedge/randomizer/example/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.randomizer.example; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android-Infoedge/randomizer/27bbe6879d4a4fa555c0c3962498e82b2d536d40/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Aug 12 09:34:25 IST 2016 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /jrandomizer/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /jrandomizer/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | 3 | Properties properties = new Properties() 4 | properties.load(project.rootProject.file('local.properties').newDataInputStream()) 5 | 6 | ext { 7 | bintrayRepo = 'maven' 8 | bintrayName = 'jrandomizer' 9 | 10 | publishedGroupId = 'com.infoedge' 11 | libraryName = 'jrandomizer' 12 | artifact = 'jrandomizer' 13 | 14 | libraryDescription = 'Library generates random data' 15 | 16 | siteUrl = 'https://github.com/android-Infoedge/randomizer' 17 | gitUrl = 'https://github.com/android-Infoedge/randomizer.git' 18 | 19 | libraryVersion = '0.1-beta1' 20 | 21 | developerId = 'android-infoedge' 22 | developerName = properties.getProperty('developer.name') 23 | developerEmail = properties.getProperty('developer.email') 24 | 25 | licenseName = 'The Apache Software License, Version 2.0' 26 | licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt' 27 | allLicenses = ["Apache-2.0"] 28 | } 29 | 30 | dependencies { 31 | compile fileTree(include: ['*.jar'], dir: 'libs') 32 | compile 'com.google.code.gson:gson:2.7' 33 | 34 | testCompile 'junit:junit:4.12' 35 | testCompile "org.mockito:mockito-all:1.10.19" 36 | testCompile "org.hamcrest:hamcrest-all:1.3" 37 | testCompile "org.powermock:powermock-module-junit4:1.6.2" 38 | testCompile "org.powermock:powermock-api-mockito:1.6.2" 39 | } 40 | 41 | sourceCompatibility = "1.7" 42 | targetCompatibility = "1.7" 43 | 44 | apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle' 45 | apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle' 46 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/Pair.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class Pair { 8 | public F first; 9 | public S second; 10 | 11 | public Pair(F first, S second) { 12 | this.first = first; 13 | this.second = second; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/StandAlone.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by gagandeep on 5/8/16. 7 | */ 8 | 9 | public class StandAlone { 10 | List dataList; 11 | } 12 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/Utils.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public final class Utils { 8 | 9 | private Utils() { 10 | } 11 | 12 | public static int randomIntWithDigits(int digits) { 13 | int max = (int) Math.pow(10, digits) + 1; 14 | return randomIntWithMinMax(0, max); 15 | } 16 | 17 | public static int randomIntWithMax(int max) { 18 | return randomIntWithMinMax(0, max); 19 | } 20 | 21 | public static int randomIntWithMinMax(int min, int max) { 22 | return (int) (min + (Math.random() * (max - min + 1))); 23 | } 24 | 25 | public static long randomLongWithMinMax(long min, long max) { 26 | return (long) (min + (Math.random() * (max - min + 1))); 27 | } 28 | 29 | public static String randomHexOfInt(int min, int max) { 30 | int randomInt = randomIntWithMinMax(min, max); 31 | return Integer.toHexString(randomInt); 32 | } 33 | 34 | public static String randomHexOfInt(int max) { 35 | int randomInt = randomIntWithMinMax(0, max); 36 | return Integer.toHexString(randomInt); 37 | } 38 | 39 | public static String randomHexOfLong(long max) { 40 | long randomInt = randomLongWithMinMax(0, max); 41 | return Long.toHexString(randomInt); 42 | } 43 | 44 | public static String frontZeroPaddedRandomInt(int digits) { 45 | String randomInt = String.valueOf(randomIntWithDigits(digits)); 46 | return frontPad(randomInt, "0", digits); 47 | } 48 | 49 | public static String frontPad(String target,String padChar, int length) { 50 | if (length == 0 || target.length() >= length) { 51 | return target; 52 | } 53 | return frontPad(padChar + target, padChar, length - 1); 54 | } 55 | 56 | public static String tailPad(String target,String padChar, int length) { 57 | if (length == 0 || target.length() >= length) { 58 | return target; 59 | } 60 | return tailPad(target + padChar, padChar, length); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/BooleanToBooleanAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 29/7/16. 5 | */ 6 | 7 | public class BooleanToBooleanAdapter implements ConversionAdapter { 8 | @Override 9 | public Boolean value(Boolean randomData) { 10 | return randomData; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/ConversionAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public interface ConversionAdapter { 8 | 9 | TO_DATA_TYPE value(FROM_DATA_TYPE randomData); 10 | } 11 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/DoubleToDoubleAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class DoubleToDoubleAdapter implements ConversionAdapter { 8 | @Override 9 | public Double value(Double randomData) { 10 | return randomData; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/DoubleToFloatAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class DoubleToFloatAdapter implements ConversionAdapter { 8 | @Override 9 | public Float value(Double randomData) { 10 | return randomData.floatValue(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/DoubleToIntAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class DoubleToIntAdapter implements ConversionAdapter { 8 | @Override 9 | public Integer value(Double randomData) { 10 | return randomData.intValue(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/DoubleToLongAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class DoubleToLongAdapter implements ConversionAdapter { 8 | @Override 9 | public Long value(Double randomData) { 10 | return randomData.longValue(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/DoubleToStringAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class DoubleToStringAdapter implements ConversionAdapter { 8 | @Override 9 | public String value(Double randomData) { 10 | return randomData.toString(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/IntToIntAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class IntToIntAdapter implements ConversionAdapter { 8 | 9 | @Override 10 | public Integer value(Integer randomData) { 11 | return randomData; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/IntToLongAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class IntToLongAdapter implements ConversionAdapter { 8 | 9 | @Override 10 | public Long value(Integer randomData) { 11 | return Long.valueOf(randomData); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/IntToStringAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class IntToStringAdapter implements ConversionAdapter { 8 | 9 | @Override 10 | public String value(Integer randomData) { 11 | return String.valueOf(randomData); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/LongToIntAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class LongToIntAdapter implements ConversionAdapter { 8 | @Override 9 | public Integer value(Long randomData) { 10 | return randomData.intValue(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/LongToLongAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class LongToLongAdapter implements ConversionAdapter { 8 | @Override 9 | public Long value(Long randomData) { 10 | return randomData; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/LongToStringAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class LongToStringAdapter implements ConversionAdapter{ 8 | @Override 9 | public String value(Long randomData) { 10 | return randomData.toString(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/ObjectToObjectAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 30/7/16. 5 | */ 6 | 7 | public class ObjectToObjectAdapter implements ConversionAdapter { 8 | @Override 9 | public Object value(Object randomData) { 10 | return randomData; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/adapters/StringToStringAdapter.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.adapters; 2 | 3 | /** 4 | * Created by gagandeep on 28/7/16. 5 | */ 6 | 7 | public class StringToStringAdapter implements ConversionAdapter { 8 | 9 | @Override 10 | public String value(String randomData) { 11 | return randomData; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/AppBundleID.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.AppBundleIdGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = AppBundleIdGenerator.class, mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface AppBundleID { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/AppName.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.AppNameGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = AppNameGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface AppName { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/AppVersion.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.AppVersionGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = AppVersionGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface AppVersion { 20 | int min() default 0; 21 | 22 | int max() default 5; 23 | } 24 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Avatar.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.AvatarGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = AvatarGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Avatar { 20 | 21 | Format format() default Format.RANDOM; 22 | 23 | int width() default 50; 24 | int height() default 50; 25 | 26 | public enum Format { 27 | PNG("png"),JPG("jpg"),BMP("bmp"),RANDOM("random"); 28 | 29 | private String label; 30 | Format(String label) { 31 | this.label = label; 32 | } 33 | 34 | public String getLabel() { 35 | return label; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/BooleanValue.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.BooleanToBooleanAdapter; 4 | import com.infoedge.jrandomizer.generators.BooleanGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = BooleanGenerator.class,mapping = { 15 | @Mapping(fieldType = Boolean.class, adapter = BooleanToBooleanAdapter.class), 16 | @Mapping(fieldType = boolean.class, adapter = BooleanToBooleanAdapter.class) 17 | }) 18 | @Retention(RetentionPolicy.RUNTIME) 19 | @Target(ElementType.FIELD) 20 | public @interface BooleanValue { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/City.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.CityGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = CityGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface City { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/CollectionDescriptor.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.ObjectToObjectAdapter; 4 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 5 | import com.infoedge.jrandomizer.generators.CityGenerator; 6 | import com.infoedge.jrandomizer.generators.RandomListGenerator; 7 | import com.infoedge.jrandomizer.generators.ReferenceRecordGenerator; 8 | 9 | import java.lang.annotation.ElementType; 10 | import java.lang.annotation.Retention; 11 | import java.lang.annotation.RetentionPolicy; 12 | import java.lang.annotation.Target; 13 | 14 | /** 15 | * Created by gagandeep on 28/7/16. 16 | */ 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface CollectionDescriptor { 20 | int min() default 1; 21 | 22 | int max() default 1; 23 | } 24 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/ColorName.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.ColorNameGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = ColorNameGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface ColorName { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/CompanyName.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.CompanyNameGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = CompanyNameGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface CompanyName { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Country.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.CountryGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = CountryGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Country { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/CountryCode.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.CountryCodeGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = CountryCodeGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface CountryCode { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/CreditCardNumber.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.CreditCardNumberGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = CreditCardNumberGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface CreditCardNumber { 20 | String separator() default "-"; 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/CreditCardType.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.CreditCardTypeGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = CreditCardTypeGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface CreditCardType { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Currency.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.CurrencyGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = CurrencyGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Currency { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/CurrencyCode.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.CurrencyCodeGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = CurrencyCodeGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface CurrencyCode { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/CustomGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.generators.InvalidGenerator; 4 | import com.infoedge.jrandomizer.generators.GenerationRule; 5 | 6 | /** 7 | * Created by gagandeep on 1/8/16. 8 | */ 9 | 10 | public @interface CustomGenerator { 11 | 12 | Class generator(); 13 | 14 | Class delegate() default InvalidGenerator.class; 15 | } 16 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/CustomList.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.CustomListGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = CustomListGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface CustomList { 20 | String[] options(); 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/DateValue.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.DateValueGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = DateValueGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | 18 | @Retention(RetentionPolicy.RUNTIME) 19 | @Target(ElementType.FIELD) 20 | public @interface DateValue { 21 | String from() default ""; 22 | 23 | String to() default ""; 24 | 25 | Format format() default Format.MMlddlyyyy; 26 | 27 | String customFormat() default ""; 28 | 29 | public enum Format { 30 | MMlddlyyyy("MM/dd/yyyy"), Mlldlyyyy("M/d/yyyy"), yyyy_MM_dd("yyyy-MM-dd"), dlMlyyyy("d/M/yyyy"), ddlMMlyyyy("dd/MM/yyyy"); 31 | 32 | 33 | private String value; 34 | 35 | Format(String format) { 36 | this.value = format; 37 | } 38 | 39 | public String getValue() { 40 | return value; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/DomainName.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.DomainNameGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = DomainNameGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface DomainName { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/DummyImageUrl.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.DummyImageUrlGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = DummyImageUrlGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface DummyImageUrl { 20 | 21 | Format format() default Format.RANDOM; 22 | 23 | int width() default 100; 24 | int height() default 100; 25 | 26 | public enum Format { 27 | PNG("png"),JPG("jpg"),GIF("gif"),RANDOM("random"); 28 | 29 | private String label; 30 | Format(String label) { 31 | this.label = label; 32 | } 33 | 34 | public String getLabel() { 35 | return label; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Email.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.EmailGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = EmailGenerator.class, mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Email { 20 | 21 | String[] domainName() default {}; 22 | 23 | String[] in() default {}; 24 | } 25 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Encrypt.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.EncryptGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = EncryptGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Encrypt { 20 | int length() default 30; 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/FileName.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.FileNameGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = FileNameGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface FileName { 20 | 21 | Types types() default Types.COMMON; 22 | 23 | FileName.Format format() default Format.RANDOM; 24 | 25 | public enum Types { 26 | ALL,COMMON,CODE,DOCUMENT,IMAGE,MEDIA,TEXT 27 | } 28 | 29 | public enum Format { 30 | FileName,fileName,file_name,RANDOM 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/FirstName.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.FirstNameGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = FirstNameGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class,adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface FirstName { 20 | 21 | Gender gender() default Gender.MIX; 22 | 23 | public enum Gender { 24 | MALE,FEMALE,MIX 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Frequency.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.FrequencyGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = FrequencyGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Frequency { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/FullName.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.FullNameGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = FullNameGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface FullName { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Gender.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.GenderGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = GenderGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Gender { 20 | 21 | boolean abbreviation() default false; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/GenerateUsing.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.generators.GenerationRule; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * Created by gagandeep on 28/7/16. 12 | */ 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.ANNOTATION_TYPE) 15 | public @interface GenerateUsing { 16 | Class generator(); 17 | 18 | public Mapping[] mapping() default {}; 19 | } 20 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Guid.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.GuidGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = GuidGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Guid { 20 | boolean essentiallyUnique() default false; 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/HexColor.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.HexColorGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = HexColorGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface HexColor { 20 | boolean alpha() default false; 21 | 22 | boolean upperCase() default false; 23 | } 24 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/IpAddressV4.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.IpAddressV4Generator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = IpAddressV4Generator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface IpAddressV4 { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/IpAddressV6.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.IpAddressV6Generator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = IpAddressV6Generator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface IpAddressV6 { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Isbn.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.IsbnGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = IsbnGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Isbn { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/JobTitle.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.JobTitleGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = JobTitleGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface JobTitle { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Language.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.LanguageGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = LanguageGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Language { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/LastName.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.LastNameGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = LastNameGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface LastName { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Latitude.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.LatitudeGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = LatitudeGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Latitude { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/LinkedInSkill.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.LinkedInSkillGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = LinkedInSkillGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface LinkedInSkill { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Longitude.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.LongitudeGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = LongitudeGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Longitude { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/MD5.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.MD5Generator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = MD5Generator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface MD5 { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/MacAddress.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.MacAddressGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = MacAddressGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface MacAddress { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Mapping.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.ConversionAdapter; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * Created by gagandeep on 28/7/16. 12 | */ 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.ANNOTATION_TYPE) 15 | public @interface Mapping { 16 | Class fieldType(); 17 | 18 | Class> adapter(); 19 | } 20 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/MimeType.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.MimeTypeGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = MimeTypeGenerator.class, mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface MimeType { 20 | 21 | MimeType.Type type() default Type.ALL; 22 | 23 | enum Type { 24 | ALL, COMMON, CODE, DOCUMENT, IMAGE, MEDIA, TEXT 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Money.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.MoneyGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = MoneyGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Money { 20 | double min() default 0.0; 21 | 22 | double max() default 100; 23 | 24 | In in() default In.RANDOM; 25 | 26 | enum In { 27 | $("$"),€("€"),₹("₹"),RANDOM("random"); 28 | 29 | private String currencySymbol; 30 | 31 | In(String currency) { 32 | this.currencySymbol = currency; 33 | } 34 | 35 | public String getCurrencySymbol() { 36 | return currencySymbol; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Number.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.DoubleToDoubleAdapter; 4 | import com.infoedge.jrandomizer.adapters.DoubleToFloatAdapter; 5 | import com.infoedge.jrandomizer.adapters.DoubleToIntAdapter; 6 | import com.infoedge.jrandomizer.adapters.DoubleToLongAdapter; 7 | import com.infoedge.jrandomizer.adapters.DoubleToStringAdapter; 8 | import com.infoedge.jrandomizer.generators.NumberGenerator; 9 | 10 | import java.lang.annotation.ElementType; 11 | import java.lang.annotation.Retention; 12 | import java.lang.annotation.RetentionPolicy; 13 | import java.lang.annotation.Target; 14 | 15 | /** 16 | * Created by gagandeep on 28/7/16. 17 | */ 18 | @GenerateUsing(generator = NumberGenerator.class,mapping = { 19 | @Mapping(fieldType = Integer.class,adapter = DoubleToIntAdapter.class), 20 | @Mapping(fieldType = int.class,adapter = DoubleToIntAdapter.class), 21 | @Mapping(fieldType = Long.class,adapter = DoubleToLongAdapter.class), 22 | @Mapping(fieldType = Float.class,adapter = DoubleToFloatAdapter.class), 23 | @Mapping(fieldType = double.class,adapter = DoubleToDoubleAdapter.class), 24 | @Mapping(fieldType = Double.class,adapter = DoubleToDoubleAdapter.class), 25 | @Mapping(fieldType = float.class,adapter = DoubleToFloatAdapter.class), 26 | @Mapping(fieldType = String.class,adapter = DoubleToStringAdapter.class) 27 | }) 28 | @Retention(RetentionPolicy.RUNTIME) 29 | @Target(ElementType.FIELD) 30 | public @interface Number { 31 | long min() default 0; 32 | 33 | long max() default Long.MAX_VALUE; 34 | 35 | int decimals() default 0; 36 | } 37 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Paragraphs.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.ParagraphsGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = ParagraphsGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Paragraphs { 20 | int atleast() default 1; 21 | 22 | int noMoreThan() default 1; 23 | } 24 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Phone.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.PhoneGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = PhoneGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Phone { 20 | 21 | Phone.Country country() default Country.INDIA; 22 | 23 | boolean withCountryCode() default true; 24 | 25 | boolean unFormatted() default false; 26 | 27 | boolean domestic() default false; 28 | 29 | enum Country { 30 | INDIA("+91-{1,10}",70),US("+1-{1,3}-{2,3}-{3,4}", 500); 31 | 32 | private String format; 33 | private int start; 34 | 35 | Country(String format, int start) { 36 | this.format = format; 37 | this.start = start; 38 | } 39 | 40 | public String getFormat() { 41 | return format; 42 | } 43 | 44 | public int getStart() { 45 | return start; 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Race.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.RaceGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = RaceGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Race { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/ReferenceRecord.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.ObjectToObjectAdapter; 4 | import com.infoedge.jrandomizer.generators.ReferenceRecordGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 30/7/16. 13 | */ 14 | @GenerateUsing(generator = ReferenceRecordGenerator.class,mapping = { 15 | @Mapping(fieldType = ReferenceRecord.class, adapter = ObjectToObjectAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface ReferenceRecord { 20 | Class clazz(); 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/ReferencedRecord.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.ObjectToObjectAdapter; 4 | import com.infoedge.jrandomizer.generators.ReferenceRecordGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 30/7/16. 13 | */ 14 | @Retention(RetentionPolicy.RUNTIME) 15 | @Target(ElementType.TYPE) 16 | public @interface ReferencedRecord { 17 | } 18 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/RowNumber.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.LongToIntAdapter; 4 | import com.infoedge.jrandomizer.adapters.LongToLongAdapter; 5 | import com.infoedge.jrandomizer.adapters.LongToStringAdapter; 6 | import com.infoedge.jrandomizer.generators.RowNumberGenerator; 7 | 8 | import java.lang.annotation.ElementType; 9 | import java.lang.annotation.Retention; 10 | import java.lang.annotation.RetentionPolicy; 11 | import java.lang.annotation.Target; 12 | 13 | /** 14 | * Created by gagandeep on 28/7/16. 15 | */ 16 | @GenerateUsing(generator = RowNumberGenerator.class,mapping = { 17 | @Mapping(fieldType = Integer.class, adapter = LongToIntAdapter.class), 18 | @Mapping(fieldType = int.class, adapter = LongToIntAdapter.class), 19 | @Mapping(fieldType = Long.class, adapter = LongToLongAdapter.class), 20 | @Mapping(fieldType = long.class, adapter = LongToLongAdapter.class), 21 | @Mapping(fieldType = String.class, adapter = LongToStringAdapter.class) 22 | }) 23 | @Retention(RetentionPolicy.RUNTIME) 24 | @Target(ElementType.FIELD) 25 | public @interface RowNumber { 26 | long startFrom() default 0; 27 | } 28 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/SHA1.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.SHA1Generator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = SHA1Generator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface SHA1 { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/SHA256.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.SHA256Generator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = SHA256Generator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface SHA256 { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/SSN.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.SSNGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = SSNGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface SSN { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Sentences.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.SentencesGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = SentencesGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Sentences { 20 | int atleast() default 1; 21 | 22 | int noMoreThan() default 1; 23 | } 24 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Sequence.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.LongToIntAdapter; 4 | import com.infoedge.jrandomizer.adapters.LongToLongAdapter; 5 | import com.infoedge.jrandomizer.adapters.LongToStringAdapter; 6 | import com.infoedge.jrandomizer.generators.SequenceGenerator; 7 | 8 | import java.lang.annotation.ElementType; 9 | import java.lang.annotation.Retention; 10 | import java.lang.annotation.RetentionPolicy; 11 | import java.lang.annotation.Target; 12 | 13 | /** 14 | * Created by gagandeep on 28/7/16. 15 | */ 16 | @GenerateUsing(generator = SequenceGenerator.class,mapping = { 17 | @Mapping(fieldType = Integer.class, adapter = LongToIntAdapter.class), 18 | @Mapping(fieldType = int.class, adapter = LongToIntAdapter.class), 19 | @Mapping(fieldType = Long.class, adapter = LongToLongAdapter.class), 20 | @Mapping(fieldType = long.class, adapter = LongToLongAdapter.class), 21 | @Mapping(fieldType = String.class, adapter = LongToStringAdapter.class) 22 | }) 23 | @Retention(RetentionPolicy.RUNTIME) 24 | @Target(ElementType.FIELD) 25 | public @interface Sequence { 26 | 27 | int startAt() default 0; 28 | 29 | int step() default 1; 30 | 31 | int repeat() default 1; 32 | 33 | int restartAt() default Integer.MAX_VALUE; 34 | } 35 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/ShirtSize.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.ShirtSizeGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = ShirtSizeGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface ShirtSize { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/State.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.StateGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = StateGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface State { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/StreetAddress.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.StreetAddressGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = StreetAddressGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface StreetAddress { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Suffix.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.SuffixGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = SuffixGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Suffix { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Time.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.TimeGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = TimeGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Time { 20 | 21 | String from() default ""; 22 | 23 | String to() default ""; 24 | 25 | Format format() default Format._12_HOURS; 26 | 27 | public enum Format { 28 | _12_HOURS,_24_HOURS 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/TimeZone.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.TimeZoneGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = TimeZoneGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface TimeZone { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Title.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.TitleGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = TitleGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Title { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/TopLevelDomain.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.TopLevelDomainGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = TopLevelDomainGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface TopLevelDomain { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/URL.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.URLGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = URLGenerator.class, mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface URL { 20 | boolean protocol() default true; 21 | 22 | boolean host() default true; 23 | 24 | boolean port() default false; 25 | 26 | boolean path() default true; 27 | 28 | boolean queryParams() default true; 29 | 30 | int maxQueryParams() default 1; 31 | } 32 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Username.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.UsernameGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = UsernameGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Username { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/annotations/Words.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.annotations; 2 | 3 | import com.infoedge.jrandomizer.adapters.StringToStringAdapter; 4 | import com.infoedge.jrandomizer.generators.WordsGenerator; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * Created by gagandeep on 28/7/16. 13 | */ 14 | @GenerateUsing(generator = WordsGenerator.class,mapping = { 15 | @Mapping(fieldType = String.class, adapter = StringToStringAdapter.class) 16 | }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.FIELD) 19 | public @interface Words { 20 | int atleast() default 1; 21 | 22 | int noMoreThan() default 1; 23 | } 24 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/exceptions/RandomDataGeneratorException.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.exceptions; 2 | 3 | /** 4 | * Created by gagandeep on 30/7/16. 5 | */ 6 | 7 | public class RandomDataGeneratorException extends RuntimeException { 8 | 9 | public RandomDataGeneratorException(String message) { 10 | super(message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/AppBundleIdGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.AppBundleID; 4 | import com.infoedge.jrandomizer.providers.AppBundleIdProvider; 5 | import com.infoedge.jrandomizer.providers.AppBundleIdProvider.AppBundleIdData; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | /** 9 | * Created by gagandeep on 30/7/16. 10 | */ 11 | 12 | public class AppBundleIdGenerator extends GenerationRule { 13 | 14 | private AppBundleIdProvider mProvider; 15 | 16 | public AppBundleIdGenerator(AppBundleID annotation,ProviderFactory providerFactory) { 17 | super(annotation, providerFactory); 18 | mProvider = providerFactory().provider(AppBundleIdProvider.class, AppBundleIdData.class); 19 | } 20 | 21 | @Override 22 | public String generate() { 23 | AppBundleIdData bundleIdData = mProvider.provide(); 24 | String tld = getRandomPart(bundleIdData.tlds); 25 | String companyName = getRandomPart(bundleIdData.companyNames); 26 | String productName = getRandomPart(bundleIdData.productNames); 27 | return String.format("%s.%s.%s", tld, companyName, productName); 28 | } 29 | 30 | private String getRandomPart(String[] data) { 31 | int randomIndex = getRandom().nextInt(data.length); 32 | return data[randomIndex]; 33 | } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/AppNameGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.AppName; 4 | import com.infoedge.jrandomizer.providers.AppNameProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 30/7/16. 9 | */ 10 | 11 | public class AppNameGenerator extends GenerationRule { 12 | 13 | private AppNameProvider mProvider; 14 | 15 | public AppNameGenerator(AppName annotation, ProviderFactory providerFactory) { 16 | super(annotation, providerFactory); 17 | mProvider = providerFactory().provider(AppNameProvider.class, String[].class); 18 | } 19 | 20 | @Override 21 | public String generate() { 22 | String[] appNames = mProvider.provide(); 23 | return appNames[getRandom().nextInt(appNames.length)]; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/AppVersionGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.AppVersion; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | /** 7 | * Created by gagandeep on 30/7/16. 8 | */ 9 | 10 | public class AppVersionGenerator extends GenerationRule { 11 | 12 | private int minVersion; 13 | private int maxVersion; 14 | 15 | public AppVersionGenerator(AppVersion annotation,ProviderFactory providerFactory) { 16 | super(annotation, providerFactory); 17 | minVersion = annotation.min(); 18 | maxVersion = annotation.max(); 19 | if (maxVersion < minVersion) { 20 | maxVersion = minVersion; 21 | } 22 | } 23 | 24 | @Override 25 | public String generate() { 26 | int majorVersion = minVersion + getRandom().nextInt((maxVersion - minVersion) + 1); 27 | int parts = getRandom().nextInt(3); 28 | StringBuilder appVersion = new StringBuilder(String.valueOf(majorVersion)); 29 | for (int i = 0; i < parts; i++) { 30 | int subversion = getRandom().nextInt(10); 31 | appVersion.append(".").append(subversion); 32 | } 33 | return appVersion.toString(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/AvatarGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Avatar; 4 | import com.infoedge.jrandomizer.exceptions.RandomDataGeneratorException; 5 | import com.infoedge.jrandomizer.providers.AvatarProvider; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | /** 9 | * Created by gagandeep on 28/7/16. 10 | */ 11 | 12 | public class AvatarGenerator extends GenerationRule { 13 | 14 | private AvatarProvider mProvider; 15 | 16 | private int width; 17 | private int height; 18 | private Avatar.Format format; 19 | 20 | public AvatarGenerator(Avatar annotation,ProviderFactory providerFactory) { 21 | super(annotation, providerFactory); 22 | width = getAnnotation().width(); 23 | height = getAnnotation().height(); 24 | format = getAnnotation().format(); 25 | handleInvalidDimension(annotation.width()); 26 | handleInvalidDimension(annotation.height()); 27 | mProvider = providerFactory().provider(AvatarProvider.class, String[].class); 28 | } 29 | 30 | @Override 31 | public String generate() { 32 | String[] avatarUrls = mProvider.provide(); 33 | int index = getRandom().nextInt(avatarUrls.length); 34 | String avatarUrl = avatarUrls[index]; 35 | 36 | avatarUrl = avatarUrl.replaceAll("\\{width\\}", String.valueOf(width)).replaceAll("\\{height\\}", String.valueOf(height)); 37 | String formatLabel = ""; 38 | if (format == Avatar.Format.RANDOM) { 39 | formatLabel = randomFormat(); 40 | } else { 41 | formatLabel = getAnnotation().format().getLabel(); 42 | } 43 | return avatarUrl.replaceAll("\\{format\\}", formatLabel); 44 | } 45 | 46 | 47 | private String randomFormat() { 48 | int random = getRandom().nextInt(3); 49 | switch (random) { 50 | case 0: 51 | return Avatar.Format.PNG.getLabel(); 52 | case 1: 53 | return Avatar.Format.BMP.getLabel(); 54 | case 2: 55 | return Avatar.Format.JPG.getLabel(); 56 | } 57 | return Avatar.Format.PNG.getLabel(); 58 | } 59 | 60 | private void handleInvalidDimension(int dimension) { 61 | if (dimension < 0 || dimension > 2000) { 62 | throw new RandomDataGeneratorException("Size of dimension should be between 0 and 2000"); 63 | } 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/BooleanGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.BooleanValue; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 29/7/16. 9 | */ 10 | 11 | public class BooleanGenerator extends GenerationRule { 12 | 13 | public BooleanGenerator(BooleanValue annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public Boolean generate() { 19 | int random = Utils.randomIntWithMax(5000); 20 | return random % 2 == 0; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/CityGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.City; 4 | import com.infoedge.jrandomizer.providers.CityProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class CityGenerator extends GenerationRule { 12 | private CityProvider mProvider; 13 | 14 | public CityGenerator(City annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(CityProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] cities = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(cities.length); 23 | return cities[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/ColorNameGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.ColorName; 4 | import com.infoedge.jrandomizer.providers.ColorNameProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 29/7/16. 9 | */ 10 | 11 | public class ColorNameGenerator extends GenerationRule { 12 | 13 | private ColorNameProvider mProvider; 14 | 15 | public ColorNameGenerator(ColorName annotation,ProviderFactory providerFactory) { 16 | super(annotation, providerFactory); 17 | mProvider = providerFactory().provider(ColorNameProvider.class, String[].class); 18 | } 19 | 20 | @Override 21 | public String generate() { 22 | String[] colorNames = mProvider.provide(); 23 | int index = getRandom().nextInt(colorNames.length); 24 | return colorNames[index]; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/CompanyNameGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.CompanyName; 4 | import com.infoedge.jrandomizer.providers.CompanyNameProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class CompanyNameGenerator extends GenerationRule { 12 | 13 | private CompanyNameProvider mProvider; 14 | 15 | public CompanyNameGenerator(CompanyName annotation,ProviderFactory providerFactory) { 16 | super(annotation, providerFactory); 17 | mProvider = providerFactory().provider(CompanyNameProvider.class, String[].class); 18 | } 19 | 20 | @Override 21 | public String generate() { 22 | String[] companyNames = mProvider.provide(); 23 | int randomIndex = getRandom().nextInt(companyNames.length); 24 | return companyNames[randomIndex]; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/CountryCodeGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.CountryCode; 4 | import com.infoedge.jrandomizer.providers.CountryCodeProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class CountryCodeGenerator extends GenerationRule { 12 | private CountryCodeProvider mProvider; 13 | 14 | public CountryCodeGenerator(CountryCode annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(CountryCodeProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] countries = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(countries.length); 23 | return countries[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/CountryGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Country; 4 | import com.infoedge.jrandomizer.providers.CountryProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class CountryGenerator extends GenerationRule { 12 | private CountryProvider mProvider; 13 | 14 | public CountryGenerator(Country annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(CountryProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] countries = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(countries.length); 23 | return countries[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/CreditCardNumberGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.CreditCardNumber; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class CreditCardNumberGenerator extends GenerationRule { 12 | 13 | private String mSeparator; 14 | 15 | public CreditCardNumberGenerator(CreditCardNumber annotation,ProviderFactory providerFactory) { 16 | super(annotation, providerFactory); 17 | String separator = annotation.separator(); 18 | mSeparator = separator == null || separator.length() == 0 ? "" : separator.substring(0, 1); 19 | } 20 | 21 | @Override 22 | public String generate() { 23 | StringBuilder cardNumberBuilder = new StringBuilder(); 24 | cardNumberBuilder.append(Utils.frontPad(String.valueOf(Utils.randomIntWithMinMax(1000, 10001)), "0", 4)).append(mSeparator); 25 | cardNumberBuilder.append(Utils.frontPad(String.valueOf(Utils.randomIntWithMinMax(0, 10001)), "0", 4)).append(mSeparator); 26 | cardNumberBuilder.append(Utils.frontPad(String.valueOf(Utils.randomIntWithMinMax(0, 10001)), "0", 4)).append(mSeparator); 27 | cardNumberBuilder.append(Utils.frontPad(String.valueOf(Utils.randomIntWithMinMax(0, 10001)), "0", 4)); 28 | return cardNumberBuilder.toString(); 29 | } 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/CreditCardTypeGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.CreditCardType; 4 | import com.infoedge.jrandomizer.providers.CreditCardTypeProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class CreditCardTypeGenerator extends GenerationRule { 12 | private CreditCardTypeProvider mProvider; 13 | 14 | public CreditCardTypeGenerator(CreditCardType annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(CreditCardTypeProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] cardTypes = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(cardTypes.length); 23 | return cardTypes[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/CurrencyCodeGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.CurrencyCode; 4 | import com.infoedge.jrandomizer.providers.CurrencyCodeProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class CurrencyCodeGenerator extends GenerationRule { 12 | private CurrencyCodeProvider mProvider; 13 | 14 | public CurrencyCodeGenerator(CurrencyCode annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(CurrencyCodeProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] currencyCodes = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(currencyCodes.length); 23 | return currencyCodes[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/CurrencyGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Currency; 4 | import com.infoedge.jrandomizer.providers.CurrencyProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class CurrencyGenerator extends GenerationRule { 12 | private CurrencyProvider mProvider; 13 | 14 | public CurrencyGenerator(Currency annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(CurrencyProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] currencies = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(currencies.length); 23 | return currencies[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/CustomListGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.CustomList; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | /** 7 | * Created by gagandeep on 29/7/16. 8 | */ 9 | 10 | public class CustomListGenerator extends GenerationRule { 11 | 12 | public CustomListGenerator(CustomList annotation,ProviderFactory providerFactory) { 13 | super(annotation, providerFactory); 14 | } 15 | 16 | @Override 17 | public String generate() { 18 | String[] options = getAnnotation().options(); 19 | int index = getRandom().nextInt(options.length); 20 | return options[index]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/DateValueGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.DateValue; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | import java.text.DateFormat; 7 | import java.text.ParseException; 8 | import java.text.SimpleDateFormat; 9 | import java.util.Calendar; 10 | import java.util.Date; 11 | import java.util.Locale; 12 | 13 | /** 14 | * Created by gagandeep on 29/7/16. 15 | */ 16 | 17 | public class DateValueGenerator extends GenerationRule { 18 | 19 | private DateValue.Format mDateFormat; 20 | private String mCustomDateFormat; 21 | private String mFrom; 22 | private String mTo; 23 | 24 | private Date mFromDate; 25 | private Date mToDate; 26 | 27 | public DateValueGenerator(DateValue annotation,ProviderFactory providerFactory) { 28 | super(annotation, providerFactory); 29 | mDateFormat = annotation.format(); 30 | mCustomDateFormat = annotation.customFormat(); 31 | mFrom = annotation.from(); 32 | mTo = annotation.to(); 33 | 34 | mFromDate = fromStringToDate(isDateFormatvalid(mCustomDateFormat) ? mCustomDateFormat : mDateFormat.getValue(), mFrom); 35 | mToDate = fromStringToDate(isDateFormatvalid(mCustomDateFormat) ? mCustomDateFormat : mDateFormat.getValue(), mTo); 36 | } 37 | 38 | @Override 39 | public String generate() { 40 | Date randomDate = randomDate(mFromDate, mToDate); 41 | return fromDateToString(isDateFormatvalid(mCustomDateFormat) ? mCustomDateFormat : mDateFormat.getValue(),randomDate); 42 | } 43 | 44 | private Date fromStringToDate(String format, String value) { 45 | DateFormat dateFormat = new SimpleDateFormat(format, Locale.US); 46 | Date date = null; 47 | try { 48 | date = dateFormat.parse(value); 49 | } catch (ParseException e) { 50 | e.printStackTrace(); 51 | date = Calendar.getInstance().getTime(); 52 | } 53 | return date; 54 | } 55 | 56 | private String fromDateToString(String format, Date date) { 57 | DateFormat dateFormat = new SimpleDateFormat(format,Locale.US); 58 | String dateString = null; 59 | dateString = dateFormat.format(date); 60 | return dateString; 61 | } 62 | 63 | private Date randomDate(Date fromDate, Date toDate) { 64 | long fromTime = fromDate.getTime(); 65 | long toTime = toDate.getTime(); 66 | 67 | long diff = toTime - fromTime + 1; 68 | 69 | if (diff <= 0) { 70 | return fromDate; 71 | } 72 | 73 | long randomTime = fromTime + (long) (Math.random() * diff); 74 | return new Date(randomTime); 75 | } 76 | 77 | private boolean isDateFormatvalid(String format) { 78 | return format != null && !format.isEmpty(); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/DelegateGenerationRule.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.providers.ProviderFactory; 4 | 5 | import java.lang.annotation.Annotation; 6 | import java.util.Random; 7 | 8 | /** 9 | * Created by gagandeep on 28/7/16. 10 | */ 11 | 12 | public abstract class DelegateGenerationRule extends GenerationRule { 13 | 14 | private GenerationRule mCoreGenerator; 15 | 16 | public DelegateGenerationRule(RANDOM_GENERATOR_ANNOTATION annotation, ProviderFactory providerFactory, GenerationRule mCoreGenerator) { 17 | super(annotation, providerFactory); 18 | this.mCoreGenerator = mCoreGenerator; 19 | } 20 | 21 | public String getCoreRandomData() { 22 | return mCoreGenerator.generate(); 23 | } 24 | 25 | public abstract TARGET_DATA_TYPE generate(); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/DomainNameGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.DomainName; 4 | import com.infoedge.jrandomizer.providers.DomainNameProvider; 5 | import com.infoedge.jrandomizer.providers.DomainNameProvider.DomainNameData; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | /** 9 | * Created by gagandeep on 30/7/16. 10 | */ 11 | 12 | public class DomainNameGenerator extends GenerationRule { 13 | 14 | private DomainNameProvider mProvider; 15 | 16 | public DomainNameGenerator(DomainName annotation,ProviderFactory providerFactory) { 17 | super(annotation, providerFactory); 18 | mProvider = providerFactory().provider(DomainNameProvider.class, DomainNameData.class); 19 | } 20 | 21 | @Override 22 | public String generate() { 23 | DomainNameData domainNameData = mProvider.provide(); 24 | String topLevelDomain = domainNameData.topLevelDomains[getRandom().nextInt(domainNameData.topLevelDomains.length)]; 25 | String subDomain = domainNameData.subDomains[getRandom().nextInt(domainNameData.subDomains.length)]; 26 | return String.format("%s.%s", subDomain, topLevelDomain); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/DummyImageUrlGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.DummyImageUrl; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | /** 7 | * Created by gagandeep on 30/7/16. 8 | */ 9 | 10 | public class DummyImageUrlGenerator extends GenerationRule { 11 | 12 | private final String IMAGE_URL_TEMPLATE = "http://dummyimage.com/{width}x{height}/{background-color}.{format}?text={text}"; 13 | 14 | private int width = 100; 15 | private int height = 100; 16 | private DummyImageUrl.Format format = DummyImageUrl.Format.RANDOM; 17 | 18 | public DummyImageUrlGenerator(DummyImageUrl annotation,ProviderFactory providerFactory) { 19 | super(annotation, providerFactory); 20 | width = annotation.width(); 21 | height = annotation.height(); 22 | format = annotation.format(); 23 | } 24 | 25 | @Override 26 | public String generate() { 27 | String randomColor = randomBackgroundColor(); 28 | return IMAGE_URL_TEMPLATE.replace("{width}",String.valueOf(width)).replace("{height}",String.valueOf(height)).replace("{format}",imageFormat(format)).replace("{background-color}",randomColor).replace("{text}",randomColor); 29 | } 30 | 31 | private String randomBackgroundColor() { 32 | int randomCode = getRandom().nextInt(16777216); 33 | return Integer.toHexString(randomCode); 34 | } 35 | 36 | private String imageFormat(DummyImageUrl.Format format) { 37 | if (format == DummyImageUrl.Format.RANDOM) { 38 | int randomIndex = getRandom().nextInt(3); 39 | switch (randomIndex) { 40 | case 0: 41 | return DummyImageUrl.Format.JPG.getLabel(); 42 | case 1: 43 | return DummyImageUrl.Format.PNG.getLabel(); 44 | case 2: 45 | return DummyImageUrl.Format.GIF.getLabel(); 46 | } 47 | } 48 | return format.getLabel(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/EmailGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Email; 4 | import com.infoedge.jrandomizer.providers.EmailProvider; 5 | import com.infoedge.jrandomizer.providers.EmailProvider.EmailRecord; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | /** 9 | * Created by gagandeep on 28/7/16. 10 | */ 11 | 12 | public class EmailGenerator extends GenerationRule { 13 | 14 | private EmailProvider mProvider; 15 | 16 | public EmailGenerator(Email annotation,ProviderFactory providerFactory) { 17 | super(annotation, providerFactory); 18 | mProvider = providerFactory().provider(EmailProvider.class, EmailRecord[].class); 19 | } 20 | 21 | @Override 22 | public String generate() { 23 | Email annotation = getAnnotation(); 24 | if (annotation.in().length != 0) { 25 | String[] inEmailAddresses = annotation.in(); 26 | int random = getRandom().nextInt(inEmailAddresses.length); 27 | return inEmailAddresses[random]; 28 | } else { 29 | EmailRecord[] emailRecords = mProvider.provide(); 30 | int random = getRandom().nextInt(emailRecords.length); 31 | EmailRecord emailRecord = emailRecords[random]; 32 | String result = emailRecord.userName; 33 | if (annotation.domainName().length != 0) { 34 | random = getRandom().nextInt(annotation.domainName().length); 35 | String domainName = annotation.domainName()[random]; 36 | result = result + "@" + domainName; 37 | } else { 38 | result = result + "@" + emailRecord.domainName; 39 | } 40 | return result; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/EncryptGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Encrypt; 4 | import com.infoedge.jrandomizer.providers.EncryptProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 29/7/16. 9 | */ 10 | 11 | public class EncryptGenerator extends GenerationRule { 12 | 13 | private EncryptProvider mProvider; 14 | private int mLength; 15 | 16 | public EncryptGenerator(Encrypt annotation,ProviderFactory providerFactory) { 17 | super(annotation, providerFactory); 18 | mProvider = providerFactory().provider(EncryptProvider.class, String[].class); 19 | mLength = annotation.length(); 20 | if (mLength < 0) { 21 | mLength = 0; 22 | } 23 | } 24 | 25 | @Override 26 | public String generate() { 27 | String randomizedText = randomizeEncryptedText(); 28 | int textLength = randomizedText.length(); 29 | int requiredLength = mLength; 30 | if (requiredLength == 0) { 31 | return ""; 32 | } 33 | StringBuilder textBuilder = new StringBuilder(); 34 | int loops = requiredLength / textLength; 35 | int leftOverLength = requiredLength % textLength; 36 | for (int i = 0; i < loops; i++) { 37 | textBuilder.append(randomizedText.substring(0, textLength - 1)); 38 | } 39 | textBuilder.append(randomizedText.substring(0, leftOverLength)); 40 | return textBuilder.toString(); 41 | } 42 | 43 | private String randomizeEncryptedText() { 44 | String[] encryptedLines = mProvider.provide(); 45 | StringBuilder randomized = new StringBuilder(); 46 | int length = encryptedLines.length; 47 | for (int i = 0; i < length; i++) { 48 | int random = getRandom().nextInt(length); 49 | randomized.append(encryptedLines[random]); 50 | } 51 | return randomized.toString(); 52 | } 53 | 54 | 55 | } 56 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/FirstNameGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.FirstName; 4 | import com.infoedge.jrandomizer.providers.FirstNameFemaleProvider; 5 | import com.infoedge.jrandomizer.providers.FirstNameMaleProvider; 6 | import com.infoedge.jrandomizer.providers.FirstNameMixProvider; 7 | import com.infoedge.jrandomizer.providers.Provider; 8 | import com.infoedge.jrandomizer.providers.ProviderFactory; 9 | 10 | /** 11 | * Created by gagandeep on 28/7/16. 12 | */ 13 | 14 | public class FirstNameGenerator extends GenerationRule { 15 | 16 | private Provider mProvider; 17 | 18 | public FirstNameGenerator(FirstName annotation,ProviderFactory providerFactory) { 19 | super(annotation, providerFactory); 20 | mProvider = loadProvider(annotation.gender()); 21 | } 22 | 23 | @Override 24 | public String generate() { 25 | String[] firstNames = mProvider.provide(); 26 | int random = getRandom().nextInt(firstNames.length); 27 | return firstNames[random]; 28 | } 29 | 30 | private Provider loadProvider(FirstName.Gender gender) { 31 | switch (gender) { 32 | case MIX: 33 | return ProviderFactory.getInstance().provider(FirstNameMixProvider.class, String[].class); 34 | case MALE: 35 | return ProviderFactory.getInstance().provider(FirstNameMaleProvider.class, String[].class); 36 | case FEMALE: 37 | return ProviderFactory.getInstance().provider(FirstNameFemaleProvider.class, String[].class); 38 | } 39 | return ProviderFactory.getInstance().provider(FirstNameMixProvider.class, String[].class); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/FrequencyGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Frequency; 4 | import com.infoedge.jrandomizer.providers.FrequencyProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 29/7/16. 9 | */ 10 | 11 | public class FrequencyGenerator extends GenerationRule { 12 | 13 | private FrequencyProvider mProvider; 14 | 15 | public FrequencyGenerator(Frequency annotation,ProviderFactory providerFactory) { 16 | super(annotation, providerFactory); 17 | mProvider = providerFactory().provider(FrequencyProvider.class, String[].class); 18 | } 19 | 20 | @Override 21 | public String generate() { 22 | String[] frequencies = mProvider.provide(); 23 | int length = frequencies.length; 24 | int random = getRandom().nextInt(length); 25 | return frequencies[random]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/FullNameGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.FullName; 4 | import com.infoedge.jrandomizer.providers.FullNameProvider; 5 | import com.infoedge.jrandomizer.providers.FullNameProvider.FullNameData; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | /** 9 | * Created by gagandeep on 31/7/16. 10 | */ 11 | 12 | public class FullNameGenerator extends GenerationRule { 13 | 14 | private FullNameProvider mProvider; 15 | 16 | public FullNameGenerator(FullName annotation,ProviderFactory providerFactory) { 17 | super(annotation, providerFactory); 18 | mProvider = providerFactory().provider(FullNameProvider.class, FullNameData.class); 19 | } 20 | 21 | @Override 22 | public String generate() { 23 | FullNameData fullNameData = mProvider.provide(); 24 | int randomIndex = getRandom().nextInt(fullNameData.firstNames.length); 25 | String firstName = fullNameData.firstNames[randomIndex]; 26 | randomIndex = getRandom().nextInt(fullNameData.lastNames.length); 27 | String lastName = fullNameData.lastNames[randomIndex]; 28 | return String.format("%s %s",firstName,lastName); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/GenderGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.Gender; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class GenderGenerator extends GenerationRule { 12 | 13 | public GenderGenerator(Gender annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public String generate() { 19 | int random = Utils.randomIntWithMax(5000); 20 | return random % 2 == 0 ? getAnnotation().abbreviation() ? "M" : "Male" : getAnnotation().abbreviation() ? "F" :"Female"; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/GenerationRule.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.providers.ProviderFactory; 4 | 5 | import java.lang.annotation.Annotation; 6 | import java.util.Random; 7 | 8 | /** 9 | * Created by gagandeep on 28/7/16. 10 | */ 11 | 12 | public abstract class GenerationRule { 13 | 14 | protected RANDOM_GENERATOR_ANNOTATION mGeneratorAnnotation; 15 | private Random mRandom; 16 | private ProviderFactory mProviderFactory; 17 | 18 | public GenerationRule(RANDOM_GENERATOR_ANNOTATION annotation, ProviderFactory providerFactory) { 19 | this.mGeneratorAnnotation = annotation; 20 | mRandom = new Random(); 21 | this.mProviderFactory = providerFactory; 22 | } 23 | 24 | public abstract TARGET_DATA_TYPE generate(); 25 | 26 | public Random getRandom() { 27 | return mRandom; 28 | } 29 | 30 | public RANDOM_GENERATOR_ANNOTATION getAnnotation() { 31 | return mGeneratorAnnotation; 32 | } 33 | 34 | public ProviderFactory providerFactory() { 35 | return mProviderFactory; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/GuidGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Guid; 4 | import com.infoedge.jrandomizer.providers.GuidProvider; 5 | import com.infoedge.jrandomizer.providers.GuidProvider.GuidRecord; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | /** 9 | * Created by gagandeep on 29/7/16. 10 | */ 11 | 12 | public class GuidGenerator extends GenerationRule { 13 | 14 | private GuidProvider mProvider; 15 | private boolean mEssentiallyUnique; 16 | private String firstPart = null; 17 | 18 | public GuidGenerator(Guid annotation,ProviderFactory providerFactory) { 19 | super(annotation, providerFactory); 20 | mProvider = providerFactory().provider(GuidProvider.class, GuidRecord[].class); 21 | mEssentiallyUnique = annotation.essentiallyUnique(); 22 | } 23 | 24 | @Override 25 | public String generate() { 26 | GuidRecord[] guids = mProvider.provide(); 27 | int random = getRandom().nextInt(guids.length); 28 | GuidRecord randomGuid = guids[random]; 29 | if (mEssentiallyUnique) { 30 | if (firstPart == null) { 31 | firstPart = randomGuid.firstPart; 32 | } 33 | } else { 34 | firstPart = randomGuid.firstPart; 35 | } 36 | return firstPart + randomGuid.lastPart; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/HexColorGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.HexColor; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | /** 7 | * Created by gagandeep on 29/7/16. 8 | */ 9 | 10 | public class HexColorGenerator extends GenerationRule { 11 | 12 | public HexColorGenerator(HexColor annotation,ProviderFactory providerFactory) { 13 | super(annotation, providerFactory); 14 | } 15 | 16 | @Override 17 | public String generate() { 18 | String alpha = ""; 19 | if (getAnnotation().alpha()) { 20 | alpha = toHex(getRandom().nextInt(256)); 21 | } 22 | String red = toHex(getRandom().nextInt(256)); 23 | String green = toHex(getRandom().nextInt(256)); 24 | String blue = toHex(getRandom().nextInt(256)); 25 | String hexCode = String.format("#%s%s%s%s", alpha, red, green, blue); 26 | return getAnnotation().upperCase() ? hexCode.toUpperCase() : hexCode.toLowerCase(); 27 | } 28 | 29 | private String toHex(int integer) { 30 | String hexString = Integer.toHexString(integer); 31 | switch (hexString.length()) { 32 | case 0: 33 | hexString = "00"; 34 | break; 35 | case 1: 36 | hexString = "0" + hexString; 37 | break; 38 | } 39 | return hexString; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/InvalidGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.CustomGenerator; 4 | import com.infoedge.jrandomizer.exceptions.RandomDataGeneratorException; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 1/8/16. 9 | */ 10 | 11 | public class InvalidGenerator extends GenerationRule { 12 | 13 | public InvalidGenerator(CustomGenerator annotation, ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public Void generate() { 19 | String message = String.format("%s cannot generate anything for %s", this.getClass().getSimpleName(), getAnnotation().getClass().getSimpleName()); 20 | throw new RandomDataGeneratorException(message); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/IpAddressV4Generator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.IpAddressV4; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class IpAddressV4Generator extends GenerationRule { 12 | 13 | public IpAddressV4Generator(IpAddressV4 annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public String generate() { 19 | return String.format("%s.%s.%s.%s", Utils.randomIntWithMax(256), Utils.randomIntWithMax(256), Utils.randomIntWithMax(256), Utils.randomIntWithMax(256)); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/IpAddressV6Generator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.IpAddressV6; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class IpAddressV6Generator extends GenerationRule { 12 | 13 | public IpAddressV6Generator(IpAddressV6 annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public String generate() { 19 | String ipV6Address = String.format("%s.%s.%s.%s.%s.%s" 20 | , Utils.randomHexOfInt(65536) 21 | , Utils.randomHexOfInt(65536) 22 | , Utils.randomHexOfInt(65536) 23 | , Utils.randomHexOfInt(65536) 24 | , Utils.randomHexOfInt(65536) 25 | , Utils.randomHexOfInt(65536) 26 | ); 27 | return ipV6Address; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/IsbnGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Isbn; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | /** 7 | * Created by gagandeep on 29/7/16. 8 | */ 9 | 10 | public class IsbnGenerator extends GenerationRule { 11 | 12 | 13 | public IsbnGenerator(Isbn annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public String generate() { 19 | String firstPart = randomPart(300); 20 | String secondPart = randomPart(300); 21 | String thirdPart = randomPart(300); 22 | 23 | String lastPart = charOrNumber(); 24 | return String.format("%s%s%s-%s", firstPart, secondPart, thirdPart, lastPart); 25 | } 26 | 27 | private String randomPart(int range) { 28 | String random = String.valueOf(getRandom().nextInt(range)); 29 | int targetLength = String.valueOf(range).length(); 30 | int randomLength = random.length(); 31 | if (randomLength < targetLength) { 32 | for (int i = randomLength; i < targetLength; i++) { 33 | random = "0" + random; 34 | } 35 | } 36 | return random; 37 | } 38 | 39 | private String charOrNumber() { 40 | int random = getRandom().nextInt(38); 41 | if (random < 10) { 42 | return String.valueOf(random); 43 | } else { 44 | random = random - 10; 45 | return getCharForNumber(random); 46 | } 47 | } 48 | 49 | private String getCharForNumber(int i) { 50 | return i > 0 && i < 27 ? String.valueOf((char) (i + 64)) : "A"; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/JobTitleGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.JobTitle; 4 | import com.infoedge.jrandomizer.providers.JobTitleProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class JobTitleGenerator extends GenerationRule { 12 | private JobTitleProvider mProvider; 13 | 14 | public JobTitleGenerator(JobTitle annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(JobTitleProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] jobTitles = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(jobTitles.length); 23 | return jobTitles[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/LanguageGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Language; 4 | import com.infoedge.jrandomizer.providers.LanguageProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class LanguageGenerator extends GenerationRule { 12 | private LanguageProvider mProvider; 13 | 14 | public LanguageGenerator(Language annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(LanguageProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] languages = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(languages.length); 23 | return languages[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/LastNameGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.LastName; 4 | import com.infoedge.jrandomizer.providers.FullNameProvider; 5 | import com.infoedge.jrandomizer.providers.FullNameProvider.FullNameData; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | /** 9 | * Created by gagandeep on 31/7/16. 10 | */ 11 | 12 | public class LastNameGenerator extends GenerationRule { 13 | 14 | private FullNameProvider mProvider; 15 | 16 | public LastNameGenerator(LastName annotation,ProviderFactory providerFactory) { 17 | super(annotation, providerFactory); 18 | mProvider = providerFactory().provider(FullNameProvider.class, FullNameData.class); 19 | } 20 | 21 | @Override 22 | public String generate() { 23 | FullNameData fullNameData = mProvider.provide(); 24 | int randomIndex = getRandom().nextInt(fullNameData.lastNames.length); 25 | String lastName = fullNameData.lastNames[randomIndex]; 26 | return lastName; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/LatitudeGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Latitude; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | /** 7 | * Created by gagandeep on 31/7/16. 8 | */ 9 | 10 | public class LatitudeGenerator extends GenerationRule { 11 | 12 | public LatitudeGenerator(Latitude annotation,ProviderFactory providerFactory) { 13 | super(annotation, providerFactory); 14 | } 15 | 16 | @Override 17 | public String generate() { 18 | return String.valueOf((getRandom().nextDouble() * -180.0) + 90.0); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/LinkedInSkillGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.LinkedInSkill; 4 | import com.infoedge.jrandomizer.providers.LinkedInSkillProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class LinkedInSkillGenerator extends GenerationRule { 12 | private LinkedInSkillProvider mProvider; 13 | 14 | public LinkedInSkillGenerator(LinkedInSkill annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(LinkedInSkillProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] skills = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(skills.length); 23 | return skills[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/LongitudeGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Longitude; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | /** 7 | * Created by gagandeep on 31/7/16. 8 | */ 9 | 10 | public class LongitudeGenerator extends GenerationRule { 11 | 12 | public LongitudeGenerator(Longitude annotation,ProviderFactory providerFactory) { 13 | super(annotation, providerFactory); 14 | } 15 | 16 | @Override 17 | public String generate() { 18 | return String.valueOf((getRandom().nextDouble() * -360.0) + 180.0); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/MD5Generator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.MD5; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class MD5Generator extends GenerationRule { 12 | 13 | public MD5Generator(MD5 annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public String generate() { 19 | StringBuilder hashBuilder = new StringBuilder(); 20 | for (int i = 0; i < 8; i++) { 21 | hashBuilder.append(Utils.frontPad(Utils.randomHexOfInt(65536), "0", 4)); 22 | } 23 | return hashBuilder.toString(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/MacAddressGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.MacAddress; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class MacAddressGenerator extends GenerationRule { 12 | 13 | public MacAddressGenerator(MacAddress annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public String generate() { 19 | String macAddress = String.format("%s-%s-%s-%s-%s-%s" 20 | , Utils.frontPad(Utils.randomHexOfInt(256),"0",2) 21 | , Utils.frontPad(Utils.randomHexOfInt(256),"0",2) 22 | , Utils.frontPad(Utils.randomHexOfInt(256),"0",2) 23 | , Utils.frontPad(Utils.randomHexOfInt(256),"0",2) 24 | , Utils.frontPad(Utils.randomHexOfInt(256),"0",2) 25 | , Utils.frontPad(Utils.randomHexOfInt(256),"0",2) 26 | ); 27 | return macAddress.toUpperCase(); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/MimeTypeGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.MimeType; 4 | import com.infoedge.jrandomizer.providers.MimeTypeProvider; 5 | import com.infoedge.jrandomizer.providers.MimeTypeProvider.MimeTypeData; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | /** 9 | * Created by gagandeep on 31/7/16. 10 | */ 11 | 12 | public class MimeTypeGenerator extends GenerationRule { 13 | 14 | private MimeTypeProvider mProvider; 15 | private MimeType.Type mimeType; 16 | 17 | public MimeTypeGenerator(MimeType annotation,ProviderFactory providerFactory) { 18 | super(annotation, providerFactory); 19 | mimeType = annotation.type(); 20 | mProvider = providerFactory().provider(MimeTypeProvider.class, MimeTypeData.class); 21 | } 22 | 23 | @Override 24 | public String generate() { 25 | MimeTypeData mimeTypeData = mProvider.provide(); 26 | return getRandomMimeType(mimeTypeData, mimeType); 27 | } 28 | 29 | private String getRandomMimeType(MimeTypeData mimeTypeData, MimeType.Type type) { 30 | String[] data = mimeTypeData.all; 31 | switch (type) { 32 | case ALL: 33 | data = mimeTypeData.all; 34 | break; 35 | case COMMON: 36 | data = mimeTypeData.common; 37 | break; 38 | case CODE: 39 | data = mimeTypeData.code; 40 | break; 41 | case DOCUMENT: 42 | data = mimeTypeData.document; 43 | break; 44 | case IMAGE: 45 | data = mimeTypeData.image; 46 | break; 47 | case MEDIA: 48 | data = mimeTypeData.media; 49 | break; 50 | case TEXT: 51 | data = mimeTypeData.text; 52 | break; 53 | } 54 | int randomIndex = getRandom().nextInt(data.length); 55 | return data[randomIndex]; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/MoneyGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Money; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | import java.math.BigDecimal; 7 | import java.math.RoundingMode; 8 | 9 | /** 10 | * Created by gagandeep on 31/7/16. 11 | */ 12 | 13 | public class MoneyGenerator extends GenerationRule { 14 | 15 | private Money.In moneyIn; 16 | private double min; 17 | private double max; 18 | 19 | public MoneyGenerator(Money annotation,ProviderFactory providerFactory) { 20 | super(annotation, providerFactory); 21 | moneyIn = annotation.in(); 22 | min = annotation.min(); 23 | max = annotation.max(); 24 | } 25 | 26 | @Override 27 | public String generate() { 28 | String randomMoney = new BigDecimal(min + (Math.random() * (max - min + 1))).setScale(2, RoundingMode.HALF_UP).toString(); 29 | // randomMoney = randomMoney.length() <= 4 ? randomMoney : randomMoney.substring(0, 4); 30 | String currencySymbol = currencySymbol(moneyIn); 31 | return String.format("%s%s", currencySymbol, randomMoney); 32 | } 33 | 34 | private String currencySymbol(Money.In in) { 35 | if (in == Money.In.RANDOM) { 36 | int randomIndex = getRandom().nextInt(Money.In.values().length - 1); 37 | in = Money.In.values()[randomIndex]; 38 | } 39 | return in.getCurrencySymbol(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/NumberGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import java.math.BigDecimal; 4 | import java.math.RoundingMode; 5 | 6 | import com.infoedge.jrandomizer.annotations.Number; 7 | import com.infoedge.jrandomizer.providers.ProviderFactory; 8 | 9 | /** 10 | * Created by gagandeep on 28/7/16. 11 | */ 12 | 13 | public class NumberGenerator extends GenerationRule { 14 | 15 | private long min; 16 | private long max; 17 | private int decimalPlaces; 18 | 19 | public NumberGenerator(Number annotation,ProviderFactory providerFactory) { 20 | super(annotation, providerFactory); 21 | } 22 | 23 | @Override 24 | public Double generate() { 25 | Number annotation = getAnnotation(); 26 | min = annotation.min(); 27 | max = annotation.max(); 28 | decimalPlaces = annotation.decimals(); 29 | double number = (min + (Math.random() * ((max - min) + 1))); 30 | if (decimalPlaces > 0) { 31 | number = round(number, decimalPlaces); 32 | } 33 | return number; 34 | } 35 | 36 | private static double round(double value, int places) { 37 | if (places < 0) throw new IllegalArgumentException(); 38 | 39 | BigDecimal bd = new BigDecimal(value); 40 | bd = bd.setScale(places, RoundingMode.HALF_UP); 41 | return bd.doubleValue(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/ParagraphsGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Paragraphs; 4 | import com.infoedge.jrandomizer.providers.ParagraphsProvider; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 29/7/16. 9 | */ 10 | 11 | public class ParagraphsGenerator extends GenerationRule { 12 | 13 | private ParagraphsProvider mProvider; 14 | private int atleast; 15 | private int noMoreThan; 16 | 17 | public ParagraphsGenerator(Paragraphs annotation,ProviderFactory providerFactory) { 18 | super(annotation, providerFactory); 19 | mProvider = providerFactory().provider(ParagraphsProvider.class, String[].class); 20 | atleast = annotation.atleast(); 21 | noMoreThan = annotation.noMoreThan(); 22 | 23 | if (noMoreThan < atleast) { 24 | noMoreThan = atleast; 25 | } 26 | } 27 | 28 | 29 | @Override 30 | public String generate() { 31 | String[] paragraphsData = mProvider.provide(); 32 | int diff = noMoreThan - atleast + 1; 33 | int random = getRandom().nextInt(diff) + atleast; 34 | StringBuilder paragraphs = new StringBuilder(); 35 | for (int i = 0; i < random; i++) { 36 | int randomIndex = getRandom().nextInt(paragraphsData.length); 37 | paragraphs.append(paragraphsData[randomIndex]); 38 | if (i < random - 1) { 39 | paragraphs.append("\n"); 40 | } 41 | } 42 | return paragraphs.toString(); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/PhoneGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.Phone; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | import java.util.HashMap; 8 | import java.util.Map; 9 | import java.util.Set; 10 | 11 | /** 12 | * Created by gagandeep on 31/7/16. 13 | */ 14 | 15 | public class PhoneGenerator extends GenerationRule { 16 | 17 | private Map mPartsMap; 18 | 19 | public PhoneGenerator(Phone annotation,ProviderFactory providerFactory) { 20 | super(annotation, providerFactory); 21 | String[] split = annotation.country().getFormat().split("-"); 22 | mPartsMap = new HashMap<>(split.length - 1); 23 | parsePhonePartsAndPopulateMap(mPartsMap,split); 24 | } 25 | 26 | @Override 27 | public String generate() { 28 | String phoneNnumber = getAnnotation().country().getFormat(); 29 | Set keys = mPartsMap.keySet(); 30 | for (Integer key : keys) { 31 | String toReplace = String.format("\\{%d,%d\\}", key, mPartsMap.get(key)); 32 | String replaceWith = generatePhoneNumberPart(mPartsMap.get(key), getAnnotation().country().getStart()); 33 | phoneNnumber = phoneNnumber.replaceAll(toReplace, replaceWith); 34 | } 35 | return phoneNnumber; 36 | } 37 | 38 | private String generatePhoneNumberPart(int digits,int min) { 39 | long startNumber = Long.parseLong(Utils.tailPad(String.valueOf(min), "0", digits)); 40 | long endNumber = (long) (Math.pow(10, digits) - 1); 41 | return String.valueOf(Utils.randomLongWithMinMax(startNumber, endNumber)); 42 | } 43 | 44 | private void parsePhonePartsAndPopulateMap(Map map, String[] parts) { 45 | int count = parts.length; 46 | for (int i = 1; i < count; i++) { 47 | String part = parts[i].replaceAll("\\{", "").replaceAll("\\}", ""); 48 | map.put(Integer.parseInt(part.split(",")[0]), Integer.parseInt(part.split(",")[1])); 49 | } 50 | } 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/RaceGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Race; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.RaceProvider; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class RaceGenerator extends GenerationRule { 12 | private RaceProvider mProvider; 13 | 14 | public RaceGenerator(Race annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(RaceProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] races = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(races.length); 23 | return races[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/RandomArrayGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.adapters.ConversionAdapter; 4 | import com.infoedge.jrandomizer.annotations.CollectionDescriptor; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | import java.lang.reflect.Array; 8 | import java.util.ArrayList; 9 | import java.util.Arrays; 10 | import java.util.List; 11 | 12 | /** 13 | * Created by gagandeep on 2/8/16. 14 | */ 15 | 16 | public class RandomArrayGenerator extends GenerationRule { 17 | 18 | private int min; 19 | private int max; 20 | private ConversionAdapter mConversionAdapter; 21 | private GenerationRule mGenerationRule; 22 | private Class mClazz; 23 | 24 | public RandomArrayGenerator(CollectionDescriptor annotation, ProviderFactory providerFactory, GenerationRule generationRule, ConversionAdapter conversionAdapter,Class clazz) { 25 | super(annotation, providerFactory); 26 | min = annotation.min(); 27 | max = annotation.max(); 28 | this.mGenerationRule = generationRule; 29 | this.mConversionAdapter = conversionAdapter; 30 | mClazz = clazz; 31 | } 32 | 33 | @Override 34 | public Object generate() { 35 | int random = min + (getRandom().nextInt(max - min)) + 1; 36 | Object array = Array.newInstance(mClazz, random); 37 | for (int i = 0; i < random; i++) { 38 | Array.set(array,i,mConversionAdapter.value(mGenerationRule.generate())); 39 | } 40 | return array; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/RandomListGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.adapters.ConversionAdapter; 4 | import com.infoedge.jrandomizer.annotations.CollectionDescriptor; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | /** 11 | * Created by gagandeep on 2/8/16. 12 | */ 13 | 14 | public class RandomListGenerator extends GenerationRule> { 15 | 16 | private int min = 1; 17 | private int max = min; 18 | private ConversionAdapter mConversionAdapter; 19 | private GenerationRule mGenerationRule; 20 | 21 | public RandomListGenerator(CollectionDescriptor annotation, ProviderFactory providerFactory, GenerationRule generationRule, ConversionAdapter conversionAdapter) { 22 | super(annotation, providerFactory); 23 | if (annotation != null) { 24 | min = annotation.min(); 25 | max = annotation.max(); 26 | } 27 | this.mGenerationRule = generationRule; 28 | this.mConversionAdapter = conversionAdapter; 29 | 30 | } 31 | 32 | @Override 33 | public List generate() { 34 | int random = min + (getRandom().nextInt(max - min + 1)) + 1; 35 | List randomList = new ArrayList<>(random); 36 | for (int i = 0; i < random; i++) { 37 | randomList.add(mConversionAdapter.value(mGenerationRule.generate())); 38 | } 39 | return randomList; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/ReferenceRecordGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Generator; 4 | import com.infoedge.jrandomizer.annotations.ReferenceRecord; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 30/7/16. 9 | */ 10 | 11 | public class ReferenceRecordGenerator extends GenerationRule { 12 | 13 | public ReferenceRecordGenerator(ReferenceRecord annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public Object generate() { 19 | Generator generator = new Generator(getAnnotation().clazz()); 20 | return generator.generate(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/RowNumberGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.RowNumber; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | /** 7 | * Created by gagandeep on 29/7/16. 8 | */ 9 | 10 | public class RowNumberGenerator extends GenerationRule{ 11 | 12 | private long mNumber; 13 | 14 | public RowNumberGenerator(RowNumber annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mNumber = annotation.startFrom(); 17 | } 18 | 19 | @Override 20 | public Long generate() { 21 | return mNumber++; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/SHA1Generator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.SHA1; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class SHA1Generator extends GenerationRule { 12 | 13 | public SHA1Generator(SHA1 annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public String generate() { 19 | StringBuilder hashBuilder = new StringBuilder(); 20 | for (int i = 0; i < 10; i++) { 21 | hashBuilder.append(Utils.frontPad(Utils.randomHexOfInt(65536), "0", 4)); 22 | } 23 | return hashBuilder.toString(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/SHA256Generator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.SHA256; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class SHA256Generator extends GenerationRule { 12 | 13 | public SHA256Generator(SHA256 annotation,ProviderFactory providerFactory) { 14 | super(annotation, providerFactory); 15 | } 16 | 17 | @Override 18 | public String generate() { 19 | StringBuilder hashBuilder = new StringBuilder(); 20 | for (int i = 0; i < 8; i++) { 21 | hashBuilder.append(Utils.frontPad(Utils.randomHexOfLong(4294967296L), "0", 8)); 22 | } 23 | return hashBuilder.toString(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/SSNGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.SSN; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class SSNGenerator extends GenerationRule { 12 | 13 | 14 | public SSNGenerator(SSN annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | } 17 | 18 | @Override 19 | public String generate() { 20 | int firstNumber = Utils.randomIntWithMinMax(100,1001); 21 | int secondNumber = Utils.randomIntWithMinMax(10,101); 22 | int thirdNumber = Utils.randomIntWithMinMax(1000,10001); 23 | return String.format("%d-%d-%d", firstNumber, secondNumber, thirdNumber); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/SentencesGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Sentences; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.SentencesProvider; 6 | 7 | /** 8 | * Created by gagandeep on 29/7/16. 9 | */ 10 | 11 | public class SentencesGenerator extends GenerationRule { 12 | 13 | private SentencesProvider mProvider; 14 | private int atleast; 15 | private int noMoreThan; 16 | 17 | public SentencesGenerator(Sentences annotation,ProviderFactory providerFactory) { 18 | super(annotation, providerFactory); 19 | mProvider = providerFactory().provider(SentencesProvider.class, String[].class); 20 | atleast = annotation.atleast(); 21 | noMoreThan = annotation.noMoreThan(); 22 | 23 | if (noMoreThan < atleast) { 24 | noMoreThan = atleast; 25 | } 26 | } 27 | 28 | @Override 29 | public String generate() { 30 | String[] sentencesData = mProvider.provide(); 31 | int diff = noMoreThan - atleast + 1; 32 | int random = getRandom().nextInt(diff) + atleast; 33 | StringBuilder sentences = new StringBuilder(); 34 | for (int i = 0; i < random; i++) { 35 | int randomIndex = getRandom().nextInt(sentencesData.length); 36 | sentences.append(sentencesData[randomIndex]); 37 | if (i < random - 1) { 38 | sentences.append(" "); 39 | } 40 | } 41 | return sentences.toString(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/SequenceGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Sequence; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | 6 | /** 7 | * Created by gagandeep on 29/7/16. 8 | */ 9 | 10 | public class SequenceGenerator extends GenerationRule { 11 | 12 | int startAt; 13 | int step; 14 | int repeat; 15 | int restartAt; 16 | 17 | int repeatCounter; 18 | int nextSequence; 19 | 20 | public SequenceGenerator(Sequence annotation,ProviderFactory providerFactory) { 21 | super(annotation, providerFactory); 22 | startAt = annotation.startAt(); 23 | step = annotation.step(); 24 | repeat = annotation.repeat(); 25 | restartAt = annotation.restartAt(); 26 | 27 | if (repeat < 1) { 28 | repeat = 1; 29 | } 30 | 31 | if (step < 1) { 32 | step = 1; 33 | } 34 | 35 | repeatCounter = repeat; 36 | nextSequence = startAt; 37 | } 38 | 39 | @Override 40 | public Integer generate() { 41 | if (nextSequence > restartAt) { 42 | nextSequence = startAt; 43 | } 44 | 45 | if (repeatCounter > 1) { 46 | repeatCounter--; 47 | return nextSequence; 48 | } 49 | 50 | repeatCounter = repeat; 51 | int lastSequence = nextSequence; 52 | nextSequence = nextSequence + step; 53 | return lastSequence; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/ShirtSizeGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.ShirtSize; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.ShirtSizeProvider; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class ShirtSizeGenerator extends GenerationRule { 12 | private ShirtSizeProvider mProvider; 13 | 14 | public ShirtSizeGenerator(ShirtSize annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(ShirtSizeProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] sizes = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(sizes.length); 23 | return sizes[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/StateGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.State; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.StateProvider; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class StateGenerator extends GenerationRule { 12 | private StateProvider mProvider; 13 | 14 | public StateGenerator(State annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(StateProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] states = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(states.length); 23 | return states[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/StreetAddressGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.StreetAddress; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.StreetAddressProvider; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class StreetAddressGenerator extends GenerationRule { 12 | private StreetAddressProvider mProvider; 13 | 14 | public StreetAddressGenerator(StreetAddress annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(StreetAddressProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] streetAddresses = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(streetAddresses.length); 23 | return streetAddresses[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/SuffixGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Suffix; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.SuffixProvider; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class SuffixGenerator extends GenerationRule { 12 | private SuffixProvider mProvider; 13 | 14 | public SuffixGenerator(Suffix annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(SuffixProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] suffixes = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(suffixes.length); 23 | return suffixes[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/TimeZoneGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.TimeZone; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.TimeZoneProvider; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class TimeZoneGenerator extends GenerationRule { 12 | private TimeZoneProvider mProvider; 13 | 14 | public TimeZoneGenerator(TimeZone annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(TimeZoneProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] timeZones = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(timeZones.length); 23 | return timeZones[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/TitleGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Title; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.TitleProvider; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class TitleGenerator extends GenerationRule { 12 | private TitleProvider mProvider; 13 | 14 | public TitleGenerator(Title annotation,ProviderFactory providerFactory) { 15 | super(annotation, providerFactory); 16 | mProvider = providerFactory().provider(TitleProvider.class, String[].class); 17 | } 18 | 19 | @Override 20 | public String generate() { 21 | String[] titles = mProvider.provide(); 22 | int randomIndex = getRandom().nextInt(titles.length); 23 | return titles[randomIndex]; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/TopLevelDomainGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.TopLevelDomain; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.TopLevelDomainProvider; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class TopLevelDomainGenerator extends GenerationRule { 12 | 13 | private TopLevelDomainProvider mProvider; 14 | 15 | public TopLevelDomainGenerator(TopLevelDomain annotation,ProviderFactory providerFactory) { 16 | super(annotation, providerFactory); 17 | mProvider = providerFactory().provider(TopLevelDomainProvider.class, String[].class); 18 | } 19 | 20 | @Override 21 | public String generate() { 22 | String[] domains = mProvider.provide(); 23 | int randomIndex = getRandom().nextInt(domains.length); 24 | return domains[randomIndex]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/URLGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.Utils; 4 | import com.infoedge.jrandomizer.annotations.URL; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | import com.infoedge.jrandomizer.providers.URLProvider; 7 | import com.infoedge.jrandomizer.providers.URLProvider.URLData; 8 | 9 | /** 10 | * Created by gagandeep on 31/7/16. 11 | */ 12 | 13 | public class URLGenerator extends GenerationRule { 14 | 15 | private URLProvider mProvider; 16 | 17 | public URLGenerator(URL annotation,ProviderFactory providerFactory) { 18 | super(annotation, providerFactory); 19 | mProvider = providerFactory().provider(URLProvider.class, URLData.class); 20 | } 21 | 22 | @Override 23 | public String generate() { 24 | URLData urlData = mProvider.provide(); 25 | StringBuilder urlBuilder = new StringBuilder(); 26 | urlBuilder.append(getAnnotation().protocol() ? urlData.protocols[getRandom().nextInt(urlData.protocols.length)] + "://" : ""); 27 | urlBuilder.append(getAnnotation().host() ? urlData.hosts[getRandom().nextInt(urlData.hosts.length)] : ""); 28 | urlBuilder.append(getAnnotation().host() && getAnnotation().port() ? ":" + Utils.randomIntWithMinMax(8000, 9000) : ""); 29 | urlBuilder.append(getAnnotation().path() ? urlData.paths[getRandom().nextInt(urlData.paths.length)] : ""); 30 | urlBuilder.append(getAnnotation().queryParams() && getAnnotation().maxQueryParams() > 0 ? randomQueryParams(urlData) : ""); 31 | return urlBuilder.toString(); 32 | } 33 | 34 | private String randomQueryParams(URLData urlData) { 35 | int count = Utils.randomIntWithMinMax(0, getAnnotation().maxQueryParams()); 36 | if (count == 0) { 37 | return ""; 38 | } 39 | StringBuilder queryParamsBuilder = new StringBuilder(getAnnotation().maxQueryParams() > 0 ? "?" : ""); 40 | for (int i = 0; i < count; i++) { 41 | int randomIndex = getRandom().nextInt(urlData.queryParams.length); 42 | queryParamsBuilder.append(urlData.queryParams[randomIndex]); 43 | if (i < count - 1) { 44 | queryParamsBuilder.append("&"); 45 | } 46 | } 47 | return queryParamsBuilder.toString(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/UsernameGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Username; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.UsernameProvider; 6 | 7 | /** 8 | * Created by gagandeep on 31/7/16. 9 | */ 10 | 11 | public class UsernameGenerator extends GenerationRule { 12 | 13 | private UsernameProvider mProvider; 14 | 15 | public UsernameGenerator(Username annotation,ProviderFactory providerFactory) { 16 | super(annotation, providerFactory); 17 | mProvider = providerFactory().provider(UsernameProvider.class, String[].class); 18 | } 19 | 20 | @Override 21 | public String generate() { 22 | String[] userNames = mProvider.provide(); 23 | int randomIndex = getRandom().nextInt(userNames.length); 24 | return userNames[randomIndex]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/generators/WordsGenerator.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.generators; 2 | 3 | import com.infoedge.jrandomizer.annotations.Words; 4 | import com.infoedge.jrandomizer.providers.ProviderFactory; 5 | import com.infoedge.jrandomizer.providers.WordsProvider; 6 | 7 | /** 8 | * Created by gagandeep on 30/7/16. 9 | */ 10 | 11 | public class WordsGenerator extends GenerationRule { 12 | 13 | private WordsProvider mProvider; 14 | private int atleast; 15 | private int noMoreThan; 16 | 17 | public WordsGenerator(Words annotation,ProviderFactory providerFactory) { 18 | super(annotation, providerFactory); 19 | mProvider = providerFactory().provider(WordsProvider.class, String[].class); 20 | atleast = annotation.atleast(); 21 | noMoreThan = annotation.noMoreThan(); 22 | 23 | if (noMoreThan < atleast) { 24 | noMoreThan = atleast; 25 | } 26 | } 27 | 28 | @Override 29 | public String generate() { 30 | int random = (int) (atleast + (Math.random() * (noMoreThan - atleast + 1))); 31 | return chooseWords(random); 32 | } 33 | 34 | private String chooseWords(int length) { 35 | String[] wordsData = mProvider.provide(); 36 | int random = 0; 37 | int wordsRemaining = length; 38 | StringBuilder words = new StringBuilder(); 39 | while (wordsRemaining > 0) { 40 | random = getRandom().nextInt(wordsData.length); 41 | String line = wordsData[random]; 42 | String[] lineWords = line.split(" "); 43 | if (wordsRemaining < lineWords.length) { 44 | for (int i = 0; i < wordsRemaining; i++) { 45 | words.append(lineWords[i] + " "); 46 | } 47 | wordsRemaining = 0; 48 | } else { 49 | words.append(line + " "); 50 | wordsRemaining = wordsRemaining - lineWords.length; 51 | } 52 | } 53 | return words.toString().trim(); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/ColorNameProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class ColorNameProvider extends Provider { 8 | 9 | private ColorNameProvider(Class clazz) { 10 | super(clazz); 11 | } 12 | 13 | @Override 14 | public String[] provide() { 15 | if (mLoadedData == null) { 16 | mLoadedData = new String[]{ 17 | "Orange", 18 | "Fuscia", 19 | "Teal", 20 | "Khaki", 21 | "Mauv", 22 | "Green", 23 | "Puce", 24 | "Turquoise", 25 | "Maroon", 26 | "Aquamarine", 27 | "Blue", 28 | "Purple", 29 | "Pink", 30 | "Red", 31 | "Indigo", 32 | "Violet", 33 | "Goldenrod", 34 | "Crimson", 35 | "Yellow" 36 | }; 37 | } 38 | return mLoadedData; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/CreditCardTypeProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class CreditCardTypeProvider extends Provider { 8 | private CreditCardTypeProvider(Class clazz) { 9 | super(clazz); 10 | } 11 | 12 | @Override 13 | public String[] provide() { 14 | if (mLoadedData == null) { 15 | mLoadedData = new String[] { 16 | "bankcard", 17 | "jcb", 18 | "diners-club-international", 19 | "mastercard", 20 | "visa", 21 | "diners-club-us-ca", 22 | "china-unionpay", 23 | "laser", 24 | "maestro", 25 | "visa-electron", 26 | "diners-club-enroute", 27 | "americanexpress", 28 | "diners-club-carte-blanche", 29 | "switch", 30 | "instapayment", 31 | "solo" 32 | }; 33 | } 34 | return mLoadedData; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/CurrencyProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class CurrencyProvider extends Provider { 8 | private CurrencyProvider(Class clazz) { 9 | super(clazz); 10 | } 11 | 12 | @Override 13 | public String[] provide() { 14 | if (mLoadedData == null) { 15 | mLoadedData = new String[] { 16 | "Peso", 17 | "Pound", 18 | "Yen", 19 | "Zloty", 20 | "Euro", 21 | "Yuan Renminbi", 22 | "Rupiah", 23 | "Real", 24 | "Dollar", 25 | "Sol", 26 | "Ruble", 27 | "Dinar", 28 | "Cedi", 29 | "Hryvnia", 30 | "Lempira", 31 | "Dong", 32 | "Cordoba", 33 | "Lev", 34 | "Marka", 35 | "Tugrik", 36 | "Baht", 37 | "Rial", 38 | "Boliviano", 39 | "Rand", 40 | "Naira", 41 | "Krona", 42 | "Won", 43 | "Manat", 44 | "Birr", 45 | "Ringgit", 46 | "Forint", 47 | "Shilling", 48 | "Kuna", 49 | "Som", 50 | "Franc", 51 | "Shekel", 52 | "Dirham", 53 | "Denar", 54 | "Tenge", 55 | "Koruna", 56 | "Leu", 57 | "Taka", 58 | "Dram", 59 | "Kyat", 60 | "Afghani", 61 | "Bolivar", 62 | "Balboa", 63 | "Rupee", 64 | "Guarani", 65 | "Krone", 66 | "Lek", 67 | "Rufiyaa", 68 | "Lari", 69 | "Litas", 70 | "Pula", 71 | "Ariary", 72 | "Riels", 73 | "Somoni", 74 | "Dalasi" 75 | }; 76 | } 77 | return mLoadedData; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/EncryptProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class EncryptProvider extends Provider { 8 | 9 | private EncryptProvider(Class clazz) { 10 | super(clazz); 11 | } 12 | 13 | @Override 14 | public String[] provide() { 15 | if (mLoadedData == null) { 16 | mLoadedData = new String[]{ 17 | "EnCt2a9720dffdea29776d93ef8de7521f34f786ce6a9a9720dffdea29776d93ef8dea6CFudXXGQOyMCLhmleOo", 18 | "92XKnpQbjwbYSS1RGKPWPFfbjx2TJHvxhSiTST6o/vYRbXxvGkK1TKj0tsRS0u2HmI7Y", 19 | "JcEn+tsgnffVWCR5X5gf5NAyjZRXbLuPYqOE/t+zV9yuxaljBAp5KwEIXd7i8VdAO2IxdGviYz6bhWkxSz22G7llM3X1lYk", 20 | "TtTTsv8/Nrj63bNiJLvCymtNRtJP7GyDnMLPG9AagKLgJkEL29rnQBepGpDYCvSJXWNEVJpvjWi/qIQ5v2UJ3Wu3C3ug", 21 | "FD8hTr1LU44wZibBTWelVbS2bfvxk6wrwbIESdZsM1ID3WtCT7wVTiecscatiHnZhBN4BqKB5oMxg7CXqeHMRXOKBgneu49BPn/", 22 | "kqSFP+Av00DKPTdeiNeNSVXQxDN+evPvQ7utu2D8v2+JY5EmMWgUeWN8LgGZMK7oQWrgzBiiwCvREr9F1b4CHk", 23 | "vKpB2USc5HatC8AUE/TcB0+QOru898A/HT0EK9fYy2Sk8/HnZX+quyxBypHIIi+GVG1Qu1Af1RLgdxqP2PPLNWiNLycsyzFStg", 24 | "5KDkwtwyuYTJNRTA+JW3K23LofhqUtSwz6uzxcYSM9cWkX2LkLYRcjTx8RRv8nt2+gexieeI4xN0gcC7F1WOVMg9b5/8WGvseUHFMNm2HpHJwukEYFYz", 25 | "Bjc4rxnUdj8JfZDM6NWfbTCmPvIP9314SXKW1SkvAuh37k+RrddrwupLr5FFOxmND7s/rzPs2UMQs6fu5B3Mah+K3abEf3U9qlHTxATvhvB", 26 | "QP4ip+dDw3z12xBZtDPFfJlP/kzE2bHj9zGJZrHaLS9NRibuFUiXIuJLHDkofHsw0zMQF5KS9mnX9ZNZNJEbkGFCUcxPjHKGemBEtf6Dgx8o6EzYQuVcqF/hoVe6DDsxVhILe2Ph1eMFA", 27 | "Kj9u7QNsTqpdhI4FpfmudKwuSId2EIa/Lr7OIAUSPikBoQ0nKrxxQJPwFBskJ5mn0n2V2cprW5Y/Szm/LftL3c4oUfTDF8goNzlQhCQZHukn00I6u69QVEDCRD4", 28 | "2sG7blkbnkAbPS3T2tWHPT6vSHJ9Et1BiRPCCUrLmNPshcaX6wrosKPrW4hwkFdSiOAtgyQyd8ZEKs8y9RrXuXqhIoxxK1B4pOVkkyGC", 29 | "nX/A3zyAohSZj5/UcAM13D5VuQH2ENytSqYwDbJG6sDsVyO08snq98EhwaDdW6562oGdj18WgPq83CVK", 30 | "cacN1yfKRSDKzvaV4BMwWEu8HPpOYE22BWabYfMThecmz2q78eh5Au+uRfga+IZ4FLd4FmDHkpCjJMXGgmKFTKucWGD", 31 | "ckPxwT7G7FmSiX4uPDQlTv7ywLF8sAXheFI3ldIVJWEEnSkXzvKOMKZLEo", 32 | "z93NKa56qhzut+FJROJOFOPSpEEMxMDKiaCs+CUPBe2QXE+hxyHeJgFndrG5qUlLMNZuQBOBd4Pr+Tvj3gsBQP94E", 33 | "NOnlnslQeZeNG/R7l5+eMYW3/CbrB36gt7/0jjXD9/s=IwEmS" 34 | }; 35 | } 36 | return mLoadedData; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/FrequencyProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class FrequencyProvider extends Provider { 8 | 9 | private FrequencyProvider(Class clazz) { 10 | super(clazz); 11 | } 12 | 13 | @Override 14 | public String[] provide() { 15 | if (mLoadedData == null) { 16 | mLoadedData = new String[]{ 17 | "Often", 18 | "Yearly", 19 | "Once", 20 | "Weekly", 21 | "Monthly", 22 | "Seldom", 23 | "Daily", 24 | "Never", 25 | }; 26 | } 27 | return mLoadedData; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/FromJsonProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | import com.google.gson.Gson; 4 | 5 | /** 6 | * Created by gagandeep on 30/7/16. 7 | */ 8 | 9 | public abstract class FromJsonProvider extends Provider { 10 | 11 | public FromJsonProvider(Class clazz) { 12 | super(clazz); 13 | } 14 | 15 | protected abstract String json(); 16 | 17 | public DATA_TYPE provide() { 18 | if (mLoadedData == null) { 19 | mLoadedData = new Gson().fromJson(json(), getDataClass()); 20 | } 21 | return mLoadedData; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/Provider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | import java.util.Random; 4 | 5 | /** 6 | * Created by gagandeep on 30/7/16. 7 | */ 8 | 9 | public abstract class Provider { 10 | 11 | private Class clazz; 12 | protected DATA_TYPE mLoadedData; 13 | 14 | public Provider(Class clazz) { 15 | this.clazz = clazz; 16 | } 17 | 18 | @Override 19 | public int hashCode() { 20 | return this.getClass().getSimpleName().hashCode(); 21 | } 22 | 23 | @Override 24 | public boolean equals(Object obj) { 25 | if (this == obj) { 26 | return true; 27 | } 28 | if (this.getClass().getSimpleName().equals(obj.getClass().getSimpleName())) { 29 | return true; 30 | } 31 | return false; 32 | } 33 | 34 | public abstract DATA_TYPE provide(); 35 | 36 | Class getDataClass() { 37 | return clazz; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/ProviderFactory.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | import com.infoedge.jrandomizer.exceptions.RandomDataGeneratorException; 4 | 5 | import java.lang.reflect.Constructor; 6 | import java.lang.reflect.InvocationTargetException; 7 | import java.lang.reflect.Modifier; 8 | import java.util.Set; 9 | import java.util.WeakHashMap; 10 | 11 | /** 12 | * Created by gagandeep on 30/7/16. 13 | */ 14 | 15 | public class ProviderFactory { 16 | 17 | private WeakHashMap, Object> mProvidersMap = new WeakHashMap<>(); 18 | 19 | private static ProviderFactory mInstance; 20 | private ProviderFactory() { 21 | } 22 | 23 | public static ProviderFactory getInstance() { 24 | if (mInstance == null) { 25 | mInstance = new ProviderFactory(); 26 | } 27 | return mInstance; 28 | } 29 | 30 | public T provider(Class clazz,Class dataClass) { 31 | T provider = (T) createInstance(clazz, dataClass); 32 | if (!mProvidersMap.containsKey(provider)) { 33 | mProvidersMap.put(provider, new Object()); 34 | } else { 35 | Set> providers = mProvidersMap.keySet(); 36 | for (Provider providerKey : providers) { 37 | if (providerKey.equals(provider)) { 38 | provider = null; 39 | return (T) providerKey; 40 | } 41 | } 42 | } 43 | return provider; 44 | } 45 | 46 | private Provider createInstance(Class clazz,Class dataClass) { 47 | Provider target = null; 48 | try { 49 | Constructor constructor = clazz.getDeclaredConstructor(Class.class); 50 | if (Modifier.isPublic(constructor.getModifiers())) { 51 | String message = String.format("All Constructors of class %s should be private", clazz.getSimpleName()); 52 | throw new RandomDataGeneratorException(message); 53 | } 54 | constructor.setAccessible(true); 55 | target = (Provider) constructor.newInstance(dataClass); 56 | } catch (NoSuchMethodException e) { 57 | throw new RuntimeException(""); 58 | } catch (IllegalAccessException e) { 59 | e.printStackTrace(); 60 | } catch (InstantiationException e) { 61 | e.printStackTrace(); 62 | } catch (InvocationTargetException e) { 63 | e.printStackTrace(); 64 | } 65 | return target; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/SentencesProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class SentencesProvider extends Provider { 8 | 9 | private SentencesProvider(Class clazz) { 10 | super(clazz); 11 | } 12 | 13 | @Override 14 | public String[] provide() { 15 | if (mLoadedData == null) { 16 | mLoadedData = new String[]{ 17 | 18 | }; 19 | } 20 | return mLoadedData; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/ShirtSizeProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class ShirtSizeProvider extends Provider { 8 | private ShirtSizeProvider(Class clazz) { 9 | super(clazz); 10 | } 11 | 12 | @Override 13 | public String[] provide() { 14 | if (mLoadedData == null) { 15 | mLoadedData = new String[] { 16 | "XS", 17 | "XL", 18 | "M", 19 | "2XL", 20 | "3XL", 21 | "L", 22 | "S", 23 | }; 24 | } 25 | return mLoadedData; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/StateProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class StateProvider extends Provider { 8 | private StateProvider(Class clazz) { 9 | super(clazz); 10 | } 11 | 12 | @Override 13 | public String[] provide() { 14 | if (mLoadedData == null) { 15 | mLoadedData = new String[] { 16 | "California", 17 | "Florida", 18 | "Texas", 19 | "Virginia", 20 | "Ohio", 21 | "Nevada", 22 | "Wisconsin", 23 | "Arizona", 24 | "Kansas", 25 | "Mississippi", 26 | "New Mexico", 27 | "Georgia", 28 | "Missouri", 29 | "District of Columbia", 30 | "Oklahoma", 31 | "Pennsylvania", 32 | "South Carolina", 33 | "Alabama", 34 | "Colorado", 35 | "Massachusetts", 36 | "Montana", 37 | "Illinois", 38 | "North Carolina", 39 | "Louisiana", 40 | "Oregon", 41 | "Alaska", 42 | "South Dakota", 43 | "Idaho", 44 | "Nebraska", 45 | "Michigan", 46 | "Indiana", 47 | "New York", 48 | "Connecticut", 49 | "Utah", 50 | "Maryland", 51 | "Tennessee", 52 | "New Jersey", 53 | "Minnesota", 54 | "Arkansas", 55 | "Iowa", 56 | "Delaware", 57 | "North Dakota", 58 | "Washington", 59 | "Hawaii", 60 | "Kentucky", 61 | "West Virginia", 62 | "New Hampshire", 63 | "Rhode Island", 64 | "Maine", 65 | "Wyoming" 66 | }; 67 | } 68 | return mLoadedData; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/SuffixProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class SuffixProvider extends Provider { 8 | private SuffixProvider(Class clazz) { 9 | super(clazz); 10 | } 11 | 12 | @Override 13 | public String[] provide() { 14 | if (mLoadedData == null) { 15 | mLoadedData = new String[]{ 16 | "Jr", 17 | "II", 18 | "IV", 19 | "III", 20 | "Sr" 21 | }; 22 | } 23 | return mLoadedData; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/TitleProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class TitleProvider extends Provider { 8 | private TitleProvider(Class clazz) { 9 | super(clazz); 10 | } 11 | 12 | @Override 13 | public String[] provide() { 14 | if (mLoadedData == null) { 15 | mLoadedData = new String[]{ 16 | "Mrs", 17 | "Ms", 18 | "Dr", 19 | "Mr", 20 | "Rev", 21 | "Honorable" 22 | }; 23 | } 24 | return mLoadedData; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /jrandomizer/src/main/java/com/infoedge/jrandomizer/providers/TopLevelDomainProvider.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.providers; 2 | 3 | /** 4 | * Created by gagandeep on 31/7/16. 5 | */ 6 | 7 | public class TopLevelDomainProvider extends Provider { 8 | 9 | private TopLevelDomainProvider(Class clazz) { 10 | super(clazz); 11 | } 12 | 13 | @Override 14 | public String[] provide() { 15 | if (mLoadedData == null) { 16 | mLoadedData = new String[] {"aero", 17 | "asia", 18 | "biz", 19 | "cat", 20 | "com", 21 | "coop", 22 | "edu", 23 | "gov", 24 | "info", 25 | "int", 26 | "jobs", 27 | "mil", 28 | "mobi", 29 | "museum", 30 | "name", 31 | "net", 32 | "org", 33 | "pro", 34 | "tel", 35 | "travel", 36 | "xxx"}; 37 | } 38 | return mLoadedData; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /jrandomizer/src/test/java/com/infoedge/jrandomizer/test/AppBundleGeneratorTest.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.test; 2 | 3 | import com.infoedge.jrandomizer.annotations.AppBundleID; 4 | import com.infoedge.jrandomizer.generators.AppBundleIdGenerator; 5 | import com.infoedge.jrandomizer.providers.AppBundleIdProvider; 6 | import com.infoedge.jrandomizer.providers.FromJsonProvider; 7 | import com.infoedge.jrandomizer.providers.Provider; 8 | import com.infoedge.jrandomizer.providers.ProviderFactory; 9 | 10 | import org.hamcrest.CoreMatchers; 11 | import org.junit.Assert; 12 | import org.junit.Before; 13 | import org.junit.Test; 14 | import org.mockito.Mock; 15 | import org.mockito.Mockito; 16 | import org.mockito.MockitoAnnotations; 17 | 18 | import java.util.Random; 19 | 20 | import static org.junit.Assert.assertThat; 21 | import static org.mockito.Mockito.*; 22 | 23 | /** 24 | * Created by gagandeep on 1/8/16. 25 | */ 26 | 27 | public class AppBundleGeneratorTest { 28 | 29 | @Mock 30 | private AppBundleID mAppBundleID; 31 | 32 | @Mock 33 | ProviderFactory mProviderFactory; 34 | 35 | @Mock 36 | AppBundleIdProvider mProvider; 37 | 38 | @Mock 39 | AppBundleIdProvider.AppBundleIdData mBundleData; 40 | 41 | private AppBundleIdGenerator mGenerator; 42 | 43 | @Before 44 | public void setUpTest() { 45 | MockitoAnnotations.initMocks(this); 46 | when(mProviderFactory.provider(AppBundleIdProvider.class, AppBundleIdProvider.AppBundleIdData.class)).thenReturn(mProvider); 47 | mGenerator = new AppBundleIdGenerator(mAppBundleID,mProviderFactory); 48 | when(mProvider.provide()).thenReturn(mBundleData); 49 | } 50 | 51 | @Test 52 | public void test_verify_interaction() { 53 | verify(mProviderFactory).provider(AppBundleIdProvider.class, AppBundleIdProvider.AppBundleIdData.class); 54 | mBundleData.tlds = new String[]{"com"}; 55 | mBundleData.companyNames = new String[]{"google"}; 56 | mBundleData.productNames = new String[]{"abc"}; 57 | mGenerator.generate(); 58 | verify(mProvider).provide(); 59 | } 60 | 61 | @Test 62 | public void test_generates_valid_bundle_id() { 63 | mBundleData.tlds = new String[]{"com"}; 64 | mBundleData.companyNames = new String[]{"google"}; 65 | mBundleData.productNames = new String[]{"abc"}; 66 | String actual = mGenerator.generate(); 67 | String expected = "com.google.abc"; 68 | assertThat(expected, CoreMatchers.equalTo(actual)); 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /jrandomizer/src/test/java/com/infoedge/jrandomizer/test/AppNameGeneratorTest.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.test; 2 | 3 | import com.infoedge.jrandomizer.annotations.AppName; 4 | import com.infoedge.jrandomizer.generators.AppBundleIdGenerator; 5 | import com.infoedge.jrandomizer.generators.AppNameGenerator; 6 | import com.infoedge.jrandomizer.providers.AppBundleIdProvider; 7 | import com.infoedge.jrandomizer.providers.AppNameProvider; 8 | import com.infoedge.jrandomizer.providers.ProviderFactory; 9 | 10 | import org.hamcrest.Matchers; 11 | import org.junit.Before; 12 | import org.junit.Test; 13 | import org.mockito.Mock; 14 | import org.mockito.MockitoAnnotations; 15 | 16 | import java.util.Arrays; 17 | 18 | import static org.junit.Assert.assertThat; 19 | import static org.junit.Assert.assertTrue; 20 | import static org.mockito.Matchers.contains; 21 | import static org.mockito.Mockito.verify; 22 | import static org.mockito.Mockito.when; 23 | 24 | /** 25 | * Created by gagandeep on 1/8/16. 26 | */ 27 | 28 | public class AppNameGeneratorTest { 29 | 30 | @Mock 31 | private AppName mAnnotation; 32 | 33 | @Mock 34 | ProviderFactory mProviderFactory; 35 | 36 | @Mock 37 | AppNameProvider mProvider; 38 | 39 | private AppNameGenerator mGenerator; 40 | 41 | private final String[] APPNAMES = new String[]{ 42 | "TrueCaller", 43 | "Gmail", 44 | "Pocket", 45 | "Phone" 46 | }; 47 | @Before 48 | public void setUpTest() { 49 | MockitoAnnotations.initMocks(this); 50 | when(mProviderFactory.provider(AppNameProvider.class, String[].class)).thenReturn(mProvider); 51 | mGenerator = new AppNameGenerator(mAnnotation, mProviderFactory); 52 | when(mProvider.provide()).thenReturn(APPNAMES); 53 | } 54 | 55 | @Test 56 | public void test_interaction() { 57 | verify(mProviderFactory).provider(AppNameProvider.class, String[].class); 58 | mGenerator.generate(); 59 | verify(mProvider).provide(); 60 | } 61 | 62 | @Test 63 | public void test_valid_app_name_generated() { 64 | String appName = mGenerator.generate(); 65 | assertThat(appName.length(), Matchers.greaterThan(0)); 66 | } 67 | 68 | @Test 69 | public void test_generated_app_name_in_defined_dataset() { 70 | String appName = mGenerator.generate(); 71 | assertTrue(Arrays.asList(APPNAMES).contains(appName)); 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /jrandomizer/src/test/java/com/infoedge/jrandomizer/test/AppVersionGeneratorTest.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.test; 2 | 3 | import com.infoedge.jrandomizer.annotations.AppVersion; 4 | import com.infoedge.jrandomizer.generators.AppVersionGenerator; 5 | import com.infoedge.jrandomizer.providers.ProviderFactory; 6 | 7 | import org.junit.Assert; 8 | import org.junit.Before; 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.junit.runners.Parameterized; 12 | import org.mockito.Mock; 13 | import org.mockito.MockitoAnnotations; 14 | 15 | import java.util.Arrays; 16 | import java.util.Collection; 17 | 18 | import static org.junit.Assert.assertNotNull; 19 | import static org.junit.Assert.assertThat; 20 | import static org.junit.Assert.assertTrue; 21 | import static org.mockito.Mockito.*; 22 | import static org.hamcrest.CoreMatchers.*; 23 | import static org.hamcrest.Matchers.*; 24 | 25 | 26 | /** 27 | * Created by gagandeep on 3/8/16. 28 | */ 29 | @RunWith(value = Parameterized.class) 30 | public class AppVersionGeneratorTest { 31 | 32 | @Mock 33 | AppVersion mAnnotation; 34 | 35 | @Mock 36 | ProviderFactory mProviderFactory; 37 | 38 | private AppVersionGenerator mGenerator; 39 | 40 | private int mMin; 41 | private int mMax; 42 | 43 | public AppVersionGeneratorTest(int mMin, int mMax) { 44 | this.mMin = mMin; 45 | this.mMax = mMax; 46 | } 47 | 48 | @Parameterized.Parameters(name = "min = {0} max = {1}") 49 | public static Collection data() { 50 | return Arrays.asList(new Object[][]{ 51 | {0,3}, 52 | {-2,-1}, 53 | {3,7}, 54 | {1,1}, 55 | {1,4}, 56 | {5,1}, 57 | {3,10}, 58 | {1,Integer.MAX_VALUE}, 59 | }); 60 | } 61 | 62 | @Before 63 | public void setUpTest() { 64 | MockitoAnnotations.initMocks(this); 65 | when(mAnnotation.min()).thenReturn(mMin); 66 | when(mAnnotation.max()).thenReturn(mMax); 67 | mGenerator = new AppVersionGenerator(mAnnotation, mProviderFactory); 68 | } 69 | 70 | @Test 71 | public void test_valid_app_version_generated() { 72 | String appVersion = mGenerator.generate(); 73 | assertNotNull(appVersion); 74 | assertThat(appVersion.length(),greaterThan(0)); 75 | } 76 | 77 | @Test 78 | public void test_within_range_app_version_generated() { 79 | String appVersion = mGenerator.generate(); 80 | int firstDotindex = appVersion.indexOf('.'); 81 | if (firstDotindex != -1) { 82 | appVersion = appVersion.substring(0,firstDotindex); 83 | } 84 | int actualResult = Integer.parseInt(appVersion); 85 | System.out.println(actualResult); 86 | if (mAnnotation.max() < mAnnotation.min()) { 87 | assertTrue(actualResult >= mAnnotation.max() && actualResult <= mAnnotation.min()); 88 | } else { 89 | assertTrue(actualResult >= mAnnotation.min() && actualResult <= mAnnotation.max()); 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /jrandomizer/src/test/java/com/infoedge/jrandomizer/test/CityGeneratorTest.java: -------------------------------------------------------------------------------- 1 | package com.infoedge.jrandomizer.test; 2 | 3 | import com.infoedge.jrandomizer.annotations.City; 4 | import com.infoedge.jrandomizer.generators.CityGenerator; 5 | import com.infoedge.jrandomizer.providers.CityProvider; 6 | import com.infoedge.jrandomizer.providers.ProviderFactory; 7 | 8 | import org.hamcrest.Matchers; 9 | import org.junit.Before; 10 | import org.junit.Test; 11 | import org.junit.runner.RunWith; 12 | import org.junit.runners.Parameterized; 13 | import org.mockito.Mock; 14 | import org.mockito.MockitoAnnotations; 15 | 16 | import java.util.Arrays; 17 | import java.util.List; 18 | 19 | import static org.junit.Assert.assertFalse; 20 | import static org.junit.Assert.assertNotNull; 21 | import static org.junit.Assert.assertThat; 22 | import static org.junit.Assert.assertTrue; 23 | import static org.mockito.Mockito.*; 24 | 25 | /** 26 | * Created by gagandeep on 3/8/16. 27 | */ 28 | 29 | @RunWith(Parameterized.class) 30 | public class CityGeneratorTest { 31 | 32 | @Mock 33 | City mAnnotation; 34 | 35 | @Mock 36 | ProviderFactory mProviderFactory; 37 | 38 | @Mock 39 | CityProvider mProvider; 40 | 41 | CityGenerator mGenerator; 42 | 43 | @Parameterized.Parameters 44 | public static List data() { 45 | return Arrays.asList(new Object[10][0]); 46 | } 47 | 48 | private final String[] CITY_DATA = new String[]{ 49 | "Angasmarca", 50 | "President Roxas", 51 | "Monsanto", 52 | "Nikolayevsk" 53 | }; 54 | 55 | @Before 56 | public void setUpTest() { 57 | MockitoAnnotations.initMocks(this); 58 | when(mProviderFactory.provider(CityProvider.class, String[].class)).thenReturn(mProvider); 59 | mGenerator = new CityGenerator(mAnnotation, mProviderFactory); 60 | when(mProvider.provide()).thenReturn(CITY_DATA); 61 | } 62 | 63 | @Test 64 | public void test_verify_interaction() { 65 | mGenerator.generate(); 66 | verify(mProvider).provide(); 67 | } 68 | 69 | @Test 70 | public void test_generates_valid_city() { 71 | String city = mGenerator.generate(); 72 | assertNotNull(city); 73 | assertTrue(city.length() != 0); 74 | } 75 | 76 | 77 | } 78 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':jrandomizer', ':arandomizer', ':example' 2 | --------------------------------------------------------------------------------