1. Project Clover database Wed Nov 12 2025 05:07:35 UTC
  2. Package guru.mikelue.foxglove.jdbc

File ColumnSettingStepImpl.java

 

Coverage histogram

../../../../img/srcFileCovDistChart10.png
0% of files have more coverage

Code metrics

0
21
8
1
96
80
8
0.38
2.62
8
1

Classes

Class Line # Actions
ColumnSettingStepImpl 20 21 0% 8 0
1.0100%
 

Contributing tests

This file is covered by 29 tests. .

Source view

1    package guru.mikelue.foxglove.jdbc;
2   
3    import java.util.function.Consumer;
4    import java.util.function.Supplier;
5   
6    import org.apache.commons.lang3.Validate;
7    import org.instancio.generator.ValueSpec;
8   
9    import guru.mikelue.foxglove.functional.RoundRobinValueSupplier;
10    import guru.mikelue.foxglove.functional.RowIndexToValue;
11    import guru.mikelue.foxglove.functional.RowIndexToValueSupplier;
12    import guru.mikelue.foxglove.functional.SupplierDecider;
13    import guru.mikelue.foxglove.jdbc.ColumnSettingSteps.ColumnFromStep;
14    import guru.mikelue.foxglove.jdbc.ColumnSettingSteps.ColumnSimpleStep;
15    import guru.mikelue.foxglove.jdbc.JdbcTableFacet.Builder;
16   
17    import static org.apache.commons.lang3.StringUtils.trimToEmpty;
18   
19    @SuppressWarnings("unchecked")
 
20    class ColumnSettingStepImpl<T> implements ColumnSimpleStep<T> {
21    private final JdbcTableFacet.Builder parentBuilder;
22    private final Consumer<SupplierDecider<?>> finalStageSetter;
23   
 
24  111 toggle ColumnSettingStepImpl(Builder parentBuilder, Consumer<SupplierDecider<?>> finalStageSetter)
25    {
26  111 this.parentBuilder = parentBuilder;
27  111 this.finalStageSetter = finalStageSetter;
28    }
29   
 
30  2 toggle @Override
31    public Builder useSpec(Supplier<ValueSpec<? extends T>> valueSpecSupplier)
32    {
33  2 finalStageSetter.accept(columnMeta -> {
34  2 return (Supplier<Object>) valueSpecSupplier.get();
35    });
36  2 return parentBuilder;
37    }
38   
 
39  100 toggle @Override
40    public Builder useSupplier(Supplier<? extends T> valueSupplier)
41    {
42  100 finalStageSetter.accept(columnMeta -> {
43  57 return (Supplier<Object>)valueSupplier;
44    });
45  100 return parentBuilder;
46    }
47   
 
48  1 toggle @Override
49    public Builder decideSupplier(SupplierDecider<? extends T> supplierDecider)
50    {
51  1 finalStageSetter.accept(columnMeta -> {
52  1 return (Supplier<Object>)supplierDecider.apply(columnMeta);
53    });
54  1 return parentBuilder;
55    }
56   
 
57  72 toggle @Override
58    public Builder fixed(T fixedValue)
59    {
60  72 return useSupplier(() -> fixedValue);
61    }
62   
 
63  20 toggle @Override
64    public Builder roundRobin(T... values)
65    {
66  20 Validate.notEmpty(values, "At least two values are required for round-robin supplier");
67   
68  20 return useSupplier(RoundRobinValueSupplier.of(values));
69    }
70   
 
71  3 toggle @Override
72    public Builder forRow(RowIndexToValue<? extends T> rowIndexToValue)
73    {
74  3 return useSupplier(
75    RowIndexToValueSupplier.of(rowIndexToValue)
76    );
77    }
78   
 
79  8 toggle @Override
80    public ColumnFromStep<T> from(JdbcTableFacet referencedTable, String referencedColumn)
81    {
82  8 var safeReferencedColumn = trimToEmpty(referencedColumn).toLowerCase();
83   
84  8 Validate.notNull(referencedTable, "Parent table must not be null");
85  8 Validate.notEmpty(safeReferencedColumn, "Referenced column must not be empty");
86   
87  8 referencedTable.getValueTomb().keepColumn(safeReferencedColumn);
88  8 return new ColumnFromStepImpl<T>(
89    parentBuilder,
90    referencedTable, referencedColumn,
91    supplier -> {
92  8 finalStageSetter.accept(columnMeta -> (Supplier<Object>)supplier);
93    }
94    );
95    }
96    }