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

pkiraly / metadata-qa-api / #625

29 Jan 2025 12:12PM UTC coverage: 87.702% (-0.003%) from 87.705%
#625

push

pkiraly
Set up optional dependency between 'and' and 'dependencies' checkers #215

5 of 7 new or added lines in 2 files covered. (71.43%)

4 existing lines in 2 files now uncovered.

5327 of 6074 relevant lines covered (87.7%)

0.88 hits per line

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

90.48
/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

16
public class AndChecker extends LogicalChecker {
17

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

21
  /**
22
   * If the values is NA, check dependencies. and that will decide if it passes or not
23
   */
24
  private boolean ifIsNACheckDependency = false;
1✔
25

26
  /**
27
   * @param field The field
28
   * @param checkers The list of checkers
29
   */
30
  public AndChecker(DataElement field, List<RuleChecker> checkers) {
31
    this(field, field.getLabel(), checkers);
1✔
32
  }
1✔
33

34
  public AndChecker(DataElement field, String header, List<RuleChecker> checkers) {
35
    super(field,header + ":" + PREFIX + ":" + getChildrenHeader(checkers));
1✔
36
    this.checkers = checkers;
1✔
37
  }
1✔
38

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

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

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

79
    if (isDebug())
1✔
80
      LOGGER.info(this.getClass().getSimpleName() + " " + this.id + ") result: " + RuleCheckingOutputStatus.create(isNA, allPassed));
1✔
81
  }
1✔
82

83
  public void setIfIsNACheckDependency(boolean ifIsNACheckDependency) {
NEW
84
    this.ifIsNACheckDependency = ifIsNACheckDependency;
×
NEW
85
  }
×
86
}
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