package com.github.javafaker; import com.github.javafaker.service.FakeValuesService; import com.github.javafaker.service.RandomService; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; import java.util.List; import static org.apache.commons.lang.StringUtils.capitalize; import static org.apache.commons.lang.StringUtils.join; public class Lorem { private final FakeValuesService fakeValuesService; private final RandomService randomService; public Lorem(FakeValuesService fakeValuesService, RandomService randomService) { this.fakeValuesService = fakeValuesService; this.randomService = randomService; } @SuppressWarnings({"unchecked", "rawtypes"}) public List words(int num) { List words = (List) fakeValuesService.fetchObject("lorem.words"); List returnList = new ArrayList(); for (int i = 0; i < num; i++) { returnList.add(words.get(randomService.nextInt(words.size()))); } return returnList; } public List words() { return words(3); } public String word() { List words = (List) fakeValuesService.fetchObject("lorem.words"); return words.get(randomService.nextInt(words.size())); } public String sentence(int wordCount) { return capitalize(join(words(wordCount + randomService.nextInt(6)), " ") + "."); } public String sentence() { return sentence(3); } 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 + randomService.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); } }