Steps to remove save methods from Processors. Added apache camel-jpa dependency
This commit is contained in:
parent
e1eb44ae73
commit
ec549036d9
9
pom.xml
9
pom.xml
|
@ -99,6 +99,15 @@
|
||||||
<artifactId>camel-http</artifactId>
|
<artifactId>camel-http</artifactId>
|
||||||
<version>${apache.camel.version}</version>
|
<version>${apache.camel.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.camel</groupId>
|
||||||
|
<artifactId>camel-jpa</artifactId>
|
||||||
|
<version>${apache.camel.version}</version>
|
||||||
|
<!-- use the same version as your Camel core version -->
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- JSON -->
|
<!-- JSON -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -4,14 +4,12 @@ import eu.dnetlib.validator2.validation.XMLApplicationProfile;
|
||||||
import eu.dnetlib.validator2.validation.guideline.Guideline;
|
import eu.dnetlib.validator2.validation.guideline.Guideline;
|
||||||
import eu.dnetlib.validator2.validation.guideline.openaire.*;
|
import eu.dnetlib.validator2.validation.guideline.openaire.*;
|
||||||
import eu.dnetlib.validatorapi.entities.RuleInfo;
|
import eu.dnetlib.validatorapi.entities.RuleInfo;
|
||||||
import eu.dnetlib.validatorapi.entities.ValidationIssue;
|
|
||||||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||||
import eu.dnetlib.validatorapi.entities.ValidationRuleResult;
|
import eu.dnetlib.validatorapi.entities.ValidationRuleResult;
|
||||||
import eu.dnetlib.validatorapi.repositories.ValidationIssueRepository;
|
import eu.dnetlib.validatorapi.repositories.ValidationIssueRepository;
|
||||||
import eu.dnetlib.validatorapi.repositories.ValidationJobRepository;
|
import eu.dnetlib.validatorapi.repositories.ValidationJobRepository;
|
||||||
import eu.dnetlib.validatorapi.repositories.ValidationResultRepository;
|
import eu.dnetlib.validatorapi.repositories.ValidationResultRepository;
|
||||||
import eu.dnetlib.validatorapi.routes.OaiPmhRoute;
|
import eu.dnetlib.validatorapi.routes.OaiPmhRoute;
|
||||||
import eu.dnetlib.validatorapi.routes.OaiSetListRoute;
|
|
||||||
import org.apache.camel.CamelContext;
|
import org.apache.camel.CamelContext;
|
||||||
import org.apache.camel.ProducerTemplate;
|
import org.apache.camel.ProducerTemplate;
|
||||||
import org.apache.camel.builder.RouteBuilder;
|
import org.apache.camel.builder.RouteBuilder;
|
||||||
|
@ -124,7 +122,7 @@ public class ValidationController {
|
||||||
resultSum += engineResult.score();
|
resultSum += engineResult.score();
|
||||||
|
|
||||||
validationResultRepository.save(validationRuleResult);
|
validationResultRepository.save(validationRuleResult);
|
||||||
saveValidationIssues(validationJob.id, recordUrl, ruleName, engineResult);
|
//saveValidationIssues(validationJob.id, recordUrl, ruleName, engineResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
record++;
|
record++;
|
||||||
|
@ -212,10 +210,15 @@ public class ValidationController {
|
||||||
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
||||||
DocumentBuilder db = dbf.newDocumentBuilder();
|
DocumentBuilder db = dbf.newDocumentBuilder();
|
||||||
|
|
||||||
|
|
||||||
RouteBuilder oaiPmhRouteBuilder =
|
RouteBuilder oaiPmhRouteBuilder =
|
||||||
new OaiPmhRoute("oaipmh://"+baseURL + "?verb=ListRecords&metadataPrefix=" + metadataPrefix ,
|
new OaiPmhRoute("oaipmh://"+baseURL + "?verb=ListRecords&metadataPrefix=" + metadataPrefix ,
|
||||||
profile, validationJob, numberOfRecords, validationJobRepository,
|
profile, validationJob, numberOfRecords, validationJobRepository, validationIssueRepository, validationResultRepository);
|
||||||
validationIssueRepository, validationResultRepository);
|
|
||||||
|
/*
|
||||||
|
RouteBuilder oaiPmhRouteBuilder =
|
||||||
|
new OAI_PMH_RouteBuilder("oaipmh://"+baseURL + "?verb=ListRecords&metadataPrefix=" + metadataPrefix ,
|
||||||
|
profile, validationJob, numberOfRecords, validationJobRepository, validationIssueRepository, validationResultRepository);*/
|
||||||
camelContext.addRoutes(oaiPmhRouteBuilder);
|
camelContext.addRoutes(oaiPmhRouteBuilder);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -234,13 +237,9 @@ public class ValidationController {
|
||||||
public String getSets(@RequestParam(name = "baseUrl", defaultValue = "http://repositorium.sdum.uminho.pt/oai/request") String baseURL //not in use now
|
public String getSets(@RequestParam(name = "baseUrl", defaultValue = "http://repositorium.sdum.uminho.pt/oai/request") String baseURL //not in use now
|
||||||
) throws Exception {
|
) throws Exception {
|
||||||
|
|
||||||
RouteBuilder listSetsBuilder = new OaiSetListRoute();
|
|
||||||
ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
|
ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
|
||||||
String response = producerTemplate.requestBodyAndHeader("direct:getResponse", null, "endpoint", "oaipmh://"+ baseURL + "?verb=ListSets", String.class);
|
String response = producerTemplate.requestBodyAndHeader("direct:getResponse", null, "endpoint", "oaipmh://"+ baseURL + "?verb=ListSets", String.class);
|
||||||
/*
|
|
||||||
ConsumerTemplate consumerTemplate = camelContext.createConsumerTemplate();
|
|
||||||
String result = consumerTemplate.receive("seda:result").getIn().getBody(String.class);
|
|
||||||
return result;*/
|
|
||||||
return response;
|
return response;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -298,9 +297,9 @@ public class ValidationController {
|
||||||
return validationRuleResult;
|
return validationRuleResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveValidationIssues(int validationJobId, String recordUrl, String ruleName, Guideline.Result engineResult) {
|
/* private void saveValidationIssues(int validationJobId, String recordUrl, String ruleName, Guideline.Result engineResult) {
|
||||||
for (String error:engineResult.errors()) {
|
for (String error:engineResult.errors()) {
|
||||||
/*System.out.println("11111");*/
|
*//*System.out.println("11111");*//*
|
||||||
ValidationIssue validationIssue = new ValidationIssue();
|
ValidationIssue validationIssue = new ValidationIssue();
|
||||||
validationIssue.validationJobId = validationJobId;
|
validationIssue.validationJobId = validationJobId;
|
||||||
validationIssue.ruleName = ruleName;
|
validationIssue.ruleName = ruleName;
|
||||||
|
@ -308,15 +307,15 @@ public class ValidationController {
|
||||||
validationIssue.issueType = "ERROR";
|
validationIssue.issueType = "ERROR";
|
||||||
validationIssue.issueText = error;
|
validationIssue.issueText = error;
|
||||||
validationIssueRepository.save(validationIssue);
|
validationIssueRepository.save(validationIssue);
|
||||||
/*
|
*//*
|
||||||
System.out.println(validationIssue);
|
System.out.println(validationIssue);
|
||||||
*/
|
*//*
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String warning: engineResult.warnings()){
|
for (String warning: engineResult.warnings()){
|
||||||
/*
|
*//*
|
||||||
System.out.println("22222");
|
System.out.println("22222");
|
||||||
*/
|
*//*
|
||||||
ValidationIssue validationIssue = new ValidationIssue();
|
ValidationIssue validationIssue = new ValidationIssue();
|
||||||
validationIssue.validationJobId = validationJobId;
|
validationIssue.validationJobId = validationJobId;
|
||||||
validationIssue.ruleName = ruleName;
|
validationIssue.ruleName = ruleName;
|
||||||
|
@ -324,13 +323,13 @@ public class ValidationController {
|
||||||
validationIssue.issueType = "WARNING";
|
validationIssue.issueType = "WARNING";
|
||||||
validationIssue.issueText = warning;
|
validationIssue.issueText = warning;
|
||||||
validationIssueRepository.save(validationIssue);
|
validationIssueRepository.save(validationIssue);
|
||||||
/*
|
*//*
|
||||||
System.out.println(validationIssue);
|
System.out.println(validationIssue);
|
||||||
*/
|
*//*
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
private ValidationRuleResult constructValidationRuleResult(int validationJobId, String recordUrl, String ruleName,
|
private ValidationRuleResult constructValidationRuleResult(int validationJobId, String recordUrl, String ruleName,
|
||||||
AbstractOpenAireProfile profile, Guideline.Result engineResult) {
|
AbstractOpenAireProfile profile, Guideline.Result engineResult) {
|
||||||
|
|
|
@ -26,6 +26,16 @@ public class ValidationIssue implements Serializable {
|
||||||
@Column(name = "issue_type")
|
@Column(name = "issue_type")
|
||||||
public String issueType;
|
public String issueType;
|
||||||
|
|
||||||
|
public ValidationIssue(){};
|
||||||
|
|
||||||
|
public ValidationIssue(int validationJobId, String ruleName, String recordUrl, String issueText, String issueType) {
|
||||||
|
this.validationJobId = validationJobId;
|
||||||
|
this.ruleName = ruleName;
|
||||||
|
this.recordUrl = recordUrl;
|
||||||
|
this.issueText = issueText;
|
||||||
|
this.issueType = issueType;
|
||||||
|
}
|
||||||
|
|
||||||
public int getValidationJobId() {
|
public int getValidationJobId() {
|
||||||
return validationJobId;
|
return validationJobId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package eu.dnetlib.validatorapi.processors;
|
package eu.dnetlib.validatorapi.processors;
|
||||||
|
|
||||||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||||
import eu.dnetlib.validatorapi.repositories.ValidationJobRepository;
|
|
||||||
import eu.dnetlib.validatorapi.repositories.ValidationResultRepository;
|
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;
|
||||||
|
@ -10,13 +9,11 @@ import java.util.Date;
|
||||||
|
|
||||||
public class DataBaseProcessor implements Processor {
|
public class DataBaseProcessor implements Processor {
|
||||||
private final ValidationJob validationJob;
|
private final ValidationJob validationJob;
|
||||||
private final ValidationJobRepository validationJobRepository;
|
|
||||||
private final ValidationResultRepository validationResultRepository;
|
private final ValidationResultRepository validationResultRepository;
|
||||||
|
|
||||||
public DataBaseProcessor(ValidationJob validationJob, final ValidationJobRepository validationJobRepository,
|
public DataBaseProcessor(ValidationJob validationJob,
|
||||||
final ValidationResultRepository validationResultRepository){
|
final ValidationResultRepository validationResultRepository){
|
||||||
this.validationJob = validationJob;
|
this.validationJob = validationJob;
|
||||||
this.validationJobRepository = validationJobRepository;
|
|
||||||
this.validationResultRepository = validationResultRepository;
|
this.validationResultRepository = validationResultRepository;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,7 +23,6 @@ public class DataBaseProcessor implements Processor {
|
||||||
validationJob.progress = "COMPLETED";
|
validationJob.progress = "COMPLETED";
|
||||||
validationJob.endDate = new Date();
|
validationJob.endDate = new Date();
|
||||||
validationJob.status = validationResultRepository.getStatus(validationJob.id);
|
validationJob.status = validationResultRepository.getStatus(validationJob.id);
|
||||||
System.out.println(validationJob.status);
|
exchange.getIn().setBody(validationJob, ValidationJob.class);
|
||||||
validationJobRepository.save(validationJob);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,6 @@ import eu.dnetlib.validator2.validation.guideline.openaire.AbstractOpenAireProfi
|
||||||
import eu.dnetlib.validatorapi.entities.ValidationIssue;
|
import eu.dnetlib.validatorapi.entities.ValidationIssue;
|
||||||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||||
import eu.dnetlib.validatorapi.entities.ValidationRuleResult;
|
import eu.dnetlib.validatorapi.entities.ValidationRuleResult;
|
||||||
import eu.dnetlib.validatorapi.repositories.ValidationIssueRepository;
|
|
||||||
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.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
|
@ -18,13 +16,15 @@ import org.xml.sax.InputSource;
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class XmlProcessor implements Processor {
|
public class XmlProcessor implements Processor {
|
||||||
private final AbstractOpenAireProfile profile;
|
private final AbstractOpenAireProfile profile;
|
||||||
private ValidationJob validationJob;
|
private ValidationJob validationJob;
|
||||||
private final ValidationIssueRepository validationIssueRepository;
|
// private final ValidationIssueRepository validationIssueRepository;
|
||||||
private final ValidationResultRepository validationResultRepository;
|
|
||||||
private final long maxNumberOfRecords;
|
private final long maxNumberOfRecords;
|
||||||
private int processedRecords;
|
private int processedRecords;
|
||||||
// private int resultSum;
|
// private int resultSum;
|
||||||
|
@ -32,14 +32,10 @@ public class XmlProcessor implements Processor {
|
||||||
|
|
||||||
|
|
||||||
public XmlProcessor(final AbstractOpenAireProfile profile, ValidationJob validationJob,
|
public XmlProcessor(final AbstractOpenAireProfile profile, ValidationJob validationJob,
|
||||||
final ValidationIssueRepository validationIssueRepository,
|
|
||||||
final ValidationResultRepository validationResultRepository,
|
|
||||||
final long maxNumberOfRecords){
|
final long maxNumberOfRecords){
|
||||||
super();
|
super();
|
||||||
this.profile = profile;
|
this.profile = profile;
|
||||||
this.validationJob = validationJob;
|
this.validationJob = validationJob;
|
||||||
this.validationIssueRepository = validationIssueRepository;
|
|
||||||
this.validationResultRepository = validationResultRepository;
|
|
||||||
this.maxNumberOfRecords = maxNumberOfRecords;
|
this.maxNumberOfRecords = maxNumberOfRecords;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,6 +47,8 @@ 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");
|
||||||
|
List<ValidationRuleResult> validationRuleResults = new ArrayList<>();
|
||||||
|
List<ValidationIssue> validationIssues = new ArrayList<>();
|
||||||
|
|
||||||
if (profile != null) {
|
if (profile != null) {
|
||||||
XMLApplicationProfile.ValidationResult validationResult = profile.validate("id", doc); //what id is that?
|
XMLApplicationProfile.ValidationResult validationResult = profile.validate("id", doc); //what id is that?
|
||||||
|
@ -61,49 +59,45 @@ public class XmlProcessor implements Processor {
|
||||||
final Guideline.Result engineResult = (Guideline.Result) entry.getValue();
|
final Guideline.Result engineResult = (Guideline.Result) entry.getValue();
|
||||||
String ruleName = entry.getKey().toString();
|
String ruleName = entry.getKey().toString();
|
||||||
validationRuleResult = new ValidationRuleResult();
|
validationRuleResult = new ValidationRuleResult();
|
||||||
constructValidationRuleResult(validationRuleResult, validationJob.id, recordUrl,
|
constructValidationRuleResult(validationRuleResult, validationJob.id, profile.name(), recordUrl,
|
||||||
ruleName, profile, engineResult);
|
ruleName, profile, engineResult);
|
||||||
|
|
||||||
|
|
||||||
if (engineResult.errors()!= null && engineResult.errors().iterator().hasNext()) {
|
if (engineResult.errors()!= null && engineResult.errors().iterator().hasNext()) {
|
||||||
validationRuleResult.hasErrors = true;
|
validationRuleResult.hasErrors = true;
|
||||||
saveValidationIssues(validationJob.id, recordUrl, ruleName, engineResult.errors(), "ERROR");
|
for (String error:engineResult.errors()) {
|
||||||
|
validationIssues.add(new ValidationIssue(validationJob.id, recordUrl, ruleName, error,"ERROR"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (engineResult.warnings()!= null && engineResult.warnings().iterator().hasNext()) {
|
if (engineResult.warnings()!= null && engineResult.warnings().iterator().hasNext()) {
|
||||||
validationRuleResult.hasWarnings = true;
|
validationRuleResult.hasWarnings = true;
|
||||||
saveValidationIssues(validationJob.id, recordUrl, ruleName, engineResult.warnings(), "WARNING");
|
for (String warning:engineResult.warnings()) {
|
||||||
|
validationIssues.add(new ValidationIssue(validationJob.id, recordUrl, ruleName, warning, "WARNING"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
validationResultRepository.save(validationRuleResult);
|
//validationResultRepository.save(validationRuleResult);
|
||||||
|
validationRuleResults.add(validationRuleResult);
|
||||||
scoreSum += engineResult.score();
|
scoreSum += engineResult.score();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
processedRecords++;
|
processedRecords++;
|
||||||
validationJob.recordsTested = processedRecords;
|
validationJob.recordsTested = processedRecords;
|
||||||
validationJob.score = scoreSum/processedRecords;
|
validationJob.score = scoreSum/processedRecords;
|
||||||
//System.out.println("\n\n\nvalidation job: " + validationJob.recordsTested);
|
|
||||||
|
|
||||||
if (processedRecords > maxNumberOfRecords) {
|
Map<String, List> resultsMap = new HashMap();
|
||||||
|
resultsMap.put("results", validationRuleResults);
|
||||||
|
resultsMap.put("issues", validationIssues);
|
||||||
|
exchange.getIn().setBody(resultsMap, Map.class);
|
||||||
|
|
||||||
|
if (processedRecords == maxNumberOfRecords) {
|
||||||
exchange.getIn().setHeader("MyHeader", "stop");
|
exchange.getIn().setHeader("MyHeader", "stop");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveValidationIssues(int validationJobId, String recordUrl, String ruleName,
|
|
||||||
Iterable<String> issues, String issueType) {
|
|
||||||
for (String issue:issues) {
|
|
||||||
ValidationIssue validationIssue = new ValidationIssue();
|
|
||||||
validationIssue.validationJobId = validationJobId;
|
|
||||||
validationIssue.ruleName = ruleName;
|
|
||||||
validationIssue.recordUrl = recordUrl;
|
|
||||||
validationIssue.issueType = issueType;
|
|
||||||
validationIssue.issueText = issue;
|
|
||||||
validationIssueRepository.save(validationIssue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO consider throwing exception - UTIL class?
|
//TODO consider throwing exception - UTIL class?
|
||||||
private String extractRecordUrl(final Document document, final String xmlField) {
|
private String extractRecordUrl(final Document document, final String xmlField) {
|
||||||
NodeList identifierNodes = document.getElementsByTagName(xmlField);
|
NodeList identifierNodes = document.getElementsByTagName(xmlField);
|
||||||
|
@ -115,10 +109,11 @@ public class XmlProcessor implements Processor {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void constructValidationRuleResult(ValidationRuleResult validationRuleResult, int validationJobId, String recordUrl, String ruleName,
|
private void constructValidationRuleResult(ValidationRuleResult validationRuleResult, int validationJobId, String guidelines, String recordUrl, String ruleName,
|
||||||
AbstractOpenAireProfile profile, Guideline.Result engineResult) {
|
AbstractOpenAireProfile profile, Guideline.Result engineResult) {
|
||||||
|
|
||||||
validationRuleResult.validationJobId = validationJobId;
|
validationRuleResult.validationJobId = validationJobId;
|
||||||
|
validationRuleResult.guidelines = guidelines;
|
||||||
validationRuleResult.ruleName = ruleName;
|
validationRuleResult.ruleName = ruleName;
|
||||||
validationRuleResult.ruleWeight = profile.guideline(ruleName).getWeight();
|
validationRuleResult.ruleWeight = profile.guideline(ruleName).getWeight();
|
||||||
validationRuleResult.recordUrl = recordUrl;
|
validationRuleResult.recordUrl = recordUrl;
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package eu.dnetlib.validatorapi.routes;
|
package eu.dnetlib.validatorapi.routes;
|
||||||
|
|
||||||
import eu.dnetlib.validator2.validation.guideline.openaire.AbstractOpenAireProfile;
|
import eu.dnetlib.validator2.validation.guideline.openaire.AbstractOpenAireProfile;
|
||||||
|
import eu.dnetlib.validatorapi.entities.ValidationIssue;
|
||||||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||||
|
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.ValidationIssueRepository;
|
||||||
|
@ -49,14 +51,24 @@ public class OaiPmhRoute extends RouteBuilder {
|
||||||
from(oaiEndpoint)
|
from(oaiEndpoint)
|
||||||
.routeId(date)
|
.routeId(date)
|
||||||
.split(xpath("//*[local-name()='record']"))
|
.split(xpath("//*[local-name()='record']"))
|
||||||
.process(new XmlProcessor(profile, validationJob, validationIssueRepository, validationResultRepository, maxNumberOfRecords))
|
.process(new XmlProcessor(profile, validationJob, maxNumberOfRecords))
|
||||||
.choice().when(header("MyHeader").isEqualTo("stop"))
|
.choice()
|
||||||
.to("direct:saveToDatabase")
|
.when(simple("${body[results]} && ${header.MyHeader} != 'stop'"))
|
||||||
.to("controlbus:route?routeId="+date+"&action=stop")
|
.split(simple("${body[results]}"))
|
||||||
|
.to("jpa:" + ValidationRuleResult.class.getName() + "?usePersist=true")
|
||||||
|
.endChoice()
|
||||||
|
.when(simple("${body[issues]} && ${header.MyHeader} != 'stop'"))
|
||||||
|
.split(simple("${body[issues]}"))
|
||||||
|
.to("jpa:"+ ValidationIssue.class.getName()+ "?usePersist=true")
|
||||||
|
.endChoice()
|
||||||
|
.when(header("MyHeader").isEqualTo("stop"))
|
||||||
|
//.to("direct:saveToDatabase")
|
||||||
|
.to("controlbus:route?routeId="+date+"&action=stop")
|
||||||
.endChoice();
|
.endChoice();
|
||||||
|
|
||||||
from("direct:saveToDatabase")
|
from("direct:saveToDatabase")
|
||||||
.process(new DataBaseProcessor(validationJob, validationJobRepository, validationResultRepository));
|
.process(new DataBaseProcessor(validationJob, validationResultRepository))
|
||||||
|
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true");
|
||||||
|
|
||||||
/*from("timer://myTimer?fixedRate=true&period=60000")
|
/*from("timer://myTimer?fixedRate=true&period=60000")
|
||||||
.routeId("OAIProcessingRoute")
|
.routeId("OAIProcessingRoute")
|
||||||
|
|
|
@ -25,35 +25,24 @@ import java.util.List;
|
||||||
@Component
|
@Component
|
||||||
public class OaiSetListRoute extends RouteBuilder {
|
public class OaiSetListRoute extends RouteBuilder {
|
||||||
|
|
||||||
/*private final String oaiEndpoint;*/
|
|
||||||
|
|
||||||
public String xml = new String();
|
|
||||||
|
|
||||||
|
|
||||||
/*public OaiSetListRoute(final String oaiEndpoint) {
|
|
||||||
this.oaiEndpoint = oaiEndpoint;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure() throws Exception {
|
public void configure() throws Exception {
|
||||||
|
|
||||||
from("direct:getResponse")
|
from("direct:getResponse")
|
||||||
.process(exchange -> {
|
.process(exchange -> {
|
||||||
// Get the endpoint URL from the request parameter
|
|
||||||
String endpoint = exchange.getIn().getHeader("endpoint", String.class);
|
String endpoint = exchange.getIn().getHeader("endpoint", String.class);
|
||||||
// Set the dynamic endpoint URL in the exchange header
|
|
||||||
exchange.getIn().setHeader("dynamicEndpoint", endpoint);
|
exchange.getIn().setHeader("dynamicEndpoint", endpoint);
|
||||||
})
|
})
|
||||||
.recipientList(header("dynamicEndpoint"))
|
.recipientList(header("dynamicEndpoint"))
|
||||||
.process(exchange -> {
|
.process(exchange -> {
|
||||||
List<String> ListSetsXml = exchange.getIn().getBody(ArrayList.class);
|
List<String> ListSetsXml = exchange.getIn().getBody(ArrayList.class);
|
||||||
List<String> desiredJsonParts = new ArrayList<>();
|
List<String> desiredJsonParts = new ArrayList<>();
|
||||||
String xmlSets ="";
|
String xmlSets = "";
|
||||||
|
|
||||||
// Extract the desired <set> elements from each XML string
|
// Extract the desired <set> elements from each XML string
|
||||||
for (String xml : ListSetsXml) {
|
for (String xml : ListSetsXml) {
|
||||||
List<String> extractedSets = extractSets(xml);
|
List<String> extractedSets = extractSets(xml);
|
||||||
for (String setXml:extractedSets)
|
for (String setXml : extractedSets)
|
||||||
xmlSets += setXml;
|
xmlSets += setXml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,7 +76,7 @@ public class OaiSetListRoute extends RouteBuilder {
|
||||||
exchange.getIn().setBody(jsonString);
|
exchange.getIn().setBody(jsonString);
|
||||||
}).to("seda:result");*/
|
}).to("seda:result");*/
|
||||||
//}
|
//}
|
||||||
|
|
||||||
private List<String> extractSets(String xml) {
|
private List<String> extractSets(String xml) {
|
||||||
List<String> setXmls = new ArrayList<>();
|
List<String> setXmls = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Reference in New Issue