• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In
Build has been canceled!

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

74.36
/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 cache, FieldCounter<RuleCheckerOutput> results, RuleCheckingOutputType outputType) {
44
    update(cache, 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
        if (instance.hasValue()) {
1✔
63
          isNA = false;
1✔
64
          allPassed = getResult(outputType, globalResults);
1✔
65
        }
66
      }
1✔
67
    }
68

69
    addOutput(localResults, isNA, allPassed, outputType);
1✔
70
    if (isDebug())
1✔
71
      LOGGER.info(this.getClass().getSimpleName() + " " + this.id + ") result: " + RuleCheckingOutputStatus.create(isNA, allPassed));
×
72
  }
1✔
73

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

78
  public boolean getResult(RuleCheckingOutputType outputType,
79
                           FieldCounter<RuleCheckerOutput> globalResults) {
80
    boolean allPassed = true;
1✔
81
    for (String ruleId : dependencies) {
1✔
82
      String keyEnd = outputType.equals(RuleCheckingOutputType.BOTH) ? ruleId + ":status" : ruleId;
1✔
83
      if (globalResults.has(keyEnd)) {
1✔
84
        if (!globalResults.get(keyEnd).getStatus().equals(RuleCheckingOutputStatus.PASSED)) {
1✔
85
          allPassed = false;
1✔
86
        }
87
      } else {
UNCOV
88
        allPassed = false;
×
89
        break;
×
90
      }
91
    }
1✔
92
    return allPassed;
1✔
93
  }
94
}
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