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

File LayeredDataSetting.java

 

Coverage histogram

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

Code metrics

4
12
4
1
80
42
6
0.5
3
4
1.5

Classes

Class Line # Actions
LayeredDataSetting 15 12 0% 6 1
0.9595%
 

Contributing tests

This file is covered by 36 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   
10    /**
11    * A proxy of {@link DataSettingInfo} for multi-layer settings.
12    *
13    * The default setting of global is always added as the last priority.
14    */
 
15    public class LayeredDataSetting implements DataSettingInfo {
16    private final List<DataSettingInfo> viableSettings =
17    new ArrayList<>(3);
18   
19    /**
20    * Constructs the layered data setting with multiple settings.
21    *
22    * The usage priority is from first to last.
23    *
24    * @param settings The rest data setting info, can be null for some
25    */
 
26  89 toggle public LayeredDataSetting(
27    DataSettingInfo... settings
28    ) {
29  89 for (var setting : settings) {
30  178 if (setting == null) {
31  173 continue;
32    }
33  5 viableSettings.add(setting);
34    }
35   
36  89 viableSettings.add(DataSetting.defaults());
37    }
38   
39    /**
40    * Uses the highest priority setting to get the default number of rows.
41    *
42    * @return The number of rows defined in the highest priority setting
43    *
44    * @see DataSetting#defaults()
45    */
 
46  1 toggle @Override
47    public int getDefaultNumberOfRows()
48    {
49  1 return viableSettings.get(0).getDefaultNumberOfRows();
50    }
51   
52    /**
53    * Retrieves the found {@link Supplier} by priority of settings.
54    *
55    * @param columnMeta The metadata of column used to resolve {@link Supplier}
56    *
57    * @return The resolved {@link Supplier} or empty.
58    */
 
59  659 toggle @Override
60    public <T> Optional<Supplier<T>> resolveSupplier(ColumnMeta columnMeta)
61    {
62  659 for (var setting : viableSettings) {
63  674 var resolvedSpec = setting.<T>resolveSupplier(columnMeta);
64  674 if (resolvedSpec.isPresent()) {
65  659 return resolvedSpec;
66    }
67    }
68   
69  0 return Optional.empty();
70    }
71   
72    /**
73    * {@inheritDoc}
74    */
 
75  899 toggle @Override
76    public boolean isAutoGenerating(ColumnMeta column)
77    {
78  899 return viableSettings.get(0).isAutoGenerating(column);
79    }
80    }