1. Project Clover database Fri Jul 17 2026 06:10:26 UTC
  2. Package guru.mikelue.foxglove.setting

File LayeredDataSetting.java

 

Coverage histogram

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

Code metrics

6
17
5
1
94
54
8
0.47
3.4
5
1.6

Classes

Class Line # Actions
LayeredDataSetting 16 17 0% 8 1
0.9642857396.4%
 

Contributing tests

This file is covered by 40 tests. .

Source view

1    package guru.mikelue.foxglove.setting;
2   
3    import java.util.ArrayList;
4    import java.util.List;
5    import java.util.Optional;
6    import java.util.function.Supplier;
7   
8    import guru.mikelue.foxglove.ColumnMeta;
9    import guru.mikelue.foxglove.jdbc.CustomStatementSetter;
10   
11    /**
12    * A proxy of {@link DataSettingInfo} for multi-layer settings.
13    *
14    * The default setting of global is always added as the last priority.
15    */
 
16    public class LayeredDataSetting implements DataSettingInfo {
17    private final List<DataSettingInfo> viableSettings =
18    new ArrayList<>(3);
19   
20    /**
21    * Constructs the layered data setting with multiple settings.
22    *
23    * The usage priority is from first to last.
24    *
25    * @param settings The rest data setting info, can be null for some
26    */
 
27  93 toggle public LayeredDataSetting(
28    DataSettingInfo... settings
29    ) {
30  93 for (var setting : settings) {
31  186 if (setting == null) {
32  174 continue;
33    }
34  12 viableSettings.add(setting);
35    }
36   
37  93 viableSettings.add(DataSetting.defaults());
38    }
39   
40    /**
41    * Uses the highest priority setting to get the default number of rows.
42    *
43    * @return The number of rows defined in the highest priority setting
44    *
45    * @see DataSetting#defaults()
46    */
 
47  1 toggle @Override
48    public int getDefaultNumberOfRows()
49    {
50  1 return viableSettings.get(0).getDefaultNumberOfRows();
51    }
52   
53    /**
54    * Retrieves the found {@link Supplier} by priority of settings.
55    *
56    * @param columnMeta The metadata of column used to resolve {@link Supplier}
57    *
58    * @return The resolved {@link Supplier} or empty.
59    */
 
60  669 toggle @Override
61    public <T> Optional<Supplier<T>> resolveSupplier(ColumnMeta columnMeta)
62    {
63  669 for (var setting : viableSettings) {
64  694 var resolvedSpec = setting.<T>resolveSupplier(columnMeta);
65  694 if (resolvedSpec.isPresent()) {
66  669 return resolvedSpec;
67    }
68    }
69   
70  0 return Optional.empty();
71    }
72   
73    /**
74    * {@inheritDoc}
75    */
 
76  911 toggle @Override
77    public boolean isAutoGenerating(ColumnMeta column)
78    {
79  911 return viableSettings.get(0).isAutoGenerating(column);
80    }
81   
 
82  770 toggle @Override
83    public Optional<CustomStatementSetter<?>> getStatementSetter(ColumnMeta meta)
84    {
85  770 for (var setting : viableSettings) {
86  805 var paramSetter = setting.getStatementSetter(meta);
87  805 if (paramSetter.isPresent()) {
88  3 return paramSetter;
89    }
90    }
91   
92  767 return Optional.empty();
93    }
94    }