diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/ExperimentUtilities.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/ExperimentUtilities.java index a215af40f..d37438b51 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/ExperimentUtilities.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/ExperimentUtilities.java @@ -306,7 +306,7 @@ public static void addYearToStudyAdditionalInfo(Program program, BrAPIStudy stud * @throws IllegalStateException if any ObsUnit ID is repeated in the import rows * @throws HttpStatusException if there is a mix of ObsUnit IDs for some but not all rows */ - public static Set collateReferenceOUIds(AppendOverwriteMiddlewareContext context) { + public static Set collateReferenceOUIds(AppendOverwriteMiddlewareContext context) throws HttpStatusException, IllegalStateException { // Initialize variables to track the presence of ObsUnit IDs Set referenceOUIds = new HashSet<>(); boolean hasNoReferenceUnitIds = true; @@ -333,7 +333,7 @@ public static Set collateReferenceOUIds(AppendOverwriteMiddlewareContext if (!hasNoReferenceUnitIds && !hasAllReferenceUnitIds) { // Throw exception if there is a mix of ObsUnit IDs for some but not all rows - throw new HttpStatusException(HttpStatus.UNPROCESSABLE_ENTITY, ExpImportProcessConstants.ErrMessage.MISSING_OBS_UNIT_ID_ERROR); + throw new HttpStatusException(HttpStatus.UNPROCESSABLE_ENTITY, ExpImportProcessConstants.ErrMessage.MISSING_OBS_UNIT_ID_ERROR.getValue()); } return referenceOUIds; diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/AppendOverwriteIDValidation.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/AppendOverwriteIDValidation.java index 14bad6915..64f471b88 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/AppendOverwriteIDValidation.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/AppendOverwriteIDValidation.java @@ -18,10 +18,12 @@ package org.breedinginsight.brapps.importer.services.processors.experiment.appendoverwrite.middleware; import io.micronaut.context.annotation.Prototype; +import io.micronaut.http.exceptions.HttpStatusException; import lombok.extern.slf4j.Slf4j; import org.breedinginsight.brapps.importer.services.processors.experiment.ExperimentUtilities; import org.breedinginsight.brapps.importer.services.processors.experiment.appendoverwrite.model.AppendOverwriteMiddlewareContext; import org.breedinginsight.brapps.importer.services.processors.experiment.appendoverwrite.model.AppendOverwriteMiddleware; +import org.breedinginsight.brapps.importer.services.processors.experiment.appendoverwrite.model.MiddlewareException; @Slf4j @Prototype @@ -29,18 +31,12 @@ public class AppendOverwriteIDValidation extends AppendOverwriteMiddleware { @Override public AppendOverwriteMiddlewareContext process(AppendOverwriteMiddlewareContext context) { - context.getAppendOverwriteWorkflowContext().setReferenceOUIds(ExperimentUtilities.collateReferenceOUIds(context)); + try { + context.getAppendOverwriteWorkflowContext().setReferenceOUIds(ExperimentUtilities.collateReferenceOUIds(context)); + } catch (HttpStatusException | IllegalStateException e) { + context.getAppendOverwriteWorkflowContext().setProcessError(new MiddlewareException(e)); + return this.compensate(context); + } return processNext(context); } - - @Override - public AppendOverwriteMiddlewareContext compensate(AppendOverwriteMiddlewareContext context) { - // tag an error if it occurred in this local transaction - context.getAppendOverwriteWorkflowContext().getProcessError().tag(this.getClass().getName()); - - // undo the prior local transaction - return compensatePrior(context); - } - - } diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/model/ExpImportProcessConstants.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/model/ExpImportProcessConstants.java index 72c0545b6..b4f7caf90 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/model/ExpImportProcessConstants.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/model/ExpImportProcessConstants.java @@ -18,7 +18,7 @@ public class ExpImportProcessConstants { public enum ErrMessage { MULTIPLE_EXP_TITLES("File contains more than one Experiment Title"), - MISSING_OBS_UNIT_ID_ERROR("Experimental entities are missing ObsUnitIDs"), + MISSING_OBS_UNIT_ID_ERROR("Required field is blank"), PREEXISTING_EXPERIMENT_TITLE("Experiment Title already exists"); private String value;