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

pkiraly / metadata-qa-api / #674

07 May 2025 02:48PM UTC coverage: 87.247% (+0.01%) from 87.237%
#674

push

pkiraly
Implement SonarCloud quality suggestions #159

11 of 13 new or added lines in 6 files covered. (84.62%)

1 existing line in 1 file now uncovered.

5521 of 6328 relevant lines covered (87.25%)

0.87 hits per line

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

53.85
/src/main/java/de/gwdg/metadataqa/api/rule/logical/OrChecker.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
import java.util.logging.Logger;
17

18
public class OrChecker extends LogicalChecker {
19

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

22
  private static final long serialVersionUID = 1114999259831619599L;
23
  public static final String PREFIX = "or";
24

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

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

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

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

82
        if (!allPassed)
×
83
          break;
×
84
      }
×
85
    }
86
    if (output != null) {
1✔
87
      addOutput(results, output, outputType);
×
88
    } else {
89
      addOutput(results, isNA, allPassed, outputType);
1✔
90
    }
91
    if (isDebug()) {
1✔
92
      RuleCheckingOutputStatus status = output != null
×
93
        ? output.getStatus()
×
94
        : RuleCheckingOutputStatus.create(isNA, allPassed, isMandatory());
×
95
      LOGGER.info(String.format("%s %s) isNA: %s, allPassed: %s, result: %s", this.getClass().getSimpleName(), this.id, isNA, allPassed, status));
×
96
    }
97
  }
1✔
98
}
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