diff --git a/src/main/java/se/ton/t210/utils/data/DummyData.java b/src/main/java/se/ton/t210/utils/data/DummyData.java index 0ea66ed..4d95ce5 100644 --- a/src/main/java/se/ton/t210/utils/data/DummyData.java +++ b/src/main/java/se/ton/t210/utils/data/DummyData.java @@ -54,7 +54,7 @@ public void create() { } } - private List createMembers(int number) { + private void createMembers(int number) { members = new ArrayList<>(); for (var applicationType : ApplicationType.values()) { for (int i = 0; i < number; i++) { @@ -68,7 +68,6 @@ private List createMembers(int number) { } } memberRepository.saveAll(members); - return members; } private Map> createEvaluationItemTable() { diff --git a/src/main/java/se/ton/t210/utils/data/initData/CsvLineStrategy.java b/src/main/java/se/ton/t210/utils/data/initData/CsvLineStrategy.java new file mode 100644 index 0000000..428b149 --- /dev/null +++ b/src/main/java/se/ton/t210/utils/data/initData/CsvLineStrategy.java @@ -0,0 +1,6 @@ +package se.ton.t210.utils.data.initData; + +public interface CsvLineStrategy { + + String retrieveNewLine(); +} diff --git a/src/main/java/se/ton/t210/utils/data/initData/InitDataCSV.java b/src/main/java/se/ton/t210/utils/data/initData/InitDataCSV.java new file mode 100644 index 0000000..05ca3de --- /dev/null +++ b/src/main/java/se/ton/t210/utils/data/initData/InitDataCSV.java @@ -0,0 +1,49 @@ +package se.ton.t210.utils.data.initData; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; + +public class InitDataCSV { + + private static final int UNIT_COUNT = 10_000_000; + + private final CsvLineStrategy csvLineStrategy; + private final String fileName; + private final int dataCount; + private String initialLine; + + public InitDataCSV(CsvLineStrategy csvLineStrategy, String fileName, int dataCount) { + this.csvLineStrategy = csvLineStrategy; + this.fileName = fileName; + this.dataCount = dataCount; + } + + public void generate() throws IOException { + generate(false); + } + + public void generate(boolean appendEnable) throws IOException { + try ( + final var bw = new BufferedWriter(new FileWriter(fileName, appendEnable)) + ) { + if (initialLine != null) { + bw.append(initialLine); + } + for (int i = 0; i < dataCount / UNIT_COUNT; i++) { + for (int j = 0; j < UNIT_COUNT; j++) { + bw.append("\n").append(csvLineStrategy.retrieveNewLine()); + } + } + for (int i = 0; i < dataCount % UNIT_COUNT; i++) { + bw.append("\n").append(csvLineStrategy.retrieveNewLine()); + } + } + } + + public void setInitialLine(String line) { + if (line != null) { + this.initialLine = line; + } + } +} diff --git a/src/main/java/se/ton/t210/utils/data/initData/InitDataMain.java b/src/main/java/se/ton/t210/utils/data/initData/InitDataMain.java new file mode 100644 index 0000000..89a4e28 --- /dev/null +++ b/src/main/java/se/ton/t210/utils/data/initData/InitDataMain.java @@ -0,0 +1,13 @@ +package se.ton.t210.utils.data.initData; + +import java.io.IOException; + +public class InitDataMain { + + public static void main(String[] args) throws IOException { + var csvLineStrategy = new MLTrainingCsvLine(); + var initDataCSV = new InitDataCSV(csvLineStrategy, "ml_training_000_001.csv", 10_000); + initDataCSV.setInitialLine("id,applicationType,score,month"); + initDataCSV.generate(); + } +} diff --git a/src/main/java/se/ton/t210/utils/data/initData/MLTrainingCsvLine.java b/src/main/java/se/ton/t210/utils/data/initData/MLTrainingCsvLine.java new file mode 100644 index 0000000..508b1a8 --- /dev/null +++ b/src/main/java/se/ton/t210/utils/data/initData/MLTrainingCsvLine.java @@ -0,0 +1,34 @@ +package se.ton.t210.utils.data.initData; + +import se.ton.t210.domain.type.ApplicationType; + +import java.util.Random; + +// ML +// id,applicationType,score,month +public class MLTrainingCsvLine implements CsvLineStrategy { + + private static final Random RANDOM = new Random(); + private Long id = 0L; + + @Override + public String retrieveNewLine() { + id++; + return String.join(",", + String.valueOf(id), + randomApplicationTypeStandardName(), + randomNum(5, 50), + randomNum(1, 12) + ); + } + + private String randomNum(int min, int max) { + return String.valueOf(RANDOM.nextInt(max - min + 1) + min); + } + + private String randomApplicationTypeStandardName() { + ApplicationType[] applicationTypes = ApplicationType.values(); + int randomNum = RANDOM.nextInt(applicationTypes.length); + return applicationTypes[randomNum].getStandardName(); + } +}