information-system-model/src/main/java/org/gcube/informationsystem/utils/UUIDManager.java

69 lines
1.5 KiB
Java

package org.gcube.informationsystem.utils;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
import java.util.UUID;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public final class UUIDManager {
private static final Set<String> RESERVED_UUID_STRING;
private static final Set<UUID> RESERVED_UUID;
private static UUIDManager uuidManager;
public static UUIDManager getInstance() {
if(uuidManager==null) {
uuidManager = new UUIDManager();
}
return uuidManager;
}
private UUIDManager() {
}
static {
RESERVED_UUID_STRING = new HashSet<>();
RESERVED_UUID = new HashSet<>();
String[] uuidValidCharacters = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
for(String string : uuidValidCharacters) {
String uuidString = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
uuidString = uuidString.replaceAll("X", string);
RESERVED_UUID_STRING.add(uuidString);
RESERVED_UUID.add(UUID.fromString(uuidString));
}
}
public boolean isReservedUUID(UUID uuid) {
return RESERVED_UUID.contains(uuid);
}
public boolean isReservedUUID(String uuid) {
return RESERVED_UUID_STRING.contains(uuid);
}
public Set<String> getAllReservedUUIDAsStrings(){
return new TreeSet<>(RESERVED_UUID_STRING);
}
public Set<UUID> getAllReservedUUID(){
return new TreeSet<>(RESERVED_UUID);
}
public UUID generateValidRandomUUID() {
UUID generated = UUID.randomUUID();
while(RESERVED_UUID.contains(generated)) {
generated = UUID.randomUUID();
}
return generated;
}
}