Identity.java

package pk.lucidxpo.ynami.utils;

import java.security.SecureRandom;
import java.util.UUID;

import static java.lang.Integer.MAX_VALUE;
import static org.apache.commons.lang3.StringUtils.remove;

public final class Identity {

    private static final int MAX_DIGITS = 12;
    private static final int RANDOM_DIGITS_9 = 9;
    private static final int RANDOM_DIGITS_10 = 10;
    private static final int RANDOM_DIGITS_11 = 11;

    private static final SecureRandom RANDOM = new SecureRandom();

    public static int randomInt() {
        return RANDOM.nextInt(MAX_VALUE);
    }

    public static int randomInt(final int minValue, final int maxValue) {
        return minValue + RANDOM.nextInt(maxValue - minValue);
    }

    public static String randomID(final int digits) {
        return randomID("", digits);
    }

    public static String randomID() {
        return remove(randomUUID(), "-");
    }

    public static String randomUUID() {
        return UUID.randomUUID().toString();
    }

    public static String randomID9(final String prefix) {
        return randomID(prefix, RANDOM_DIGITS_9);
    }

    public static String randomID11(final String prefix) {
        return randomID(prefix, RANDOM_DIGITS_11);
    }

    public static String randomID12(final String prefix) {
        return randomID(prefix, MAX_DIGITS);
    }

    public static String randomID(final String prefix, final int digits) {
        final int len = prefix.length() + digits;
        final StringBuilder buf = new StringBuilder(len);
        buf.append(prefix);
        for (int i = 0; i < digits; i++) {
            buf.append(RANDOM.nextInt(RANDOM_DIGITS_10));
        }
        return buf.toString();
    }
}