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

File ColumnFromStepImpl.java

 

Coverage histogram

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

Code metrics

0
14
5
1
86
72
5
0.36
2.8
5
1

Classes

Class Line # Actions
ColumnFromStepImpl 17 14 0% 5 0
1.0100%
 

Contributing tests

This file is covered by 8 tests. .

Source view

1    package guru.mikelue.foxglove.jdbc;
2   
3    import java.util.List;
4    import java.util.function.Consumer;
5    import java.util.function.Function;
6    import java.util.function.Supplier;
7    import java.util.stream.Stream;
8   
9    import org.instancio.Instancio;
10   
11    import guru.mikelue.foxglove.functional.RoundRobinValueSupplier;
12    import guru.mikelue.foxglove.jdbc.ColumnSettingSteps.ColumnFromStep;
13    import guru.mikelue.foxglove.jdbc.JdbcTableFacet.Builder;
14   
15    import static guru.mikelue.foxglove.functional.Suppliers.lazySupplier;
16   
 
17    class ColumnFromStepImpl<T> implements ColumnFromStep<T> {
18    private final Builder baseBuilder;
19    private final Supplier<List<T>> domainSupplier;
20    private final Consumer<Supplier<?>> supplierSetter;
21   
 
22  11 toggle ColumnFromStepImpl(
23    Builder builder,
24    JdbcTableFacet table, String columnName,
25    Consumer<Supplier<?>> supplierSetter
26    ) {
27  11 this(
28    builder,
29    () -> table.getValueTomb().getValues(columnName),
30    supplierSetter
31    );
32    }
33   
 
34  12 toggle private ColumnFromStepImpl(
35    Builder builder,
36    Supplier<List<T>> domainSupplier,
37    Consumer<Supplier<?>> supplierSetter
38    ) {
39  12 this.baseBuilder = builder;
40  12 this.domainSupplier = domainSupplier;
41  12 this.supplierSetter = supplierSetter;
42    }
43   
 
44  6 toggle @Override
45    public Builder roundRobin()
46    {
47  6 supplierSetter.accept(
48    lazySupplier(() ->
49    RoundRobinValueSupplier.of(domainSupplier.get())
50    )
51    );
52   
53  6 return baseBuilder;
54    }
55   
 
56  5 toggle @Override
57    public Builder random()
58    {
59  5 var supplier = lazySupplier(
60    () -> {
61  5 var values = domainSupplier.get();
62  5 var gen = Instancio.gen().ints().range(0, values.size() - 1);
63   
64  5 return () -> values.get(gen.get());
65    }
66    );
67  5 supplierSetter.accept(supplier);
68   
69  5 return baseBuilder;
70    }
71   
 
72  1 toggle @Override
73    public <V> ColumnFromStep<V> transformDomain(Function<? super Stream<T>, ? extends Stream<V>> domainConverter)
74    {
75  1 Supplier<List<V>> convertedSupplier = () ->
76    domainConverter.apply(
77    domainSupplier.get().stream()
78    )
79    .toList();
80   
81  1 return new ColumnFromStepImpl<V>(
82    baseBuilder, convertedSupplier,
83    supplierSetter
84    );
85    }
86    }