diff --git a/user-interface/src/main/java/life/qbic/datamanager/views/projects/project/samples/registration/batch/RegisterSampleBatchDialog.java b/user-interface/src/main/java/life/qbic/datamanager/views/projects/project/samples/registration/batch/RegisterSampleBatchDialog.java index fe1783481c..7c0ba30cd6 100644 --- a/user-interface/src/main/java/life/qbic/datamanager/views/projects/project/samples/registration/batch/RegisterSampleBatchDialog.java +++ b/user-interface/src/main/java/life/qbic/datamanager/views/projects/project/samples/registration/batch/RegisterSampleBatchDialog.java @@ -104,7 +104,42 @@ public RegisterSampleBatchDialog(SampleValidationService sampleValidationService validationTasks .thenAccept(ignored -> { - reactOnValidations(validations, ui, component, uploadedData); + if (validations.stream().anyMatch(not(CompletableFuture::isDone))) { + throw new IllegalStateException( + "validation task still in execution although expected to be done"); + } + ValidationResultWithPayload valueIfAbsent = new ValidationResultWithPayload<>( + ValidationResult.withFailures( + List.of("Validation could not complete normally.")), + new SampleMetadata("", "", null, "", "", "", 0, null, null, null, + "")); //not expected to occur + + List> validationResults = validations.stream() + .filter(result -> + result.isDone() && !result.isCancelled() && !result.isCompletedExceptionally()) + .map(future -> future.getNow(valueIfAbsent)) + .toList(); + List> failedValidations = validationResults.stream() + .filter(validation -> validation.validationResult().containsFailures()) + .toList(); + List> succeededValidations = validationResults.stream() + .filter(validation -> validation.validationResult().allPassed()) + .toList(); + + if (!failedValidations.isEmpty()) { + ui.access(() -> component.setDisplay(invalidDisplay( + failedValidations.stream().map(ValidationResultWithPayload::validationResult) + .toList()))); + setValidatedSampleMetadata(List.of()); + return; + } + if (!succeededValidations.isEmpty()) { + ui.access(() -> component + .setDisplay(new ValidUploadDisplay(uploadedData.fileName(), + succeededValidations.size()))); + setValidatedSampleMetadata( + succeededValidations.stream().map(ValidationResultWithPayload::payload).toList()); + } }) .exceptionally(e -> { RuntimeException runtimeException = new RuntimeException( @@ -122,52 +157,6 @@ public RegisterSampleBatchDialog(SampleValidationService sampleValidationService add(batchNameField, pilotCheck, uploadWithDisplay); } - private void reactOnValidations( - List>> validations, - UI ui, - UploadWithDisplay component, - UploadedData uploadedData) { - if (validations.stream().anyMatch(not(CompletableFuture::isDone))) { - throw new IllegalStateException( - "validation task still in execution although expected to be done"); - } - ValidationResultWithPayload valueIfAbsent = new ValidationResultWithPayload<>( - ValidationResult.withFailures( - List.of("Validation could not complete normally.")), - new SampleMetadata("", "", null, "", "", "", 0, null, null, null, - "")); //not expected to occur - - List> validationResults = validations.stream() - .filter(result -> - result.isDone() && !result.isCancelled() && !result.isCompletedExceptionally()) - .map(future -> future.getNow(valueIfAbsent)) - .toList(); - List> failedValidations = validationResults.stream() - .filter(validation -> validation.validationResult().containsFailures()) - .toList(); - List> succeededValidations = validationResults.stream() - .filter(validation -> validation.validationResult().allPassed()) - .toList(); - - if (!failedValidations.isEmpty()) { - ui.access(() -> component.setDisplay(invalidDisplay( - failedValidations.stream().map(ValidationResultWithPayload::validationResult).toList()))); - setValidatedSampleMetadata(List.of()); - return; - } - if (!succeededValidations.isEmpty()) { - ui.access(() -> component - .setDisplay(new ValidUploadDisplay(uploadedData.fileName(), - succeededValidations.size()))); - setValidatedSampleMetadata( - succeededValidations.stream().map(ValidationResultWithPayload::payload).toList()); - } - } - - private void runValidation(List sampleInformationForNewSamples) { - - } - private static List extractSampleInformationForNewSamples( UploadedData uploadedData) { ParsingResult parsingResult = XLSXParser.create().parse(uploadedData.inputStream());