From 8c8c68583a27e37793cc052fb4a82e7961ff756e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Kir=C3=A1ly?= Date: Wed, 29 Jan 2025 13:12:47 +0100 Subject: [PATCH] Set up optional dependency between 'and' and 'dependencies' checkers #215 --- .../metadataqa/api/rule/logical/AndChecker.java | 13 ++++++++++++- .../rule/singlefieldchecker/DependencyChecker.java | 5 ++++- .../metadataqa/api/util/IdentifierGenerator.java | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/gwdg/metadataqa/api/rule/logical/AndChecker.java b/src/main/java/de/gwdg/metadataqa/api/rule/logical/AndChecker.java index 02aa4aa..2467da5 100644 --- a/src/main/java/de/gwdg/metadataqa/api/rule/logical/AndChecker.java +++ b/src/main/java/de/gwdg/metadataqa/api/rule/logical/AndChecker.java @@ -18,6 +18,11 @@ public class AndChecker extends LogicalChecker { private static final long serialVersionUID = 1114999259831619599L; public static final String PREFIX = "and"; + /** + * If the values is NA, check dependencies. and that will decide if it passes or not + */ + private boolean ifIsNACheckDependency = false; + /** * @param field The field * @param checkers The list of checkers @@ -59,10 +64,12 @@ public void update(Selector cache, FieldCounter results, Rule MinCountChecker minCountChecker = (MinCountChecker) checker; if (!minCountChecker.isEmptyInstancesAllowed() || minCountChecker.getMinCount() > 0) allPassed = false; - } else if (checker instanceof DependencyChecker) { + } + else if (ifIsNACheckDependency && checker instanceof DependencyChecker) { DependencyChecker dependencyChecker = (DependencyChecker) checker; allPassed = dependencyChecker.getResult(outputType, results); } + if (!allPassed) break; } @@ -72,4 +79,8 @@ public void update(Selector cache, FieldCounter results, Rule if (isDebug()) LOGGER.info(this.getClass().getSimpleName() + " " + this.id + ") result: " + RuleCheckingOutputStatus.create(isNA, allPassed)); } + + public void setIfIsNACheckDependency(boolean ifIsNACheckDependency) { + this.ifIsNACheckDependency = ifIsNACheckDependency; + } } diff --git a/src/main/java/de/gwdg/metadataqa/api/rule/singlefieldchecker/DependencyChecker.java b/src/main/java/de/gwdg/metadataqa/api/rule/singlefieldchecker/DependencyChecker.java index df3fccb..cb5de8e 100644 --- a/src/main/java/de/gwdg/metadataqa/api/rule/singlefieldchecker/DependencyChecker.java +++ b/src/main/java/de/gwdg/metadataqa/api/rule/singlefieldchecker/DependencyChecker.java @@ -54,13 +54,15 @@ public void update(Selector cache, if (globalResults == null) globalResults = localResults; - var allPassed = true; var isNA = true; + var allPassed = true; List instances = cache.get(field); if (instances != null && !instances.isEmpty()) { for (XmlFieldInstance instance : instances) { if (instance.hasValue()) { isNA = false; + allPassed = getResult(outputType, globalResults); + /* for (String ruleId : dependencies) { String keyEnd = outputType.equals(RuleCheckingOutputType.BOTH) ? ruleId + ":status" : ruleId; boolean found = false; @@ -78,6 +80,7 @@ public void update(Selector cache, break; } } + */ } } } diff --git a/src/main/java/de/gwdg/metadataqa/api/util/IdentifierGenerator.java b/src/main/java/de/gwdg/metadataqa/api/util/IdentifierGenerator.java index 6998ce6..fbe09da 100644 --- a/src/main/java/de/gwdg/metadataqa/api/util/IdentifierGenerator.java +++ b/src/main/java/de/gwdg/metadataqa/api/util/IdentifierGenerator.java @@ -10,7 +10,7 @@ public class IdentifierGenerator { public static String generate() { String id = PREFIX + String.valueOf(++identifier); - LOGGER.info("Generated identifier " + id); + // LOGGER.info("Generated identifier " + id); return id; }