package com.datascience.utils; import java.util.concurrent.atomic.AtomicLong; /** * * @author konrad */ public class RandomUniqIDGenerators { public static class NumberAndDate implements IRandomUniqIDGenerator{ protected Numbers numberGenerator; public NumberAndDate(){ numberGenerator = new Numbers(); } @Override public String getID() { return "" + System.currentTimeMillis() + "_" + numberGenerator.getID(); } } public static class Numbers implements IRandomUniqIDGenerator { protected AtomicLong numbers; public Numbers(){ numbers = new AtomicLong(); } @Override public String getID() { return "" + numbers.incrementAndGet(); } } public static class PrefixAdderDecorator implements IRandomUniqIDGenerator { protected String prefix; protected IRandomUniqIDGenerator prefixed; public PrefixAdderDecorator(String prefix, IRandomUniqIDGenerator prefixed){ this.prefix = prefix; this.prefixed = prefixed; } @Override public String getID(){ return prefix + prefixed.getID(); } } }