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 }