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

File ReferenceSettingStepImpl.java

 

Coverage histogram

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

Code metrics

0
15
5
2
70
54
5
0.33
3
2.5
1

Classes

Class Line # Actions
ReferenceSettingStepImpl 12 7 0% 2 0
1.0100%
ReferenceSettingStepImpl.CardinalityStepImpl 13 8 0% 3 0
1.0100%
 

Contributing tests

This file is covered by 9 tests. .

Source view

1    package guru.mikelue.foxglove.jdbc;
2   
3    import java.util.function.Consumer;
4   
5    import org.apache.commons.lang3.Validate;
6   
7    import guru.mikelue.foxglove.jdbc.ColumnSettingSteps.ReferenceSettingStep;
8    import guru.mikelue.foxglove.jdbc.JdbcTableFacet.Builder;
9   
10    import static org.apache.commons.lang3.StringUtils.trimToEmpty;
11   
 
12    class ReferenceSettingStepImpl<T> implements ReferenceSettingStep<T> {
 
13    private class CardinalityStepImpl implements CardinalityStep {
14    private final JdbcTableFacet parentTable;
15    private final String columnName;
16   
 
17  10 toggle private CardinalityStepImpl(JdbcTableFacet parentTable, String columnName)
18    {
19  10 this.parentTable = parentTable;
20  10 this.columnName = columnName;
21    }
22   
 
23  6 toggle @Override
24    public JdbcTableFacet.Builder cardinality(int numberOfReferences)
25    {
26  6 Validate.isTrue(numberOfReferences > 0, "Number of references must be greater than zero");
27   
28  6 return cardinality(numberOfReferences, numberOfReferences);
29    }
30   
 
31  10 toggle @Override
32    public Builder cardinality(int min, int max)
33    {
34  10 Validate.isTrue(min >= 0, "Number of references must be greater than or equal to zero");
35  10 Validate.isTrue(max >= min, "Max number of references must be greater than or equal to min");
36   
37  10 finalStageSetter.accept(
38    new CardinalityInfo<T>(
39    min, max,
40    parentTable, columnName
41    )
42    );
43   
44  10 return baseBuilder;
45    }
46    }
47   
48    private final JdbcTableFacet.Builder baseBuilder;
49    private final Consumer<CardinalityInfo<T>> finalStageSetter;
50   
 
51  10 toggle ReferenceSettingStepImpl(
52    JdbcTableFacet.Builder baseBuilder,
53    Consumer<CardinalityInfo<T>> finalStageSetter
54    ) {
55  10 this.baseBuilder = baseBuilder;
56  10 this.finalStageSetter = finalStageSetter;
57    }
58   
 
59  10 toggle @Override
60    public CardinalityStep parent(JdbcTableFacet parentTable, String referencedColumn)
61    {
62  10 var safeReferencedColumn = trimToEmpty(referencedColumn).toLowerCase();
63   
64  10 Validate.notNull(parentTable, "Parent table must not be null");
65  10 Validate.notEmpty(safeReferencedColumn, "Referenced column must not be empty");
66   
67  10 parentTable.getValueTomb().keepColumn(safeReferencedColumn);
68  10 return new CardinalityStepImpl(parentTable, safeReferencedColumn);
69    }
70    }