From adb3e8e60c63ebfcf09c1b7c1cdd38e4ff0bc02e Mon Sep 17 00:00:00 2001 From: Chris T Date: Mon, 28 Feb 2022 13:23:35 -0500 Subject: [PATCH 1/2] germplasm get: add germplasm sort fields --- .../brapi/v2/GermplasmController.java | 2 -- .../mappers/GermplasmQueryMapper.java | 23 ++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapi/v2/GermplasmController.java b/src/main/java/org/breedinginsight/brapi/v2/GermplasmController.java index b1f353835..cecbb71ba 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/GermplasmController.java +++ b/src/main/java/org/breedinginsight/brapi/v2/GermplasmController.java @@ -51,8 +51,6 @@ public HttpResponse>>> getGermplasm( @QueryValue @QueryValid(using = GermplasmQueryMapper.class) @Valid BrapiQuery queryParams) { try { List germplasm = germplasmService.getGermplasm(programId); - queryParams.setSortField(germplasmQueryMapper.getDefaultSortField()); - queryParams.setSortOrder(germplasmQueryMapper.getDefaultSortOrder()); return ResponseUtils.getBrapiQueryResponse(germplasm, germplasmQueryMapper, queryParams);} catch (ApiException e) { log.info(e.getMessage()); diff --git a/src/main/java/org/breedinginsight/brapi/v2/model/response/mappers/GermplasmQueryMapper.java b/src/main/java/org/breedinginsight/brapi/v2/model/response/mappers/GermplasmQueryMapper.java index 33e7f3e70..738e5499c 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/model/response/mappers/GermplasmQueryMapper.java +++ b/src/main/java/org/breedinginsight/brapi/v2/model/response/mappers/GermplasmQueryMapper.java @@ -1,5 +1,6 @@ package org.breedinginsight.brapi.v2.model.response.mappers; +import com.google.gson.JsonObject; import lombok.Getter; import org.brapi.v2.model.germ.BrAPIGermplasm; import org.breedinginsight.api.v1.controller.metadata.SortOrder; @@ -21,7 +22,27 @@ public class GermplasmQueryMapper extends AbstractQueryMapper { public GermplasmQueryMapper() { fields = Map.ofEntries( - Map.entry("accessionNumber", BrAPIGermplasm::getAccessionNumber) + Map.entry("accessionNumber", BrAPIGermplasm::getAccessionNumber), + Map.entry("defaultDisplayName", BrAPIGermplasm::getDefaultDisplayName), + Map.entry("additionalInfo.breedingMethod", (germplasm) -> + germplasm.getAdditionalInfo() != null && germplasm.getAdditionalInfo().get("breedingMethod") != null ? + germplasm.getAdditionalInfo().get("breedingMethod").getAsString() : null), + Map.entry("seedSource", BrAPIGermplasm::getSeedSource), + Map.entry("femaleParent", (germplasm) -> + germplasm.getPedigree() != null ? germplasm.getPedigree().split("/")[0] : null), + Map.entry("maleParent", (germplasm) -> + germplasm.getPedigree() != null && germplasm.getPedigree().split("/").length > 1 ? germplasm.getPedigree().split("/")[1] : null), + Map.entry("additionalInfo.createdDate", (germplasm) -> + germplasm.getAdditionalInfo() != null && germplasm.getAdditionalInfo().get("createdDate") != null ? + germplasm.getAdditionalInfo().get("createdDate").getAsString() : null), + Map.entry("additionalInfo.createdBy.userName", (germplasm) -> { + JsonObject additionalInfo = germplasm.getAdditionalInfo(); + if (additionalInfo == null) { return null;} + if (!additionalInfo.has("createdBy")) { return null;} + JsonObject createdBy = additionalInfo.getAsJsonObject("createdBy"); + if (!createdBy.has("userName")) { return null; } + return createdBy.get("userName").getAsString(); + }) ); } From 726b453dff65204a355e168dc0f437f076f92cd3 Mon Sep 17 00:00:00 2001 From: Chris T Date: Mon, 28 Feb 2022 13:51:41 -0500 Subject: [PATCH 2/2] germplasm get: add test for sorting --- .../brapi/v2/GermplasmControllerIntegrationTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java b/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java index a67702b5c..478a095a7 100644 --- a/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java +++ b/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java @@ -153,7 +153,7 @@ public void getAllSuccess() { // TODO: Parents are updated // Breeding method is assigned Flowable> call = client.exchange( - GET(String.format("/programs/%s/brapi/v2/germplasm",validProgram.getId().toString())) + GET(String.format("/programs/%s/brapi/v2/germplasm?sortField=defaultDisplayName&sortOrder=ASC",validProgram.getId().toString())) .cookie(new NettyCookie("phylo-token", "test-registered-user")), String.class ); HttpResponse response = call.blockingFirst(); @@ -164,7 +164,9 @@ public void getAllSuccess() { JsonArray data = result.getAsJsonArray("data"); assertEquals(6, data.size(), "Wrong number of germplasm were returned"); - for (JsonElement jsonGermplasm: data) { + List correctOrder = List.of("Full Germplasm 1", "Full Germplasm 2", "Full Germplasm 3", "Germplasm 1", "Germplasm 2", "Germplasm 3"); + for (int i = 0; i < data.size(); i++) { + JsonElement jsonGermplasm = data.get(i); JsonObject exampleGermplasm = jsonGermplasm.getAsJsonObject(); assertEquals(exampleGermplasm.get("defaultDisplayName").getAsString(), exampleGermplasm.get("germplasmName").getAsString(), "Germplasm name was not set to display name"); if (exampleGermplasm.get("additionalInfo").getAsJsonObject().has("breedingMethodId")){ @@ -178,6 +180,8 @@ public void getAllSuccess() { } } + // Check the correct sort order + assertEquals(correctOrder.get(i), exampleGermplasm.get("defaultDisplayName").getAsString(), "Wrong sort order"); } }