package org.radargun.stages.cache.generators;
import java.util.Random;
import org.radargun.config.DefinitionElement;
/**
* Surrounds the word with nonsense. Use for wildcard queries.
*
* @author Radim Vansa <rvansa@redhat.com>
*/
@DefinitionElement(name = "word-in-haystack", doc = "Generates text-objects with string with single randomly picked word surrounded by another characters.")
public class WordInHaystackGenerator extends DictionaryTextObjectGenerator {
private static final char[] ALPHABET = "abcdefghijklmnopqrstuvw 1234567890".toCharArray();
@Override
public Object generateValue(Object key, int size, Random random) {
String word = dictionary[random.nextInt(dictionary.length)];
StringBuilder sb = new StringBuilder(size);
if (word.length() < size) {
int position = random.nextInt(size - word.length());
for (int i = position; i > 0; --i) sb.append(ALPHABET[random.nextInt(ALPHABET.length)]);
}
if (word.length() <= size) {
sb.append(word);
}
while (sb.length() < size) sb.append(ALPHABET[random.nextInt(ALPHABET.length)]);
return newInstance(sb.toString());
}
}