Integrating the 871b2ec6e5 commit of validator-engine2. You need to install it locally, therefore I have added it as 1.9.9-local version in my pom.xml
This commit is contained in:
parent
d42d8fc09b
commit
1a99c041d3
2
pom.xml
2
pom.xml
|
@ -34,7 +34,7 @@
|
|||
<dependency>
|
||||
<groupId>eu.dnetlib</groupId>
|
||||
<artifactId>uoa-validator-engine2</artifactId>
|
||||
<version>0.9.0</version>
|
||||
<version>1.9.9-local</version>
|
||||
</dependency>
|
||||
|
||||
<!-- spring boot -->
|
||||
|
|
|
@ -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<String> 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;
|
||||
}
|
||||
}
|
||||
|
|
@ -119,14 +119,14 @@ public class ValidationController {
|
|||
if (profile != null) {
|
||||
XMLApplicationProfile.ValidationResult validationResult = profile.validate("id", doc); //what id is that?
|
||||
|
||||
Map<String, Guideline.Result> results = validationResult.results();
|
||||
Map<String, Guideline.Result> 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<String, Guideline.Result> results = validationResult.results();
|
||||
Map<String, Guideline.Result> 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();
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -71,8 +71,8 @@ public class ValidatorController {
|
|||
|
||||
result = profile.validate("id", doc);
|
||||
Date date = new Date();
|
||||
scorePerDoc.put("input-" + date.toString(), result.score());
|
||||
Map<String, Guideline.Result> results = result.results();
|
||||
scorePerDoc.put("input-" + date.toString(), result.getScore());
|
||||
Map<String, Guideline.Result> 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<String>) res.errors());
|
||||
ruleInfo.setWarnings((List<String>) res.warnings());
|
||||
ruleInfo.setInternalError(res.internalError());
|
||||
ruleInfo.setScore(res.score());
|
||||
ruleInfo.setStatus(res.status());
|
||||
ruleInfo.setErrors((List<String>) res.getErrors());
|
||||
ruleInfo.setWarnings((List<String>) 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<String, Guideline.Result> results = result.results();
|
||||
scorePerDoc.put("input-"+date.toString(), result.getScore());
|
||||
Map<String, Guideline.Result> 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<String>) res.errors());
|
||||
ruleInfo.setWarnings((List<String>) res.warnings());
|
||||
ruleInfo.setInternalError(res.internalError());
|
||||
ruleInfo.setScore(res.score());
|
||||
ruleInfo.setStatus(res.status());
|
||||
ruleInfo.setErrors((List<String>) res.getErrors());
|
||||
ruleInfo.setWarnings((List<String>) 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<String, Guideline.Result> results = result.results();
|
||||
scorePerDoc.put("input-"+date.toString(), result.getScore());
|
||||
Map<String, Guideline.Result> results = result.getResults();
|
||||
log.debug("\n\nPrinting results...");
|
||||
for (Map.Entry entry : results.entrySet()) {
|
||||
log.debug(entry.getKey() + " = " + entry.getValue());
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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<ValidationRuleResult> validationRuleResults = new ArrayList<>();
|
||||
List<ValidationIssue> 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<String, Guideline.Result> results = validationResult.results();
|
||||
Map<String, Guideline.Result> 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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
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
|
Loading…
Reference in New Issue