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

pkiraly / metadata-qa-api / #717

28 Aug 2025 09:15AM UTC coverage: 86.426% (-0.1%) from 86.526%
#717

push

pkiraly
Add priorityOnFail

12 of 23 new or added lines in 4 files covered. (52.17%)

3 existing lines in 2 files now uncovered.

5654 of 6542 relevant lines covered (86.43%)

0.86 hits per line

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

74.47
/src/main/java/de/gwdg/metadataqa/api/rule/singlefieldchecker/DependencyChecker.java
1
package de.gwdg.metadataqa.api.rule.singlefieldchecker;
2

3
import de.gwdg.metadataqa.api.counter.FieldCounter;
4
import de.gwdg.metadataqa.api.json.DataElement;
5
import de.gwdg.metadataqa.api.model.XmlFieldInstance;
6
import de.gwdg.metadataqa.api.model.selector.Selector;
7
import de.gwdg.metadataqa.api.rule.RuleCheckerOutput;
8
import de.gwdg.metadataqa.api.rule.RuleCheckingOutputStatus;
9
import de.gwdg.metadataqa.api.rule.RuleCheckingOutputType;
10

11
import java.util.List;
12
import java.util.Map;
13
import java.util.logging.Logger;
14

15
public class DependencyChecker extends SingleFieldChecker {
16

17
  public static final String PREFIX = "dependency";
18
  protected List<String> dependencies;
19
  private RuleCheckingOutputStatus failedDepencencyStatus;
20

21
  private static final Logger LOGGER = Logger.getLogger(DependencyChecker.class.getCanonicalName());
1✔
22

23
  public DependencyChecker(DataElement field, List<String> dependencies) {
24
    this(field, field.getLabel(), dependencies, RuleCheckingOutputStatus.FAILED);
1✔
25
  }
1✔
26

27
  public DependencyChecker(DataElement field,
28
                           List<String> dependencies,
29
                           RuleCheckingOutputStatus failedDepencencyStatus) {
30
    this(field, field.getLabel(), dependencies, failedDepencencyStatus);
×
31
  }
×
32

33
  public DependencyChecker(DataElement field,
34
                           String header,
35
                           List<String> dependencies,
36
                           RuleCheckingOutputStatus failedDepencencyStatus) {
37
    super(field, header + ":" + PREFIX);
1✔
38
    this.dependencies = dependencies;
1✔
39
    this.failedDepencencyStatus = failedDepencencyStatus;
1✔
40
  }
1✔
41

42
  @Override
43
  public void update(Selector selector, FieldCounter<RuleCheckerOutput> results, RuleCheckingOutputType outputType) {
44
    update(selector, results, outputType, null);
×
45
  }
×
46

47
  public void update(Selector cache,
48
                     FieldCounter<RuleCheckerOutput> localResults,
49
                     RuleCheckingOutputType outputType,
50
                     FieldCounter<RuleCheckerOutput> globalResults) {
51
    if (isDebug())
1✔
NEW
52
      LOGGER.info(this.getClass().getSimpleName() + " " + this.id + ", dependencies: " + getDependencies());
×
53

54
    if (globalResults == null) {
1✔
55
      globalResults = localResults;
×
56
    }
57

58
    var isNA = true;
1✔
59
    var allPassed = true;
1✔
60
    List<XmlFieldInstance> instances = cache.get(field);
1✔
61
    if (instances != null && !instances.isEmpty()) {
1✔
62
      for (XmlFieldInstance instance : instances) {
1✔
63
        isNA = false;
1✔
64
      }
1✔
65
    }
66
    Map<String, Boolean> result = getResult(outputType, globalResults);
1✔
67
    allPassed = result.get("allPassed");
1✔
68
    isNA = result.get("isNA");
1✔
69

70
    addOutput(localResults, isNA, allPassed, outputType);
1✔
71
    if (isDebug())
1✔
72
      LOGGER.info(String.format("%s %s) result: %s [isNA: %s, allPassed: %s, isMandatory: %s]", this.getClass().getSimpleName(), this.id, RuleCheckingOutputStatus.create(isNA, allPassed, isMandatory()), isNA, allPassed, isMandatory()));
×
73
  }
1✔
74

75
  public List<String> getDependencies() {
76
    return dependencies;
×
77
  }
78

79
  public Map<String, Boolean> getResult(RuleCheckingOutputType outputType,
80
                                        FieldCounter<RuleCheckerOutput> globalResults) {
81
    boolean allPassed = true;
1✔
82
    boolean isNA = true;
1✔
83
    for (String ruleId : dependencies) {
1✔
84
      String outputKey = outputType.equals(RuleCheckingOutputType.BOTH) ? ruleId + ":status" : ruleId;
1✔
85
      if (globalResults.has(outputKey)) {
1✔
86
        var status = globalResults.get(outputKey).getStatus();
1✔
87
        if (!status.equals(RuleCheckingOutputStatus.PASSED))
1✔
88
          allPassed = false;
1✔
89
        if (!status.equals(RuleCheckingOutputStatus.NA))
1✔
90
          isNA = false;
1✔
91
      } else {
1✔
92
        LOGGER.warning(String.format("Referenced rule (ids: %s->%s) is missing (key: %s)", getId(), ruleId, outputKey));
×
93
        LOGGER.warning("globalResults: " + globalResults.getMap());
×
94
        allPassed = false;
×
95
        break;
×
96
      }
97
    }
1✔
98
    return Map.of("allPassed", allPassed, "isNA", isNA);
1✔
99
  }
100
}
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