-
Notifications
You must be signed in to change notification settings - Fork 16
/
VoucherCodes.java
39 lines (31 loc) · 1.05 KB
/
VoucherCodes.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package io.voucherify.generator;
import java.util.Random;
public final class VoucherCodes {
private static final Random RND = new Random(System.currentTimeMillis());
/**
* Generates a random code according to given config.
*
* @param config
*
* @return Generated code.
*/
public static String generate(CodeConfig config) {
StringBuilder sb = new StringBuilder();
char[] chars = config.getCharset().toCharArray();
char[] pattern = config.getPattern().toCharArray();
if (config.getPrefix() != null) {
sb.append(config.getPrefix());
}
for (int i = 0; i < pattern.length; i++) {
if (pattern[i] == CodeConfig.PATTERN_PLACEHOLDER) {
sb.append(chars[RND.nextInt(chars.length)]);
} else {
sb.append(pattern[i]);
}
}
if (config.getPostfix() != null) {
sb.append(config.getPostfix());
}
return sb.toString();
}
}