use of org.hisp.dhis.tracker.report.TrackerValidationReport in project dhis2-core by dhis2.
the class DefaultTrackerImportService method importTracker.
@Override
public TrackerImportReport importTracker(TrackerImportParams params) {
User user = trackerUserService.getUser(params.getUserId());
params.setUser(user);
TrackerTimingsStats opsTimer = new TrackerTimingsStats();
startImport(params);
TrackerValidationReport validationReport = new TrackerValidationReport();
TrackerBundleReport bundleReport;
try {
TrackerBundle trackerBundle = preHeat(params, opsTimer);
Map<TrackerType, Integer> bundleSize = calculatePayloadSize(trackerBundle);
preProcess(opsTimer, trackerBundle);
if (addToValidationReport(params, opsTimer, validationReport, trackerBundle)) {
return buildReportAndNotify(params, validationReport, opsTimer, bundleSize);
}
bundleReport = commit(params, opsTimer, trackerBundle);
postCommit(trackerBundle);
TrackerImportReport trackerImportReport = TrackerImportReport.withImportCompleted(TrackerStatus.OK, bundleReport, validationReport, opsTimer.stopTimer(), bundleSize);
endImport(params, trackerImportReport);
return trackerImportReport;
} catch (Exception e) {
log.error("Exception thrown during import.", e);
TrackerImportReport report = TrackerImportReport.withError("Exception:" + e.getMessage(), validationReport, opsTimer.stopTimer());
endImportWithError(params, report, e);
return report;
}
}
use of org.hisp.dhis.tracker.report.TrackerValidationReport in project dhis2-core by dhis2.
the class DefaultTrackerImportService method execRuleEngine.
private TrackerValidationReport execRuleEngine(TrackerImportParams params, TrackerTimingsStats opsTimer, TrackerBundle trackerBundle) {
opsTimer.execVoid(PROGRAMRULE_OPS, () -> runRuleEngine(trackerBundle));
notifyOps(params, PROGRAMRULE_OPS, opsTimer);
TrackerValidationReport report = opsTimer.exec(VALIDATE_PROGRAMRULE_OPS, () -> validateRuleEngine(trackerBundle));
notifyOps(params, VALIDATE_PROGRAMRULE_OPS, opsTimer);
return report;
}
use of org.hisp.dhis.tracker.report.TrackerValidationReport in project dhis2-core by dhis2.
the class DefaultTrackerValidationServiceTest method needsToRunPreventsHookExecutionIfReturnsFalse.
@Test
void needsToRunPreventsHookExecutionIfReturnsFalse() {
Event invalidEvent = event();
TrackerBundle bundle = newBundle().events(events(invalidEvent)).build();
ValidationHook hook1 = ValidationHook.builder().needsToRun(false).validateEvent((reporter, event) -> reporter.addErrorIf(() -> invalidEvent.equals(event), event, TrackerErrorCode.E1032)).build();
service = new DefaultTrackerValidationService(List.of(hook1), Collections.emptyList());
TrackerValidationReport report = service.validate(bundle);
assertFalse(report.hasErrors());
}
use of org.hisp.dhis.tracker.report.TrackerValidationReport in project dhis2-core by dhis2.
the class DefaultTrackerValidationServiceTest method warningsDoNotInvalidateAndRemoveEntities.
@Test
void warningsDoNotInvalidateAndRemoveEntities() {
Event validEvent = event();
TrackerBundle bundle = newBundle().events(events(validEvent)).build();
ValidationHook hook = ValidationHook.builder().validateEvent((reporter, event) -> {
if (validEvent.equals(event)) {
reporter.addWarning(event, TrackerErrorCode.E1120);
}
}).build();
service = new DefaultTrackerValidationService(List.of(hook), Collections.emptyList());
TrackerValidationReport report = service.validate(bundle);
assertFalse(report.hasErrors());
assertTrue(report.hasWarnings());
assertEquals(1, report.getWarnings().size());
assertHasWarning(report, TrackerErrorCode.E1120, validEvent);
assertTrue(bundle.getEvents().contains(validEvent));
}
use of org.hisp.dhis.tracker.report.TrackerValidationReport in project dhis2-core by dhis2.
the class DefaultTrackerValidationServiceTest method fullValidationModeAddsAllErrorsToReport.
@Test
void fullValidationModeAddsAllErrorsToReport() {
// Test shows
// in ValidationMode==FULL all hooks are called even with entities that
// are already invalid (i.e. have an error
// in the validation report)
Event validEvent = event();
Event invalidEvent = event();
TrackerBundle bundle = newBundle().events(events(invalidEvent, validEvent)).build();
ValidationHook hook1 = ValidationHook.builder().removeOnError(false).validateEvent((reporter, event) -> reporter.addErrorIf(() -> invalidEvent.equals(event), event, TrackerErrorCode.E1032)).build();
ValidationHook hook2 = ValidationHook.builder().removeOnError(false).validateEvent((reporter, event) -> reporter.addErrorIf(() -> invalidEvent.equals(event), event, TrackerErrorCode.E9999)).build();
service = new DefaultTrackerValidationService(List.of(hook1, hook2), Collections.emptyList());
TrackerValidationReport report = service.validate(bundle);
assertTrue(report.hasErrors());
assertEquals(2, report.getErrors().size(), "both hooks should add 1 error each");
assertHasError(report, TrackerErrorCode.E1032, invalidEvent);
assertHasError(report, TrackerErrorCode.E9999, invalidEvent);
assertFalse(bundle.getEvents().contains(invalidEvent));
assertTrue(bundle.getEvents().contains(validEvent));
}
Aggregations