Added guidelines in the rule results + relevant API method to be able to support FAIR validaion for every job

This commit is contained in:
Katerina 2023-07-14 12:05:19 +03:00
parent 0dd8743b42
commit 24a62d97de
3 changed files with 37 additions and 3 deletions

View File

@ -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);
}

View File

@ -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);
}

View File

@ -0,0 +1,2 @@
package eu.dnetlib.validatorapi.routes;public class OAI_PMH_RouteBuilder {
}