diff --git a/cli/src/main/java/bio/terra/tanagra/cli/utils/Context.java b/cli/src/main/java/bio/terra/tanagra/cli/utils/Context.java index e902af25e..5e2501a2f 100644 --- a/cli/src/main/java/bio/terra/tanagra/cli/utils/Context.java +++ b/cli/src/main/java/bio/terra/tanagra/cli/utils/Context.java @@ -9,12 +9,10 @@ public final class Context { private static final String LOG_FILENAME = "tanagra.log"; public static final String IS_TEST = "IS_TEST"; private static final String IS_TEST_TRUE_VALUE = "true"; - // Env var name to optionally override where the context is persisted on disk. private static final String CONTEXT_DIR_OVERRIDE_NAME = "TANAGRA_CONTEXT_PARENT_DIR"; // File paths related to persisting the context on disk. private static final String CONTEXT_DIRNAME = ".tanagra"; - // Singleton object that defines the current context or state. private static Config currentConfig; diff --git a/indexer/src/main/java/bio/terra/tanagra/indexing/job/dataflow/beam/PathUtils.java b/indexer/src/main/java/bio/terra/tanagra/indexing/job/dataflow/beam/PathUtils.java index 054382970..ec9df32ed 100644 --- a/indexer/src/main/java/bio/terra/tanagra/indexing/job/dataflow/beam/PathUtils.java +++ b/indexer/src/main/java/bio/terra/tanagra/indexing/job/dataflow/beam/PathUtils.java @@ -22,12 +22,12 @@ value = {"NP_NULL_PARAM_DEREF", "RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"}, justification = "PCollection is using a Nullable coder") public final class PathUtils { - private PathUtils() {} - // the path of nodes is currently encoded as a string. use this as the delimiter between nodes. private static final String PATH_DELIMITER = "."; private static final String PATH_DELIMITER_REGEX = "\\."; + private PathUtils() {} + /** * Compute one path from each node in a hierarchy to a root node. If there are multiple paths from * a given node to a root node, then select one at random. diff --git a/service/src/main/java/bio/terra/tanagra/db/ActivityLogDao.java b/service/src/main/java/bio/terra/tanagra/db/ActivityLogDao.java index 63b33e099..aaf210d67 100644 --- a/service/src/main/java/bio/terra/tanagra/db/ActivityLogDao.java +++ b/service/src/main/java/bio/terra/tanagra/db/ActivityLogDao.java @@ -141,7 +141,6 @@ public List getAllActivityLogs( ACTIVITY_LOG_SELECT_SQL + (filterSql.isEmpty() ? "" : " WHERE " + filterSql) + " ORDER BY logged DESC LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET all activity logs: {}", sql); return getActivityLogsHelper(sql, params); } @@ -186,7 +185,6 @@ private String renderSqlForActivityLogFilter( @ReadTransaction public ActivityLog getActivityLog(String activityLogId) { String sql = ACTIVITY_LOG_SELECT_SQL + " WHERE id = :id"; - LOGGER.debug("GET activity log: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource().addValue("id", activityLogId); List activityLogs = getActivityLogsHelper(sql, params); diff --git a/service/src/main/java/bio/terra/tanagra/db/AnnotationDao.java b/service/src/main/java/bio/terra/tanagra/db/AnnotationDao.java index d29cc3daa..dd219404b 100644 --- a/service/src/main/java/bio/terra/tanagra/db/AnnotationDao.java +++ b/service/src/main/java/bio/terra/tanagra/db/AnnotationDao.java @@ -117,7 +117,6 @@ public List getAllAnnotationKeys(String cohortId, int offset, int String sql = ANNOTATION_KEY_SELECT_SQL + " WHERE cohort_id = :cohort_id ORDER BY display_name LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET all annotation keys: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource() .addValue("cohort_id", cohortId) @@ -137,7 +136,6 @@ public List getAnnotationKeysMatchingList( String sql = ANNOTATION_KEY_SELECT_SQL + " WHERE cohort_id = :cohort_id AND id IN (:ids) ORDER BY display_name LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET matching annotation keys: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource() .addValue("cohort_id", cohortId) @@ -150,7 +148,6 @@ public List getAnnotationKeysMatchingList( @ReadTransaction public AnnotationKey getAnnotationKey(String cohortId, String annotationKeyId) { String sql = ANNOTATION_KEY_SELECT_SQL + " WHERE cohort_id = :cohort_id AND id = :id"; - LOGGER.debug("GET annotation key: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource().addValue("cohort_id", cohortId).addValue("id", annotationKeyId); List annotationKeys = getAnnotationKeysHelper(sql, params); @@ -269,7 +266,6 @@ public void updateAnnotationValues( @ReadTransaction public List getAllAnnotationValues(String cohortId) { String sql = ANNOTATION_VALUE_SELECT_SQL + " WHERE av.cohort_id = :cohort_id"; - LOGGER.debug("GET annotation values: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource().addValue("cohort_id", cohortId); return jdbcTemplate.query(sql, params, ANNOTATION_VALUE_ROW_MAPPER); } diff --git a/service/src/main/java/bio/terra/tanagra/db/CohortDao.java b/service/src/main/java/bio/terra/tanagra/db/CohortDao.java index 5673482e8..06efa48dc 100644 --- a/service/src/main/java/bio/terra/tanagra/db/CohortDao.java +++ b/service/src/main/java/bio/terra/tanagra/db/CohortDao.java @@ -160,7 +160,6 @@ public List getAllCohorts(String studyId, int offset, int limit) { String sql = COHORT_SELECT_SQL + " WHERE study_id = :study_id AND NOT is_deleted ORDER BY display_name LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET ALL cohorts: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource() .addValue("study_id", studyId) @@ -174,7 +173,6 @@ public List getCohortsMatchingList(Set ids, int offset, int limi String sql = COHORT_SELECT_SQL + " WHERE id IN (:ids) AND NOT is_deleted ORDER BY display_name LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET MATCHING cohorts: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource() .addValue("ids", ids) @@ -187,7 +185,6 @@ public List getCohortsMatchingList(Set ids, int offset, int limi public Cohort getCohort(String id) { // Fetch cohort. String sql = COHORT_SELECT_SQL + " WHERE id = :id"; - LOGGER.debug("GET cohort: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource().addValue("id", id); List cohorts = getCohortsHelper(sql, params); diff --git a/service/src/main/java/bio/terra/tanagra/db/FeatureSetDao.java b/service/src/main/java/bio/terra/tanagra/db/FeatureSetDao.java index 29f1fa982..0a6dd506e 100644 --- a/service/src/main/java/bio/terra/tanagra/db/FeatureSetDao.java +++ b/service/src/main/java/bio/terra/tanagra/db/FeatureSetDao.java @@ -91,7 +91,6 @@ public List getAllFeatureSets(String studyId, int offset, int limit) String sql = FEATURE_SET_SELECT_SQL + " WHERE study_id = :study_id AND NOT is_deleted ORDER BY display_name LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET ALL feature sets: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource() .addValue("study_id", studyId) @@ -105,7 +104,6 @@ public List getFeatureSetsMatchingList(Set ids, int offset, String sql = FEATURE_SET_SELECT_SQL + " WHERE id IN (:ids) AND NOT is_deleted ORDER BY display_name LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET MATCHING feature sets: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource() .addValue("ids", ids) @@ -118,7 +116,6 @@ public List getFeatureSetsMatchingList(Set ids, int offset, public FeatureSet getFeatureSet(String id) { // Fetch feature set. String sql = FEATURE_SET_SELECT_SQL + " WHERE id = :id"; - LOGGER.debug("GET feature set: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource().addValue("id", id); List featureSets = getFeatureSetsHelper(sql, params); diff --git a/service/src/main/java/bio/terra/tanagra/db/ReviewDao.java b/service/src/main/java/bio/terra/tanagra/db/ReviewDao.java index f8aeffe47..6b536d9f5 100644 --- a/service/src/main/java/bio/terra/tanagra/db/ReviewDao.java +++ b/service/src/main/java/bio/terra/tanagra/db/ReviewDao.java @@ -83,7 +83,6 @@ public List getAllReviews(String cohortId, int offset, int limit) { String sql = REVIEW_SELECT_SQL + " WHERE cohort_id = :cohort_id AND NOT is_deleted ORDER BY created DESC LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET ALL reviews: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource() .addValue("cohort_id", cohortId) @@ -97,7 +96,6 @@ public List getReviewsMatchingList(Set ids, int offset, int limi String sql = REVIEW_SELECT_SQL + " WHERE id IN (:ids) AND NOT is_deleted ORDER BY created DESC LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET MATCHING reviews: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource() .addValue("ids", ids) @@ -110,7 +108,6 @@ public List getReviewsMatchingList(Set ids, int offset, int limi public Review getReview(String id) { // Fetch review. String sql = REVIEW_SELECT_SQL + " WHERE id = :id"; - LOGGER.debug("GET review: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource().addValue("id", id); List reviews = getReviewsHelper(sql, params); @@ -196,7 +193,6 @@ public Map getPrimaryEntityIdsToStableIndex(String reviewId) { String sql = PRIMARY_ENTITY_INSTANCE_SELECT_SQL + " WHERE review_id = :review_id ORDER BY stable_index ASC"; - LOGGER.debug("GET primary entity instance ids: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource().addValue("review_id", reviewId); List> idIndexPairs = jdbcTemplate.query(sql, params, PRIMARY_ENTITY_INSTANCE_ROW_MAPPER); diff --git a/service/src/main/java/bio/terra/tanagra/db/StudyDao.java b/service/src/main/java/bio/terra/tanagra/db/StudyDao.java index 8f68fddf6..40d066ae6 100644 --- a/service/src/main/java/bio/terra/tanagra/db/StudyDao.java +++ b/service/src/main/java/bio/terra/tanagra/db/StudyDao.java @@ -130,7 +130,6 @@ public List getAllStudies( STUDY_SELECT_SQL + (filterSql.isEmpty() ? "" : " WHERE " + filterSql) + " ORDER BY display_name LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET all studies: {}", sql); return getStudiesHelper(sql, params); } @@ -160,7 +159,6 @@ public List getStudiesMatchingList( + " WHERE id IN (:ids) " + (filterSql.isEmpty() ? "" : "AND " + filterSql + " ") + "ORDER BY display_name LIMIT :limit OFFSET :offset"; - LOGGER.debug("GET matching studies: {}", sql); return getStudiesHelper(sql, params); } @@ -217,7 +215,6 @@ private String renderSqlForStudyFilter( public Optional getStudyIfExists(String id) { // Fetch study. String sql = STUDY_SELECT_SQL + " WHERE id = :id"; - LOGGER.debug("GET study: {}", sql); MapSqlParameterSource params = new MapSqlParameterSource().addValue("id", id); List studies = getStudiesHelper(sql, params); diff --git a/service/src/main/java/bio/terra/tanagra/service/authentication/AppDefaultUtils.java b/service/src/main/java/bio/terra/tanagra/service/authentication/AppDefaultUtils.java index 9d8435572..ff70ee10d 100644 --- a/service/src/main/java/bio/terra/tanagra/service/authentication/AppDefaultUtils.java +++ b/service/src/main/java/bio/terra/tanagra/service/authentication/AppDefaultUtils.java @@ -11,7 +11,6 @@ /** Utilities for working with Google application default credentials. */ public final class AppDefaultUtils { - private static final String GCP_ADC_JWT_ISSUER_URL = "https://accounts.google.com"; private AppDefaultUtils() {} diff --git a/service/src/main/java/bio/terra/tanagra/service/authentication/UserId.java b/service/src/main/java/bio/terra/tanagra/service/authentication/UserId.java index 20868f8c0..d4f963086 100644 --- a/service/src/main/java/bio/terra/tanagra/service/authentication/UserId.java +++ b/service/src/main/java/bio/terra/tanagra/service/authentication/UserId.java @@ -4,7 +4,6 @@ public final class UserId implements Serializable { private static final String DISABLED_AUTHENTICATION_USER_ID = "authentication-disabled"; - private final String subject; private final String email; private final String token; diff --git a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/Criteria.java b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/Criteria.java index 2ed6d01e2..4d8b6d86b 100644 --- a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/Criteria.java +++ b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/Criteria.java @@ -11,8 +11,6 @@ import org.apache.commons.lang3.tuple.Pair; public final class Criteria { - private Criteria() {} - public static final Pair DEMOGRAPHICS_PREPACKAGED_DATA_FEATURE = Pair.of( @@ -67,6 +65,7 @@ private Criteria() {} .build())) .uiConfig("") .build()); + public static final Pair ETHNICITY_EQ_HISPANIC_OR_LATINO = Pair.of( @@ -115,6 +114,7 @@ private Criteria() {} .uiConfig("") .tags(Map.of()) .build()); + public static final Pair PROCEDURE_EQ_AMPUTATION = Pair.of( @@ -163,4 +163,6 @@ private Criteria() {} .build())) .uiConfig("") .build()); + + private Criteria() {} } diff --git a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/CriteriaGroup.java b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/CriteriaGroup.java index 6b6261229..4a9ef602b 100644 --- a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/CriteriaGroup.java +++ b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/CriteriaGroup.java @@ -9,37 +9,42 @@ import java.util.List; public final class CriteriaGroup { - private CriteriaGroup() {} - public static final CohortRevision.CriteriaGroup CRITERIA_GROUP_GENDER = CohortRevision.CriteriaGroup.builder() .displayName("group gender") .criteria(List.of(GENDER_EQ_WOMAN.getValue())) .build(); + public static final CohortRevision.CriteriaGroup CRITERIA_GROUP_AGE = CohortRevision.CriteriaGroup.builder() .displayName("group gender") .criteria(List.of(GENDER_EQ_WOMAN.getValue())) .build(); + public static final CohortRevision.CriteriaGroup CRITERIA_GROUP_DEMOGRAPHICS = CohortRevision.CriteriaGroup.builder() .displayName("group 1") .criteria(List.of(GENDER_EQ_WOMAN.getValue(), ETHNICITY_EQ_HISPANIC_OR_LATINO.getValue())) .build(); + public static final CohortRevision.CriteriaGroup DISABLED_CRITERIA_GROUP_DEMOGRAPHICS = CohortRevision.CriteriaGroup.builder() .displayName("disabled group demographics") .criteria(List.of(GENDER_EQ_WOMAN.getValue(), ETHNICITY_EQ_HISPANIC_OR_LATINO.getValue())) .isDisabled(true) .build(); + public static final CohortRevision.CriteriaGroup CRITERIA_GROUP_CONDITION = CohortRevision.CriteriaGroup.builder() .displayName("group condition") .criteria(List.of(CONDITION_EQ_TYPE_2_DIABETES.getValue())) .build(); + public static final CohortRevision.CriteriaGroup CRITERIA_GROUP_PROCEDURE = CohortRevision.CriteriaGroup.builder() .displayName("group procedure") .criteria(List.of(PROCEDURE_EQ_AMPUTATION.getValue())) .build(); + + private CriteriaGroup() {} } diff --git a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/CriteriaGroupSection.java b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/CriteriaGroupSection.java index 9c2e9a481..9f73f1584 100644 --- a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/CriteriaGroupSection.java +++ b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/CriteriaGroupSection.java @@ -7,23 +7,24 @@ import java.util.List; public final class CriteriaGroupSection { - private CriteriaGroupSection() {} - public static final CohortRevision.CriteriaGroupSection CRITERIA_GROUP_SECTION_GENDER = CohortRevision.CriteriaGroupSection.builder() .displayName("section gender") .criteriaGroups(List.of(CriteriaGroup.CRITERIA_GROUP_GENDER)) .build(); + public static final CohortRevision.CriteriaGroupSection CRITERIA_GROUP_SECTION_AGE = CohortRevision.CriteriaGroupSection.builder() .displayName("section age") .criteriaGroups(List.of(CriteriaGroup.CRITERIA_GROUP_AGE)) .build(); + public static final CohortRevision.CriteriaGroupSection CRITERIA_GROUP_SECTION_DEMOGRAPHICS = CohortRevision.CriteriaGroupSection.builder() .displayName("section demographics") .criteriaGroups(List.of(CriteriaGroup.CRITERIA_GROUP_DEMOGRAPHICS)) .build(); + public static final CohortRevision.CriteriaGroupSection CRITERIA_GROUP_SECTION_DEMOGRAPHICS_AND_CONDITION = CohortRevision.CriteriaGroupSection.builder() @@ -96,4 +97,6 @@ private CriteriaGroupSection() {} .joinOperatorValue(null) .setIsExcluded(false) .build(); + + private CriteriaGroupSection() {} } diff --git a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/FeatureSet.java b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/FeatureSet.java index e9f160411..9dca5948e 100644 --- a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/FeatureSet.java +++ b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/cmssynpuf/FeatureSet.java @@ -8,8 +8,6 @@ public final class FeatureSet { private static final String UNDERLAY_NAME = "cmssynpuf"; - private FeatureSet() {} - public static final bio.terra.tanagra.service.artifact.model.FeatureSet CS_DEMOGRAPHICS = bio.terra.tanagra.service.artifact.model.FeatureSet.builder() .underlay(UNDERLAY_NAME) @@ -23,4 +21,6 @@ private FeatureSet() {} .criteria(List.of(DEMOGRAPHICS_PREPACKAGED_DATA_FEATURE.getRight())) .excludeOutputAttributesPerEntity(Map.of("person", List.of("id", "gender"))) .build(); + + private FeatureSet() {} } diff --git a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CohortRevision.java b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CohortRevision.java index 7186208f2..c19203a4d 100644 --- a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CohortRevision.java +++ b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CohortRevision.java @@ -9,8 +9,6 @@ import java.util.List; public final class CohortRevision { - private CohortRevision() {} - private static final String UNDERLAY_NAME = "sd"; public static final bio.terra.tanagra.service.artifact.model.CohortRevision CR_EMPTY = @@ -34,12 +32,14 @@ private CohortRevision() {} .sections(List.of(CGS_CONDITION_EXCLUDED, CGS_GENDER)) .setIsMostRecent(true) .build(); + public static final bio.terra.tanagra.service.artifact.model.CohortRevision CR_PROCEDURE = bio.terra.tanagra.service.artifact.model.CohortRevision.builder() .id("cr4") .sections(List.of(CGS_PROCEDURE)) .setIsMostRecent(true) .build(); + public static final bio.terra.tanagra.service.artifact.model.CohortRevision CR_GENDER_AND_DISABLED_CONDITION = bio.terra.tanagra.service.artifact.model.CohortRevision.builder() @@ -50,18 +50,23 @@ private CohortRevision() {} public static final Cohort C_EMPTY = Cohort.builder().underlay(UNDERLAY_NAME).id("c1").revisions(List.of(CR_EMPTY)).build(); + public static final Cohort C_CONDITION_EXCLUDED = Cohort.builder() .underlay(UNDERLAY_NAME) .id("c2") .revisions(List.of(CR_CONDITION_EXCLUDED)) .build(); + public static final Cohort C_CONDITION_EXCLUDED_AND_GENDER = Cohort.builder() .underlay(UNDERLAY_NAME) .id("c3") .revisions(List.of(CR_CONDITION_EXCLUDED_AND_GENDER)) .build(); + public static final Cohort C_PROCEDURE = Cohort.builder().underlay(UNDERLAY_NAME).id("c5").revisions(List.of(CR_PROCEDURE)).build(); + + private CohortRevision() {} } diff --git a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/Criteria.java b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/Criteria.java index 7d758b97a..7e9173025 100644 --- a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/Criteria.java +++ b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/Criteria.java @@ -10,8 +10,6 @@ import java.util.Map; public final class Criteria { - private Criteria() {} - public static final bio.terra.tanagra.service.artifact.model.Criteria GENDER_EQ_WOMAN = bio.terra.tanagra.service.artifact.model.Criteria.builder() .selectorOrModifierName("tanagra-gender") @@ -99,6 +97,7 @@ private Criteria() {} .build()) .build())) .build(); + public static final bio.terra.tanagra.service.artifact.model.Criteria PROCEDURE_AGE_AT_OCCURRENCE_EQ_45 = bio.terra.tanagra.service.artifact.model.Criteria.builder() @@ -126,4 +125,6 @@ private Criteria() {} .selectionData("") .uiConfig("") .build(); + + private Criteria() {} } diff --git a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CriteriaGroup.java b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CriteriaGroup.java index e2e9eea24..6be14da72 100644 --- a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CriteriaGroup.java +++ b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CriteriaGroup.java @@ -11,33 +11,37 @@ import java.util.List; public final class CriteriaGroup { - private CriteriaGroup() {} - public static final CohortRevision.CriteriaGroup CG_EMPTY = CohortRevision.CriteriaGroup.builder().id("cg1").build(); + public static final CohortRevision.CriteriaGroup CG_GENDER = CohortRevision.CriteriaGroup.builder().id("cg2").criteria(List.of(GENDER_EQ_WOMAN)).build(); + public static final CohortRevision.CriteriaGroup DISABLED_CG_GENDER = CohortRevision.CriteriaGroup.builder() .id("cg2d") .criteria(List.of(GENDER_EQ_WOMAN)) .isDisabled(true) .build(); + public static final CohortRevision.CriteriaGroup CG_CONDITION = CohortRevision.CriteriaGroup.builder() .id("cg3") .criteria(List.of(CONDITION_EQ_TYPE_2_DIABETES)) .build(); + public static final CohortRevision.CriteriaGroup CG_CONDITION_WITH_MODIFIER = CohortRevision.CriteriaGroup.builder() .id("cg4") .criteria(List.of(CONDITION_EQ_TYPE_2_DIABETES, CONDITION_AGE_AT_OCCURRENCE_EQ_65)) .build(); + public static final CohortRevision.CriteriaGroup CG_CONDITION_WITH_GROUP_BY_MODIFIER = CohortRevision.CriteriaGroup.builder() .id("cg5") .criteria(List.of(CONDITION_EQ_TYPE_2_DIABETES, CONDITION_COUNT_GTE_2)) .build(); + public static final CohortRevision.CriteriaGroup CG_PROCEDURE = CohortRevision.CriteriaGroup.builder() .id("cg6") @@ -49,4 +53,6 @@ private CriteriaGroup() {} .id("cg7") .criteria(List.of(PROCEDURE_EQ_AMPUTATION, PROCEDURE_AGE_AT_OCCURRENCE_EQ_45)) .build(); + + private CriteriaGroup() {} } diff --git a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CriteriaGroupSection.java b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CriteriaGroupSection.java index d94127d3b..a64461261 100644 --- a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CriteriaGroupSection.java +++ b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/CriteriaGroupSection.java @@ -15,16 +15,16 @@ import java.util.List; public final class CriteriaGroupSection { - private CriteriaGroupSection() {} - public static final CohortRevision.CriteriaGroupSection CGS_EMPTY = CohortRevision.CriteriaGroupSection.builder().id("cgs1").build(); + public static final CohortRevision.CriteriaGroupSection CGS_CONDITION_EXCLUDED = CohortRevision.CriteriaGroupSection.builder() .id("cgs2") .criteriaGroups(List.of(CG_CONDITION_WITH_MODIFIER)) .setIsExcluded(true) .build(); + public static final CohortRevision.CriteriaGroupSection CGS_GENDER_AND_CONDITION = CohortRevision.CriteriaGroupSection.builder() .id("cgs3") @@ -39,17 +39,20 @@ private CriteriaGroupSection() {} .setIsExcluded(true) .setIsDisabled(true) .build(); + public static final CohortRevision.CriteriaGroupSection CGS_CONDITION_AND_DISABLED_GENDER = CohortRevision.CriteriaGroupSection.builder() .id("cgs3d") .criteriaGroups(List.of(CG_CONDITION_WITH_MODIFIER, DISABLED_CG_GENDER)) .operator(BooleanAndOrFilter.LogicalOperator.AND) .build(); + public static final CohortRevision.CriteriaGroupSection CGS_GENDER = CohortRevision.CriteriaGroupSection.builder() .id("cgs4") .criteriaGroups(List.of(CG_GENDER)) .build(); + public static final CohortRevision.CriteriaGroupSection CGS_PROCEDURE = CohortRevision.CriteriaGroupSection.builder() .id("cgs5") @@ -127,4 +130,6 @@ private CriteriaGroupSection() {} .secondConditionCriteriaGroups(List.of(CG_CONDITION_WITH_MODIFIER)) .operator(BooleanAndOrFilter.LogicalOperator.AND) .build(); + + private CriteriaGroupSection() {} } diff --git a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/FeatureSet.java b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/FeatureSet.java index e709d071e..d7c8e1f5d 100644 --- a/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/FeatureSet.java +++ b/service/src/test/java/bio/terra/tanagra/service/criteriaconstants/sd/FeatureSet.java @@ -10,8 +10,6 @@ public final class FeatureSet { private static final String UNDERLAY_NAME = "sd"; - private FeatureSet() {} - public static final bio.terra.tanagra.service.artifact.model.FeatureSet CS_EMPTY = bio.terra.tanagra.service.artifact.model.FeatureSet.builder() .underlay(UNDERLAY_NAME) @@ -46,4 +44,6 @@ private FeatureSet() {} .underlay(UNDERLAY_NAME) .criteria(List.of(CONDITION_EQ_TYPE_2_DIABETES, PROCEDURE_EQ_AMPUTATION)) .build(); + + private FeatureSet() {} } diff --git a/settings.gradle b/settings.gradle index dd737b765..eb7dbd790 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,4 +7,4 @@ gradle.ext { } // This line needs to match the VERSION_LINE_MATCH regex in the bump-tag-publish GHA. -gradle.ext.tanagraVersion = "0.0.752-SNAPSHOT" +gradle.ext.tanagraVersion = "0.0.754-SNAPSHOT" diff --git a/underlay/src/main/java/bio/terra/tanagra/query/bigquery/BQQueryRunner.java b/underlay/src/main/java/bio/terra/tanagra/query/bigquery/BQQueryRunner.java index 895f3cfc7..5b5b84099 100644 --- a/underlay/src/main/java/bio/terra/tanagra/query/bigquery/BQQueryRunner.java +++ b/underlay/src/main/java/bio/terra/tanagra/query/bigquery/BQQueryRunner.java @@ -208,6 +208,7 @@ public HintQueryResult run(HintQueryRequest hintQueryRequest) { // Build the SQL query. StringBuilder sql = new StringBuilder(); SqlParams sqlParams = new SqlParams(); + List orderBys; if (hintQueryRequest.isEntityLevel()) { ITEntityLevelDisplayHints eldhTable = @@ -218,6 +219,8 @@ public HintQueryResult run(HintQueryRequest hintQueryRequest) { // SELECT * FROM [entity-level hint] sql.append("SELECT * FROM ").append(eldhTable.getTablePointer().render()); + orderBys = eldhTable.getOrderBys(); + } else { ITInstanceLevelDisplayHints ildhTable = hintQueryRequest @@ -238,8 +241,12 @@ public HintQueryResult run(HintQueryRequest hintQueryRequest) { .append(ITInstanceLevelDisplayHints.Column.ENTITY_ID.getSchema().getColumnName()) .append(" = @") .append(relatedEntityIdParam); + orderBys = ildhTable.getOrderBys(); } + // ORDER BY [order by fields] + sql.append(" ORDER BY ").append(String.join(", ", orderBys)); + // Execute the SQL query. SqlQueryRequest sqlQueryRequest = new SqlQueryRequest(sql.toString(), sqlParams, null, null, hintQueryRequest.isDryRun()); diff --git a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITEntityLevelDisplayHints.java b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITEntityLevelDisplayHints.java index 3097953b7..06a25e2e1 100644 --- a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITEntityLevelDisplayHints.java +++ b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITEntityLevelDisplayHints.java @@ -10,13 +10,24 @@ public final class ITEntityLevelDisplayHints extends IndexTable { public static final String TABLE_NAME = "ELDH"; - private final String entity; + private final ImmutableList columnSchemas; + private final ImmutableList orderBys; public ITEntityLevelDisplayHints( NameHelper namer, SZBigQuery.IndexData bigQueryConfig, String entity) { super(namer, bigQueryConfig); this.entity = entity; + this.columnSchemas = + ImmutableList.copyOf( + Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())); + // TODO(dexamundsen): move orderBys to config + this.orderBys = + ImmutableList.of( + Column.ATTRIBUTE_NAME.getSchema().getColumnName(), + Column.ENUM_DISPLAY.getSchema().getColumnName(), + Column.ENUM_VALUE.getSchema().getColumnName(), + Column.ENUM_COUNT.getSchema().getColumnName() + " DESC"); } public String getEntity() { @@ -30,9 +41,11 @@ public String getTableBaseName() { @Override public ImmutableList getColumnSchemas() { - // Columns are static and don't depend on the entity. - return ImmutableList.copyOf( - Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())); + return columnSchemas; + } + + public ImmutableList getOrderBys() { + return orderBys; } public enum Column { diff --git a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITHierarchyAncestorDescendant.java b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITHierarchyAncestorDescendant.java index 08015e792..22f2f6a07 100644 --- a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITHierarchyAncestorDescendant.java +++ b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITHierarchyAncestorDescendant.java @@ -13,12 +13,16 @@ public final class ITHierarchyAncestorDescendant extends IndexTable { public static final String TABLE_NAME = "HAD"; private final String entity; private final String hierarchy; + private final ImmutableList columnSchemas; public ITHierarchyAncestorDescendant( NameHelper namer, SZBigQuery.IndexData bigQueryConfig, String entity, String hierarchy) { super(namer, bigQueryConfig); this.entity = entity; this.hierarchy = hierarchy; + this.columnSchemas = + ImmutableList.copyOf( + Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())); } public String getEntity() { @@ -36,9 +40,7 @@ public String getTableBaseName() { @Override public ImmutableList getColumnSchemas() { - // Columns are static and don't depend on the entity or hierarchy. - return ImmutableList.copyOf( - Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())); + return columnSchemas; } public SqlField getAncestorField() { diff --git a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITHierarchyChildParent.java b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITHierarchyChildParent.java index 5962ec96e..f61671932 100644 --- a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITHierarchyChildParent.java +++ b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITHierarchyChildParent.java @@ -13,12 +13,16 @@ public final class ITHierarchyChildParent extends IndexTable { private static final String TABLE_NAME = "HCP"; private final String entity; private final String hierarchy; + private final ImmutableList columnSchemas; public ITHierarchyChildParent( NameHelper namer, SZBigQuery.IndexData bigQueryConfig, String entity, String hierarchy) { super(namer, bigQueryConfig); this.entity = entity; this.hierarchy = hierarchy; + this.columnSchemas = + ImmutableList.copyOf( + Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())); } public String getEntity() { @@ -36,9 +40,7 @@ public String getTableBaseName() { @Override public ImmutableList getColumnSchemas() { - // Columns are static and don't depend on the entity or hierarchy. - return ImmutableList.copyOf( - Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())); + return columnSchemas; } public SqlField getChildField() { 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 e78b6eae5..dbcc6bf94 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 @@ -13,6 +13,8 @@ public final class ITInstanceLevelDisplayHints extends IndexTable { private final String entityGroup; private final String hintedEntity; private final String relatedEntity; + private final ImmutableList columnSchemas; + private final ImmutableList orderBys; public ITInstanceLevelDisplayHints( NameHelper namer, @@ -24,6 +26,16 @@ public ITInstanceLevelDisplayHints( this.entityGroup = entityGroup; this.hintedEntity = hintedEntity; this.relatedEntity = relatedEntity; + this.columnSchemas = + ImmutableList.copyOf( + Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())); + // TODO(dexamundsen): move orderBys to config + this.orderBys = + ImmutableList.of( + Column.ATTRIBUTE_NAME.getSchema().getColumnName(), + Column.ENUM_DISPLAY.getSchema().getColumnName(), + Column.ENUM_VALUE.getSchema().getColumnName(), + Column.ENUM_COUNT.getSchema().getColumnName() + " DESC"); } public String getEntityGroup() { @@ -45,9 +57,11 @@ public String getTableBaseName() { @Override public ImmutableList getColumnSchemas() { - // Columns are static and don't depend on the entity. - return ImmutableList.copyOf( - Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())); + return columnSchemas; + } + + public ImmutableList getOrderBys() { + return orderBys; } public enum Column { diff --git a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITRelationshipIdPairs.java b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITRelationshipIdPairs.java index 4293dfd65..61dc4beca 100644 --- a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITRelationshipIdPairs.java +++ b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITRelationshipIdPairs.java @@ -13,11 +13,11 @@ public final class ITRelationshipIdPairs extends IndexTable { private static final String TABLE_NAME = "RIDS"; - private final String entityGroup; private final String entityA; private final String entityB; private final STRelationshipIdPairs sourceTable; + private final ImmutableList columnSchemas; public ITRelationshipIdPairs( NameHelper namer, @@ -30,6 +30,9 @@ public ITRelationshipIdPairs( this.entityA = entityA; this.entityB = entityB; this.sourceTable = null; + this.columnSchemas = + ImmutableList.copyOf( + Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())); } public ITRelationshipIdPairs( @@ -43,6 +46,7 @@ public ITRelationshipIdPairs( this.entityA = entityA; this.entityB = entityB; this.sourceTable = sourceSchema.getRelationshipIdPairs(entityGroup, entityA, entityB); + this.columnSchemas = sourceTable.getColumnSchemas(); } public String getEntityGroup() { @@ -64,10 +68,7 @@ public String getTableBaseName() { @Override public ImmutableList getColumnSchemas() { - return sourceTable == null - ? ImmutableList.copyOf( - Arrays.stream(Column.values()).map(Column::getSchema).collect(Collectors.toList())) - : sourceTable.getColumnSchemas(); + return columnSchemas; } public SqlField getEntityAIdField() { diff --git a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/IndexTable.java b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/IndexTable.java index 391549359..9af2365df 100644 --- a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/IndexTable.java +++ b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/IndexTable.java @@ -8,7 +8,6 @@ import bio.terra.tanagra.underlay.indextable.ITEntityMain.ColumnTemplate; import bio.terra.tanagra.underlay.serialization.SZBigQuery; import com.google.common.collect.ImmutableList; -import java.util.List; public abstract class IndexTable { private final NameHelper namer; @@ -40,8 +39,9 @@ public BQTable getTablePointer() { public abstract ImmutableList getColumnSchemas(); - public List getColumnNames() { - return getColumnSchemas().stream().map(ColumnSchema::getColumnName).toList(); + public ImmutableList getColumnNames() { + return ImmutableList.copyOf( + getColumnSchemas().stream().map(ColumnSchema::getColumnName).toList()); } public boolean isGeneratedIndexTable() { diff --git a/underlay/src/main/java/bio/terra/tanagra/utils/BigQueryStorageWriter.java b/underlay/src/main/java/bio/terra/tanagra/utils/BigQueryStorageWriter.java index d764156ef..4dd17cfe6 100644 --- a/underlay/src/main/java/bio/terra/tanagra/utils/BigQueryStorageWriter.java +++ b/underlay/src/main/java/bio/terra/tanagra/utils/BigQueryStorageWriter.java @@ -37,7 +37,6 @@ */ public final class BigQueryStorageWriter { private static final Logger LOGGER = LoggerFactory.getLogger(BigQueryStorageWriter.class); - private static final int BATCH_SIZE = 1000; private static final int MAX_BATCHES = 100; diff --git a/underlay/src/main/java/bio/terra/tanagra/utils/GoogleBigQuery.java b/underlay/src/main/java/bio/terra/tanagra/utils/GoogleBigQuery.java index bac51ad32..2e7aa4203 100644 --- a/underlay/src/main/java/bio/terra/tanagra/utils/GoogleBigQuery.java +++ b/underlay/src/main/java/bio/terra/tanagra/utils/GoogleBigQuery.java @@ -39,7 +39,6 @@ /** Utility methods for talking to Google BigQuery. */ public final class GoogleBigQuery { private static final Logger LOGGER = LoggerFactory.getLogger(GoogleBigQuery.class); - // Default value for the maximum number of times to retry HTTP requests. public static final int BQ_MAXIMUM_RETRIES = 5; public static final Duration LONG_QUERY_TIMEOUT = Duration.ofHours(3); @@ -48,7 +47,6 @@ public final class GoogleBigQuery { org.threeten.bp.Duration.ofHours(3); private static final org.threeten.bp.Duration DEFAULT_BQ_CLIENT_TIMEOUT = org.threeten.bp.Duration.ofMinutes(10); - private final BigQuery bigQuery; private GoogleBigQuery( diff --git a/underlay/src/main/java/bio/terra/tanagra/utils/GoogleCloudStorage.java b/underlay/src/main/java/bio/terra/tanagra/utils/GoogleCloudStorage.java index 124f11c4e..1f65bf7b6 100644 --- a/underlay/src/main/java/bio/terra/tanagra/utils/GoogleCloudStorage.java +++ b/underlay/src/main/java/bio/terra/tanagra/utils/GoogleCloudStorage.java @@ -29,12 +29,10 @@ /** Utility methods for talking to Google Cloud Storage. */ public final class GoogleCloudStorage { private static final Logger LOGGER = LoggerFactory.getLogger(GoogleCloudStorage.class); - // default value for the maximum number of times to retry HTTP requests to GCS public static final int GCS_MAXIMUM_RETRIES = 5; private static final org.threeten.bp.Duration MAX_GCS_CLIENT_TIMEOUT = org.threeten.bp.Duration.ofMinutes(5); - private static final long DEFAULT_SIGNED_URL_DURATION = 30; private static final TimeUnit DEFAULT_SIGNED_URL_UNIT = TimeUnit.MINUTES; private final Storage storage; diff --git a/underlay/src/main/java/bio/terra/tanagra/utils/JacksonMapper.java b/underlay/src/main/java/bio/terra/tanagra/utils/JacksonMapper.java index 4d7fce1e5..82b1bde03 100644 --- a/underlay/src/main/java/bio/terra/tanagra/utils/JacksonMapper.java +++ b/underlay/src/main/java/bio/terra/tanagra/utils/JacksonMapper.java @@ -27,7 +27,6 @@ @SuppressWarnings("deprecation") public final class JacksonMapper { private static final Logger LOGGER = LoggerFactory.getLogger(JacksonMapper.class); - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper().findAndRegisterModules(); private JacksonMapper() {} diff --git a/underlay/src/main/java/bio/terra/tanagra/utils/ProtobufUtils.java b/underlay/src/main/java/bio/terra/tanagra/utils/ProtobufUtils.java index 10a0cf522..2791835a5 100644 --- a/underlay/src/main/java/bio/terra/tanagra/utils/ProtobufUtils.java +++ b/underlay/src/main/java/bio/terra/tanagra/utils/ProtobufUtils.java @@ -7,7 +7,6 @@ import java.util.Base64; public final class ProtobufUtils { - private ProtobufUtils() {} @SuppressWarnings({"checkstyle:EmptyCatchBlock", "PMD.EmptyCatchBlock"}) diff --git a/underlay/src/test/resources/sql/BQHintQueryTest/entityLevelHint.sql b/underlay/src/test/resources/sql/BQHintQueryTest/entityLevelHint.sql index 1c3a8a544..bb7d5430a 100644 --- a/underlay/src/test/resources/sql/BQHintQueryTest/entityLevelHint.sql +++ b/underlay/src/test/resources/sql/BQHintQueryTest/entityLevelHint.sql @@ -2,4 +2,9 @@ SELECT * FROM - ${ELDH_person} + ${ELDH_person} + ORDER BY + attribute_name, + enum_display, + enum_value, + enum_count DESC diff --git a/underlay/src/test/resources/sql/BQHintQueryTest/instanceLevelHint.sql b/underlay/src/test/resources/sql/BQHintQueryTest/instanceLevelHint.sql index d6fdf88d0..703c08968 100644 --- a/underlay/src/test/resources/sql/BQHintQueryTest/instanceLevelHint.sql +++ b/underlay/src/test/resources/sql/BQHintQueryTest/instanceLevelHint.sql @@ -4,4 +4,9 @@ FROM ${ILDH_measurementOccurrence_measurementLoinc} WHERE - entity_id = @relatedEntityId0 + entity_id = @relatedEntityId0 + ORDER BY + attribute_name, + enum_display, + enum_value, + enum_count DESC diff --git a/underlay/src/testFixtures/java/bio/terra/tanagra/testing/GeneratedSqlUtils.java b/underlay/src/testFixtures/java/bio/terra/tanagra/testing/GeneratedSqlUtils.java index 19b467ecb..5e541b5d8 100644 --- a/underlay/src/testFixtures/java/bio/terra/tanagra/testing/GeneratedSqlUtils.java +++ b/underlay/src/testFixtures/java/bio/terra/tanagra/testing/GeneratedSqlUtils.java @@ -22,7 +22,6 @@ */ public final class GeneratedSqlUtils { private static final Logger LOG = LoggerFactory.getLogger(GeneratedSqlUtils.class); - private static final Path GENERATED_SQL_FILES_PARENT_DIR = Path.of(System.getProperty("GRADLE_PROJECT_DIR")).resolve("src/test/resources/");