package engine;
import org.apache.commons.lang3.StringUtils;
import com.github.ddth.id.RedisIdGenerator;
import com.github.ddth.id.SerialIdGenerator;
/**
* Redis-implementation of {@link IIdEngine}.
*
* <p>
* IDs generated by this engine are:
* <ul>
* <li>Persistent: (*) backed by Redis.</li>
* </ul>
* <p/>
*
* @author ThanhNB
* @since 0.1.0
*/
public class RedisIdEngine extends BaseSerialIdEngine {
private final static String DEFAULT_PREFIX = "id-server-";
private String prefix = DEFAULT_PREFIX;
protected String getPrefix() {
return prefix;
}
public RedisIdEngine setPrefix(String prefix) {
this.prefix = prefix;
return this;
}
/**
* {@inheritDoc}
*/
@Override
protected RedisIdGenerator getIdGenerator() {
return (RedisIdGenerator) super.getIdGenerator();
}
/**
* {@inheritDoc}
*/
@Override
public RedisIdEngine setIdGenerator(SerialIdGenerator idGenerator) {
if (!(idGenerator instanceof RedisIdGenerator)) {
final String errorMsg = "Argument must be of type [" + RedisIdGenerator.class.getName()
+ "]!";
throw new IllegalArgumentException(errorMsg);
}
super.setIdGenerator(idGenerator);
return this;
}
/**
* {@inheritDoc}
*/
@Override
public RedisIdEngine init() {
super.init();
if (StringUtils.isBlank(prefix)) {
prefix = DEFAULT_PREFIX;
}
return this;
}
/**
* {@inheritDoc}
*/
@Override
protected String normalizeNamespace(final String namespace) {
return prefix + namespace;
}
}