package nebula.data.impl.id; import static com.google.common.base.Preconditions.checkArgument; import nebula.data.impl.IDGenerator; public class CurrentTimeIDGenerator implements IDGenerator { long seed; public static final long MAX_STEP = 10; public static final long MAX_SEED = 1 << MAX_STEP; public CurrentTimeIDGenerator() { this(0L); } public CurrentTimeIDGenerator(Long seed) { this.seed = seed; } @Override public Long nextValue() { return (System.currentTimeMillis() << MAX_STEP) + this.seed; } @Override public void init(Long initValue) { } @Override public void setSeed(Long seed) { checkArgument(seed < MAX_SEED); this.seed = seed; } @Override public Long nextValue(Long seed) { return System.currentTimeMillis() << MAX_STEP + seed; } }