diff --git a/pom.xml b/pom.xml
index cd28a76..d6f8798 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,7 +34,7 @@
eu.dnetlib
uoa-validator-engine2
- 0.9.0
+ 1.9.9-local
diff --git a/src/main/java/eu/dnetlib/validatorapi/RecordAggregationStrategy.java b/src/main/java/eu/dnetlib/validatorapi/RecordAggregationStrategy.java
new file mode 100644
index 0000000..85d1227
--- /dev/null
+++ b/src/main/java/eu/dnetlib/validatorapi/RecordAggregationStrategy.java
@@ -0,0 +1,38 @@
+package eu.dnetlib.validatorapi;
+
+import org.apache.camel.AggregationStrategy;
+import org.apache.camel.Exchange;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class RecordAggregationStrategy implements AggregationStrategy {
+ private static final int MAX_RECORDS = 2;
+
+ @Override
+ public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
+ if (oldExchange == null) {
+ // First record, create a new ArrayList to store records
+ newExchange.getIn().setHeader("recordList", new ArrayList<>());
+ return newExchange;
+ }
+
+ // Get the list of records from the oldExchange
+ List recordList = oldExchange.getIn().getHeader("recordList", List.class);
+ // Add the new record to the list
+ recordList.add(newExchange.getIn().getBody(String.class));
+
+ if (recordList.size() >= MAX_RECORDS) {
+ // Set the aggregated records as the message body
+ oldExchange.getIn().setBody(recordList);
+ // Remove the property to signal the route to stop
+ oldExchange.removeProperty(Exchange.ROUTE_STOP);
+ } else {
+ // Store the updated list back in the header for the next iteration
+ oldExchange.getIn().setHeader("recordList", recordList);
+ }
+
+ return oldExchange;
+ }
+}
+
diff --git a/src/main/java/eu/dnetlib/validatorapi/controllers/ValidationController.java b/src/main/java/eu/dnetlib/validatorapi/controllers/ValidationController.java
index 0c07721..a43f62b 100644
--- a/src/main/java/eu/dnetlib/validatorapi/controllers/ValidationController.java
+++ b/src/main/java/eu/dnetlib/validatorapi/controllers/ValidationController.java
@@ -119,14 +119,14 @@ public class ValidationController {
if (profile != null) {
XMLApplicationProfile.ValidationResult validationResult = profile.validate("id", doc); //what id is that?
- Map results = validationResult.results();
+ Map results = validationResult.getResults();
for (Map.Entry entry : results.entrySet()) {
Guideline.Result engineResult = (Guideline.Result) entry.getValue();
String recordUrl = extractRecordUrl(doc, "identifier");
String ruleName = entry.getKey().toString();
ValidationRuleResult validationRuleResult = constructValidationRuleResult(validationJob.id, recordUrl,
ruleName, profile, engineResult);
- resultSum += engineResult.score();
+ resultSum += engineResult.getScore();
validationResultRepository.save(validationRuleResult);
//saveValidationIssues(validationJob.id, recordUrl, ruleName, engineResult);
@@ -309,9 +309,9 @@ public class ValidationController {
validationRuleResult.ruleWeight = profile.guideline(validationRuleResult.ruleName).getWeight();
validationRuleResult.recordUrl = extractRecordUrl(document, "dc:identifier");
Guideline.Result engineResult = (Guideline.Result) entry.getValue();
- validationRuleResult.score = engineResult.score();
- validationRuleResult.status = engineResult.status().toString();
- validationRuleResult.internalError = engineResult.internalError();
+ validationRuleResult.score = engineResult.getScore();
+ validationRuleResult.status = engineResult.getStatus().toString();
+ validationRuleResult.internalError = engineResult.getInternalError();
}
@@ -325,9 +325,9 @@ public class ValidationController {
validationRuleResult.ruleWeight = profile.guideline(validationRuleResult.ruleName).getWeight();
validationRuleResult.recordUrl = extractRecordUrl(document, "dc:identifier");
Guideline.Result engineResult = (Guideline.Result) entry.getValue();
- validationRuleResult.score = engineResult.score();
- validationRuleResult.status = engineResult.status().toString();
- validationRuleResult.internalError = engineResult.internalError();
+ validationRuleResult.score = engineResult.getScore();
+ validationRuleResult.status = engineResult.getStatus().toString();
+ validationRuleResult.internalError = engineResult.getInternalError();
return validationRuleResult;
}
@@ -373,9 +373,9 @@ public class ValidationController {
validationRuleResult.ruleName = ruleName;
validationRuleResult.ruleWeight = profile.guideline(ruleName).getWeight();
validationRuleResult.recordUrl = recordUrl;
- validationRuleResult.score = engineResult.score();
- validationRuleResult.status = engineResult.status().toString();
- validationRuleResult.internalError = engineResult.internalError();
+ validationRuleResult.score = engineResult.getScore();
+ validationRuleResult.status = engineResult.getStatus().toString();
+ validationRuleResult.internalError = engineResult.getInternalError();
return validationRuleResult;
}
@@ -432,10 +432,8 @@ public class ValidationController {
return new FAIR_Data_GuidelinesProfile();
} else if (guidelinesProfileName.equals("OpenAIRE Guidelines for Literature Repositories Profile v4")) {
- System.out.println("\n\n\nRETURNING FAIR LITERATURE\n\n\n");
- System.out.println("\n\n\n" + new FAIR_Literature_GuidelinesV4Profile().name() + "\n\n\n");
+ return new FAIR_Literature_GuidelinesV4Profile();
- return new FAIR_Literature_GuidelinesV4Profile();
}
return null;
@@ -496,7 +494,7 @@ public class ValidationController {
//what id is that?
XMLApplicationProfile.ValidationResult validationResult = profile.validate("id", doc);
- Map results = validationResult.results();
+ Map results = validationResult.getResults();
for (Map.Entry entry : results.entrySet()) {
ValidationRuleResult validationRuleResult = new ValidationRuleResult();
@@ -504,14 +502,14 @@ public class ValidationController {
validationRuleResult.ruleName = entry.getKey().toString();
validationRuleResult.recordUrl = "localhost://records/record["+record+"]"; // silly id
Guideline.Result engineResult = (Guideline.Result) entry.getValue();
- validationRuleResult.score = engineResult.score();
- validationRuleResult.status = engineResult.status().toString();
- validationRuleResult.internalError = engineResult.internalError();
+ validationRuleResult.score = engineResult.getScore();
+ validationRuleResult.status = engineResult.getStatus().toString();
+ validationRuleResult.internalError = engineResult.getInternalError();
System.out.println(validationRuleResult + " | " + validationRuleResult.hashCode() + "\n");
validationResultRepository.save(validationRuleResult);
validationRuleResults.add(validationRuleResult);
- resultSum += engineResult.score();
+ resultSum += engineResult.getScore();
}
diff --git a/src/main/java/eu/dnetlib/validatorapi/controllers/ValidatorController.java b/src/main/java/eu/dnetlib/validatorapi/controllers/ValidatorController.java
index f6b9c7a..28519ad 100644
--- a/src/main/java/eu/dnetlib/validatorapi/controllers/ValidatorController.java
+++ b/src/main/java/eu/dnetlib/validatorapi/controllers/ValidatorController.java
@@ -71,8 +71,8 @@ public class ValidatorController {
result = profile.validate("id", doc);
Date date = new Date();
- scorePerDoc.put("input-" + date.toString(), result.score());
- Map results = result.results();
+ scorePerDoc.put("input-" + date.toString(), result.getScore());
+ Map results = result.getResults();
log.debug("\n\nPrinting results...");
for (Map.Entry entry : results.entrySet()) {
log.debug(entry.getKey() + " = " + entry.getValue());
@@ -81,11 +81,11 @@ public class ValidatorController {
ruleInfo.setName(entry.getKey().toString());
Guideline.Result res = (Guideline.Result) entry.getValue();
- ruleInfo.setErrors((List) res.errors());
- ruleInfo.setWarnings((List) res.warnings());
- ruleInfo.setInternalError(res.internalError());
- ruleInfo.setScore(res.score());
- ruleInfo.setStatus(res.status());
+ ruleInfo.setErrors((List) res.getErrors());
+ ruleInfo.setWarnings((List) res.getWarnings());
+ ruleInfo.setInternalError(res.getInternalError());
+ ruleInfo.setScore(res.getScore());
+ ruleInfo.setStatus(res.getStatus());
resultRules.add(ruleInfo);
}
@@ -107,8 +107,8 @@ public class ValidatorController {
result = fairProfile.validate("id", doc);
Date date = new Date();
- scorePerDoc.put("input-"+date.toString(), result.score());
- Map results = result.results();
+ scorePerDoc.put("input-"+date.toString(), result.getScore());
+ Map results = result.getResults();
log.debug("\n\nPrinting FAIR results...");
for (Map.Entry entry : results.entrySet()) {
// if (!entry.getValue().toString().contains("eu.dnetlib.validator2")) {
@@ -118,11 +118,11 @@ public class ValidatorController {
ruleInfo.setName(entry.getKey().toString());
Guideline.Result res = (Guideline.Result) entry.getValue();
- ruleInfo.setErrors((List) res.errors());
- ruleInfo.setWarnings((List) res.warnings());
- ruleInfo.setInternalError(res.internalError());
- ruleInfo.setScore(res.score());
- ruleInfo.setStatus(res.status());
+ ruleInfo.setErrors((List) res.getErrors());
+ ruleInfo.setWarnings((List) res.getWarnings());
+ ruleInfo.setInternalError(res.getInternalError());
+ ruleInfo.setScore(res.getScore());
+ ruleInfo.setStatus(res.getStatus());
fairRules.add(ruleInfo);
// }
@@ -182,8 +182,8 @@ public class ValidatorController {
Document doc = db.parse(filePath);
result = profile.validate("id", doc);
Date date = new Date();
- scorePerDoc.put("input-"+date.toString(), result.score());
- Map results = result.results();
+ scorePerDoc.put("input-"+date.toString(), result.getScore());
+ Map results = result.getResults();
log.debug("\n\nPrinting results...");
for (Map.Entry entry : results.entrySet()) {
log.debug(entry.getKey() + " = " + entry.getValue());
diff --git a/src/main/java/eu/dnetlib/validatorapi/exceptions/CustomRejectedExecutionHandler.java b/src/main/java/eu/dnetlib/validatorapi/exceptions/CustomRejectedExecutionHandler.java
new file mode 100644
index 0000000..23de94e
--- /dev/null
+++ b/src/main/java/eu/dnetlib/validatorapi/exceptions/CustomRejectedExecutionHandler.java
@@ -0,0 +1,12 @@
+package eu.dnetlib.validatorapi.exceptions;
+
+import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.RejectedExecutionHandler;
+import java.util.concurrent.ThreadPoolExecutor;
+
+public class CustomRejectedExecutionHandler implements RejectedExecutionHandler {
+ //@Override
+ public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
+ throw new RejectedExecutionException("Task rejected: " + r.toString());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/eu/dnetlib/validatorapi/processors/XmlProcessor.java b/src/main/java/eu/dnetlib/validatorapi/processors/XmlProcessor.java
index cb9b73a..d200308 100644
--- a/src/main/java/eu/dnetlib/validatorapi/processors/XmlProcessor.java
+++ b/src/main/java/eu/dnetlib/validatorapi/processors/XmlProcessor.java
@@ -48,13 +48,13 @@ public class XmlProcessor implements Processor {
final DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
Document doc = documentBuilder.parse(new InputSource(new StringReader(recordXml)));
String recordUrl = extractRecordUrl(doc, "identifier");
+ System.out.println("Record url: " + recordUrl);
List validationRuleResults = new ArrayList<>();
List validationIssues = new ArrayList<>();
- System.out.println("\n\n\nProcess with guideline " + profile.name());
if (profile != null) {
XMLApplicationProfile.ValidationResult validationResult = profile.validate("id", doc); //what id is that?
- Map results = validationResult.results();
+ Map results = validationResult.getResults();
ValidationRuleResult validationRuleResult;
for (Map.Entry entry : results.entrySet()) { //for each rule of the record
@@ -68,22 +68,22 @@ public class XmlProcessor implements Processor {
this.status = "FAILURE";
}
- if (engineResult.errors()!= null && engineResult.errors().iterator().hasNext()) {
+ if (engineResult.getErrors()!= null && engineResult.getErrors().iterator().hasNext()) {
validationRuleResult.hasErrors = true;
- for (String error:engineResult.errors()) {
+ for (String error:engineResult.getErrors()) {
validationIssues.add(new ValidationIssue(validationJob.id, ruleName, recordUrl, error,"ERROR"));
}
}
- if (engineResult.warnings()!= null && engineResult.warnings().iterator().hasNext()) {
+ if (engineResult.getWarnings()!= null && engineResult.getWarnings().iterator().hasNext()) {
validationRuleResult.hasWarnings = true;
- for (String warning:engineResult.warnings()) {
+ for (String warning:engineResult.getWarnings()) {
validationIssues.add(new ValidationIssue(validationJob.id, ruleName, recordUrl, warning, "WARNING"));
}
}
validationRuleResults.add(validationRuleResult);
- scoreSum += engineResult.score();
+ scoreSum += engineResult.getScore();
}
}
@@ -98,25 +98,18 @@ public class XmlProcessor implements Processor {
// System.out.println("Validation Issues: " + validationIssues);
- exchange.getIn().setHeader("MyHeader", "SKATA");
-
+ System.out.println("processed records: " + processedRecords);
if (processedRecords > maxNumberOfRecords) {
exchange.getIn().setHeader("MyHeader", "stop");
exchange.getIn().setHeader("validationId", validationJob.id);
exchange.getIn().setHeader("baseUrl", validationJob.baseUrl);
exchange.getIn().setHeader("set", validationJob.set);
exchange.getIn().setHeader("startDate", validationJob.startDate);
- System.out.println("\n\n\n" + validationJob.id +": set guidelines "+ validationJob.guidelines + "\n\n\n");
exchange.getIn().setHeader("guidelines", validationJob.guidelines);
exchange.getIn().setHeader("status", status);
exchange.getIn().setHeader("recordsTested", processedRecords-1);
exchange.getIn().setHeader("maxNumberOfRecords", maxNumberOfRecords);
exchange.getIn().setHeader("score", scoreSum/processedRecords);
-
-
- System.out.println("\n\n\n\n\n PLACE STOP HEADER \n\n\n\n\n\n");
-
-
//exchange.setRouteStop(true);
}
}
@@ -157,8 +150,8 @@ public class XmlProcessor implements Processor {
}
validationRuleResult.recordUrl = recordUrl;
- validationRuleResult.score = engineResult.score();
- validationRuleResult.status = engineResult.status().toString();
- validationRuleResult.internalError = engineResult.internalError();
+ validationRuleResult.score = engineResult.getScore();
+ validationRuleResult.status = engineResult.getStatus().toString();
+ validationRuleResult.internalError = engineResult.getInternalError();
}
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index f0dfbba..e641bde 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -6,4 +6,15 @@ spring.datasource.username=dnet
spring.datasource.password=pass
#drop n create table again, good for testing, comment this in production or set as validate
-spring.jpa.hibernate.ddl-auto=update
\ No newline at end of file
+spring.jpa.hibernate.ddl-auto=update
+
+#springdoc.packagesToScan=eu.dnetlib.validatorapi.controllers
+#eu.dnetlib.validatorapi.controllers=/v1
+
+#spring.mvc.pathmatch.matching-strategy=ant-path-matcher
+
+#logging.level.org.apache.camel=error
+logging.level.eu.dnetlib.validator2.validation.guideline=OFF
+#camel.springboot.tracing=true
+logging.level.org.hibernate.SQL=info
+#logging.level.org.hibernate.type.descriptor.sql=trace
\ No newline at end of file