package engine;
import com.github.ddth.id.SerialIdGenerator;
/**
* Base implementation of {@link IIdEngine}.
*
* <p>
* IDs generated by this engine are:
* <ul>
* <li>Unique: Unique within the namespace.</li>
* <li>Ascending: Next generated ID is larger than previous ones.</li>
* <li>Serial: {@code next-id} = {@code previous-id + 1}!</li>
* </ul>
* <p/>
*
* @author ThanhNB
* @since 0.1.0
*/
public class BaseSerialIdEngine implements IIdEngine {
private SerialIdGenerator idGenerator;
protected SerialIdGenerator getIdGenerator() {
return idGenerator;
}
public BaseSerialIdEngine setIdGenerator(SerialIdGenerator idGenerator) {
this.idGenerator = idGenerator;
return this;
}
/**
* Init method
*
* @return
*/
public BaseSerialIdEngine init() {
return this;
}
/**
* Destroy method.
*/
public void destroy() {
}
protected String normalizeNamespace(final String namespace) {
return namespace;
}
/**
* {@inheritDoc}
*/
@Override
public long nextId(final String namespace) {
return idGenerator.nextId(normalizeNamespace(namespace));
}
/**
* {@inheritDoc}
*/
@Override
public long currentId(final String namespace) {
return idGenerator.currentId(normalizeNamespace(namespace));
}
/**
* {@inheritDoc}
*/
@Override
public boolean setValue(String namespace, long value) throws Exception {
return idGenerator.setValue(namespace, value);
}
}