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 4f8d85b1b..a5fedaf84 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 @@ -972,7 +972,11 @@ private void validateUniqueObsUnits( String errorMessage = String.format("The ID (%s) is not unique within the environment(%s)", importRow.getExpUnitId(), importRow.getEnv()); this.addRowError(Columns.EXP_UNIT_ID, errorMessage, validationErrors, rowNum); } else { - uniqueStudyAndObsUnit.add(envIdPlusStudyId); + //Only want to add valid unique study-obs unit combos + //To avoid situations like system counting a null value as a unique combo + if (!envIdPlusStudyId.isBlank()) { + uniqueStudyAndObsUnit.add(envIdPlusStudyId); + } } } 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 d3e4dc1e2..ae015aab6 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 @@ -169,13 +169,19 @@ public static String createObservationUnitKey(ExperimentObservation importRow) { * * This method takes in the name of a study and the name of an observation unit and concatenates them to create a unique key. * + * If one or both of the inputs is null, returns an empty string since not a valid combination + * * @param studyName The name of the study * @param obsUnitName The name of the observation unit * @return A string representing the unique key formed by concatenating the study name and observation unit name */ public static String createObservationUnitKey(String studyName, String obsUnitName) { // Concatenate the study name and observation unit name to create the unique key - return studyName + obsUnitName; + if (studyName != null && obsUnitName != null) { + return studyName + obsUnitName; + } else { + return ""; + } } // Module/Script-level documentation diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/create/workflow/steps/ValidatePendingImportObjectsStep.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/create/workflow/steps/ValidatePendingImportObjectsStep.java index 99fbc12eb..b1391c483 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/create/workflow/steps/ValidatePendingImportObjectsStep.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/create/workflow/steps/ValidatePendingImportObjectsStep.java @@ -290,7 +290,11 @@ private void validateUniqueObsUnits( String errorMessage = String.format("The ID (%s) is not unique within the environment(%s)", importRow.getExpUnitId(), importRow.getEnv()); ExperimentUtilities.addRowError(ExperimentObservation.Columns.EXP_UNIT_ID, errorMessage, validationErrors, rowNum); } else { - uniqueStudyAndObsUnit.add(envIdPlusStudyId); + //Only want to add valid unique study-obs unit combos + //To avoid situations like system counting a null value as a unique combo + if (!envIdPlusStudyId.isBlank()) { + uniqueStudyAndObsUnit.add(envIdPlusStudyId); + } } }