package utils;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import persistency.entities.gamification.PointsCategory;
import persistency.entities.gamification.PointsInstance;
public class CodeGenerator {
public static List<PointsInstance> generateCodes(int max, List<PointsInstance> allCodes, PointsCategory category) {
int codeLength = category.getCodeLength();
List<PointsInstance> newCodes = new ArrayList<PointsInstance>();
int cSize = category.getInstancesOfThisType() == null ? 0 : category.getInstancesOfThisType().size();
for (int i = cSize; i < max; i++) {
PointsInstance pi = generateCode(codeLength);
while(allCodes.contains(pi) || newCodes.contains(pi)){
pi = generateCode(codeLength);
}
pi.setCategory(category);
newCodes.add(pi);
}
return newCodes;
}
private static String[] letters = {"a","b","c","d","e","f","g","h","i", "j", "k", "l", "m",
"n", "o","p", "q", "r", "s", "t", "u", "v","w","x", "y", "z"};
private static PointsInstance generateCode(int codeLength) {
Random r = new Random();
String code = "";
for (int i = 0; i < codeLength; i++) {
code+= letters[r.nextInt(26)];
}
PointsInstance pi = new PointsInstance();
pi.setCode(code);
return pi;
}
public static List<PointsInstance> generateCompsiteCodes(int max, List<String> codePossitions,
List<PointsInstance> allCodes, PointsCategory category) {
List<PointsInstance> generatedCodes = generateCodes(max, allCodes, category);
int index = 0;
for (PointsInstance pointsInstance : generatedCodes) {
pointsInstance.setCompositeCodeId(codePossitions.get(index++));
if(index == codePossitions.size()){
index = 0;
}
}
return generatedCodes;
}
}