Summary Result is automatically saved in SimpleOaiPmhRoute Router

This commit is contained in:
Katerina 2023-11-07 15:06:11 +02:00
parent d2baa7ccf2
commit 59fdd724e9
7 changed files with 174 additions and 31 deletions

View File

@ -3,6 +3,7 @@ package eu.dnetlib.validatorapi.controllers;
import eu.dnetlib.validatorapi.entities.IssueDescriptor; import eu.dnetlib.validatorapi.entities.IssueDescriptor;
import eu.dnetlib.validatorapi.entities.SummaryResult; import eu.dnetlib.validatorapi.entities.SummaryResult;
import eu.dnetlib.validatorapi.entities.ValidationJob; import eu.dnetlib.validatorapi.entities.ValidationJob;
import eu.dnetlib.validatorapi.repositories.SummaryValidationJobRepository;
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;
@ -20,13 +21,16 @@ public class ReportController {
private final ValidationJobRepository validationJobRepository; private final ValidationJobRepository validationJobRepository;
private final ValidationResultRepository validationResultRepository; private final ValidationResultRepository validationResultRepository;
private final ValidationIssueRepository validationIssueRepository; private final ValidationIssueRepository validationIssueRepository;
private final SummaryValidationJobRepository summaryValidationJobRepository;
public ReportController(ValidationJobRepository validationJobRepository, public ReportController(ValidationJobRepository validationJobRepository,
ValidationResultRepository validationResultRepository, ValidationResultRepository validationResultRepository,
ValidationIssueRepository validationIssueRepository) { ValidationIssueRepository validationIssueRepository,
SummaryValidationJobRepository summaryValidationJobRepository) {
this.validationJobRepository = validationJobRepository; this.validationJobRepository = validationJobRepository;
this.validationResultRepository = validationResultRepository; this.validationResultRepository = validationResultRepository;
this.validationIssueRepository = validationIssueRepository; this.validationIssueRepository = validationIssueRepository;
this.summaryValidationJobRepository = summaryValidationJobRepository;
} }
@RequestMapping(value={"getJobResult"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value={"getJobResult"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ -44,6 +48,38 @@ public class ReportController {
return validationResultRepository.getFullSummaryResult(jobId); return validationResultRepository.getFullSummaryResult(jobId);
} }
@RequestMapping(value = {"saveResultsByJobId"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public void saveSummaryJobResults(@RequestParam(name = "jobId") int jobId,
@RequestParam(name= "guidelines", required = false) Optional<String> guidelines) {
List<SummaryResult> summaryResultList;
if (guidelines.isPresent() && guidelines.get().isEmpty())
summaryResultList = validationResultRepository.getFullSummaryResult(jobId, guidelines.get());
else
summaryResultList = validationResultRepository.getFullSummaryResult(jobId);
for(SummaryResult sr:summaryResultList){
System.out.println("Saving " + sr.getRule_name() + ", " + sr.getValidationJobId());
sr.setValidationJobId(jobId);
summaryValidationJobRepository.save(sr);
}
}
@RequestMapping(value = {"getSummaryFromDB"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public List<SummaryResult> getSummaryFromDB(@RequestParam(name = "jobId") int jobId,
@RequestParam(name= "guidelines", required = false) Optional<String> guidelines) {
List<SummaryResult> srlist = summaryValidationJobRepository.findByValidationJobId(jobId);
/* SummaryResult sr = new SummaryResult();
sr.setValidationJobId(jobId);
sr.setRule_name("Access Rights");
System.out.println("\n>>" + summaryValidationJobRepository.findAll());*/
/* for (SummaryResult sr:srlist) {
System.out.println(sr);
}*/
return srlist;
}
@RequestMapping(value = {"getWarningsReport"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = {"getWarningsReport"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
private List<IssueDescriptor> getWarningDescriptors(@RequestParam(name = "jobId") int jobId, private List<IssueDescriptor> getWarningDescriptors(@RequestParam(name = "jobId") int jobId,
@RequestParam(name = "ruleName") String ruleName){ @RequestParam(name = "ruleName") String ruleName){

View File

@ -0,0 +1,33 @@
package eu.dnetlib.validatorapi.controllers;
import java.io.Serializable;
public class SummaryResultId implements Serializable {
public String rule_name;
public int validationJobId;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SummaryResultId that = (SummaryResultId) o;
System.out.println("\n\n\n\n");
System.out.println("Validation job id " + validationJobId);
System.out.println("rule_name " + rule_name);
System.out.println("\n\n\n\n");
if (validationJobId != that.validationJobId) return false;
return rule_name != null ? rule_name.equals(that.rule_name) : that.rule_name == null;
}
// Implement hashCode method
@Override
public int hashCode() {
int result = rule_name != null ? rule_name.hashCode() : 0;
result = 31 * result + validationJobId;
return result;
}
}

View File

@ -7,6 +7,7 @@ import eu.dnetlib.validatorapi.entities.RuleInfo;
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.exceptions.ValidationException; import eu.dnetlib.validatorapi.exceptions.ValidationException;
import eu.dnetlib.validatorapi.repositories.SummaryValidationJobRepository;
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;
@ -55,16 +56,20 @@ public class ValidationController {
private final ValidationResultRepository validationResultRepository; private final ValidationResultRepository validationResultRepository;
private final ValidationIssueRepository validationIssueRepository; private final ValidationIssueRepository validationIssueRepository;
private final SummaryValidationJobRepository summaryValidationJobRepository;
@Autowired @Autowired
CamelContext camelContext; CamelContext camelContext;
@Autowired @Autowired
public ValidationController(ValidationJobRepository validationJobRepository, public ValidationController(ValidationJobRepository validationJobRepository,
ValidationResultRepository validationResultRepository, ValidationResultRepository validationResultRepository,
ValidationIssueRepository validationIssueRepository) { ValidationIssueRepository validationIssueRepository,
SummaryValidationJobRepository summaryValidationJobRepository) {
this.validationJobRepository = validationJobRepository; this.validationJobRepository = validationJobRepository;
this.validationResultRepository = validationResultRepository; this.validationResultRepository = validationResultRepository;
this.validationIssueRepository = validationIssueRepository; this.validationIssueRepository = validationIssueRepository;
this.summaryValidationJobRepository = summaryValidationJobRepository;
} }
@RequestMapping(value = {"/realValidator-old"}, method = RequestMethod.GET) @RequestMapping(value = {"/realValidator-old"}, method = RequestMethod.GET)
@ -219,7 +224,8 @@ public class ValidationController {
if (fairProfile == null) { if (fairProfile == null) {
oaiPmhRouteBuilder = oaiPmhRouteBuilder =
new SimpleOaiPmhRoute(oaiEndpoint, profile, validationJob, numberOfRecords, uuid.toString()); new SimpleOaiPmhRoute(oaiEndpoint, profile, validationJob, numberOfRecords, uuid.toString(),
validationResultRepository, summaryValidationJobRepository);
} else { } else {
oaiPmhRouteBuilder = oaiPmhRouteBuilder =

View File

@ -1,58 +1,64 @@
package eu.dnetlib.validatorapi.entities; package eu.dnetlib.validatorapi.entities;
import javax.persistence.Column; import eu.dnetlib.validatorapi.controllers.SummaryResultId;
import javax.persistence.Entity;
import javax.persistence.Id; import javax.persistence.*;
import javax.persistence.IdClass;
import java.io.Serializable; import java.io.Serializable;
@Entity @Entity
@IdClass(SummaryResult.class) @Table(name="summary_result")
@IdClass(SummaryResultId.class)
public class SummaryResult implements Serializable { public class SummaryResult implements Serializable {
@Id @Id
@Column(name="rule_name") @Column(name="rule_name")
String rule_name; public String rule_name;
@Id @Id
@Column(name="validation_job_id") @Column(name="validation_job_id")
int validationJobId; public int validationJobId;
@Column(name="rule_weight") @Column(name="rule_weight")
int rule_weight; public int rule_weight;
@Column(name="requirement_level") @Column(name="requirement_level")
String requirement_level; public String requirement_level;
@Column(name="description") @Column(name="description")
String description; public String description;
@Column(name="fair_principles") @Column(name="fair_principles")
String fair_principles; public String fair_principles;
@Column(name="link") @Column(name="link")
String link; public String link;
@Column(name="guidelines") @Column(name="guidelines")
String guidelines; public String guidelines;
@Column(name = "internal_error") @Column(name = "internal_error")
String internal_error; public String internal_error;
@Column(name="rule_status") @Column(name="rule_status")
String rule_status; public String rule_status;
@Column(name = "passed_records") @Column(name = "passed_records")
long passed_records; public long passed_records;
@Column(name="failed_records") @Column(name="failed_records")
long failed_records; public long failed_records;
@Column(name="has_errors") @Column(name="has_errors")
boolean has_errors; public boolean has_errors;
@Column(name="has_warnings") @Column(name="has_warnings")
boolean has_warnings; public boolean has_warnings;
public SummaryResult(){}
public SummaryResult(int validationJobId, String rule_name) {
this.validationJobId = validationJobId;
this.rule_name = rule_name;
}
public SummaryResult(String rule_name, long passed_records, long failed_records) { public SummaryResult(String rule_name, long passed_records, long failed_records) {
this.rule_name = rule_name; this.rule_name = rule_name;
this.passed_records = passed_records; this.passed_records = passed_records;
@ -95,6 +101,14 @@ public class SummaryResult implements Serializable {
this.rule_name = rule_name; this.rule_name = rule_name;
} }
public int getValidationJobId() {
return validationJobId;
}
public void setValidationJobId(int validationJobId) {
this.validationJobId = validationJobId;
}
public int getRule_weight() { public int getRule_weight() {
return rule_weight; return rule_weight;
} }
@ -201,5 +215,4 @@ public class SummaryResult implements Serializable {
'}'; '}';
} }
} }

View File

@ -0,0 +1,41 @@
package eu.dnetlib.validatorapi.processors;
import eu.dnetlib.validatorapi.entities.SummaryResult;
import eu.dnetlib.validatorapi.repositories.SummaryValidationJobRepository;
import eu.dnetlib.validatorapi.repositories.ValidationResultRepository;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import java.util.List;
public class SummaryValidationJobProcessor implements Processor {
private final ValidationResultRepository validationResultRepository;
private final SummaryValidationJobRepository summaryValidationJobRepository;
int validation_job_id;
public SummaryValidationJobProcessor(ValidationResultRepository validationResultRepository,
SummaryValidationJobRepository summaryValidationJobRepository,
int validation_job_id){
this.validationResultRepository = validationResultRepository;
this.summaryValidationJobRepository = summaryValidationJobRepository;
this.validation_job_id = validation_job_id;
}
@Override
public void process(Exchange exchange) throws Exception {
List<SummaryResult> summaryResults = validationResultRepository.getFullSummaryResult
(validation_job_id);
System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
System.out.println("VALIDATION JOB ID " + (Integer) exchange.getIn().getHeader("validationId"));
System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
for(SummaryResult sr: summaryResults) {
sr.validationJobId = validation_job_id;
sr.validationJobId = validation_job_id;
summaryValidationJobRepository.save(sr);
}
}
}

View File

@ -1,10 +1,14 @@
package eu.dnetlib.validatorapi.repositories; package eu.dnetlib.validatorapi.repositories;
import eu.dnetlib.validatorapi.controllers.SummaryResultId;
import eu.dnetlib.validatorapi.entities.SummaryResult; import eu.dnetlib.validatorapi.entities.SummaryResult;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository import java.util.List;
public interface SummaryValidationJobRepository extends JpaRepository<SummaryResult, Long> {
@Repository
public interface SummaryValidationJobRepository extends JpaRepository<SummaryResult, SummaryResultId> {
List<SummaryResult> findByValidationJobId(int validationJobId);
} }

View File

@ -4,10 +4,9 @@ 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.processors.DataBaseProcessor; import eu.dnetlib.validatorapi.processors.*;
import eu.dnetlib.validatorapi.processors.ErrorProcessor; import eu.dnetlib.validatorapi.repositories.SummaryValidationJobRepository;
import eu.dnetlib.validatorapi.processors.ExceptionProcessor; import eu.dnetlib.validatorapi.repositories.ValidationResultRepository;
import eu.dnetlib.validatorapi.processors.XmlProcessor;
import org.apache.camel.Exchange; import org.apache.camel.Exchange;
import org.apache.camel.Processor; import org.apache.camel.Processor;
import org.apache.camel.TypeConversionException; import org.apache.camel.TypeConversionException;
@ -27,15 +26,21 @@ public class SimpleOaiPmhRoute extends RouteBuilder {
private ValidationJob validationJob; private ValidationJob validationJob;
String routeid; String routeid;
private ValidationResultRepository validationResultRepository;
private SummaryValidationJobRepository summaryValidationJobRepository;
public SimpleOaiPmhRoute(String oaiEndpoint, AbstractOpenAireProfile profile, ValidationJob validationJob, public SimpleOaiPmhRoute(String oaiEndpoint, AbstractOpenAireProfile profile, ValidationJob validationJob,
long maxNumberOfRecords, String routeid) { long maxNumberOfRecords, String routeid, ValidationResultRepository validationResultRepository,
SummaryValidationJobRepository summaryValidationJobRepository) {
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.routeid = routeid; this.routeid = routeid;
this.validationResultRepository = validationResultRepository;
this.summaryValidationJobRepository = summaryValidationJobRepository;
} }
@Override @Override
@ -49,7 +54,7 @@ public class SimpleOaiPmhRoute extends RouteBuilder {
onException(TypeConversionException.class) onException(TypeConversionException.class)
.process(new ExceptionProcessor(validationJob)) .process(new ExceptionProcessor(validationJob))
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true").log("\n\n\n\nHEREEEEEE") .to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true")
.to("controlbus:route?routeId="+routeid+"&action=stop") .to("controlbus:route?routeId="+routeid+"&action=stop")
.maximumRedeliveries(0) .maximumRedeliveries(0)
.handled(true) .handled(true)
@ -109,6 +114,7 @@ public class SimpleOaiPmhRoute extends RouteBuilder {
.process(new DataBaseProcessor()) .process(new DataBaseProcessor())
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true")//;.to("direct:saveToDatabase") .to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true")//;.to("direct:saveToDatabase")
.to("controlbus:route?routeId="+routeid+"&action=stop&async=true") .to("controlbus:route?routeId="+routeid+"&action=stop&async=true")
.to("direct:cleanDB")
.endChoice() .endChoice()
.end() .end()
.endChoice() .endChoice()
@ -117,6 +123,10 @@ public class SimpleOaiPmhRoute extends RouteBuilder {
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true") .to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true")
.end(); .end();
from("direct:cleanDB")
.process(new SummaryValidationJobProcessor(validationResultRepository, summaryValidationJobRepository,
validationJob.id));
/* /*
from("direct:saveToDatabase") from("direct:saveToDatabase")
.routeId(routeid2) .routeId(routeid2)