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; } }