From c4e83aa443ccbd6a6c02dfb6882269cf1a29b93f Mon Sep 17 00:00:00 2001 From: HMS17 Date: Tue, 24 Mar 2026 10:22:18 -0400 Subject: [PATCH] [BI-2816] Unknown error when creating new experiment with file with more than one experiment title and at least one title is that of an existing experiment --- .../create/workflow/CreateNewExperimentWorkflow.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/create/workflow/CreateNewExperimentWorkflow.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/create/workflow/CreateNewExperimentWorkflow.java index 36bfb772d..a22cb98bf 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/create/workflow/CreateNewExperimentWorkflow.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/create/workflow/CreateNewExperimentWorkflow.java @@ -43,6 +43,7 @@ import org.breedinginsight.brapps.importer.services.processors.experiment.create.workflow.steps.PopulateNewPendingImportObjectsStep; import org.breedinginsight.brapps.importer.services.processors.experiment.create.workflow.steps.ValidatePendingImportObjectsStep; import org.breedinginsight.brapps.importer.services.processors.experiment.services.ExperimentPhenotypeService; +import org.breedinginsight.services.exceptions.UnprocessableEntityException; import org.breedinginsight.services.exceptions.ValidatorException; import javax.inject.Inject; @@ -57,6 +58,7 @@ import javax.inject.Singleton; +import static org.breedinginsight.brapps.importer.services.processors.experiment.model.ExpImportProcessConstants.ErrMessage.MULTIPLE_EXP_TITLES; import static org.breedinginsight.brapps.importer.services.processors.experiment.model.ExpImportProcessConstants.OBSERVATION_UNIT_ID_SUFFIX; @Slf4j @@ -99,6 +101,12 @@ private ImportPreviewResponse runWorkflow(ImportContext context) throws Exceptio throw new HttpStatusException(HttpStatus.UNPROCESSABLE_ENTITY, "ObsUnitIDs are detected"); } + //Make sure file only contains one exp title, check early cause avoids issues with titles corresponding to existing and new trials + List experimentImportRows = ExperimentUtilities.importRowsToExperimentObservations(importRows); + if (experimentImportRows.stream().map(ExperimentObservation::getExpTitle).distinct().count() > 1) { + throw new UnprocessableEntityException(MULTIPLE_EXP_TITLES.getValue()); + } + statusService.updateMessage(upload, "Checking existing experiment objects in brapi service and mapping data"); ProcessedPhenotypeData phenotypeData = experimentPhenotypeService.extractPhenotypes(context);