From 517cd32b2eaa3fd2d7a9e8e7ade55088fce9384b Mon Sep 17 00:00:00 2001 From: Dexter Amundsen Date: Mon, 10 Feb 2025 06:50:28 -0800 Subject: [PATCH] backup 1 --- .../java/bio/terra/tanagra/service/UnderlayService.java | 6 ++++++ .../impl/core/utils/AttributeSchemaUtils.java | 9 +++------ .../underlay/indextable/ITInstanceLevelDisplayHints.java | 1 + .../filterbuilder/FilterableGroupFilterBuilderTest.java | 6 +++--- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/service/src/main/java/bio/terra/tanagra/service/UnderlayService.java b/service/src/main/java/bio/terra/tanagra/service/UnderlayService.java index 235a4cbc6..6bd5fb115 100644 --- a/service/src/main/java/bio/terra/tanagra/service/UnderlayService.java +++ b/service/src/main/java/bio/terra/tanagra/service/UnderlayService.java @@ -270,6 +270,9 @@ public HintQueryResult getEntityLevelHints( Literal enumVal = sqlRowResult.get(ENUM_VAL_ALIAS, DataType.INT64); String enumDisplay = sqlRowResult.get(ENUM_DISP_ALIAS, DataType.STRING).getStringVal(); + if (enumDisplay == null) { + enumDisplay = "N/A"; + } Long enumCount = sqlRowResult.get(ENUM_COUNT_ALIAS, DataType.INT64).getInt64Val(); attrEnumValues.put(new ValueDisplay(enumVal, enumDisplay), enumCount); @@ -295,6 +298,9 @@ public HintQueryResult getEntityLevelHints( .forEachRemaining( sqlRowResult -> { Literal enumVal = sqlRowResult.get(ENUM_VAL_ALIAS, DataType.STRING); + if (enumVal.getStringVal() == null) { + enumVal = Literal.forString("N/A"); + } Long enumCount = sqlRowResult.get(ENUM_COUNT_ALIAS, DataType.INT64).getInt64Val(); attrEnumValues.put(new ValueDisplay(enumVal), enumCount); diff --git a/underlay/src/main/java/bio/terra/tanagra/filterbuilder/impl/core/utils/AttributeSchemaUtils.java b/underlay/src/main/java/bio/terra/tanagra/filterbuilder/impl/core/utils/AttributeSchemaUtils.java index 90ddb8f72..82e91bbf0 100644 --- a/underlay/src/main/java/bio/terra/tanagra/filterbuilder/impl/core/utils/AttributeSchemaUtils.java +++ b/underlay/src/main/java/bio/terra/tanagra/filterbuilder/impl/core/utils/AttributeSchemaUtils.java @@ -1,5 +1,6 @@ package bio.terra.tanagra.filterbuilder.impl.core.utils; +import static bio.terra.tanagra.api.filter.BooleanAndOrFilter.newBooleanAndOrFilter; import static bio.terra.tanagra.filterbuilder.SchemaUtils.toLiteral; import static bio.terra.tanagra.utils.ProtobufUtils.deserializeFromJsonOrProtoBytes; @@ -73,10 +74,7 @@ public static EntityFilter buildForEntity( underlay, entity, attribute, BinaryOperator.EQUALS, enumLiterals.get(0)) : new AttributeFilter(underlay, entity, attribute, NaryOperator.IN, enumLiterals)); } - - return filtersToOr.size() > 1 - ? new BooleanAndOrFilter(LogicalOperator.OR, filtersToOr) - : filtersToOr.get(0); + return newBooleanAndOrFilter(LogicalOperator.OR, filtersToOr); } else { // Numeric range filter. @@ -90,8 +88,7 @@ public static EntityFilter buildForEntity( NaryOperator.BETWEEN, List.of(Literal.forDouble(range.getMin()), Literal.forDouble(range.getMax())))); } - return BooleanAndOrFilter.newBooleanAndOrFilter( - BooleanAndOrFilter.LogicalOperator.OR, rangeFilters); + return newBooleanAndOrFilter(BooleanAndOrFilter.LogicalOperator.OR, rangeFilters); } } diff --git a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITInstanceLevelDisplayHints.java b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITInstanceLevelDisplayHints.java index dbcc6bf94..015808dc3 100644 --- a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITInstanceLevelDisplayHints.java +++ b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITInstanceLevelDisplayHints.java @@ -33,6 +33,7 @@ public ITInstanceLevelDisplayHints( this.orderBys = ImmutableList.of( Column.ATTRIBUTE_NAME.getSchema().getColumnName(), + Column.ENTITY_ID.getSchema().getColumnName(), Column.ENUM_DISPLAY.getSchema().getColumnName(), Column.ENUM_VALUE.getSchema().getColumnName(), Column.ENUM_COUNT.getSchema().getColumnName() + " DESC"); diff --git a/underlay/src/test/java/bio/terra/tanagra/filterbuilder/FilterableGroupFilterBuilderTest.java b/underlay/src/test/java/bio/terra/tanagra/filterbuilder/FilterableGroupFilterBuilderTest.java index ca72ba800..fff5b3c7c 100644 --- a/underlay/src/test/java/bio/terra/tanagra/filterbuilder/FilterableGroupFilterBuilderTest.java +++ b/underlay/src/test/java/bio/terra/tanagra/filterbuilder/FilterableGroupFilterBuilderTest.java @@ -375,7 +375,7 @@ void selectAllValueDataFilter() { EntityFilter cohortFilter = filterBuilder.buildForCohort(underlay, List.of(selectionData)); assertEquals(expectedCohortFilter, cohortFilter); - // Multiple attribute values including n/a in filter + // Multiple attribute values including n/a in filter ValueData.Selection selection2 = ValueData.Selection.newBuilder() .setValue(Value.newBuilder().setStringValue("ghijkl").build()) @@ -397,7 +397,7 @@ void selectAllValueDataFilter() { .build(); expectedValueDataSubFilter = - new BooleanAndOrFilter( + newBooleanAndOrFilter( LogicalOperator.OR, List.of( new AttributeFilter(underlay, entity_variant, attribute, UnaryOperator.IS_NULL), @@ -412,7 +412,7 @@ void selectAllValueDataFilter() { expectedSubFilter = new ItemInGroupFilter( underlay, groupItems_variant, expectedValueDataSubFilter, List.of(), null, null); - expectedCohortFilter = new BooleanAndOrFilter(LogicalOperator.OR, List.of(expectedSubFilter)); + expectedCohortFilter = newBooleanAndOrFilter(LogicalOperator.OR, List.of(expectedSubFilter)); selectionData = new SelectionData(null, serializeToJson(data)); cohortFilter = filterBuilder.buildForCohort(underlay, List.of(selectionData));