From 4ef3e819529786c7557669011286fd06da21977f Mon Sep 17 00:00:00 2001 From: dmeidlin <14339308+dmeidlin@users.noreply.github.com> Date: Fri, 3 Mar 2023 13:15:59 -0500 Subject: [PATCH 1/2] add search query params to GET /traits --- .../model/v1/request/query/TraitsQuery.java | 108 ++++++++++++++++++ .../api/v1/controller/TraitController.java | 3 +- 2 files changed, 110 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/breedinginsight/api/model/v1/request/query/TraitsQuery.java b/src/main/java/org/breedinginsight/api/model/v1/request/query/TraitsQuery.java index 4ad3a5980..20e55285f 100644 --- a/src/main/java/org/breedinginsight/api/model/v1/request/query/TraitsQuery.java +++ b/src/main/java/org/breedinginsight/api/model/v1/request/query/TraitsQuery.java @@ -19,9 +19,117 @@ import io.micronaut.core.annotation.Introspected; import lombok.Getter; +import org.apache.commons.lang3.StringUtils; +import java.util.ArrayList; +import java.util.List; @Getter @Introspected public class TraitsQuery extends QueryParams { + private String name; + private String traitDescription; + private String entityAttribute; + private String mainAbbreviation; + private String synonyms; + private String level; + private String status; + private String methodDescription; + private String methodClass; + private String methodFormula; + private String scaleName; + private String scaleClass; + private String scaleDecimalPlaces; + private String scaleLowerLimit; + private String scaleUpperLimit; + private String scaleCategories; + private String createdAt; + private String updatedAt; + private String createdByUserId; + private String createdByUserName; + private String updatedByUserId; + private String updatedByUserName; + private String termType; + + public SearchRequest constructSearchRequest() { + List filters = new ArrayList<>(); + if (!StringUtils.isBlank(getName())) { + filters.add(constructFilterRequest("name", getName())); + } + if (!StringUtils.isBlank(getTraitDescription())) { + filters.add(constructFilterRequest("traitDescription", getTraitDescription())); + } + if (!StringUtils.isBlank(getEntityAttribute())) { + filters.add(constructFilterRequest("entityAttribute", getEntityAttribute())); + } + if (!StringUtils.isBlank(getMainAbbreviation())) { + filters.add(constructFilterRequest("mainAbbreviation", getMainAbbreviation())); + } + if (!StringUtils.isBlank(getSynonyms())) { + filters.add(constructFilterRequest("synonyms", getSynonyms())); + } + if (!StringUtils.isBlank(getLevel())) { + filters.add(constructFilterRequest("level", getLevel())); + } + if (!StringUtils.isBlank(getStatus())) { + filters.add(constructFilterRequest("status", getStatus())); + } + if (!StringUtils.isBlank(getMethodDescription())) { + filters.add(constructFilterRequest("methodDescription", getMethodDescription())); + } + if (!StringUtils.isBlank(getMethodClass())) { + filters.add(constructFilterRequest("methodClass", getMethodClass())); + } + if (!StringUtils.isBlank(getMethodFormula())) { + filters.add(constructFilterRequest("methodFormula", getMethodFormula())); + } + if (!StringUtils.isBlank(getScaleName())) { + filters.add(constructFilterRequest("scaleName", getScaleName())); + } + if (!StringUtils.isBlank(getScaleClass())) { + filters.add(constructFilterRequest("scaleClass", getScaleClass())); + } + if (!StringUtils.isBlank(getScaleDecimalPlaces())) { + filters.add(constructFilterRequest("scaleDecimalPlaces", getScaleDecimalPlaces())); + } + if (!StringUtils.isBlank(getScaleLowerLimit())) { + filters.add(constructFilterRequest("scaleLowerLimit", getScaleLowerLimit())); + } + if (!StringUtils.isBlank(getScaleUpperLimit())) { + filters.add(constructFilterRequest("scaleUpperLimit", getScaleUpperLimit())); + } + if (!StringUtils.isBlank(getScaleCategories())) { + filters.add(constructFilterRequest("scaleCategories", getScaleCategories())); + } + if (!StringUtils.isBlank(getCreatedAt())) { + filters.add(constructFilterRequest("createdAt", getCreatedAt())); + } + if (!StringUtils.isBlank(getUpdatedAt())) { + filters.add(constructFilterRequest("updatedAt", getUpdatedAt())); + } + if (!StringUtils.isBlank(getCreatedByUserId())) { + filters.add(constructFilterRequest("createdByUserId", getCreatedByUserId())); + } + if (!StringUtils.isBlank(getCreatedByUserName())) { + filters.add(constructFilterRequest("createdByUserName", getCreatedByUserName())); + } + if (!StringUtils.isBlank(getUpdatedByUserId())) { + filters.add(constructFilterRequest("updatedByUserId", getUpdatedByUserId())); + } + if (!StringUtils.isBlank(getUpdatedByUserName())) { + filters.add(constructFilterRequest("updatedByUserName", getUpdatedByUserName())); + } + if (!StringUtils.isBlank(getTermType())) { + filters.add(constructFilterRequest("termType", getTermType())); + } + return new SearchRequest(filters); + } + private FilterRequest constructFilterRequest(String field, String value) { + return FilterRequest.builder() + .field(field) + .value(value) + .build(); + } + + Boolean full = false; } diff --git a/src/main/java/org/breedinginsight/api/v1/controller/TraitController.java b/src/main/java/org/breedinginsight/api/v1/controller/TraitController.java index e5c261fed..7f44398cd 100644 --- a/src/main/java/org/breedinginsight/api/v1/controller/TraitController.java +++ b/src/main/java/org/breedinginsight/api/v1/controller/TraitController.java @@ -81,7 +81,8 @@ public HttpResponse>> getTraits( try { List traits = ontologyService.getTraitsByProgramId(programId, traitsQuery.getFull()); - return ResponseUtils.getQueryResponse(traits, traitQueryMapper, traitsQuery); + SearchRequest searchRequest = traitsQuery.constructSearchRequest(); + return ResponseUtils.getQueryResponse(traits, traitQueryMapper, searchRequest, traitsQuery); } catch (DoesNotExistException e) { return HttpResponse.notFound(); } From 4f9d1590ac4a70b5f47187b2d6206b63890e59cc Mon Sep 17 00:00:00 2001 From: dmeidlin <14339308+dmeidlin@users.noreply.github.com> Date: Tue, 7 Mar 2023 12:29:46 -0500 Subject: [PATCH 2/2] add trait query field methodHandle --- .../api/model/v1/request/query/TraitsQuery.java | 4 ++++ .../utilities/response/mappers/TraitQueryMapper.java | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/main/java/org/breedinginsight/api/model/v1/request/query/TraitsQuery.java b/src/main/java/org/breedinginsight/api/model/v1/request/query/TraitsQuery.java index 20e55285f..a0ae2bb6f 100644 --- a/src/main/java/org/breedinginsight/api/model/v1/request/query/TraitsQuery.java +++ b/src/main/java/org/breedinginsight/api/model/v1/request/query/TraitsQuery.java @@ -36,6 +36,7 @@ public class TraitsQuery extends QueryParams { private String methodDescription; private String methodClass; private String methodFormula; + private String methodHandle; private String scaleName; private String scaleClass; private String scaleDecimalPlaces; @@ -82,6 +83,9 @@ public SearchRequest constructSearchRequest() { if (!StringUtils.isBlank(getMethodFormula())) { filters.add(constructFilterRequest("methodFormula", getMethodFormula())); } + if (!StringUtils.isBlank(getMethodHandle())) { + filters.add(constructFilterRequest("methodHandle", getMethodHandle())); + } if (!StringUtils.isBlank(getScaleName())) { filters.add(constructFilterRequest("scaleName", getScaleName())); } diff --git a/src/main/java/org/breedinginsight/utilities/response/mappers/TraitQueryMapper.java b/src/main/java/org/breedinginsight/utilities/response/mappers/TraitQueryMapper.java index ac8cccc22..ff1638b12 100644 --- a/src/main/java/org/breedinginsight/utilities/response/mappers/TraitQueryMapper.java +++ b/src/main/java/org/breedinginsight/utilities/response/mappers/TraitQueryMapper.java @@ -48,6 +48,9 @@ public TraitQueryMapper() { trait -> trait.getMethod() != null ? trait.getMethod().getMethodClass() : null), Map.entry("methodFormula", trait -> trait.getMethod() != null ? trait.getMethod().getFormula() : null), + Map.entry("methodHandle", + trait -> trait.getMethod() != null ? + trait.getMethod().getDescription() + " " + trait.getMethod().getMethodClass() : null ), Map.entry("scaleName", trait -> trait.getScale() != null ? trait.getScale().getScaleName() : null), Map.entry("scaleClass",