From 664b05baa61197087ffc17be053fe459fd230884 Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Fri, 20 Sep 2024 17:32:49 +0000 Subject: [PATCH 1/9] [BI-2067] - Merge Tim's FieldBook BrAPI program endpoint with Mr.Bean work --- ...ntroller.java => BrAPICropController.java} | 4 +- .../brapi/v2/BrAPIProgramsController.java | 25 ++++++ .../brapi/v2/ProgramController.java | 80 ------------------- src/main/resources/version.properties | 4 +- 4 files changed, 29 insertions(+), 84 deletions(-) rename src/main/java/org/breedinginsight/brapi/v2/{CropController.java => BrAPICropController.java} (96%) delete mode 100644 src/main/java/org/breedinginsight/brapi/v2/ProgramController.java diff --git a/src/main/java/org/breedinginsight/brapi/v2/CropController.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPICropController.java similarity index 96% rename from src/main/java/org/breedinginsight/brapi/v2/CropController.java rename to src/main/java/org/breedinginsight/brapi/v2/BrAPICropController.java index 3319a1acd..bf4dbc33d 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/CropController.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPICropController.java @@ -41,12 +41,12 @@ @Slf4j @Controller("/${micronaut.bi.api.version}") @Secured(SecurityRule.IS_AUTHENTICATED) -public class CropController { +public class BrAPICropController { private final ProgramService programService; @Inject - public CropController(ProgramService programService) { + public BrAPICropController(ProgramService programService) { this.programService = programService; } diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java index cd1d30c42..e6871a3bb 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java @@ -18,6 +18,8 @@ package org.breedinginsight.brapi.v2; import io.micronaut.http.HttpResponse; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.MediaType; import io.micronaut.http.annotation.*; import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; @@ -31,6 +33,7 @@ import org.breedinginsight.api.auth.ProgramSecured; import org.breedinginsight.api.auth.ProgramSecuredRoleGroup; import org.breedinginsight.api.auth.SecurityService; +import org.breedinginsight.api.model.v1.response.DataResponse; import org.breedinginsight.brapi.v1.controller.BrapiVersion; import org.breedinginsight.model.Program; import org.breedinginsight.services.ProgramService; @@ -125,7 +128,21 @@ public HttpResponse rootProgramsProgramDbIdPut(@PathVariable("programDbId") S //START - endpoints for within the context of a program + /* Retrieves a list of programs + * If programId supplied will only ever return one program. + * + * @param programId The ID of the program. + * + * todo response type handle + HttpResponse>>> + * containing a Response object with a DataResponse object that wraps a list of programs. + HttpResponse> + + * @return HttpResponse + * Returns HttpResponse.NOT_FOUND if the program is not found. + */ @Get("/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/programs") + @Produces(MediaType.APPLICATION_JSON) @ProgramSecured(roleGroups = {ProgramSecuredRoleGroup.PROGRAM_SCOPED_ROLES}) public HttpResponse programsGet(@PathVariable("programId") UUID programId, @QueryValue("abbreviation") Optional abbreviation, @@ -139,6 +156,14 @@ public HttpResponse programsGet(@PathVariable("program @QueryValue("page") Optional page, @QueryValue("pageSize") Optional pageSize) { + //If programId supplied, check if program exists + if (programId != null) { + Optional optProgram = programService.getById(programId); + if (optProgram.isEmpty()) { + return HttpResponse.status(HttpStatus.NOT_FOUND, "Program not found"); + } + } + List programs = programService.getById(programId).stream().filter(program -> { boolean matches = abbreviation.map(abbr -> abbr.equals(program.getKey())).orElse(true); matches = matches && programDbId.map(id -> id.equals(program.getId().toString())).orElse(true); diff --git a/src/main/java/org/breedinginsight/brapi/v2/ProgramController.java b/src/main/java/org/breedinginsight/brapi/v2/ProgramController.java deleted file mode 100644 index b93192dfb..000000000 --- a/src/main/java/org/breedinginsight/brapi/v2/ProgramController.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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.brapi.v2; - -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.MediaType; -import io.micronaut.http.annotation.*; -import io.micronaut.security.annotation.Secured; -import io.micronaut.security.rules.SecurityRule; -import lombok.extern.slf4j.Slf4j; -import org.brapi.v2.model.core.BrAPIProgram; -import org.breedinginsight.api.auth.ProgramSecured; -import org.breedinginsight.api.auth.ProgramSecuredRoleGroup; -import org.breedinginsight.api.model.v1.response.DataResponse; -import org.breedinginsight.brapi.v1.controller.BrapiVersion; -import org.breedinginsight.model.Program; -import org.breedinginsight.services.ProgramService; - -import javax.inject.Inject; -import java.util.List; -import java.util.Optional; -import java.util.UUID; - -import static org.breedinginsight.utilities.response.ResponseUtils.getBrapiSingleResponse; - -@Slf4j -@Controller("/${micronaut.bi.api.version}") -@Secured(SecurityRule.IS_AUTHENTICATED) -public class ProgramController { - - private final ProgramService programService; - - @Inject - public ProgramController(ProgramService programService) { - this.programService = programService; - } - - /** - * Retrieves a list of programs by programId. Query parameters not implemented, will only ever return one program. - * - * @param programId The ID of the program. - * @return HttpResponse containing a Response object with a DataResponse object that wraps a list of programs. - * Returns HttpResponse.NOT_FOUND if the program is not found. - */ - @Get("/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/programs") - @Produces(MediaType.APPLICATION_JSON) - @ProgramSecured(roleGroups = {ProgramSecuredRoleGroup.PROGRAM_SCOPED_ROLES}) - public HttpResponse>>> getPrograms( - @PathVariable("programId") UUID programId) { - - Optional optProgram = programService.getById(programId); - if (optProgram.isEmpty()) { - return HttpResponse.status(HttpStatus.NOT_FOUND, "Program not found"); - } - - Program program = optProgram.get(); - BrAPIProgram brapiProgram = program.getBrapiProgram(); - // Use name as in DeltaBreed remove program key - brapiProgram.setProgramName(program.getName()); - List programs = List.of(brapiProgram); - return getBrapiSingleResponse(programs); - } - -} diff --git a/src/main/resources/version.properties b/src/main/resources/version.properties index c2adfafd9..6dcfa411e 100644 --- a/src/main/resources/version.properties +++ b/src/main/resources/version.properties @@ -14,5 +14,5 @@ # limitations under the License. # -version=v0.10.0+817 -versionInfo=https://github.com/Breeding-Insight/bi-api/commit/1dc88cc581cc62344e2f6954b00a86c6fb1cc194 +version=v0.10.0+821 +versionInfo=https://github.com/Breeding-Insight/bi-api/commit/83acbff581f091ab19ecec2ea97c9a111be78fc5 From 9945276e107d32fe1de5aea2c0bb7e9b7071d8fb Mon Sep 17 00:00:00 2001 From: HMS17 Date: Wed, 25 Sep 2024 15:21:53 -0400 Subject: [PATCH 2/9] [BI-2067] - Fix accidental version change --- src/main/resources/version.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/version.properties b/src/main/resources/version.properties index 6dcfa411e..c2adfafd9 100644 --- a/src/main/resources/version.properties +++ b/src/main/resources/version.properties @@ -14,5 +14,5 @@ # limitations under the License. # -version=v0.10.0+821 -versionInfo=https://github.com/Breeding-Insight/bi-api/commit/83acbff581f091ab19ecec2ea97c9a111be78fc5 +version=v0.10.0+817 +versionInfo=https://github.com/Breeding-Insight/bi-api/commit/1dc88cc581cc62344e2f6954b00a86c6fb1cc194 From 37c02cbf443edbab60ecc0c19d627d3b349da9b2 Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Mon, 30 Sep 2024 16:39:16 -0400 Subject: [PATCH 3/9] [BI-2067] - Cleanup --- .../breedinginsight/brapi/v2/BrAPIProgramsController.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java index e6871a3bb..95baa5ff7 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java @@ -133,12 +133,7 @@ public HttpResponse rootProgramsProgramDbIdPut(@PathVariable("programDbId") S * * @param programId The ID of the program. * - * todo response type handle - HttpResponse>>> - * containing a Response object with a DataResponse object that wraps a list of programs. - HttpResponse> - - * @return HttpResponse + * @return HttpResponse containing BrAPIProgramListResponse * Returns HttpResponse.NOT_FOUND if the program is not found. */ @Get("/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/programs") From c80fdfd2bfbcf91ed0fc72679aac04e4bb2a7b35 Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Fri, 4 Oct 2024 16:00:09 -0400 Subject: [PATCH 4/9] [BI-2067] - Code review fix --- .../org/breedinginsight/brapi/v2/BrAPIProgramsController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java index 95baa5ff7..32d2711c2 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java @@ -159,7 +159,7 @@ public HttpResponse programsGet(@PathVariable("program } } - List programs = programService.getById(programId).stream().filter(program -> { + List programs = optProgram.stream().filter(program -> { boolean matches = abbreviation.map(abbr -> abbr.equals(program.getKey())).orElse(true); matches = matches && programDbId.map(id -> id.equals(program.getId().toString())).orElse(true); return matches && programName.map(name -> name.equals(program.getName())).orElse(true); From 050e8c98bd0b0ded5c8d91ec11d72b763e0e257d Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:42:36 -0400 Subject: [PATCH 5/9] [BI-2067] - Fixing null handling --- .../org/breedinginsight/brapi/v2/BrAPIProgramsController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java index 32d2711c2..4a5281c8b 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIProgramsController.java @@ -157,7 +157,6 @@ public HttpResponse programsGet(@PathVariable("program if (optProgram.isEmpty()) { return HttpResponse.status(HttpStatus.NOT_FOUND, "Program not found"); } - } List programs = optProgram.stream().filter(program -> { boolean matches = abbreviation.map(abbr -> abbr.equals(program.getKey())).orElse(true); @@ -170,6 +169,9 @@ public HttpResponse programsGet(@PathVariable("program .totalCount(programs.size()) .pageSize(programs.size()))) .result(new BrAPIProgramListResponseResult().data(programs))); + } else { + return HttpResponse.status(HttpStatus.NOT_FOUND, "Program not found"); + } } @Post("/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/programs") From 1062aaa709a75fbe3c33b2ff9db3c953d579ed69 Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Mon, 7 Oct 2024 16:19:04 +0000 Subject: [PATCH 6/9] [autocommit] bumping build number --- src/main/resources/version.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/version.properties b/src/main/resources/version.properties index a8d4538b9..f72baa467 100644 --- a/src/main/resources/version.properties +++ b/src/main/resources/version.properties @@ -14,5 +14,5 @@ # limitations under the License. # -version=v0.10.0+827 -versionInfo=https://github.com/Breeding-Insight/bi-api/commit/e21aaa301f64d747e8d522fc012a0dcf8d258762 \ No newline at end of file +version=v0.10.0+829 +versionInfo=https://github.com/Breeding-Insight/bi-api/commit/b3d85a2190234c167f1ee116742e915bb5da6773 \ No newline at end of file From 5d525fe67963aa9c8a91560675ebed69cfe5ae87 Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Mon, 7 Oct 2024 14:40:16 -0400 Subject: [PATCH 7/9] Update version --- src/main/resources/version.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/version.properties b/src/main/resources/version.properties index f72baa467..f8bd260a7 100644 --- a/src/main/resources/version.properties +++ b/src/main/resources/version.properties @@ -14,5 +14,5 @@ # limitations under the License. # -version=v0.10.0+829 +version=v1.1.0+829 versionInfo=https://github.com/Breeding-Insight/bi-api/commit/b3d85a2190234c167f1ee116742e915bb5da6773 \ No newline at end of file From 656165a9791d435bbcd6dcceabe2702f03be219c Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Mon, 7 Oct 2024 18:40:33 +0000 Subject: [PATCH 8/9] [autocommit] bumping build number --- src/main/resources/version.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/version.properties b/src/main/resources/version.properties index f8bd260a7..2ee6cd4b2 100644 --- a/src/main/resources/version.properties +++ b/src/main/resources/version.properties @@ -14,5 +14,5 @@ # limitations under the License. # -version=v1.1.0+829 -versionInfo=https://github.com/Breeding-Insight/bi-api/commit/b3d85a2190234c167f1ee116742e915bb5da6773 \ No newline at end of file +version=v1.1.0+835 +versionInfo=https://github.com/Breeding-Insight/bi-api/commit/5d525fe67963aa9c8a91560675ebed69cfe5ae87 \ No newline at end of file From 3ae3cf3499c2f1a2a0755a2f2510204ace09f00f Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Tue, 8 Oct 2024 14:33:57 -0400 Subject: [PATCH 9/9] Fix accidental version change --- src/main/resources/version.properties | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/resources/version.properties b/src/main/resources/version.properties index c3de95842..f8900998b 100644 --- a/src/main/resources/version.properties +++ b/src/main/resources/version.properties @@ -14,6 +14,5 @@ # limitations under the License. # - version=v1.0.0+833 -versionInfo=https://github.com/Breeding-Insight/bi-api/commit/45511950453d85470e7b1063c7130510411df54b \ No newline at end of file +versionInfo=https://github.com/Breeding-Insight/bi-api/commit/45511950453d85470e7b1063c7130510411df54b