Fixed bug on storing validationIssues
This commit is contained in:
parent
7b5a9cad3d
commit
3b95f932f3
|
@ -213,7 +213,7 @@ public class ValidationController {
|
||||||
|
|
||||||
RouteBuilder oaiPmhRouteBuilder =
|
RouteBuilder oaiPmhRouteBuilder =
|
||||||
new OaiPmhRoute("oaipmh://"+baseURL + "?verb=ListRecords&metadataPrefix=" + metadataPrefix ,
|
new OaiPmhRoute("oaipmh://"+baseURL + "?verb=ListRecords&metadataPrefix=" + metadataPrefix ,
|
||||||
profile, validationJob, numberOfRecords, validationJobRepository, validationIssueRepository, validationResultRepository);
|
profile, validationJob, numberOfRecords);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
RouteBuilder oaiPmhRouteBuilder =
|
RouteBuilder oaiPmhRouteBuilder =
|
||||||
|
|
|
@ -27,6 +27,7 @@ public class XmlProcessor implements Processor {
|
||||||
// private final ValidationIssueRepository validationIssueRepository;
|
// private final ValidationIssueRepository validationIssueRepository;
|
||||||
private final long maxNumberOfRecords;
|
private final long maxNumberOfRecords;
|
||||||
private int processedRecords;
|
private int processedRecords;
|
||||||
|
private String status = "SUCCESS";
|
||||||
// private int resultSum;
|
// private int resultSum;
|
||||||
private int scoreSum;
|
private int scoreSum;
|
||||||
|
|
||||||
|
@ -47,6 +48,7 @@ public class XmlProcessor implements Processor {
|
||||||
final DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
|
final DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
|
||||||
Document doc = documentBuilder.parse(new InputSource(new StringReader(recordXml)));
|
Document doc = documentBuilder.parse(new InputSource(new StringReader(recordXml)));
|
||||||
String recordUrl = extractRecordUrl(doc, "identifier");
|
String recordUrl = extractRecordUrl(doc, "identifier");
|
||||||
|
System.out.println("Identifier: " + recordUrl);
|
||||||
List<ValidationRuleResult> validationRuleResults = new ArrayList<>();
|
List<ValidationRuleResult> validationRuleResults = new ArrayList<>();
|
||||||
List<ValidationIssue> validationIssues = new ArrayList<>();
|
List<ValidationIssue> validationIssues = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -62,22 +64,24 @@ public class XmlProcessor implements Processor {
|
||||||
constructValidationRuleResult(validationRuleResult, validationJob.id, profile.name(), recordUrl,
|
constructValidationRuleResult(validationRuleResult, validationJob.id, profile.name(), recordUrl,
|
||||||
ruleName, profile, engineResult);
|
ruleName, profile, engineResult);
|
||||||
|
|
||||||
|
if (validationRuleResult.status.equals("FAILURE") || validationRuleResult.internalError!=null) {
|
||||||
|
this.status = "FAILURE";
|
||||||
|
}
|
||||||
|
|
||||||
if (engineResult.errors()!= null && engineResult.errors().iterator().hasNext()) {
|
if (engineResult.errors()!= null && engineResult.errors().iterator().hasNext()) {
|
||||||
validationRuleResult.hasErrors = true;
|
validationRuleResult.hasErrors = true;
|
||||||
for (String error:engineResult.errors()) {
|
for (String error:engineResult.errors()) {
|
||||||
validationIssues.add(new ValidationIssue(validationJob.id, recordUrl, ruleName, error,"ERROR"));
|
validationIssues.add(new ValidationIssue(validationJob.id, ruleName, recordUrl, error,"ERROR"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (engineResult.warnings()!= null && engineResult.warnings().iterator().hasNext()) {
|
if (engineResult.warnings()!= null && engineResult.warnings().iterator().hasNext()) {
|
||||||
validationRuleResult.hasWarnings = true;
|
validationRuleResult.hasWarnings = true;
|
||||||
for (String warning:engineResult.warnings()) {
|
for (String warning:engineResult.warnings()) {
|
||||||
validationIssues.add(new ValidationIssue(validationJob.id, recordUrl, ruleName, warning, "WARNING"));
|
validationIssues.add(new ValidationIssue(validationJob.id, ruleName, recordUrl, warning, "WARNING"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//validationResultRepository.save(validationRuleResult);
|
|
||||||
validationRuleResults.add(validationRuleResult);
|
validationRuleResults.add(validationRuleResult);
|
||||||
scoreSum += engineResult.score();
|
scoreSum += engineResult.score();
|
||||||
}
|
}
|
||||||
|
@ -87,14 +91,23 @@ public class XmlProcessor implements Processor {
|
||||||
processedRecords++;
|
processedRecords++;
|
||||||
validationJob.recordsTested = processedRecords;
|
validationJob.recordsTested = processedRecords;
|
||||||
validationJob.score = scoreSum/processedRecords;
|
validationJob.score = scoreSum/processedRecords;
|
||||||
|
|
||||||
Map<String, List> resultsMap = new HashMap();
|
Map<String, List> resultsMap = new HashMap();
|
||||||
resultsMap.put("results", validationRuleResults);
|
resultsMap.put("issues", validationRuleResults);
|
||||||
resultsMap.put("issues", validationIssues);
|
resultsMap.put("results", validationIssues);
|
||||||
exchange.getIn().setBody(resultsMap, Map.class);
|
exchange.getIn().setBody(resultsMap, Map.class);
|
||||||
|
|
||||||
if (processedRecords == maxNumberOfRecords) {
|
// System.out.println("Validation Issues: " + validationIssues);
|
||||||
|
|
||||||
|
if (processedRecords > maxNumberOfRecords) {
|
||||||
exchange.getIn().setHeader("MyHeader", "stop");
|
exchange.getIn().setHeader("MyHeader", "stop");
|
||||||
|
exchange.getIn().setHeader("validationId", validationJob.id);
|
||||||
|
exchange.getIn().setHeader("baseUrl", validationJob.baseUrl);
|
||||||
|
exchange.getIn().setHeader("startDate", validationJob.startDate);
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,6 @@ import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||||
import eu.dnetlib.validatorapi.entities.ValidationRuleResult;
|
import eu.dnetlib.validatorapi.entities.ValidationRuleResult;
|
||||||
import eu.dnetlib.validatorapi.processors.DataBaseProcessor;
|
import eu.dnetlib.validatorapi.processors.DataBaseProcessor;
|
||||||
import eu.dnetlib.validatorapi.processors.XmlProcessor;
|
import eu.dnetlib.validatorapi.processors.XmlProcessor;
|
||||||
import eu.dnetlib.validatorapi.repositories.ValidationIssueRepository;
|
|
||||||
import eu.dnetlib.validatorapi.repositories.ValidationJobRepository;
|
|
||||||
import eu.dnetlib.validatorapi.repositories.ValidationResultRepository;
|
|
||||||
import org.apache.camel.Exchange;
|
import org.apache.camel.Exchange;
|
||||||
import org.apache.camel.Processor;
|
import org.apache.camel.Processor;
|
||||||
import org.apache.camel.builder.RouteBuilder;
|
import org.apache.camel.builder.RouteBuilder;
|
||||||
|
@ -23,23 +20,21 @@ public class OaiPmhRoute extends RouteBuilder {
|
||||||
private AbstractOpenAireProfile profile;
|
private AbstractOpenAireProfile profile;
|
||||||
private long maxNumberOfRecords = 0;
|
private long maxNumberOfRecords = 0;
|
||||||
private ValidationJob validationJob;
|
private ValidationJob validationJob;
|
||||||
private final ValidationJobRepository validationJobRepository;
|
//private final ValidationJobRepository validationJobRepository;
|
||||||
private final ValidationIssueRepository validationIssueRepository;
|
//private final ValidationIssueRepository validationIssueRepository;
|
||||||
private final ValidationResultRepository validationResultRepository;
|
//private final ValidationResultRepository validationResultRepository;
|
||||||
CountDownLatch latch;
|
CountDownLatch latch;
|
||||||
|
|
||||||
|
|
||||||
public OaiPmhRoute(String oaiEndpoint, AbstractOpenAireProfile profile, ValidationJob validationJob,
|
public OaiPmhRoute(String oaiEndpoint, AbstractOpenAireProfile profile, ValidationJob validationJob,
|
||||||
long maxNumberOfRecords, final ValidationJobRepository validationJobRepository,
|
long maxNumberOfRecords) {
|
||||||
final ValidationIssueRepository validationIssueRepository,
|
|
||||||
final ValidationResultRepository validationResultRepository) {
|
|
||||||
this.oaiEndpoint = oaiEndpoint;
|
this.oaiEndpoint = oaiEndpoint;
|
||||||
this.validationJob = validationJob;
|
this.validationJob = validationJob;
|
||||||
this.profile = profile;
|
this.profile = profile;
|
||||||
this.maxNumberOfRecords = maxNumberOfRecords;
|
this.maxNumberOfRecords = maxNumberOfRecords;
|
||||||
this.validationJobRepository = validationJobRepository;
|
// this.validationJobRepository = validationJobRepository;
|
||||||
this.validationIssueRepository = validationIssueRepository;
|
// this.validationIssueRepository = validationIssueRepository;
|
||||||
this.validationResultRepository = validationResultRepository;
|
// this.validationResultRepository = validationResultRepository;
|
||||||
this.latch = latch;
|
this.latch = latch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,21 +48,29 @@ public class OaiPmhRoute extends RouteBuilder {
|
||||||
.split(xpath("//*[local-name()='record']"))
|
.split(xpath("//*[local-name()='record']"))
|
||||||
.process(new XmlProcessor(profile, validationJob, maxNumberOfRecords))
|
.process(new XmlProcessor(profile, validationJob, maxNumberOfRecords))
|
||||||
.choice()
|
.choice()
|
||||||
.when(simple("${body[results]} && ${header.MyHeader} != 'stop'"))
|
|
||||||
.split(simple("${body[results]}"))
|
|
||||||
.to("jpa:" + ValidationRuleResult.class.getName() + "?usePersist=true")
|
|
||||||
.endChoice()
|
|
||||||
.when(simple("${body[issues]} && ${header.MyHeader} != 'stop'"))
|
.when(simple("${body[issues]} && ${header.MyHeader} != 'stop'"))
|
||||||
.split(simple("${body[issues]}"))
|
.log("HERE!!!")
|
||||||
.to("jpa:"+ ValidationIssue.class.getName()+ "?usePersist=true")
|
.split(simple("${body[issues]}"))
|
||||||
|
.to("jpa:"+ ValidationRuleResult.class.getName()+ "?usePersist=true")
|
||||||
.endChoice()
|
.endChoice()
|
||||||
|
.end()
|
||||||
|
.choice()
|
||||||
|
.when(simple("${body[results]} && ${header.MyHeader} != 'stop'"))
|
||||||
|
.log("THERE")
|
||||||
|
.split(simple("${body[results]}"))
|
||||||
|
.to("jpa:" + ValidationIssue.class.getName() + "?usePersist=true")
|
||||||
|
.endChoice()
|
||||||
|
.end()
|
||||||
|
.choice()
|
||||||
.when(header("MyHeader").isEqualTo("stop"))
|
.when(header("MyHeader").isEqualTo("stop"))
|
||||||
//.to("direct:saveToDatabase")
|
.to("direct:saveToDatabase")
|
||||||
.to("controlbus:route?routeId="+date+"&action=stop")
|
.to("controlbus:route?routeId="+date+"&action=stop")
|
||||||
.endChoice();
|
.endChoice()
|
||||||
|
.end();
|
||||||
|
|
||||||
|
|
||||||
from("direct:saveToDatabase")
|
from("direct:saveToDatabase")
|
||||||
.process(new DataBaseProcessor(validationJob, validationResultRepository))
|
.process(new DataBaseProcessor())
|
||||||
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true");
|
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true");
|
||||||
|
|
||||||
/*from("timer://myTimer?fixedRate=true&period=60000")
|
/*from("timer://myTimer?fixedRate=true&period=60000")
|
||||||
|
|
Loading…
Reference in New Issue