From 24a62d97de9a31143b1d5a8607f60cbbaa6f8e3c Mon Sep 17 00:00:00 2001 From: Katerina Date: Fri, 14 Jul 2023 12:05:19 +0300 Subject: [PATCH] Added guidelines in the rule results + relevant API method to be able to support FAIR validaion for every job --- .../controllers/ReportController.java | 6 +++- .../ValidationResultRepository.java | 32 +++++++++++++++++-- .../routes/OAI_PMH_RouteBuilder.java | 2 ++ 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 src/main/java/eu/dnetlib/validatorapi/routes/OAI_PMH_RouteBuilder.java diff --git a/src/main/java/eu/dnetlib/validatorapi/controllers/ReportController.java b/src/main/java/eu/dnetlib/validatorapi/controllers/ReportController.java index a52b20a..807895a 100644 --- a/src/main/java/eu/dnetlib/validatorapi/controllers/ReportController.java +++ b/src/main/java/eu/dnetlib/validatorapi/controllers/ReportController.java @@ -36,7 +36,11 @@ public class ReportController { } @RequestMapping(value = {"getResultsByJobId"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public List getSummaryJobResults(@RequestParam(name = "jobId") int jobId){ + public List getSummaryJobResults(@RequestParam(name = "jobId") int jobId, + @RequestParam(name= "guidelines", required = false) Optional guidelines) { + if (guidelines.isPresent() && guidelines.get().isEmpty()) + return validationResultRepository.getFullSummaryResult(jobId, guidelines.get()); + return validationResultRepository.getFullSummaryResult(jobId); } diff --git a/src/main/java/eu/dnetlib/validatorapi/repositories/ValidationResultRepository.java b/src/main/java/eu/dnetlib/validatorapi/repositories/ValidationResultRepository.java index 9bd1215..71df2b5 100644 --- a/src/main/java/eu/dnetlib/validatorapi/repositories/ValidationResultRepository.java +++ b/src/main/java/eu/dnetlib/validatorapi/repositories/ValidationResultRepository.java @@ -25,7 +25,7 @@ public interface ValidationResultRepository extends JpaRepository 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 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 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 getFullSummaryResult(@Param("id") int validationJobId, @Param("guidelines") String guidelines); } diff --git a/src/main/java/eu/dnetlib/validatorapi/routes/OAI_PMH_RouteBuilder.java b/src/main/java/eu/dnetlib/validatorapi/routes/OAI_PMH_RouteBuilder.java new file mode 100644 index 0000000..3783bd5 --- /dev/null +++ b/src/main/java/eu/dnetlib/validatorapi/routes/OAI_PMH_RouteBuilder.java @@ -0,0 +1,2 @@ +package eu.dnetlib.validatorapi.routes;public class OAI_PMH_RouteBuilder { +}