com.github.javafaker.Lorem Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of javafaker Show documentation
Show all versions of javafaker Show documentation
This library is a port of Ruby's stympy/faker gem (as well as Perl's Data::Faker library) that generates fake data.
It's useful when you're developing a new project and need some pretty data for showcase.
package com.github.javafaker;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import static org.apache.commons.lang3.StringUtils.capitalize;
import static org.apache.commons.lang3.StringUtils.join;
public class Lorem {
private final Faker faker;
protected Lorem(Faker faker) {
this.faker = faker;
}
public char character() {
return character(false);
}
public char character(boolean includeUppercase) {
return characters(1).charAt(0);
}
public String characters() {
return characters(255, false);
}
public String characters(boolean includeUppercase) {
return characters(255, false);
}
public String characters(int minimumLength, int maximumLength) {
return characters(faker.random().nextInt(maximumLength - minimumLength) + minimumLength, false);
}
public String characters(int minimumLength, int maximumLength, boolean includeUppercase) {
return characters(faker.random().nextInt(maximumLength - minimumLength) + minimumLength, includeUppercase);
}
public String characters(int fixedNumberOfCharacters) {
return characters(fixedNumberOfCharacters, false);
}
public String characters(int fixedNumberOfCharacters, boolean includeUppercase) {
if (fixedNumberOfCharacters < 1) {
return "";
}
char[] buffer = new char[fixedNumberOfCharacters];
for (int i = 0; i < buffer.length; i++) {
char randomCharacter = characters[faker.random().nextInt(characters.length)];
if (includeUppercase && faker.bool().bool()) {
randomCharacter = Character.toUpperCase(randomCharacter);
}
buffer[i] = randomCharacter;
}
return new String(buffer);
}
public List words(int num) {
List returnList = new ArrayList();
for (int i = 0; i < num; i++) {
returnList.add(word());
}
return returnList;
}
public List words() {
return words(3);
}
public String word() {
return faker.fakeValuesService().resolve("lorem.words", this, faker);
}
/**
* Create a sentence with a random number of words within the range 4..10.
* @return a random sentence
*/
public String sentence() {
return sentence(3);
}
/**
* Create a sentence with a random number of words within the range (wordCount+1)..(wordCount+6).
* @param wordCount
* @return a random sentence
*/
public String sentence(int wordCount) {
return sentence(wordCount, 6);
}
/**
* Create a sentence with a random number of words within the range (wordCount+1)..(wordCount+randomWordsToAdd).
*
* Set {@code randomWordsToAdd} to 0 to generate sentences with a fixed number of words.
* @param wordCount
* @param randomWordsToAdd
* @return a random sentence
*/
public String sentence(int wordCount, int randomWordsToAdd) {
int numberOfWordsToAdd = randomWordsToAdd == 0 ? 0 : faker.random().nextInt(randomWordsToAdd);
return capitalize(join(words(wordCount + numberOfWordsToAdd), " ") + ".");
}
public List sentences(int sentenceCount) {
List sentences = new ArrayList(sentenceCount);
for (int i = 0; i < sentenceCount; i++) {
sentences.add(sentence());
}
return sentences;
}
public String paragraph(int sentenceCount) {
return join(sentences(sentenceCount + faker.random().nextInt(3)), " ");
}
public String paragraph() {
return paragraph(3);
}
public List paragraphs(int paragraphCount) {
List paragraphs = new ArrayList(paragraphCount);
for (int i = 0; i < paragraphCount; i++) {
paragraphs.add(paragraph());
}
return paragraphs;
}
/**
* Create a string with a fixed size. Can be useful for testing
* validator based on length string for example
*
* @param numberOfLetters size of the expected String
* @return a string with a fixed size
*/
public String fixedString(int numberOfLetters) {
StringBuilder builder = new StringBuilder();
while (builder.length() < numberOfLetters) {
builder.append(sentence());
}
return StringUtils.substring(builder.toString(), 0, numberOfLetters);
}
static {
StringBuilder builder = new StringBuilder(36);
for (char number = '0'; number <= '9'; number++) {
builder.append(number);
}
for (char character = 'a'; character <= 'z'; character++) {
builder.append(character);
}
characters = builder.toString().toCharArray();
}
private static final char[] characters;
}