diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java index aded65fe1..73add7aed 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java @@ -26,7 +26,6 @@ import io.micronaut.http.server.exceptions.InternalServerException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.collections4.map.CaseInsensitiveMap; import org.apache.commons.lang3.StringUtils; import org.brapi.client.v2.JSON; @@ -62,7 +61,6 @@ import org.breedinginsight.services.OntologyService; import org.breedinginsight.services.ProgramLocationService; import org.breedinginsight.services.exceptions.DoesNotExistException; -import org.breedinginsight.services.exceptions.UnprocessableEntityException; import org.breedinginsight.services.exceptions.MissingRequiredInfoException; import org.breedinginsight.services.exceptions.UnprocessableEntityException; import org.breedinginsight.services.exceptions.ValidatorException; @@ -72,7 +70,6 @@ import tech.tablesaw.columns.Column; import javax.inject.Inject; -import javax.validation.Valid; import java.math.BigDecimal; import java.math.BigInteger; import java.time.OffsetDateTime; @@ -87,14 +84,7 @@ public class ExperimentProcessor implements Processor { private static final String NAME = "Experiment"; - private static final String EXISTING_ENV = "Cannot create new observation unit %s for existing environment %s.

" + - "If you’re trying to add these units to the experiment, please create a new environment" + - " with all appropriate experiment units (NOTE: this will generate new Observation Unit Ids " + - "for each experiment unit)."; - private static final String MISSING_OBS_UNIT_ID_ERROR = "Experiment Units are missing Observation Unit Id.

" + - "If you’re trying to add these units to the experiment, please create a new environment" + - " with all appropriate experiment units (NOTE: this will generate new Observation Unit Ids " + - "for each experiment unit)."; + private static final String MISSING_OBS_UNIT_ID_ERROR = "Experimental entities are missing ObsUnitIDs"; private static final String MULTIPLE_EXP_TITLES = "File contains more than one Experiment Title"; private static final String MIDNIGHT = "T00:00:00-00:00"; private static final String TIMESTAMP_PREFIX = "TS:"; @@ -215,7 +205,7 @@ public Map process( Table data, Program program, User user, - boolean commit) throws UnprocessableEntityException, ApiException, ValidatorException { + boolean commit) throws ApiException, ValidatorException, MissingRequiredInfoException { log.debug("processing experiment import"); ValidationErrors validationErrors = new ValidationErrors(); @@ -498,7 +488,7 @@ private String getVariableNameFromColumn(Column column) { return column.name(); } - private void initNewBrapiData(List importRows, List> phenotypeCols, Program program, User user, List referencedTraits, boolean commit) throws UnprocessableEntityException, ApiException { + private void initNewBrapiData(List importRows, List> phenotypeCols, Program program, User user, List referencedTraits, boolean commit) throws ApiException, MissingRequiredInfoException { String expSequenceName = program.getExpSequence(); if (expSequenceName == null) { @@ -933,7 +923,7 @@ private PendingImportObject getGidPOI(ExperimentObservation impo return null; } - private PendingImportObject fetchOrCreateObsUnitPIO(Program program, boolean commit, String envSeqValue, ExperimentObservation importRow) throws UnprocessableEntityException, ApiException { + private PendingImportObject fetchOrCreateObsUnitPIO(Program program, boolean commit, String envSeqValue, ExperimentObservation importRow) throws ApiException, MissingRequiredInfoException { PendingImportObject pio; String key = createObservationUnitKey(importRow); if (this.observationUnitByNameNoScope.containsKey(key)) { @@ -963,8 +953,7 @@ private PendingImportObject fetchOrCreateObsUnitPIO(Progra List existingOUs = brAPIObservationUnitDAO.getObservationUnitsForStudyDbId(studyPIO.getBrAPIObject().getStudyDbId(), program); List matchingOU = existingOUs.stream().filter(ou -> importRow.getExpUnitId().equals(Utilities.removeProgramKeyAndUnknownAdditionalData(ou.getObservationUnitName(), program.getKey()))).collect(Collectors.toList()); if (matchingOU.isEmpty()) { - throw new UnprocessableEntityException(String.format(EXISTING_ENV, importRow.getExpUnitId(), - Utilities.removeProgramKeyAndUnknownAdditionalData(studyPIO.getBrAPIObject().getStudyName(), program.getKey()))); + throw new MissingRequiredInfoException(MISSING_OBS_UNIT_ID_ERROR); } else { pio = new PendingImportObject<>(ImportObjectState.EXISTING, (BrAPIObservationUnit) Utilities.formatBrapiObjForDisplay(matchingOU.get(0), BrAPIObservationUnit.class, program)); } @@ -1066,7 +1055,7 @@ private void addObsVarsToDatasetDetails(PendingImportObject pi if (trait.getFullName() == null) { id = trait.getObservationVariableName(); } - + if (!details.getData().contains(id) && ImportObjectState.EXISTING != pio.getState()) { details.getData().add(id); } diff --git a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java index e6b64ca49..8db3b5bf4 100644 --- a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java +++ b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java @@ -604,7 +604,7 @@ public void verifyFailureNewOuExistingEnv(boolean commit) { JsonObject result = JsonParser.parseString(upload.body()).getAsJsonObject().getAsJsonObject("result"); assertEquals(422, result.getAsJsonObject("progress").get("statuscode").getAsInt(), "Returned data: " + result); - assertTrue(result.getAsJsonObject("progress").get("message").getAsString().startsWith("Cannot create new observation unit")); + assertTrue(result.getAsJsonObject("progress").get("message").getAsString().startsWith("Experimental entities are missing ObsUnitIDs")); } @Test