From a84850ce35a1849b21cdefacd1c632fba6c232f8 Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Wed, 5 Jan 2022 18:40:15 -0500 Subject: [PATCH 1/8] Working on retrieving lists, table still empty --- .../brapi/v2/BrAPIV2Controller.java | 25 +++++- .../brapps/importer/daos/BrAPIListDAO.java | 18 +++++ .../services/GermplasmService.java | 78 +++++++++++++++++++ 3 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/breedinginsight/services/GermplasmService.java diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java index e0cfe0595..f2e6a8acb 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java @@ -17,6 +17,7 @@ package org.breedinginsight.brapi.v2; +import com.google.gson.Gson; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpStatus; @@ -27,7 +28,11 @@ import io.micronaut.security.rules.SecurityRule; import lombok.extern.slf4j.Slf4j; import okhttp3.*; +import org.brapi.client.v2.JSON; +import org.brapi.client.v2.model.exceptions.ApiException; import org.brapi.v2.model.core.BrAPIServerInfo; +import org.brapi.v2.model.core.response.BrAPIListResponse; +import org.brapi.v2.model.core.response.BrAPIListsListResponse; import org.brapi.v2.model.core.response.BrAPIServerInfoResponse; import org.breedinginsight.api.auth.AuthenticatedUser; import org.breedinginsight.api.auth.ProgramSecured; @@ -35,6 +40,7 @@ import org.breedinginsight.api.auth.SecurityService; import org.breedinginsight.brapi.v1.controller.BrapiVersion; import org.breedinginsight.model.ProgramBrAPIEndpoints; +import org.breedinginsight.services.GermplasmService; import org.breedinginsight.services.ProgramService; import org.breedinginsight.services.exceptions.DoesNotExistException; @@ -51,11 +57,13 @@ public class BrAPIV2Controller { private final SecurityService securityService; private final ProgramService programService; + private final GermplasmService germplasmService; @Inject - public BrAPIV2Controller(SecurityService securityService, ProgramService programService) { + public BrAPIV2Controller(SecurityService securityService, ProgramService programService, GermplasmService germplasmService) { this.securityService = securityService; this.programService = programService; + this.germplasmService = germplasmService; } @@ -72,6 +80,21 @@ public BrAPIServerInfoResponse serverinfo() { return new BrAPIServerInfoResponse().result(serverInfo); } + //@Get(BrapiVersion.BRAPI_V2 + "/lists") + @Get("/${micronaut.bi.api.version}/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/lists") + @Produces(MediaType.APPLICATION_JSON) + @ProgramSecured(roleGroups = {ProgramSecuredRoleGroup.ALL}) + public HttpResponse getLists(@PathVariable("programId") UUID programId, HttpRequest request) throws DoesNotExistException, ApiException { + System.out.println("hi hi hi"); + BrAPIListsListResponse response = germplasmService.getGermplasmListsByProgramId(programId, request); + + String respBody = new JSON().getGson().toJson(response); + return HttpResponse.ok(respBody); + //return germplasmService.getGermplasmListsByProgramId(programId, request); + } + + //TODO make getList singular + @Get("/${micronaut.bi.api.version}/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/{+path}") @Produces(MediaType.APPLICATION_JSON) @ProgramSecured(roleGroups = {ProgramSecuredRoleGroup.ALL}) diff --git a/src/main/java/org/breedinginsight/brapps/importer/daos/BrAPIListDAO.java b/src/main/java/org/breedinginsight/brapps/importer/daos/BrAPIListDAO.java index 692ae2ae7..7d6029078 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/daos/BrAPIListDAO.java +++ b/src/main/java/org/breedinginsight/brapps/importer/daos/BrAPIListDAO.java @@ -2,12 +2,15 @@ import org.brapi.client.v2.ApiResponse; import org.brapi.client.v2.model.exceptions.ApiException; +import org.brapi.client.v2.model.queryParams.core.ListQueryParams; import org.brapi.client.v2.modules.core.ListsApi; import org.brapi.v2.model.BrAPIResponse; import org.brapi.v2.model.BrAPIResponseResult; import org.brapi.v2.model.core.BrAPIListSummary; +import org.brapi.v2.model.core.BrAPIListTypes; import org.brapi.v2.model.core.request.BrAPIListNewRequest; import org.brapi.v2.model.core.request.BrAPIListSearchRequest; +import org.brapi.v2.model.core.response.BrAPIListsListResponse; import org.brapi.v2.model.pheno.BrAPIObservation; import org.breedinginsight.brapps.importer.model.ImportUpload; import org.breedinginsight.daos.ProgramDAO; @@ -39,6 +42,21 @@ public List getListByName(List listNames, UUID program ); } + public BrAPIListsListResponse getListByTypeAndExternalRef(BrAPIListTypes listType, UUID programId, String externalReferenceSource, UUID externalReferenceId) throws ApiException { + ListQueryParams getParams = new ListQueryParams() + .externalReferenceID(externalReferenceId.toString()) + .externalReferenceSource(externalReferenceSource) + .listType(listType); + + ListsApi api = new ListsApi(programDAO.getCoreClient(programId)); + ApiResponse apiGetResponse = api.listsGet(getParams); //use api directly + System.out.println(apiGetResponse.getBody().toString()); + System.out.println(apiGetResponse.getBody().getResult().toString()); + System.out.println(apiGetResponse.getBody().getResult().getData().toString()); + return apiGetResponse.getBody(); //todo check retrieving proper data + //return brApiPrograms.getBody().getResult().getData().get(0); + } + public List createBrAPILists(List brapiLists, UUID programId, ImportUpload upload) throws ApiException { ListsApi api = new ListsApi(programDAO.getCoreClient(programId)); // Do manually, it doesn't like List to List for some reason diff --git a/src/main/java/org/breedinginsight/services/GermplasmService.java b/src/main/java/org/breedinginsight/services/GermplasmService.java new file mode 100644 index 000000000..e1f50f920 --- /dev/null +++ b/src/main/java/org/breedinginsight/services/GermplasmService.java @@ -0,0 +1,78 @@ +/* + * See the NOTICE file distributed with this work for additional information + * regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.breedinginsight.services; + +import io.micronaut.context.annotation.Property; +import io.micronaut.core.util.StringUtils; +import io.micronaut.http.HttpRequest; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.exceptions.HttpStatusException; +import io.micronaut.http.server.exceptions.HttpServerException; +import io.micronaut.http.server.exceptions.InternalServerException; +import lombok.extern.slf4j.Slf4j; +import org.brapi.client.v2.model.exceptions.ApiException; +import org.brapi.v2.model.core.BrAPIListSummary; +import org.brapi.v2.model.core.BrAPIListTypes; +import org.brapi.v2.model.core.response.BrAPIListsListResponse; +import org.breedinginsight.api.auth.AuthenticatedUser; +import org.breedinginsight.api.model.v1.response.ValidationErrors; +import org.breedinginsight.brapps.importer.daos.BrAPIListDAO; +import org.breedinginsight.dao.db.enums.DataType; +import org.breedinginsight.daos.*; +import org.breedinginsight.model.*; +import org.breedinginsight.services.exceptions.DoesNotExistException; +import org.jooq.DSLContext; + +import javax.inject.Inject; +import javax.inject.Singleton; +import java.util.*; + +@Slf4j +@Singleton +public class GermplasmService { + + private ProgramService programService; + private UserService userService; + private DSLContext dsl; + private BrAPIListDAO brAPIListDAO; + + @Property(name = "brapi.server.reference-source") + private String referenceSource; + + @Inject + public GermplasmService(BrAPIListDAO brAPIListDAO, ProgramService programService, UserService userService, DSLContext dsl) { + this.brAPIListDAO = brAPIListDAO; + this.programService = programService; + this.userService = userService; + this.dsl = dsl; + } + + public BrAPIListsListResponse getGermplasmListsByProgramId(UUID programId, HttpRequest request) throws DoesNotExistException, ApiException { + + if (!programService.exists(programId)) { + throw new DoesNotExistException("Program does not exist"); + } + System.out.println("hello"); + System.out.println(programId.toString()); + + //brAPIListDAO is not being defined, s + + return brAPIListDAO.getListByTypeAndExternalRef(BrAPIListTypes.GERMPLASM, programId, referenceSource + "/programs", programId); + + } +} From 9c15897b3156f0d864baccfa82781afe9b04c67f Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Mon, 10 Jan 2022 12:47:15 -0500 Subject: [PATCH 2/8] List now retrieved with correct name as well --- .../brapi/v2/BrAPIV2Controller.java | 6 ---- .../brapps/importer/daos/BrAPIListDAO.java | 8 ++--- .../services/GermplasmService.java | 34 +++++++++++-------- 3 files changed, 22 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java index f2e6a8acb..e681a7684 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java @@ -17,7 +17,6 @@ package org.breedinginsight.brapi.v2; -import com.google.gson.Gson; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpStatus; @@ -31,7 +30,6 @@ import org.brapi.client.v2.JSON; import org.brapi.client.v2.model.exceptions.ApiException; import org.brapi.v2.model.core.BrAPIServerInfo; -import org.brapi.v2.model.core.response.BrAPIListResponse; import org.brapi.v2.model.core.response.BrAPIListsListResponse; import org.brapi.v2.model.core.response.BrAPIServerInfoResponse; import org.breedinginsight.api.auth.AuthenticatedUser; @@ -85,16 +83,12 @@ public BrAPIServerInfoResponse serverinfo() { @Produces(MediaType.APPLICATION_JSON) @ProgramSecured(roleGroups = {ProgramSecuredRoleGroup.ALL}) public HttpResponse getLists(@PathVariable("programId") UUID programId, HttpRequest request) throws DoesNotExistException, ApiException { - System.out.println("hi hi hi"); BrAPIListsListResponse response = germplasmService.getGermplasmListsByProgramId(programId, request); String respBody = new JSON().getGson().toJson(response); return HttpResponse.ok(respBody); - //return germplasmService.getGermplasmListsByProgramId(programId, request); } - //TODO make getList singular - @Get("/${micronaut.bi.api.version}/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/{+path}") @Produces(MediaType.APPLICATION_JSON) @ProgramSecured(roleGroups = {ProgramSecuredRoleGroup.ALL}) diff --git a/src/main/java/org/breedinginsight/brapps/importer/daos/BrAPIListDAO.java b/src/main/java/org/breedinginsight/brapps/importer/daos/BrAPIListDAO.java index 7d6029078..8cc2bcfb7 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/daos/BrAPIListDAO.java +++ b/src/main/java/org/breedinginsight/brapps/importer/daos/BrAPIListDAO.java @@ -49,12 +49,8 @@ public BrAPIListsListResponse getListByTypeAndExternalRef(BrAPIListTypes listTyp .listType(listType); ListsApi api = new ListsApi(programDAO.getCoreClient(programId)); - ApiResponse apiGetResponse = api.listsGet(getParams); //use api directly - System.out.println(apiGetResponse.getBody().toString()); - System.out.println(apiGetResponse.getBody().getResult().toString()); - System.out.println(apiGetResponse.getBody().getResult().getData().toString()); - return apiGetResponse.getBody(); //todo check retrieving proper data - //return brApiPrograms.getBody().getResult().getData().get(0); + ApiResponse apiGetResponse = api.listsGet(getParams); + return apiGetResponse.getBody(); } public List createBrAPILists(List brapiLists, UUID programId, ImportUpload upload) throws ApiException { diff --git a/src/main/java/org/breedinginsight/services/GermplasmService.java b/src/main/java/org/breedinginsight/services/GermplasmService.java index e1f50f920..bb247271f 100644 --- a/src/main/java/org/breedinginsight/services/GermplasmService.java +++ b/src/main/java/org/breedinginsight/services/GermplasmService.java @@ -18,22 +18,12 @@ package org.breedinginsight.services; import io.micronaut.context.annotation.Property; -import io.micronaut.core.util.StringUtils; import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.exceptions.HttpStatusException; -import io.micronaut.http.server.exceptions.HttpServerException; -import io.micronaut.http.server.exceptions.InternalServerException; import lombok.extern.slf4j.Slf4j; import org.brapi.client.v2.model.exceptions.ApiException; -import org.brapi.v2.model.core.BrAPIListSummary; import org.brapi.v2.model.core.BrAPIListTypes; import org.brapi.v2.model.core.response.BrAPIListsListResponse; -import org.breedinginsight.api.auth.AuthenticatedUser; -import org.breedinginsight.api.model.v1.response.ValidationErrors; import org.breedinginsight.brapps.importer.daos.BrAPIListDAO; -import org.breedinginsight.dao.db.enums.DataType; -import org.breedinginsight.daos.*; import org.breedinginsight.model.*; import org.breedinginsight.services.exceptions.DoesNotExistException; import org.jooq.DSLContext; @@ -67,12 +57,28 @@ public BrAPIListsListResponse getGermplasmListsByProgramId(UUID programId, HttpR if (!programService.exists(programId)) { throw new DoesNotExistException("Program does not exist"); } - System.out.println("hello"); - System.out.println(programId.toString()); - //brAPIListDAO is not being defined, s + Optional optionalProgram = programService.getById(programId); + if(optionalProgram.isPresent()) { + Program program = optionalProgram.get(); + String appendedKey = String.format(" [%s-germplasm]", program.getKey()); - return brAPIListDAO.getListByTypeAndExternalRef(BrAPIListTypes.GERMPLASM, programId, referenceSource + "/programs", programId); + BrAPIListsListResponse germplasmLists = brAPIListDAO.getListByTypeAndExternalRef(BrAPIListTypes.GERMPLASM, programId, referenceSource + "/programs", programId); + //Remove key appended to listName for brapi + String listName; + String newListName; + int listLength = germplasmLists.getResult().getData().size(); + for (int i=0; i Date: Wed, 5 Jan 2022 18:40:15 -0500 Subject: [PATCH 3/8] Working on retrieving lists, table still empty --- .../brapi/v2/BrAPIV2Controller.java | 2 ++ .../services/GermplasmService.java | 26 +++++-------------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java index e681a7684..8d6dc023a 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java @@ -17,6 +17,7 @@ package org.breedinginsight.brapi.v2; +import com.google.gson.Gson; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpStatus; @@ -30,6 +31,7 @@ import org.brapi.client.v2.JSON; import org.brapi.client.v2.model.exceptions.ApiException; import org.brapi.v2.model.core.BrAPIServerInfo; +import org.brapi.v2.model.core.response.BrAPIListResponse; import org.brapi.v2.model.core.response.BrAPIListsListResponse; import org.brapi.v2.model.core.response.BrAPIServerInfoResponse; import org.breedinginsight.api.auth.AuthenticatedUser; diff --git a/src/main/java/org/breedinginsight/services/GermplasmService.java b/src/main/java/org/breedinginsight/services/GermplasmService.java index bb247271f..a2f12adab 100644 --- a/src/main/java/org/breedinginsight/services/GermplasmService.java +++ b/src/main/java/org/breedinginsight/services/GermplasmService.java @@ -24,6 +24,8 @@ import org.brapi.v2.model.core.BrAPIListTypes; import org.brapi.v2.model.core.response.BrAPIListsListResponse; import org.breedinginsight.brapps.importer.daos.BrAPIListDAO; +import org.breedinginsight.dao.db.enums.DataType; +import org.breedinginsight.daos.*; import org.breedinginsight.model.*; import org.breedinginsight.services.exceptions.DoesNotExistException; import org.jooq.DSLContext; @@ -57,28 +59,12 @@ public BrAPIListsListResponse getGermplasmListsByProgramId(UUID programId, HttpR if (!programService.exists(programId)) { throw new DoesNotExistException("Program does not exist"); } + System.out.println("hello"); + System.out.println(programId.toString()); - Optional optionalProgram = programService.getById(programId); - if(optionalProgram.isPresent()) { - Program program = optionalProgram.get(); - String appendedKey = String.format(" [%s-germplasm]", program.getKey()); + //brAPIListDAO is not being defined, s - BrAPIListsListResponse germplasmLists = brAPIListDAO.getListByTypeAndExternalRef(BrAPIListTypes.GERMPLASM, programId, referenceSource + "/programs", programId); + return brAPIListDAO.getListByTypeAndExternalRef(BrAPIListTypes.GERMPLASM, programId, referenceSource + "/programs", programId); - //Remove key appended to listName for brapi - String listName; - String newListName; - int listLength = germplasmLists.getResult().getData().size(); - for (int i=0; i Date: Mon, 10 Jan 2022 12:47:15 -0500 Subject: [PATCH 4/8] List now retrieved with correct name as well --- .../brapi/v2/BrAPIV2Controller.java | 2 -- .../services/GermplasmService.java | 26 ++++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java index 8d6dc023a..e681a7684 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java @@ -17,7 +17,6 @@ package org.breedinginsight.brapi.v2; -import com.google.gson.Gson; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpStatus; @@ -31,7 +30,6 @@ import org.brapi.client.v2.JSON; import org.brapi.client.v2.model.exceptions.ApiException; import org.brapi.v2.model.core.BrAPIServerInfo; -import org.brapi.v2.model.core.response.BrAPIListResponse; import org.brapi.v2.model.core.response.BrAPIListsListResponse; import org.brapi.v2.model.core.response.BrAPIServerInfoResponse; import org.breedinginsight.api.auth.AuthenticatedUser; diff --git a/src/main/java/org/breedinginsight/services/GermplasmService.java b/src/main/java/org/breedinginsight/services/GermplasmService.java index a2f12adab..bb247271f 100644 --- a/src/main/java/org/breedinginsight/services/GermplasmService.java +++ b/src/main/java/org/breedinginsight/services/GermplasmService.java @@ -24,8 +24,6 @@ import org.brapi.v2.model.core.BrAPIListTypes; import org.brapi.v2.model.core.response.BrAPIListsListResponse; import org.breedinginsight.brapps.importer.daos.BrAPIListDAO; -import org.breedinginsight.dao.db.enums.DataType; -import org.breedinginsight.daos.*; import org.breedinginsight.model.*; import org.breedinginsight.services.exceptions.DoesNotExistException; import org.jooq.DSLContext; @@ -59,12 +57,28 @@ public BrAPIListsListResponse getGermplasmListsByProgramId(UUID programId, HttpR if (!programService.exists(programId)) { throw new DoesNotExistException("Program does not exist"); } - System.out.println("hello"); - System.out.println(programId.toString()); - //brAPIListDAO is not being defined, s + Optional optionalProgram = programService.getById(programId); + if(optionalProgram.isPresent()) { + Program program = optionalProgram.get(); + String appendedKey = String.format(" [%s-germplasm]", program.getKey()); - return brAPIListDAO.getListByTypeAndExternalRef(BrAPIListTypes.GERMPLASM, programId, referenceSource + "/programs", programId); + BrAPIListsListResponse germplasmLists = brAPIListDAO.getListByTypeAndExternalRef(BrAPIListTypes.GERMPLASM, programId, referenceSource + "/programs", programId); + //Remove key appended to listName for brapi + String listName; + String newListName; + int listLength = germplasmLists.getResult().getData().size(); + for (int i=0; i Date: Thu, 13 Jan 2022 14:10:35 -0500 Subject: [PATCH 5/8] Combining Germplasm Services --- .../brapi/v2/BrAPIV2Controller.java | 6 +- .../v2/services/BrAPIGermplasmService.java | 44 +++++++++- .../services/GermplasmService.java | 84 ------------------- 3 files changed, 46 insertions(+), 88 deletions(-) delete mode 100644 src/main/java/org/breedinginsight/services/GermplasmService.java diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java index e681a7684..a7b0bd123 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java @@ -37,8 +37,8 @@ import org.breedinginsight.api.auth.ProgramSecuredRoleGroup; import org.breedinginsight.api.auth.SecurityService; import org.breedinginsight.brapi.v1.controller.BrapiVersion; +import org.breedinginsight.brapi.v2.services.BrAPIGermplasmService; import org.breedinginsight.model.ProgramBrAPIEndpoints; -import org.breedinginsight.services.GermplasmService; import org.breedinginsight.services.ProgramService; import org.breedinginsight.services.exceptions.DoesNotExistException; @@ -55,10 +55,10 @@ public class BrAPIV2Controller { private final SecurityService securityService; private final ProgramService programService; - private final GermplasmService germplasmService; + private final BrAPIGermplasmService germplasmService; @Inject - public BrAPIV2Controller(SecurityService securityService, ProgramService programService, GermplasmService germplasmService) { + public BrAPIV2Controller(SecurityService securityService, ProgramService programService, BrAPIGermplasmService germplasmService) { this.securityService = securityService; this.programService = programService; this.germplasmService = germplasmService; diff --git a/src/main/java/org/breedinginsight/brapi/v2/services/BrAPIGermplasmService.java b/src/main/java/org/breedinginsight/brapi/v2/services/BrAPIGermplasmService.java index 14358c9a3..8fff4f77c 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/services/BrAPIGermplasmService.java +++ b/src/main/java/org/breedinginsight/brapi/v2/services/BrAPIGermplasmService.java @@ -2,13 +2,20 @@ import com.google.gson.JsonObject; import io.micronaut.context.annotation.Property; +import io.micronaut.http.HttpRequest; import io.micronaut.http.server.exceptions.InternalServerException; import org.brapi.client.v2.model.exceptions.ApiException; import org.brapi.client.v2.modules.germplasm.GermplasmApi; +import org.brapi.v2.model.core.BrAPIListTypes; +import org.brapi.v2.model.core.response.BrAPIListsListResponse; import org.brapi.v2.model.germ.BrAPIGermplasm; import org.brapi.v2.model.germ.request.BrAPIGermplasmSearchRequest; +import org.breedinginsight.brapps.importer.daos.BrAPIListDAO; +import org.breedinginsight.model.Program; +import org.breedinginsight.services.ProgramService; import org.breedinginsight.services.brapi.BrAPIClientType; import org.breedinginsight.services.brapi.BrAPIProvider; +import org.breedinginsight.services.exceptions.DoesNotExistException; import org.breedinginsight.utilities.BrAPIDAOUtil; import javax.inject.Inject; @@ -23,10 +30,14 @@ public class BrAPIGermplasmService { private String referenceSource; private final String BREEDING_METHOD_ID_KEY = "breedingMethodId"; private final String GERMPLASM_NAME_REGEX = "^(.*\\b) \\[([A-Z]{2,6})-(\\d+)\\]$"; + private ProgramService programService; + private BrAPIListDAO brAPIListDAO; @Inject - public BrAPIGermplasmService(BrAPIProvider brAPIProvider) { + public BrAPIGermplasmService(BrAPIProvider brAPIProvider, BrAPIListDAO brAPIListDAO, ProgramService programService) { this.brAPIProvider = brAPIProvider; + this.brAPIListDAO = brAPIListDAO; + this.programService = programService; } public List getGermplasm(UUID programId) { @@ -79,4 +90,35 @@ public List getGermplasm(UUID programId) { return germplasmList; } + + public BrAPIListsListResponse getGermplasmListsByProgramId(UUID programId, HttpRequest request) throws DoesNotExistException, ApiException { + + if (!programService.exists(programId)) { + throw new DoesNotExistException("Program does not exist"); + } + + Optional optionalProgram = programService.getById(programId); + if(optionalProgram.isPresent()) { + Program program = optionalProgram.get(); + String appendedKey = String.format(" [%s-germplasm]", program.getKey()); + + BrAPIListsListResponse germplasmLists = brAPIListDAO.getListByTypeAndExternalRef(BrAPIListTypes.GERMPLASM, programId, referenceSource + "/programs", programId); + + //Remove key appended to listName for brapi + String listName; + String newListName; + int listLength = germplasmLists.getResult().getData().size(); + for (int i=0; i request) throws DoesNotExistException, ApiException { - - if (!programService.exists(programId)) { - throw new DoesNotExistException("Program does not exist"); - } - - Optional optionalProgram = programService.getById(programId); - if(optionalProgram.isPresent()) { - Program program = optionalProgram.get(); - String appendedKey = String.format(" [%s-germplasm]", program.getKey()); - - BrAPIListsListResponse germplasmLists = brAPIListDAO.getListByTypeAndExternalRef(BrAPIListTypes.GERMPLASM, programId, referenceSource + "/programs", programId); - - //Remove key appended to listName for brapi - String listName; - String newListName; - int listLength = germplasmLists.getResult().getData().size(); - for (int i=0; i Date: Thu, 13 Jan 2022 14:10:35 -0500 Subject: [PATCH 6/8] Unit Test Update --- .../GermplasmControllerIntegrationTest.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java b/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java index 580564678..8bb74e934 100644 --- a/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java +++ b/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java @@ -57,6 +57,9 @@ public class GermplasmControllerIntegrationTest extends BrAPITest { (json, type, context) -> OffsetDateTime.parse(json.getAsString())) .create(); + private final String germplasmListName = "Program List"; + private final String germplasmListDesc = "Program List"; + @AfterAll public void finish() { super.stopContainers(); } @@ -114,16 +117,16 @@ public void setup() { // Insert other program germplasm File otherFile = new File("src/test/resources/files/germplasm_import/minimal_germplasm_import.csv"); Map otherListInfo = Map.ofEntries( - Map.entry("germplasmListName", "Program List"), - Map.entry("germplasmListDescription", "Program List") + Map.entry("germplasmListName", germplasmListName), + Map.entry("germplasmListDescription", germplasmListDesc) ); TestUtils.uploadDataFile(client, otherValidProgram.getId(), germplasmImportId, otherListInfo, otherFile); // Insert program germplasm File file = new File("src/test/resources/files/germplasm_import/full_import.csv"); Map germplasmListInfo = Map.ofEntries( - Map.entry("germplasmListName", "Program List"), - Map.entry("germplasmListDescription", "Program List") + Map.entry("germplasmListName", germplasmListName), + Map.entry("germplasmListDescription", germplasmListDesc) ); TestUtils.uploadDataFile(client, validProgram.getId(), germplasmImportId, germplasmListInfo, file); } @@ -173,4 +176,26 @@ public void getPaginatedSuccess() { assertEquals(1, data.size(), "Wrong number of germplasm were returned"); } + + @Test + @SneakyThrows + public void getAllGermplasmListsSuccess() { + Flowable> call = client.exchange( + GET(String.format("/programs/%s/brapi/v2/lists",validProgram.getId().toString())) + .cookie(new NettyCookie("phylo-token", "test-registered-user")), String.class + ); + //("/${micronaut.bi.api.version}/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/lists") + HttpResponse response = call.blockingFirst(); + assertEquals(HttpStatus.OK, response.getStatus()); + + JsonObject result = JsonParser.parseString(response.body()).getAsJsonObject().getAsJsonObject("result"); + + JsonArray data = result.getAsJsonArray("data"); + + assertEquals(1, data.size(), "Wrong number of germplasm lists were returned"); + JsonObject exampleGermplasmList = data.get(0).getAsJsonObject(); + assertEquals(exampleGermplasmList.get("listName").getAsString(), germplasmListName, "Germplasm list name incorrect"); + assertEquals(exampleGermplasmList.get("listDescription").getAsString(), germplasmListDesc, "Germplasm list description incorrect"); + } + } From f00975a334c0f36c08cce5ee57dd905d9b100320 Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Fri, 14 Jan 2022 11:41:02 -0500 Subject: [PATCH 7/8] Unit Test Update 2 --- .../brapi/v2/GermplasmControllerIntegrationTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java b/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java index 8bb74e934..1188af33c 100644 --- a/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java +++ b/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java @@ -196,6 +196,7 @@ public void getAllGermplasmListsSuccess() { JsonObject exampleGermplasmList = data.get(0).getAsJsonObject(); assertEquals(exampleGermplasmList.get("listName").getAsString(), germplasmListName, "Germplasm list name incorrect"); assertEquals(exampleGermplasmList.get("listDescription").getAsString(), germplasmListDesc, "Germplasm list description incorrect"); + assertEquals(exampleGermplasmList.get("listSize").getAsInt(), 3, "Germplasm list displays incorrect total entries "); } } From bffeba76bfc48cc16937ff944887981173885cea Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Thu, 20 Jan 2022 16:17:19 -0500 Subject: [PATCH 8/8] Remove test extraneous comment --- .../brapi/v2/GermplasmControllerIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java b/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java index 1188af33c..d5a891da5 100644 --- a/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java +++ b/src/test/java/org/breedinginsight/brapi/v2/GermplasmControllerIntegrationTest.java @@ -184,7 +184,7 @@ public void getAllGermplasmListsSuccess() { GET(String.format("/programs/%s/brapi/v2/lists",validProgram.getId().toString())) .cookie(new NettyCookie("phylo-token", "test-registered-user")), String.class ); - //("/${micronaut.bi.api.version}/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/lists") + HttpResponse response = call.blockingFirst(); assertEquals(HttpStatus.OK, response.getStatus());