src/main/java/com/zandero/utils/KeyGenerator.java
public static long generateLong(int length) {

		if (length <= 0 || length > 19) {
			throw new IllegalArgumentException("Can't generate random id with length: " + length);
		}

		SecureRandom random = new SecureRandom();
		StringBuilder sb = new StringBuilder(length);

		// 1st digit should  not be a 0 or 9 if desired length is 19 (as max long is: 9223372036854775807)
		if (length == 19) {
			sb.append(NUMBERS_NO_NINE_AND_ZERO.charAt(random.nextInt(NUMBERS_NO_NINE_AND_ZERO.length())));
		}
		else {
			sb.append(NUMBERS_NO_ZERO.charAt(random.nextInt(NUMBERS_NO_ZERO.length())));
		}

		// all other digits can contain a 0
		for (int i = 1; i < length; i++) {
			sb.append(NUMBERS.charAt(random.nextInt(NUMBERS.length())));
		}

		return Long.parseLong(sb.toString());
	}
public static long generateLong(int length) {

		if (length <= 0 || length > 19) {
			throw new IllegalArgumentException("Can't generate random id with length: " + length);
		}

		SecureRandom random = new SecureRandom();
		StringBuilder sb = new StringBuilder(length);

		// 1st digit should  not be a 0 or 9 if desired length is 19 (as max long is: 9223372036854775807)
		if (length == 19) {
			sb.append(NUMBERS_NO_NINE_AND_ZERO.charAt(random.nextInt(NUMBERS_NO_NINE_AND_ZERO.length())));
		}
		else {
			sb.append(NUMBERS_NO_ZERO.charAt(random.nextInt(NUMBERS_NO_ZERO.length())));
		}

		// all other digits can contain a 0
		for (int i = 1; i < length; i++) {
			sb.append(NUMBERS.charAt(random.nextInt(NUMBERS.length())));
		}

		return Long.parseLong(sb.toString());
	}
public static long generateLong ( int length ) { if ( length <= 0 || length > 19 ) { throw new IllegalArgumentException ( "Can't generate random id with length: " + length ) ; } SecureRandom random = new SecureRandom ( ) ; StringBuilder sb = new StringBuilder ( length ) ; // 1st digit should  not be a 0 or 9 if desired length is 19 (as max long is: 9223372036854775807) if ( length == 19 ) { sb . append ( NUMBERS_NO_NINE_AND_ZERO . charAt ( random . nextInt ( NUMBERS_NO_NINE_AND_ZERO . length ( ) ) ) ) ; } else { sb . append ( NUMBERS_NO_ZERO . charAt ( random . nextInt ( NUMBERS_NO_ZERO . length ( ) ) ) ) ; } // all other digits can contain a 0 for ( int i = 1 ; i < length ; i ++ ) { sb . append ( NUMBERS . charAt ( random . nextInt ( NUMBERS . length ( ) ) ) ) ; } return Long . parseLong ( sb . toString ( ) ) ; }
Generates non negative long key of maximum length 18

@param length desired length of key grater than 0 (must consider max possible length of a long value)
@return long key (min 1, max 19 digits long)
Generates non negative long key of maximum length 18