package org.zalando.catwatch.backend.repo.builder;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.Instant;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import static java.time.temporal.ChronoUnit.DAYS;
public class BuilderUtil {
private static LinkedList<String> projectNames;
private static AtomicInteger latestId = new AtomicInteger(1);
public static int random(int start, int end) {
return (int) Math.round(Math.random() * (end - start - 1)) + start;
}
public static Date randomDate() {
return Date.from(Instant.now().minus(random(1, 356), DAYS));
}
public static String randomLanguage() {
List<String> langs = Arrays.asList("Java", "JS", "HTML5", "CSS", "Python", "C++", "Go", "Scala", "Groovy",
"C#", "Clojure", "VB", "ObjectiveC");
return langs.get(random(0, langs.size()));
}
public static synchronized String randomProjectName() {
if (projectNames == null) {
projectNames = new LinkedList<>();
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(BuilderUtil.class.getResourceAsStream("/projectNameExamples.txt")));
String line;
line = in.readLine();
while (line != null) {
projectNames.add(line);
line = in.readLine(); // try to read another line
}
} catch (IOException e) {
throw new RuntimeException("never to happen", e);
}
Collections.shuffle(projectNames);
}
String projectName = projectNames.poll();
projectNames.add(projectName);
return projectName;
}
public static long freshId() {
return latestId.incrementAndGet();
}
}