|
1 | 1 | package com.codedifferently.lesson9.generator; |
2 | 2 |
|
| 3 | +import com.codedifferently.lesson9.dataprovider.DataProvider; |
3 | 4 | import com.codedifferently.lesson9.generator.Generators.*; |
4 | 5 | import com.google.gson.GsonBuilder; |
5 | 6 | import java.io.File; |
@@ -42,6 +43,39 @@ private List<ValueGenerator> getShuffledGenerators() { |
42 | 43 | Collections.shuffle(generators); |
43 | 44 | return generators; |
44 | 45 | } |
| 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 | + |
45 | 79 |
|
46 | 80 | private ArrayList<Map<String, String>> createSampleData(List<ValueGenerator> generators) { |
47 | 81 | var rows = new ArrayList<Map<String, String>>(); |
|
0 commit comments