Compare commits
6 Commits
afc881b443
...
7b5a9cad3d
Author | SHA1 | Date |
---|---|---|
Katerina | 7b5a9cad3d | |
Katerina | ec549036d9 | |
Katerina | e1eb44ae73 | |
Katerina | c3667780b3 | |
Katerina | 24a62d97de | |
Katerina | 0dd8743b42 |
9
pom.xml
9
pom.xml
|
@ -99,6 +99,15 @@
|
|||
<artifactId>camel-http</artifactId>
|
||||
<version>${apache.camel.version}</version>
|
||||
</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 -->
|
||||
<dependency>
|
||||
|
|
|
@ -36,7 +36,11 @@ public class ReportController {
|
|||
}
|
||||
|
||||
@RequestMapping(value = {"getResultsByJobId"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public List<SummaryResult> getSummaryJobResults(@RequestParam(name = "jobId") int jobId){
|
||||
public List<SummaryResult> getSummaryJobResults(@RequestParam(name = "jobId") int jobId,
|
||||
@RequestParam(name= "guidelines", required = false) Optional<String> guidelines) {
|
||||
if (guidelines.isPresent() && guidelines.get().isEmpty())
|
||||
return validationResultRepository.getFullSummaryResult(jobId, guidelines.get());
|
||||
|
||||
return validationResultRepository.getFullSummaryResult(jobId);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,14 +4,12 @@ import eu.dnetlib.validator2.validation.XMLApplicationProfile;
|
|||
import eu.dnetlib.validator2.validation.guideline.Guideline;
|
||||
import eu.dnetlib.validator2.validation.guideline.openaire.*;
|
||||
import eu.dnetlib.validatorapi.entities.RuleInfo;
|
||||
import eu.dnetlib.validatorapi.entities.ValidationIssue;
|
||||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||
import eu.dnetlib.validatorapi.entities.ValidationRuleResult;
|
||||
import eu.dnetlib.validatorapi.repositories.ValidationIssueRepository;
|
||||
import eu.dnetlib.validatorapi.repositories.ValidationJobRepository;
|
||||
import eu.dnetlib.validatorapi.repositories.ValidationResultRepository;
|
||||
import eu.dnetlib.validatorapi.routes.OaiPmhRoute;
|
||||
import eu.dnetlib.validatorapi.routes.OaiSetListRoute;
|
||||
import org.apache.camel.CamelContext;
|
||||
import org.apache.camel.ProducerTemplate;
|
||||
import org.apache.camel.builder.RouteBuilder;
|
||||
|
@ -124,7 +122,7 @@ public class ValidationController {
|
|||
resultSum += engineResult.score();
|
||||
|
||||
validationResultRepository.save(validationRuleResult);
|
||||
saveValidationIssues(validationJob.id, recordUrl, ruleName, engineResult);
|
||||
//saveValidationIssues(validationJob.id, recordUrl, ruleName, engineResult);
|
||||
}
|
||||
|
||||
record++;
|
||||
|
@ -186,11 +184,13 @@ public class ValidationController {
|
|||
public void validateWithApacheCamel(@RequestParam(name = "guidelines") String guidelinesProfileName,
|
||||
@RequestParam(name = "baseUrl", defaultValue = "http://repositorium.sdum.uminho.pt/oai/request") String baseURL, //not in use now
|
||||
@RequestParam(name="numberOfRecords", defaultValue = "10") int numberOfRecords,
|
||||
@RequestParam(name="set", required = false) String set, //not in use now
|
||||
@RequestParam(name="metadataPrefix", defaultValue = "oai_dc") String metadataPrefix) {
|
||||
@RequestParam(name="set", required = false) String set//, //not in use now
|
||||
//@RequestParam(name="metadataPrefix", defaultValue = "oai_dc") String metadataPrefix
|
||||
) {
|
||||
|
||||
AbstractOpenAireProfile profile = initializeOpenAireProfile(guidelinesProfileName);
|
||||
AbstractOpenAireProfile fairProfile = initializeFairProfile(guidelinesProfileName);
|
||||
String metadataPrefix = initializeMetadataPrefix(guidelinesProfileName);
|
||||
|
||||
if (profile == null && fairProfile == null) {
|
||||
log.error("Exception: No valid guidelines " + guidelinesProfileName + ".");
|
||||
|
@ -210,10 +210,15 @@ public class ValidationController {
|
|||
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder db = dbf.newDocumentBuilder();
|
||||
|
||||
|
||||
RouteBuilder oaiPmhRouteBuilder =
|
||||
new OaiPmhRoute("oaipmh://"+baseURL + "?verb=ListRecords&metadataPrefix=" + metadataPrefix ,
|
||||
profile, validationJob, numberOfRecords, validationJobRepository,
|
||||
validationIssueRepository, validationResultRepository);
|
||||
profile, validationJob, numberOfRecords, validationJobRepository, validationIssueRepository, validationResultRepository);
|
||||
|
||||
/*
|
||||
RouteBuilder oaiPmhRouteBuilder =
|
||||
new OAI_PMH_RouteBuilder("oaipmh://"+baseURL + "?verb=ListRecords&metadataPrefix=" + metadataPrefix ,
|
||||
profile, validationJob, numberOfRecords, validationJobRepository, validationIssueRepository, validationResultRepository);*/
|
||||
camelContext.addRoutes(oaiPmhRouteBuilder);
|
||||
|
||||
}
|
||||
|
@ -232,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
|
||||
) throws Exception {
|
||||
|
||||
RouteBuilder listSetsBuilder = new OaiSetListRoute();
|
||||
ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
|
||||
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;
|
||||
|
||||
/*
|
||||
|
@ -296,9 +297,9 @@ public class ValidationController {
|
|||
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()) {
|
||||
/*System.out.println("11111");*/
|
||||
*//*System.out.println("11111");*//*
|
||||
ValidationIssue validationIssue = new ValidationIssue();
|
||||
validationIssue.validationJobId = validationJobId;
|
||||
validationIssue.ruleName = ruleName;
|
||||
|
@ -306,15 +307,15 @@ public class ValidationController {
|
|||
validationIssue.issueType = "ERROR";
|
||||
validationIssue.issueText = error;
|
||||
validationIssueRepository.save(validationIssue);
|
||||
/*
|
||||
*//*
|
||||
System.out.println(validationIssue);
|
||||
*/
|
||||
*//*
|
||||
}
|
||||
|
||||
for (String warning: engineResult.warnings()){
|
||||
/*
|
||||
*//*
|
||||
System.out.println("22222");
|
||||
*/
|
||||
*//*
|
||||
ValidationIssue validationIssue = new ValidationIssue();
|
||||
validationIssue.validationJobId = validationJobId;
|
||||
validationIssue.ruleName = ruleName;
|
||||
|
@ -322,13 +323,13 @@ public class ValidationController {
|
|||
validationIssue.issueType = "WARNING";
|
||||
validationIssue.issueText = warning;
|
||||
validationIssueRepository.save(validationIssue);
|
||||
/*
|
||||
*//*
|
||||
System.out.println(validationIssue);
|
||||
*/
|
||||
*//*
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
private ValidationRuleResult constructValidationRuleResult(int validationJobId, String recordUrl, String ruleName,
|
||||
AbstractOpenAireProfile profile, Guideline.Result engineResult) {
|
||||
|
@ -370,6 +371,21 @@ public class ValidationController {
|
|||
return null;
|
||||
}
|
||||
|
||||
private String initializeMetadataPrefix(String guidelinesProfileName) {
|
||||
|
||||
if (guidelinesProfileName.equals("dataArchiveGuidelinesV2Profile")) {
|
||||
return "oai_openaire";
|
||||
|
||||
} else if (guidelinesProfileName.equals("literatureGuidelinesV3Profile")) {
|
||||
return "oai_dc";
|
||||
|
||||
} else if (guidelinesProfileName.equals("literatureGuidelinesV4Profile")) {
|
||||
return "oai_openaire";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private AbstractOpenAireProfile initializeFairProfile(String guidelinesProfileName) {
|
||||
if (guidelinesProfileName.equals("dataArchiveGuidelinesV2Profile")) {
|
||||
|
|
|
@ -9,6 +9,7 @@ public class SummaryResult {
|
|||
@Id
|
||||
String rule_name;
|
||||
int rule_weight;
|
||||
String guidelines;
|
||||
String internal_error;
|
||||
String rule_status;
|
||||
long passed_records;
|
||||
|
@ -29,10 +30,11 @@ public class SummaryResult {
|
|||
this.failed_records = failed_records;
|
||||
}
|
||||
|
||||
public SummaryResult(String rule_name, int rule_weight, String internal_error, long passed_records,
|
||||
public SummaryResult(String rule_name, int rule_weight, String guidelines, String internal_error, long passed_records,
|
||||
long failed_records, String rule_status, boolean has_errors, boolean has_warnings) {
|
||||
this.rule_name = rule_name;
|
||||
this.rule_weight = rule_weight;
|
||||
this.guidelines = guidelines;
|
||||
this.internal_error = internal_error;
|
||||
this.rule_status = rule_status;
|
||||
this.passed_records = passed_records;
|
||||
|
@ -57,6 +59,14 @@ public class SummaryResult {
|
|||
this.rule_weight = rule_weight;
|
||||
}
|
||||
|
||||
public String getGuidelines() {
|
||||
return guidelines;
|
||||
}
|
||||
|
||||
public void setGuidelines(String guidelines) {
|
||||
this.guidelines = guidelines;
|
||||
}
|
||||
|
||||
public String getInternal_error() {
|
||||
return internal_error;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,16 @@ public class ValidationIssue implements Serializable {
|
|||
@Column(name = "issue_type")
|
||||
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() {
|
||||
return validationJobId;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,9 @@ public class ValidationRuleResult implements Serializable {
|
|||
@Column(name = "validation_job_id")
|
||||
public int validationJobId;
|
||||
|
||||
@Column(name = "guidelines")
|
||||
public String guidelines;
|
||||
|
||||
@Id
|
||||
@Column(name = "rule_name")
|
||||
public String ruleName;
|
||||
|
@ -46,6 +49,7 @@ public class ValidationRuleResult implements Serializable {
|
|||
public String toString() {
|
||||
return "ValidationRuleResult{" +
|
||||
"validationJobId=" + validationJobId +
|
||||
", guidelines='" + guidelines + '\'' +
|
||||
", ruleName='" + ruleName + '\'' +
|
||||
", ruleWeight=" + ruleWeight +
|
||||
", recordUrl='" + recordUrl + '\'' +
|
||||
|
|
|
@ -1,32 +1,26 @@
|
|||
package eu.dnetlib.validatorapi.processors;
|
||||
|
||||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||
import eu.dnetlib.validatorapi.repositories.ValidationJobRepository;
|
||||
import eu.dnetlib.validatorapi.repositories.ValidationResultRepository;
|
||||
import org.apache.camel.Exchange;
|
||||
import org.apache.camel.Processor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class DataBaseProcessor implements Processor {
|
||||
private final ValidationJob validationJob;
|
||||
private final ValidationJobRepository validationJobRepository;
|
||||
private final ValidationResultRepository validationResultRepository;
|
||||
|
||||
public DataBaseProcessor(ValidationJob validationJob, final ValidationJobRepository validationJobRepository,
|
||||
final ValidationResultRepository validationResultRepository){
|
||||
this.validationJob = validationJob;
|
||||
this.validationJobRepository = validationJobRepository;
|
||||
this.validationResultRepository = validationResultRepository;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(Exchange exchange) throws Exception {
|
||||
ValidationJob validationJob = new ValidationJob();
|
||||
validationJob.id = (Integer)exchange.getIn().getHeader("validationId");
|
||||
validationJob.baseUrl= (String)(exchange.getIn().getHeader("baseUrl"));
|
||||
validationJob.startDate = (Date) exchange.getIn().getHeader("startDate");
|
||||
validationJob.guidelines = (String) exchange.getIn().getHeader("guidelines");
|
||||
validationJob.status = (String)exchange.getIn().getHeader("status");
|
||||
validationJob.recordsTested = (Integer) exchange.getIn().getHeader("recordsTested");
|
||||
validationJob.numberOfRecords = Math.toIntExact((Long) exchange.getIn().getHeader("maxNumberOfRecords"));
|
||||
validationJob.score = (Integer) exchange.getIn().getHeader("score");
|
||||
validationJob.progress = "COMPLETED";
|
||||
validationJob.endDate = new Date();
|
||||
validationJob.status = validationResultRepository.getStatus(validationJob.id);
|
||||
System.out.println(validationJob.status);
|
||||
validationJobRepository.save(validationJob);
|
||||
exchange.getIn().setBody(validationJob, ValidationJob.class);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,8 +6,6 @@ import eu.dnetlib.validator2.validation.guideline.openaire.AbstractOpenAireProfi
|
|||
import eu.dnetlib.validatorapi.entities.ValidationIssue;
|
||||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||
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.Processor;
|
||||
import org.w3c.dom.Document;
|
||||
|
@ -18,13 +16,15 @@ import org.xml.sax.InputSource;
|
|||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import java.io.StringReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class XmlProcessor implements Processor {
|
||||
private final AbstractOpenAireProfile profile;
|
||||
private ValidationJob validationJob;
|
||||
private final ValidationIssueRepository validationIssueRepository;
|
||||
private final ValidationResultRepository validationResultRepository;
|
||||
// private final ValidationIssueRepository validationIssueRepository;
|
||||
private final long maxNumberOfRecords;
|
||||
private int processedRecords;
|
||||
// private int resultSum;
|
||||
|
@ -32,14 +32,10 @@ public class XmlProcessor implements Processor {
|
|||
|
||||
|
||||
public XmlProcessor(final AbstractOpenAireProfile profile, ValidationJob validationJob,
|
||||
final ValidationIssueRepository validationIssueRepository,
|
||||
final ValidationResultRepository validationResultRepository,
|
||||
final long maxNumberOfRecords){
|
||||
super();
|
||||
this.profile = profile;
|
||||
this.validationJob = validationJob;
|
||||
this.validationIssueRepository = validationIssueRepository;
|
||||
this.validationResultRepository = validationResultRepository;
|
||||
this.maxNumberOfRecords = maxNumberOfRecords;
|
||||
}
|
||||
|
||||
|
@ -51,6 +47,8 @@ public class XmlProcessor implements Processor {
|
|||
final DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
|
||||
Document doc = documentBuilder.parse(new InputSource(new StringReader(recordXml)));
|
||||
String recordUrl = extractRecordUrl(doc, "identifier");
|
||||
List<ValidationRuleResult> validationRuleResults = new ArrayList<>();
|
||||
List<ValidationIssue> validationIssues = new ArrayList<>();
|
||||
|
||||
if (profile != null) {
|
||||
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();
|
||||
String ruleName = entry.getKey().toString();
|
||||
validationRuleResult = new ValidationRuleResult();
|
||||
constructValidationRuleResult(validationRuleResult, validationJob.id, recordUrl,
|
||||
constructValidationRuleResult(validationRuleResult, validationJob.id, profile.name(), recordUrl,
|
||||
ruleName, profile, engineResult);
|
||||
|
||||
|
||||
if (engineResult.errors()!= null && engineResult.errors().iterator().hasNext()) {
|
||||
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()) {
|
||||
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();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
processedRecords++;
|
||||
validationJob.recordsTested = 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");
|
||||
}
|
||||
}
|
||||
|
||||
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?
|
||||
private String extractRecordUrl(final Document document, final String 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) {
|
||||
|
||||
validationRuleResult.validationJobId = validationJobId;
|
||||
validationRuleResult.guidelines = guidelines;
|
||||
validationRuleResult.ruleName = ruleName;
|
||||
validationRuleResult.ruleWeight = profile.guideline(ruleName).getWeight();
|
||||
validationRuleResult.recordUrl = recordUrl;
|
||||
|
|
|
@ -25,7 +25,7 @@ public interface ValidationResultRepository extends JpaRepository<ValidationRule
|
|||
"WHERE vr.validationJobId = :id AND vr.status = 'FAILURE' OR vr.internalError != null")
|
||||
public String getStatus(@Param("id") int validationJobId);
|
||||
|
||||
@Query(value = "SELECT NEW eu.dnetlib.validatorapi.entities.SummaryResult(sr.ruleName, sr.ruleWeight, sr.internalError," +
|
||||
@Query(value = "SELECT NEW eu.dnetlib.validatorapi.entities.SummaryResult(sr.ruleName, sr.ruleWeight, sr.guidelines, sr.internalError," +
|
||||
"COUNT(CASE WHEN sr.status = 'SUCCESS' THEN 1 END) AS passedRecords," +
|
||||
"COUNT(CASE WHEN sr.status = 'FAILURE' OR sr.status = 'ERROR' THEN 1 END) AS failedRecords," +
|
||||
"(SELECT CASE" +
|
||||
|
@ -38,9 +38,37 @@ public interface ValidationResultRepository extends JpaRepository<ValidationRule
|
|||
"CASE WHEN COUNT(CASE WHEN has_warnings IS TRUE THEN 1 END) > 0 THEN TRUE ELSE FALSE END AS hasWarnings)" +
|
||||
"FROM eu.dnetlib.validatorapi.entities.ValidationRuleResult sr " +
|
||||
"WHERE sr.validationJobId = :id " +
|
||||
"GROUP BY sr.ruleName, sr.ruleWeight, sr.internalError, sr.validationJobId")
|
||||
"GROUP BY sr.ruleName, sr.ruleWeight, sr.guidelines, sr.internalError, sr.validationJobId")
|
||||
List<SummaryResult> getFullSummaryResult(@Param("id") int validationJobId);
|
||||
|
||||
@Query(value =
|
||||
"SELECT NEW eu.dnetlib.validatorapi.entities.SummaryResult(sr.ruleName, sr.ruleWeight," +
|
||||
"COUNT(CASE WHEN sr.status = 'SUCCESS' THEN 1 END) AS passed_records, " +
|
||||
"COUNT(CASE WHEN sr.status = 'FAILURE' THEN 1 END) AS failed_records) " +
|
||||
"FROM ValidationRuleResult sr " + "WHERE sr.validationJobId = :id and sr.guidelines = :guidelines " +
|
||||
"GROUP BY sr.ruleName, sr.ruleWeight")
|
||||
List<SummaryResult> getSummaryResult(@Param("id") int validationJobId, @Param("guidelines") String guidelines);
|
||||
|
||||
@Query("SELECT CASE WHEN COUNT(vr) > 0 THEN 'FAILURE' ELSE 'SUCCESS' END " +
|
||||
"FROM ValidationRuleResult vr " +
|
||||
"WHERE vr.validationJobId = :id AND vr.guidelines = :guidelines AND vr.status = 'FAILURE' OR vr.internalError != null")
|
||||
public String getStatus(@Param("id") int validationJobId, @Param("guidelines") String guidelines);
|
||||
|
||||
@Query(value = "SELECT NEW eu.dnetlib.validatorapi.entities.SummaryResult(sr.ruleName, sr.ruleWeight, sr.guidelines, sr.internalError," +
|
||||
"COUNT(CASE WHEN sr.status = 'SUCCESS' THEN 1 END) AS passedRecords," +
|
||||
"COUNT(CASE WHEN sr.status = 'FAILURE' OR sr.status = 'ERROR' THEN 1 END) AS failedRecords," +
|
||||
"(SELECT CASE" +
|
||||
" WHEN COUNT(DISTINCT CASE WHEN vr.status = 'ERROR' THEN vr.ruleName END) = COUNT(DISTINCT vr.ruleName) THEN 'ERROR'" +
|
||||
" WHEN COUNT(DISTINCT CASE WHEN vr.status = 'FAILURE' THEN vr.ruleName END) = COUNT(DISTINCT vr.ruleName) THEN 'FAILURE'" +
|
||||
" ELSE 'SUCCESS'" +
|
||||
" END " +
|
||||
"FROM eu.dnetlib.validatorapi.entities.ValidationRuleResult vr WHERE vr.ruleName = sr.ruleName and sr.validationJobId=vr.validationJobId)," +
|
||||
"CASE WHEN COUNT(CASE WHEN has_errors IS TRUE THEN 1 END) > 0 THEN TRUE ELSE FALSE END AS hasErrors," +
|
||||
"CASE WHEN COUNT(CASE WHEN has_warnings IS TRUE THEN 1 END) > 0 THEN TRUE ELSE FALSE END AS hasWarnings)" +
|
||||
"FROM eu.dnetlib.validatorapi.entities.ValidationRuleResult sr " +
|
||||
"WHERE sr.validationJobId = :id AND sr.guidelines = :guidelines " +
|
||||
"GROUP BY sr.ruleName, sr.ruleWeight, sr.guidelines, sr.internalError, sr.validationJobId")
|
||||
List<SummaryResult> getFullSummaryResult(@Param("id") int validationJobId, @Param("guidelines") String guidelines);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
package eu.dnetlib.validatorapi.routes;public class OAI_PMH_RouteBuilder {
|
||||
}
|
|
@ -1,7 +1,9 @@
|
|||
package eu.dnetlib.validatorapi.routes;
|
||||
|
||||
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.ValidationRuleResult;
|
||||
import eu.dnetlib.validatorapi.processors.DataBaseProcessor;
|
||||
import eu.dnetlib.validatorapi.processors.XmlProcessor;
|
||||
import eu.dnetlib.validatorapi.repositories.ValidationIssueRepository;
|
||||
|
@ -49,14 +51,24 @@ public class OaiPmhRoute extends RouteBuilder {
|
|||
from(oaiEndpoint)
|
||||
.routeId(date)
|
||||
.split(xpath("//*[local-name()='record']"))
|
||||
.process(new XmlProcessor(profile, validationJob, validationIssueRepository, validationResultRepository, maxNumberOfRecords))
|
||||
.choice().when(header("MyHeader").isEqualTo("stop"))
|
||||
.to("direct:saveToDatabase")
|
||||
.to("controlbus:route?routeId="+date+"&action=stop")
|
||||
.process(new XmlProcessor(profile, validationJob, maxNumberOfRecords))
|
||||
.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'"))
|
||||
.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();
|
||||
|
||||
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")
|
||||
.routeId("OAIProcessingRoute")
|
||||
|
|
|
@ -25,35 +25,24 @@ import java.util.List;
|
|||
@Component
|
||||
public class OaiSetListRoute extends RouteBuilder {
|
||||
|
||||
/*private final String oaiEndpoint;*/
|
||||
|
||||
public String xml = new String();
|
||||
|
||||
|
||||
/*public OaiSetListRoute(final String oaiEndpoint) {
|
||||
this.oaiEndpoint = oaiEndpoint;
|
||||
}*/
|
||||
|
||||
|
||||
@Override
|
||||
public void configure() throws Exception {
|
||||
|
||||
from("direct:getResponse")
|
||||
.process(exchange -> {
|
||||
// Get the endpoint URL from the request parameter
|
||||
String endpoint = exchange.getIn().getHeader("endpoint", String.class);
|
||||
// Set the dynamic endpoint URL in the exchange header
|
||||
exchange.getIn().setHeader("dynamicEndpoint", endpoint);
|
||||
})
|
||||
.recipientList(header("dynamicEndpoint"))
|
||||
.process(exchange -> {
|
||||
List<String> ListSetsXml = exchange.getIn().getBody(ArrayList.class);
|
||||
List<String> desiredJsonParts = new ArrayList<>();
|
||||
String xmlSets ="";
|
||||
String xmlSets = "";
|
||||
|
||||
// Extract the desired <set> elements from each XML string
|
||||
for (String xml : ListSetsXml) {
|
||||
List<String> extractedSets = extractSets(xml);
|
||||
for (String setXml:extractedSets)
|
||||
for (String setXml : extractedSets)
|
||||
xmlSets += setXml;
|
||||
}
|
||||
|
||||
|
@ -87,7 +76,7 @@ public class OaiSetListRoute extends RouteBuilder {
|
|||
exchange.getIn().setBody(jsonString);
|
||||
}).to("seda:result");*/
|
||||
//}
|
||||
|
||||
|
||||
private List<String> extractSets(String xml) {
|
||||
List<String> setXmls = new ArrayList<>();
|
||||
try {
|
||||
|
|
Loading…
Reference in New Issue