1 package pk.lucidxpo.ynami.utils; 2 3 import java.security.SecureRandom; 4 import java.util.UUID; 5 6 import static java.lang.Integer.MAX_VALUE; 7 import static org.apache.commons.lang3.StringUtils.remove; 8 9 public final class Identity { 10 11 private static final int MAX_DIGITS = 12; 12 private static final int RANDOM_DIGITS_9 = 9; 13 private static final int RANDOM_DIGITS_10 = 10; 14 private static final int RANDOM_DIGITS_11 = 11; 15 16 private static final SecureRandom RANDOM = new SecureRandom(); 17 18 public static int randomInt() { 19 return RANDOM.nextInt(MAX_VALUE); 20 } 21 22 public static int randomInt(final int minValue, final int maxValue) { 23 return minValue + RANDOM.nextInt(maxValue - minValue); 24 } 25 26 public static String randomID(final int digits) { 27 return randomID("", digits); 28 } 29 30 public static String randomID() { 31 return remove(randomUUID(), "-"); 32 } 33 34 public static String randomUUID() { 35 return UUID.randomUUID().toString(); 36 } 37 38 public static String randomID9(final String prefix) { 39 return randomID(prefix, RANDOM_DIGITS_9); 40 } 41 42 public static String randomID11(final String prefix) { 43 return randomID(prefix, RANDOM_DIGITS_11); 44 } 45 46 public static String randomID12(final String prefix) { 47 return randomID(prefix, MAX_DIGITS); 48 } 49 50 public static String randomID(final String prefix, final int digits) { 51 final int len = prefix.length() + digits; 52 final StringBuilder buf = new StringBuilder(len); 53 buf.append(prefix); 54 for (int i = 0; i < digits; i++) { 55 buf.append(RANDOM.nextInt(RANDOM_DIGITS_10)); 56 } 57 return buf.toString(); 58 } 59 }