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..4a5281c8b 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,16 @@ 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. + * + * @return HttpResponse containing BrAPIProgramListResponse + * 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,7 +151,14 @@ public HttpResponse programsGet(@PathVariable("program @QueryValue("page") Optional page, @QueryValue("pageSize") Optional pageSize) { - List programs = programService.getById(programId).stream().filter(program -> { + //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 = 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); @@ -150,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") 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 2ee6cd4b2..af5a61a1b 100644 --- a/src/main/resources/version.properties +++ b/src/main/resources/version.properties @@ -15,4 +15,4 @@ # version=v1.1.0+835 -versionInfo=https://github.com/Breeding-Insight/bi-api/commit/5d525fe67963aa9c8a91560675ebed69cfe5ae87 \ No newline at end of file +versionInfo=https://github.com/Breeding-Insight/bi-api/commit/5d525fe67963aa9c8a91560675ebed69cfe5ae87