/* * Copyright (c) 2013 Codearte */ package io.codearte.jfairy.producer.text; import io.codearte.jfairy.producer.BaseProducer; import io.codearte.jfairy.producer.util.TextUtils; import javax.inject.Inject; import java.util.ArrayList; import java.util.List; import static org.apache.commons.lang3.StringUtils.left; public class TextProducer { private static final int DEFAULT_WORD_COUNT = 3; private static final int DEFAULT_WORD_COUNT_IN_SENTENCE = 3; private static final int DEFAULT_SENTENCE_COUNT = 3; private static final int SENTENCE_COUNT_PRECISION_MIN = 1; private static final int SENTENCE_COUNT_PRECISION_MAX = 3; private final TextProducerInternal textProducerInternal; private final BaseProducer baseProducer; private int limit = 0; @Inject public TextProducer(TextProducerInternal textProducerInternal, BaseProducer baseProducer) { this.textProducerInternal = textProducerInternal; this.baseProducer = baseProducer; } public TextProducer limitedTo(int limit) { this.limit = limit; return this; } public String result(String result) { if (limit > 0) { return left(result, limit); } else { return result; } } public String loremIpsum() { return result(textProducerInternal.loremIpsum()); } public String text() { return result(textProducerInternal.text()); } public String word() { return result(word(DEFAULT_WORD_COUNT)); } public String word(int count) { return result(textProducerInternal.cleanWords(count)); } public String latinWord() { return result(latinWord(DEFAULT_WORD_COUNT)); } public String latinWord(int count) { return result(textProducerInternal.cleanLatinWords(count)); } public String latinSentence() { return result(latinSentence(DEFAULT_SENTENCE_COUNT)); } public String latinSentence(int wordCount) { return result(textProducerInternal.latinSentence(wordCount)); } public String sentence() { return result(sentence(DEFAULT_WORD_COUNT_IN_SENTENCE)); } public String sentence(int wordCount) { return result(textProducerInternal.sentence(wordCount)); } private List<String> sentences(int sentenceCount) { List<String> sentences = new ArrayList<String>(sentenceCount); for (int i = 0; i < sentenceCount; i++) { sentences.add(sentence()); } return sentences; } public String paragraph() { return result(paragraph(DEFAULT_SENTENCE_COUNT)); } public String paragraph(int sentenceCount) { return result(TextUtils.joinWithSpace(sentences(sentenceCount + baseProducer.randomBetween(SENTENCE_COUNT_PRECISION_MIN, SENTENCE_COUNT_PRECISION_MAX)))); } /** * Generates random string with desired length * * @param charsCount string length * @return random string */ public String randomString(int charsCount) { return textProducerInternal.randomString(charsCount); } }