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

File RowParamsGenerator.java

 

Coverage histogram

../../../../img/srcFileCovDistChart9.png
53% of files have more coverage

Code metrics

2
13
2
1
67
48
3
0.23
6.5
2
1.5

Classes

Class Line # Actions
RowParamsGenerator 20 13 0% 3 2
0.8823529588.2%
 

Contributing tests

This file is covered by 36 tests. .

Source view

1    package guru.mikelue.foxglove.jdbc;
2   
3    import java.sql.PreparedStatement;
4    import java.util.LinkedHashMap;
5    import java.util.List;
6    import java.util.Map;
7    import java.util.function.Supplier;
8   
9    import org.apache.commons.lang3.Validate;
10    import org.slf4j.Logger;
11    import org.slf4j.LoggerFactory;
12   
13    import guru.mikelue.foxglove.ColumnMeta;
14    import guru.mikelue.foxglove.setting.DataSettingInfo;
15   
16    /**
17    * With provided metadata of columns and data setting,
18    * this object generates the row parameters used by {@link PreparedStatement}.
19    */
 
20    class RowParamsGenerator {
21    private Logger logger = LoggerFactory.getLogger(RowParamsGenerator.class);
22   
23    private final Map<ColumnMeta, Supplier<Object>> supplierOfColumns;
24   
 
25  89 toggle RowParamsGenerator(
26    JdbcTableFacet table,
27    List<ColumnMeta> metaOfColumns,
28    DataSettingInfo setting
29    ) {
30  89 this.supplierOfColumns = new LinkedHashMap<>(metaOfColumns.size());
31   
32  89 for (ColumnMeta columnMeta : metaOfColumns) {
33  764 var supplierOpt = table.resolveSupplier(columnMeta)
34    .or(() -> setting.resolveSupplier(columnMeta));
35   
36  764 Validate.isTrue(
37    supplierOpt.isPresent(),
38    "No supplier found for column: %s", columnMeta
39    );
40   
41  764 var supplier = supplierOpt.get();
42   
43  764 if (logger.isTraceEnabled()) {
44  0 logger.trace("Found supplier[{}] for column: {}",
45    supplier.getClass().getSimpleName(),
46    columnMeta
47    );
48    }
49   
50  764 this.supplierOfColumns.put(columnMeta, supplier);
51    }
52    }
53   
 
54  1360 toggle Map<ColumnMeta, Object> generateRowParams()
55    {
56  1360 var resultRow = new LinkedHashMap<ColumnMeta, Object>(supplierOfColumns.size());
57   
58  1360 for (var columnMeta: supplierOfColumns.keySet()) {
59  11559 var value = supplierOfColumns.get(columnMeta)
60    .get();
61   
62  11559 resultRow.put(columnMeta, value);
63    }
64   
65  1360 return resultRow;
66    }
67    }