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

pkiraly / metadata-qa-api / #713

12 Aug 2025 06:23PM UTC coverage: 86.646% (-0.01%) from 86.658%
#713

push

pkiraly
Merge branch 'main' of github.com:pkiraly/metadata-qa-api

5619 of 6485 relevant lines covered (86.65%)

0.87 hits per line

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

76.09
/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
  private static final Logger LOGGER = Logger.getLogger(DependencyChecker.class.getCanonicalName());
1✔
18

19
  public static final String PREFIX = "dependency";
20
  protected List<String> dependencies;
21
  private RuleCheckingOutputStatus failedDepencencyStatus;
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✔
52
      LOGGER.info(this.getClass().getSimpleName() + " " + this.id);
×
53

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

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

69
    addOutput(localResults, isNA, allPassed, outputType);
1✔
70
    if (isDebug())
1✔
71
      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()));
×
72
  }
1✔
73

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

78
  public Map<String, Boolean> getResult(RuleCheckingOutputType outputType,
79
                                        FieldCounter<RuleCheckerOutput> globalResults) {
80
    boolean allPassed = true;
1✔
81
    boolean isNA = true;
1✔
82
    for (String ruleId : dependencies) {
1✔
83
      String outputKey = outputType.equals(RuleCheckingOutputType.BOTH) ? ruleId + ":status" : ruleId;
1✔
84
      if (globalResults.has(outputKey)) {
1✔
85
        var status = globalResults.get(outputKey).getStatus();
1✔
86

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 (id: %s) is missing", ruleId));
×
93
        allPassed = false;
×
94
        break;
×
95
      }
96
    }
1✔
97
    return Map.of("allPassed", allPassed, "isNA", isNA);
1✔
98
  }
99
}
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