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

pkiraly / metadata-qa-api / #653

16 Apr 2025 09:19AM UTC coverage: 87.233% (+0.3%) from 86.972%
#653

push

pkiraly
In dependencies: isNA only if all isNA

13 of 20 new or added lines in 3 files covered. (65.0%)

5521 of 6329 relevant lines covered (87.23%)

0.87 hits per line

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

88.64
/src/main/java/de/gwdg/metadataqa/api/rule/logical/AndChecker.java
1
package de.gwdg.metadataqa.api.rule.logical;
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.RuleChecker;
8
import de.gwdg.metadataqa.api.rule.RuleCheckerOutput;
9
import de.gwdg.metadataqa.api.rule.RuleCheckingOutputStatus;
10
import de.gwdg.metadataqa.api.rule.RuleCheckingOutputType;
11
import de.gwdg.metadataqa.api.rule.singlefieldchecker.DependencyChecker;
12
import de.gwdg.metadataqa.api.rule.singlefieldchecker.MinCountChecker;
13

14
import java.util.List;
15
import java.util.Map;
16

17
public class AndChecker extends LogicalChecker {
18

19
  private static final long serialVersionUID = 1114999259831619599L;
20
  public static final String PREFIX = "and";
21

22
  /**
23
   * @param field The field
24
   * @param checkers The list of checkers
25
   */
26
  public AndChecker(DataElement field, List<RuleChecker> checkers) {
27
    this(field, field.getLabel(), checkers);
1✔
28
  }
1✔
29

30
  public AndChecker(DataElement field, String header, List<RuleChecker> checkers) {
31
    super(field,header + ":" + PREFIX + ":" + getChildrenHeader(checkers));
1✔
32
    this.checkers = checkers;
1✔
33
  }
1✔
34

35
  @Override
36
  public void update(Selector cache, FieldCounter<RuleCheckerOutput> results, RuleCheckingOutputType outputType) {
37
    if (isDebug())
1✔
38
      LOGGER.info(this.getClass().getSimpleName() + " " + this.id);
1✔
39

40
    var allPassed = true;
1✔
41
    var isNA = false;
1✔
42
    List<XmlFieldInstance> instances = cache.get(field);
1✔
43
    if (instances != null && !instances.isEmpty()) {
1✔
44
      FieldCounter<RuleCheckerOutput> localResults = new FieldCounter<>();
1✔
45
      for (RuleChecker checker : checkers) {
1✔
46
        if (checker instanceof DependencyChecker)
1✔
47
          ((DependencyChecker)checker).update(cache, localResults, outputType, results);
1✔
48
        else
49
          checker.update(cache, localResults, outputType);
1✔
50
        String key = outputType.equals(RuleCheckingOutputType.BOTH) ? checker.getIdOrHeader(RuleCheckingOutputType.SCORE) : checker.getIdOrHeader();
1✔
51
        RuleCheckingOutputStatus status = localResults.get(key).getStatus();
1✔
52
        if (status.equals(RuleCheckingOutputStatus.NA))
1✔
NEW
53
          isNA = true;
×
54
        if (!status.equals(RuleCheckingOutputStatus.PASSED)) {
1✔
55
          allPassed = false;
1✔
56
          break;
1✔
57
        }
58
      }
1✔
59
    } else {
1✔
60
      isNA = true;
1✔
61
      for (RuleChecker checker : checkers) {
1✔
62
        if (checker instanceof MinCountChecker) {
1✔
63
          MinCountChecker minCountChecker = (MinCountChecker) checker;
1✔
64
          if (!minCountChecker.isEmptyInstancesAllowed() || minCountChecker.getMinCount() > 0)
1✔
65
            allPassed = false;
1✔
66
        }
1✔
67
        else if (alwaysCheckDependencies && checker instanceof DependencyChecker) {
1✔
68
          DependencyChecker dependencyChecker = (DependencyChecker) checker;
×
NEW
69
          Map<String, Boolean> result = dependencyChecker.getResult(outputType, results);
×
NEW
70
          allPassed = result.get("allPassed");
×
NEW
71
          isNA = result.get("isNA");
×
72
        }
73

74
        if (!allPassed)
1✔
75
          break;
1✔
76
      }
1✔
77
    }
78
    addOutput(results, isNA, allPassed, outputType);
1✔
79

80
    if (isDebug())
1✔
81
      LOGGER.info(this.getClass().getSimpleName() + " " + this.id + ") result: " + RuleCheckingOutputStatus.create(isNA, allPassed, isMandatory()));
1✔
82
  }
1✔
83
}
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