From a1d30bcc697a2b27befae7cabbe9d30f3c1afea5 Mon Sep 17 00:00:00 2001
From: dmeidlin <14339308+dmeidlin@users.noreply.github.com>
Date: Wed, 6 Dec 2023 13:52:03 -0500
Subject: [PATCH 1/5] change OU error message
---
.../importer/services/processors/ExperimentProcessor.java | 8 ++------
.../brapps/importer/ExperimentFileImportTest.java | 2 +-
2 files changed, 3 insertions(+), 7 deletions(-)
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..cfba838c7 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;
@@ -87,14 +86,11 @@
public class ExperimentProcessor implements Processor {
private static final String NAME = "Experiment";
+ private static final String MISSING_OBS_UNIT_ID_ERROR = "Error(s) detected in file. (See details below.) Import cannot proceed.";
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 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:";
@@ -1066,7 +1062,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..4e663386e 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("Error(s) detected in file."));
}
@Test
From 34c590b2c65705ce4393253127d6854ce9a97ec0 Mon Sep 17 00:00:00 2001
From: dmeidlin <14339308+dmeidlin@users.noreply.github.com>
Date: Thu, 7 Dec 2023 14:15:15 -0500
Subject: [PATCH 2/5] update message
---
.../importer/services/processors/ExperimentProcessor.java | 2 +-
.../brapps/importer/ExperimentFileImportTest.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
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 cfba838c7..59eb78cec 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
@@ -86,7 +86,7 @@
public class ExperimentProcessor implements Processor {
private static final String NAME = "Experiment";
- private static final String MISSING_OBS_UNIT_ID_ERROR = "Error(s) detected in file. (See details below.) Import cannot proceed.";
+ private static final String MISSING_OBS_UNIT_ID_ERROR = "Experimental entities are missing ObsUnitIDs. You must append file with the appropriate ObsUnitIDs or specify a new environment for these entities to proceed.";
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 " +
diff --git a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java
index 4e663386e..a599fd1e2 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("Error(s) detected in file."));
+ assertTrue(result.getAsJsonObject("progress").get("message").getAsString().startsWith("Experimental entities are missing ObsUnitIDs."));
}
@Test
From 219d848d94417807b85b9f7305b6eb7a653dbdfb Mon Sep 17 00:00:00 2001
From: dmeidlin <14339308+dmeidlin@users.noreply.github.com>
Date: Tue, 12 Dec 2023 11:31:22 -0500
Subject: [PATCH 3/5] [BI-1761] update and optimize
---
.../importer/services/processors/ExperimentProcessor.java | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
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 59eb78cec..c691f49c8 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
@@ -62,8 +62,6 @@
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;
import org.breedinginsight.utilities.Utilities;
import org.jooq.DSLContext;
@@ -71,7 +69,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;
@@ -86,7 +83,7 @@
public class ExperimentProcessor implements Processor {
private static final String NAME = "Experiment";
- private static final String MISSING_OBS_UNIT_ID_ERROR = "Experimental entities are missing ObsUnitIDs. You must append file with the appropriate ObsUnitIDs or specify a new environment for these entities to proceed.";
+ private static final String MISSING_OBS_UNIT_ID_ERROR = "Experimental entities are missing ObsUnitIDs. You must append file with the appropriate ObsUnitIDs or specify a new environment for these entities to proceed";
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 " +
From 9ee490676aca8a52fbe2fc3a9ea8763ca45f6d3e Mon Sep 17 00:00:00 2001
From: dmeidlin <14339308+dmeidlin@users.noreply.github.com>
Date: Tue, 12 Dec 2023 13:27:04 -0500
Subject: [PATCH 4/5] [BI-1761] use MissingInformationException
---
.../services/processors/ExperimentProcessor.java | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
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 c691f49c8..6e4ea7033 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
@@ -61,6 +61,7 @@
import org.breedinginsight.services.OntologyService;
import org.breedinginsight.services.ProgramLocationService;
import org.breedinginsight.services.exceptions.DoesNotExistException;
+import org.breedinginsight.services.exceptions.MissingRequiredInfoException;
import org.breedinginsight.services.exceptions.UnprocessableEntityException;
import org.breedinginsight.services.exceptions.ValidatorException;
import org.breedinginsight.utilities.Utilities;
@@ -84,10 +85,6 @@ public class ExperimentProcessor implements Processor {
private static final String NAME = "Experiment";
private static final String MISSING_OBS_UNIT_ID_ERROR = "Experimental entities are missing ObsUnitIDs. You must append file with the appropriate ObsUnitIDs or specify a new environment for these entities to proceed";
- 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 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:";
@@ -208,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();
@@ -491,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) {
@@ -926,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)) {
@@ -956,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));
}
From bded9388239f1c41b48b3923e9a75e6993c7945e Mon Sep 17 00:00:00 2001
From: dmeidlin <14339308+dmeidlin@users.noreply.github.com>
Date: Wed, 20 Dec 2023 12:30:20 -0500
Subject: [PATCH 5/5] update message
---
.../importer/services/processors/ExperimentProcessor.java | 2 +-
.../brapps/importer/ExperimentFileImportTest.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
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 6e4ea7033..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
@@ -84,7 +84,7 @@
public class ExperimentProcessor implements Processor {
private static final String NAME = "Experiment";
- private static final String MISSING_OBS_UNIT_ID_ERROR = "Experimental entities are missing ObsUnitIDs. You must append file with the appropriate ObsUnitIDs or specify a new environment for these entities to proceed";
+ 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:";
diff --git a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java
index a599fd1e2..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("Experimental entities are missing ObsUnitIDs."));
+ assertTrue(result.getAsJsonObject("progress").get("message").getAsString().startsWith("Experimental entities are missing ObsUnitIDs"));
}
@Test