package com.github.javafaker;
import static org.apache.commons.lang.StringUtils.capitalize;
import static org.apache.commons.lang.StringUtils.join;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import com.github.javafaker.service.FakeValuesService;
import com.github.javafaker.service.RandomService;
public class Lorem {
private final FakeValuesService fakeValuesService;
private final RandomService randomService;
public Lorem(final FakeValuesService fakeValuesService, final RandomService randomService) {
this.fakeValuesService = fakeValuesService;
this.randomService = randomService;
}
@SuppressWarnings({ "unchecked" })
public String[] words(final int num) {
List<String> words = (List<String>) fakeValuesService.fetchObject("lorem.words");
String[] returnArr = new String[num];
for (int i = 0; i < num; i++) {
returnArr[i] = words.get(randomService.nextInt(words.size()));
}
return returnArr;
}
public String[] words() {
return words(3);
}
public String sentence(final int wordCount) {
return capitalize(join(words(wordCount + randomService.nextInt(6)), " ") + ".");
}
public String sentence() {
return sentence(3);
}
public String[] sentences(final int sentenceCount) {
String[] sentences = new String[sentenceCount];
for (int i = 0; i < sentenceCount; i++) {
sentences[i] = sentence();
}
return sentences;
}
public String paragraph(final int sentenceCount) {
return join(sentences(sentenceCount + randomService.nextInt(3)), " ");
}
public String paragraph() {
return paragraph(3);
}
public List<String> paragraphs(final int paragraphCount) {
List<String> paragraphs = new ArrayList<String>(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(final int numberOfLetters) {
StringBuilder builder = new StringBuilder();
while (builder.length() < numberOfLetters) {
builder.append(sentence());
}
return StringUtils.substring(builder.toString(), 0, numberOfLetters);
}
}