• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pkiraly / metadata-qa-api / #634

13 Mar 2025 08:06PM UTC coverage: 87.186% (-0.1%) from 87.296%
#634

push

pkiraly
Fix dependency checker #223

20 of 74 new or added lines in 11 files covered. (27.03%)

1 existing line in 1 file now uncovered.

5375 of 6165 relevant lines covered (87.19%)

0.87 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.08
/src/main/java/de/gwdg/metadataqa/api/rule/RuleCatalog.java
1
package de.gwdg.metadataqa.api.rule;
2

3
import de.gwdg.metadataqa.api.counter.FieldCounter;
4
import de.gwdg.metadataqa.api.interfaces.Calculator;
5
import de.gwdg.metadataqa.api.interfaces.MetricResult;
6
import de.gwdg.metadataqa.api.model.selector.Selector;
7
import de.gwdg.metadataqa.api.problemcatalog.FieldCounterBasedResult;
8
import de.gwdg.metadataqa.api.schema.Schema;
9

10
import java.io.Serializable;
11
import java.util.ArrayList;
12
import java.util.List;
13

14
public class RuleCatalog implements Calculator, Serializable {
15

16
  private static final String CALCULATOR_NAME = "ruleCatalog";
17
  private Schema schema;
18
  private boolean onlyIdInHeader = false;
1✔
19
  private RuleCheckingOutputType outputType = RuleCheckingOutputType.BOTH;
1✔
20
  private boolean hiddenIdsCollected = false;
1✔
21
  private List<String> hiddenIds = new ArrayList<>();
1✔
22

23
  public RuleCatalog(Schema schema) {
1✔
24
    this.schema = schema;
1✔
25
  }
1✔
26

27
  @Override
28
  public List<MetricResult> measure(Selector cache) {
29
    FieldCounter<RuleCheckerOutput> fieldCounter = new FieldCounter<>();
1✔
30
    var totalScore = 0;
1✔
31

32
    for (RuleChecker ruleChecker : schema.getRuleCheckers()) {
1✔
33
      ruleChecker.update(cache, fieldCounter, outputType);
1✔
34
      if (outputType != RuleCheckingOutputType.STATUS && !ruleChecker.isHidden()) {
1✔
35
        String key = outputType.equals(RuleCheckingOutputType.BOTH) ? ruleChecker.getIdOrHeader(RuleCheckingOutputType.SCORE) : ruleChecker.getIdOrHeader();
1✔
36
        Integer score = fieldCounter.get(key).getScore();
1✔
37
        if (score != null)
1✔
38
          totalScore += score.intValue();
1✔
39
      }
40
      if (!hiddenIdsCollected)
1✔
41
        collectHiddenIds(hiddenIds, ruleChecker);
1✔
42
    }
1✔
43
    if (!hiddenIdsCollected)
1✔
44
      hiddenIdsCollected = true;
1✔
45
    if (outputType != RuleCheckingOutputType.STATUS)
1✔
46
      fieldCounter.put(CALCULATOR_NAME + ":score", new RuleCheckerOutput(RuleCheckingOutputStatus.NA, totalScore).setOutputType(outputType));
1✔
47

48
    // TODO: fix it
49
    removeHiddenScores(fieldCounter, hiddenIds);
1✔
50

51
    return List.of(new FieldCounterBasedResult<>(getCalculatorName(), fieldCounter));
1✔
52
  }
53

54
  @Override
55
  public List<String> getHeader() {
56
    List<String> headers = new ArrayList<>();
1✔
57
    for (RuleChecker ruleChecker : schema.getRuleCheckers()) {
1✔
58
      if (!ruleChecker.isHidden()) {
1✔
59
        if (outputType != RuleCheckingOutputType.BOTH)
1✔
60
          headers.add(onlyIdInHeader ? ruleChecker.getId() : ruleChecker.getHeader());
1✔
61
        else {
62
          headers.add(onlyIdInHeader ? ruleChecker.getId() + ":status" : ruleChecker.getHeader(RuleCheckingOutputType.STATUS));
1✔
63
          headers.add(onlyIdInHeader ? ruleChecker.getId() + ":score" : ruleChecker.getHeader(RuleCheckingOutputType.SCORE));
1✔
64
        }
65
      }
66
    }
1✔
67
    if (outputType != RuleCheckingOutputType.STATUS)
1✔
68
      headers.add(CALCULATOR_NAME + ":score");
1✔
69
    return headers;
1✔
70
  }
71

72
  @Override
73
  public String getCalculatorName() {
74
    return CALCULATOR_NAME;
1✔
75
  }
76

77
  public RuleCatalog setOnlyIdInHeader(boolean onlyIdInHeader) {
78
    this.onlyIdInHeader = onlyIdInHeader;
1✔
79
    return this;
1✔
80
  }
81

82
  public RuleCatalog setOutputType(RuleCheckingOutputType outputType) {
83
    this.outputType = outputType;
1✔
84
    return this;
1✔
85
  }
86

87
  private void collectHiddenIds(List<String> hiddenIds, RuleChecker ruleChecker) {
88
    if (ruleChecker.isHidden()) {
1✔
89
      if (outputType.equals(RuleCheckingOutputType.BOTH)) {
1✔
NEW
90
        hiddenIds.add(ruleChecker.getIdOrHeader(RuleCheckingOutputType.SCORE));
×
NEW
91
        hiddenIds.add(ruleChecker.getIdOrHeader(RuleCheckingOutputType.STATUS));
×
92
      } else {
93
        hiddenIds.add(ruleChecker.getIdOrHeader());
1✔
94
      }
95
    }
96
  }
1✔
97

98
  private void removeHiddenScores(FieldCounter<RuleCheckerOutput> fieldCounter, List<String> hiddenIds) {
99
    if (!hiddenIds.isEmpty())
1✔
100
      for (String hiddenId : hiddenIds)
1✔
101
        fieldCounter.remove(hiddenId);
1✔
102
  }
1✔
103
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc