Skip to content

Commit b9092dc

Browse files
committed
feat: Added methods to SampleFileGenerator to read generators
1 parent d04894c commit b9092dc

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/Lesson9.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,12 @@ public void run(String... args) throws Exception {
2727
throw new IllegalArgumentException("Provider name is required");
2828
}
2929
if (providerName.equals("--all")){
30+
//TODO: change providers to search dynamically for all available providers
3031
String[] providers = {"danielsonadjocy", "johnsonjames", "smithjane", "williamsrobert"};
3132
for (String provider : providers) {
3233
String path = getDataPath();
3334
var fileGenerator = new SampleFileGenerator();
34-
fileGenerator.createTestFile(path, provider);
35+
//fileGenerator.createProviderFile(path, providerName, provider);
3536
}
3637
return;
3738
}

lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/generator/SampleFileGenerator.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.codedifferently.lesson9.generator;
22

3+
import com.codedifferently.lesson9.dataprovider.DataProvider;
34
import com.codedifferently.lesson9.generator.Generators.*;
45
import com.google.gson.GsonBuilder;
56
import java.io.File;
@@ -42,6 +43,39 @@ private List<ValueGenerator> getShuffledGenerators() {
4243
Collections.shuffle(generators);
4344
return generators;
4445
}
46+
private static final Map<Class<?>, ValueGenerator> TYPE_TO_GENERATOR = Map.of(
47+
Integer.class, new IntValueGenerator(),
48+
Short.class, new ShortValueGenerator(),
49+
Long.class, new LongValueGenerator(),
50+
Float.class, new FloatValueGenerator(),
51+
Boolean.class, new BooleanValueGenerator(),
52+
String.class, new StringValueGenerator(),
53+
Double.class, new DoubleValueGenerator()
54+
);
55+
56+
public void createProviderFile(String path, String providerName, DataProvider provider) {
57+
var generators = getGenerators(provider);
58+
ArrayList<Map<String, String>> rows = createSampleData(generators);
59+
saveToJsonFile(path, providerName, rows);
60+
}
61+
62+
private List<ValueGenerator> getGenerators(DataProvider provider) {
63+
Map<String, Class> columnTypes = provider.getColumnTypeByName();
64+
65+
List<ValueGenerator> generators = new ArrayList<>();
66+
67+
// preserve the order of the map
68+
for (Class<?> type : columnTypes.values()) {
69+
ValueGenerator generator = TYPE_TO_GENERATOR.get(type);
70+
if (generator == null) {
71+
throw new IllegalArgumentException("No generator found for type: " + type);
72+
}
73+
generators.add(generator);
74+
}
75+
76+
return generators;
77+
}
78+
4579

4680
private ArrayList<Map<String, String>> createSampleData(List<ValueGenerator> generators) {
4781
var rows = new ArrayList<Map<String, String>>();

0 commit comments

Comments
 (0)