package org.swellrt.model.generic; import org.swellrt.model.IdGeneratorGeneric; import org.waveprotocol.wave.model.id.IdGenerator; import org.waveprotocol.wave.model.id.WaveId; public class TypeIdGenerator implements IdGeneratorGeneric { private static TypeIdGenerator singleton = null; public static TypeIdGenerator get() { if (singleton == null) singleton = new TypeIdGenerator(); return singleton; } public static TypeIdGenerator get(IdGenerator idGenerator) { if (singleton == null) singleton = new TypeIdGenerator(); singleton.idGenerator = idGenerator; return singleton; } public static final String WAVE_ID_PREFIX = "s"; private IdGenerator idGenerator; /** * Private constructor */ TypeIdGenerator() { } @Override public IdGeneratorGeneric initialize(IdGenerator idGenerator) { this.idGenerator = idGenerator; return this; } @Override public WaveId newWaveId() { return WaveId.of(idGenerator.getDefaultDomain(), idGenerator.newId(WAVE_ID_PREFIX)); } public String newDocumentId(String prefix) { return idGenerator.newId(prefix); } public IdGenerator getUnderlyingGenerator() { return idGenerator; } }