package restx.common;
import com.google.common.collect.ImmutableList;
import java.util.Iterator;
import java.util.UUID;
import static com.google.common.collect.Lists.newArrayList;
/**
* User: xavierhanin
* Date: 3/19/13
* Time: 3:06 PM
*/
public interface UUIDGenerator {
String doGenerate();
public static class DefaultUUIDGenerator implements UUIDGenerator {
@Override
public String doGenerate() {
return UUID.randomUUID().toString();
}
}
public static class PlaybackUUIDGenerator implements UUIDGenerator {
public static UUIDGenerator playbackUUIDs(String... uuids) {
return new PlaybackUUIDGenerator(newArrayList(uuids).iterator());
}
public static UUIDGenerator playbackUUIDs(Iterable<String> uuids) {
return new PlaybackUUIDGenerator(uuids.iterator());
}
private final Iterator<String> sequence;
private PlaybackUUIDGenerator(Iterator<String> sequence) {
this.sequence = sequence;
}
@Override
public String doGenerate() {
if (sequence.hasNext()) {
return sequence.next();
} else {
throw new IllegalStateException("no more uuids in sequence");
}
}
}
}