Change to return error status and internal error in the APIs

This commit is contained in:
Katerina 2023-07-03 10:57:13 +03:00
parent 97388284f2
commit 41ceffda2a
3 changed files with 49 additions and 38 deletions

View File

@ -40,38 +40,6 @@ public class ReportController {
return validationResultRepository.getFullSummaryResult(jobId);
}
/*
@RequestMapping(value = {"getErrorsReport"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String, List<String>> getErrors(@RequestParam(name = "jobId") int jobId, @RequestParam(name = "ruleName") String ruleName){
List<Object[]> resultList = validationIssueRepository.getAllErrorsRecordUrlsByRuleName(jobId, ruleName);
return extractRecordsGroupedByRule(resultList);
}
@RequestMapping(value = {"getWarningsReport"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String, List<String>> getWarningsReport(@RequestParam(name = "jobId") int jobId, @RequestParam(name = "ruleName") String ruleName){
List<Object[]> resultList = validationIssueRepository.getAllWarningsRecordUrlsByRuleName(jobId, ruleName);
return extractRecordsGroupedByRule(resultList);
}
private Map<String, List<String>> extractRecordsGroupedByRule(List<Object[]> resultList) {
Map<String, List<String>> recordUrlsByIssueText = new HashMap<>();
for (Object[] result : resultList) {
String issueText = (String) result[0];
String recordUrl = (String) result[1];
List<String> recordUrls = recordUrlsByIssueText.get(issueText);
if (recordUrls == null) {
recordUrls = new ArrayList<>();
recordUrlsByIssueText.put(issueText, recordUrls);
}
recordUrls.add(recordUrl);
}
return recordUrlsByIssueText;
}
*/
@RequestMapping(value = {"getWarningsReport"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
private List<IssueDescriptor> getWarningDescriptors(@RequestParam(name = "jobId") int jobId,
@RequestParam(name = "ruleName") String ruleName){
@ -113,4 +81,36 @@ public class ReportController {
return issueDescriptors;
}
/*
@RequestMapping(value = {"getErrorsReport"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String, List<String>> getErrors(@RequestParam(name = "jobId") int jobId, @RequestParam(name = "ruleName") String ruleName){
List<Object[]> resultList = validationIssueRepository.getAllErrorsRecordUrlsByRuleName(jobId, ruleName);
return extractRecordsGroupedByRule(resultList);
}
@RequestMapping(value = {"getWarningsReport"}, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String, List<String>> getWarningsReport(@RequestParam(name = "jobId") int jobId, @RequestParam(name = "ruleName") String ruleName){
List<Object[]> resultList = validationIssueRepository.getAllWarningsRecordUrlsByRuleName(jobId, ruleName);
return extractRecordsGroupedByRule(resultList);
}
private Map<String, List<String>> extractRecordsGroupedByRule(List<Object[]> resultList) {
Map<String, List<String>> recordUrlsByIssueText = new HashMap<>();
for (Object[] result : resultList) {
String issueText = (String) result[0];
String recordUrl = (String) result[1];
List<String> recordUrls = recordUrlsByIssueText.get(issueText);
if (recordUrls == null) {
recordUrls = new ArrayList<>();
recordUrlsByIssueText.put(issueText, recordUrls);
}
recordUrls.add(recordUrl);
}
return recordUrlsByIssueText;
}
*/
}

View File

@ -9,6 +9,7 @@ public class SummaryResult {
@Id
String rule_name;
int rule_weight;
String internal_error;
String rule_status;
long passed_records;
long failed_records;
@ -28,9 +29,11 @@ public class SummaryResult {
this.failed_records = failed_records;
}
public SummaryResult(String rule_name, int rule_weight, long passed_records, long failed_records, String rule_status, boolean has_errors, boolean has_warnings) {
public SummaryResult(String rule_name, int rule_weight, 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.internal_error = internal_error;
this.rule_status = rule_status;
this.passed_records = passed_records;
this.failed_records = failed_records;
@ -54,6 +57,14 @@ public class SummaryResult {
this.rule_weight = rule_weight;
}
public String getInternal_error() {
return internal_error;
}
public void setInternal_error(String internal_error) {
this.internal_error = internal_error;
}
public long getPassed_records() {
return passed_records;
}

View File

@ -25,12 +25,12 @@ 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," +
@Query(value = "SELECT NEW eu.dnetlib.validatorapi.entities.SummaryResult(sr.ruleName, sr.ruleWeight, sr.internalError," +
"COUNT(CASE WHEN sr.status = 'SUCCESS' THEN 1 END) AS passedRecords," +
"COUNT(CASE WHEN sr.status = 'FAILURE' THEN 1 END) AS failedRecords," +
"COUNT(CASE WHEN sr.status = 'FAILURE' OR sr.status = 'ERROR' THEN 1 END) AS failedRecords," +
"(SELECT CASE" +
" WHEN COUNT(DISTINCT CASE WHEN vr.status = 'FAILURE' THEN vr.ruleName END) = COUNT(DISTINCT vr.ruleName) THEN 'FAILURE'" +
" 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 = 'ERROR' THEN vr.ruleName END) > 0 THEN 'ERROR'" +
" WHEN COUNT(DISTINCT CASE WHEN vr.status = 'WARNING' THEN vr.ruleName END) > 0 THEN 'WARNING'" +
" ELSE 'SUCCESS'" +
" END " +
"FROM eu.dnetlib.validatorapi.entities.ValidationRuleResult vr WHERE vr.ruleName = sr.ruleName)," +
@ -38,7 +38,7 @@ 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")
"GROUP BY sr.ruleName, sr.ruleWeight, sr.internalError")
List<SummaryResult> getFullSummaryResult(@Param("id") int validationJobId);