From e472acf56acedfa5121b93989812973796ad1aca Mon Sep 17 00:00:00 2001 From: timparsons Date: Thu, 22 Dec 2022 16:25:13 -0500 Subject: [PATCH 1/3] [BI-1683] Preventing male parent from being imported without a female parent --- .../brapi/v2/dao/BrAPIGermplasmDAO.java | 1 + .../processors/GermplasmProcessor.java | 28 +++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapi/v2/dao/BrAPIGermplasmDAO.java b/src/main/java/org/breedinginsight/brapi/v2/dao/BrAPIGermplasmDAO.java index d3667f95b..25459a6bf 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/dao/BrAPIGermplasmDAO.java +++ b/src/main/java/org/breedinginsight/brapi/v2/dao/BrAPIGermplasmDAO.java @@ -166,6 +166,7 @@ private Map processGermplasmForDisplay(List, String> arrayOfStringFormatter = (lst) -> { List lstCopy = new ArrayList<>(lst); Collections.sort(lstCopy); @@ -259,6 +260,8 @@ public Map process(List importRows } } + validatePedigree(germplasm, i+2, validationErrors); + // Assign the entry number if (germplasm.getEntryNo() == null) { germplasm.setEntryNo(Integer.toString(i + 1)); @@ -330,6 +333,19 @@ public Map process(List importRows } + private void validatePedigree(Germplasm germplasm, Integer rowNumber, ValidationErrors validationErrors) { + String femaleParentEntryNo = germplasm.getFemaleParentEntryNo(); + String maleParentEntryNo = germplasm.getMaleParentEntryNo(); + String femaleParentGID = germplasm.getFemaleParentDBID(); + String maleParentGID = germplasm.getMaleParentDBID(); + + if(StringUtils.isNotBlank(maleParentEntryNo) && StringUtils.isBlank(femaleParentEntryNo) && StringUtils.isBlank(femaleParentGID)) { + validationErrors.addError(rowNumber, new ValidationError("Male Parent Entry No", missingFemaleParent, HttpStatus.UNPROCESSABLE_ENTITY)); + } else if(StringUtils.isNotBlank(maleParentGID) && StringUtils.isBlank(femaleParentEntryNo) && StringUtils.isBlank(femaleParentGID)) { + validationErrors.addError(rowNumber, new ValidationError("Male Parent GID", missingFemaleParent, HttpStatus.UNPROCESSABLE_ENTITY)); + } + } + private void createPostOrder() { // Construct a dependency tree for POSTing order Set created = existingGermplasms.stream().map(BrAPIGermplasm::getGermplasmName).collect(Collectors.toSet()); @@ -441,13 +457,13 @@ public void constructPedigreeString(List importRows, Map importRows, Map 0 ? pedigreeString.toString() : null); //Simpler to just always add boolean, but consider for logic that previous imported values won't have that additional info value mappedBrAPIImport.get(i).getGermplasm().getBrAPIObject().putAdditionalInfoItem("femaleParentUnknown", femaleParentUnknown); mappedBrAPIImport.get(i).getGermplasm().getBrAPIObject().putAdditionalInfoItem("maleParentUnknown", maleParentUnknown); From c01acaa3e1f9a8e6a900c51fab59802e87bdb94a Mon Sep 17 00:00:00 2001 From: timparsons Date: Thu, 22 Dec 2022 16:48:57 -0500 Subject: [PATCH 2/3] [BI-1683] Fixing unit tests --- .../brapps/importer/GermplasmTemplateMap.java | 5 +++-- .../germplasm_import/no_female_parent_blank_pedigree.csv | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/breedinginsight/brapps/importer/GermplasmTemplateMap.java b/src/test/java/org/breedinginsight/brapps/importer/GermplasmTemplateMap.java index 19269ce95..072e754fb 100644 --- a/src/test/java/org/breedinginsight/brapps/importer/GermplasmTemplateMap.java +++ b/src/test/java/org/breedinginsight/brapps/importer/GermplasmTemplateMap.java @@ -354,7 +354,7 @@ public void duplicateNameMarksDuplicates() { @Test @SneakyThrows - public void NoFemaleParentBlankPedigreeStringSuccess() { + public void OnlyMaleParentPreviewSuccess() { File file = new File("src/test/resources/files/germplasm_import/no_female_parent_blank_pedigree.csv"); Flowable> call = uploadDataFile(file, "NoFemaleParentList", null, true); @@ -369,7 +369,8 @@ public void NoFemaleParentBlankPedigreeStringSuccess() { JsonArray previewRows = result.get("preview").getAsJsonObject().get("rows").getAsJsonArray(); for (int i = 0; i < previewRows.size(); i++) { JsonObject germplasm = previewRows.get(i).getAsJsonObject().getAsJsonObject("germplasm").getAsJsonObject("brAPIObject"); - assertTrue(!germplasm.has("pedigree"), "Pedigree string is populated, but should be empty"); + assertTrue(germplasm.has("pedigree"), "Pedigree string should be populated, but is empty"); + assertTrue(germplasm.get("pedigree").getAsString().substring(1).length() > 0, "Male pedigree string should be populated, but is empty"); } } diff --git a/src/test/resources/files/germplasm_import/no_female_parent_blank_pedigree.csv b/src/test/resources/files/germplasm_import/no_female_parent_blank_pedigree.csv index 2e3ba2dbc..fb38a4850 100644 --- a/src/test/resources/files/germplasm_import/no_female_parent_blank_pedigree.csv +++ b/src/test/resources/files/germplasm_import/no_female_parent_blank_pedigree.csv @@ -1,4 +1,4 @@ Name,Breeding Method,Source,Female Parent GID,Male Parent GID,Entry No,Female Parent Entry No,Male Parent Entry No,External UID,Synonyms -Germplasm 1,BCR,Wild,,2,,,,1234, -Germplasm 2,BCR,Wild,,3,,,,5678, -Germplasm 3,BCR,Wild,,3,,,,9123, \ No newline at end of file +Germplasm 1,BCR,Wild,0,2,,,,1234, +Germplasm 2,BCR,Wild,0,3,,,,5678, +Germplasm 3,BCR,Wild,0,3,,,,9123, \ No newline at end of file From 46a82c23c88a8b9a9895be383b64e689f395b84e Mon Sep 17 00:00:00 2001 From: timparsons Date: Tue, 3 Jan 2023 16:33:06 -0500 Subject: [PATCH 3/3] [BI-1683] Fixing display of pedigree string with unknown female parent --- .../org/breedinginsight/brapi/v2/dao/BrAPIGermplasmDAO.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapi/v2/dao/BrAPIGermplasmDAO.java b/src/main/java/org/breedinginsight/brapi/v2/dao/BrAPIGermplasmDAO.java index 25459a6bf..d8ee4407d 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/dao/BrAPIGermplasmDAO.java +++ b/src/main/java/org/breedinginsight/brapi/v2/dao/BrAPIGermplasmDAO.java @@ -183,6 +183,8 @@ private Map processGermplasmForDisplay(List ref.getReferenceSource().equals(referenceSource)). map(ref -> ref.getReferenceID()).findFirst().orElse(""); additionalInfo.addProperty(BrAPIAdditionalInfoFields.GERMPLASM_FEMALE_PARENT_GID, femaleParentAccessionNumber); + } else if (germplasm.getAdditionalInfo().has("femaleParentUnknown") && germplasm.getAdditionalInfo().get("femaleParentUnknown").getAsBoolean()) { + namePedigreeString = "Unknown"; } } if (parents.size() == 2) { @@ -197,9 +199,6 @@ private Map processGermplasmForDisplay(List