package org.radargun.stages.cache.generators;
import org.radargun.config.DefinitionElement;
import org.radargun.config.Property;
/**
* @author Mircea Markus <Mircea.Markus@jboss.com>
*/
@DefinitionElement(name = "string", doc = "Generates strings with configurable format.")
public class StringKeyGenerator implements KeyGenerator {
private static final char[] DIGITS = {
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
@Property(doc = "Formatting string for the keys. Default is 'key_%016X'.")
private String format; // use "key_%016X" but without the formatter
/* We generate the key indices as zero-padded hex numbers to keep key size with increasing keyIndex */
@Override
public Object generateKey(long keyIndex) {
if (format != null) {
return String.format(format, keyIndex);
} else {
StringBuilder sb = new StringBuilder(20).append("key_");
for (int i = 60; i >= 0; i -= 4) {
sb.append(DIGITS[(int) ((keyIndex >> i) & 15)]);
}
return sb.toString();
}
}
}