@Test public void accept_empty_query() { ProjectMeasuresQuery result = newProjectMeasuresQuery(emptyList(), emptySet()); assertThat(result.getMetricCriteria()).isEmpty(); }
private static void processMetricCriterion(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); checkValue(criterion); query.addMetricCriterion(createMetricCriterion(criterion, criterion.getKey().toLowerCase(ENGLISH), criterion.getOperator())); }
private static MetricCriterion createMetricCriterion(Criterion criterion, String metricKey, Operator operator) { if (NO_DATA.equalsIgnoreCase(criterion.getValue())) { checkArgument(EQ.equals(operator), "%s can only be used with equals operator", NO_DATA); return MetricCriterion.createNoData(metricKey); } return MetricCriterion.create(metricKey, operator, parseValue(criterion.getValue())); }
private static void processQualityGateStatus(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); checkValue(criterion); Operator operator = criterion.getOperator(); String value = criterion.getValue(); checkArgument(EQ.equals(operator), "Only equals operator is available for quality gate criteria"); Level qualityGate = Arrays.stream(Level.values()).filter(level -> level.name().equalsIgnoreCase(value)).findFirst() .orElseThrow(() -> new IllegalArgumentException(format("Unknown quality gate status : '%s'", value))); query.setQualityGateStatus(qualityGate); }
private static void processQuery(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); Operator operatorValue = criterion.getOperator(); String value = criterion.getValue(); checkArgument(value != null, "Query is invalid"); checkArgument(EQ.equals(operatorValue), "Query should only be used with equals operator"); query.setQueryText(value); }
static ProjectMeasuresQuery newProjectMeasuresQuery(List<Criterion> criteria, @Nullable Set<String> projectUuids) { ProjectMeasuresQuery query = new ProjectMeasuresQuery(); Optional.ofNullable(projectUuids).ifPresent(query::setProjectUuids); criteria.forEach(criterion -> processCriterion(criterion, query)); return query; }
private static void processQualityGateStatus(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); checkValue(criterion); Operator operator = criterion.getOperator(); String value = criterion.getValue(); checkArgument(EQ.equals(operator), "Only equals operator is available for quality gate criteria"); Level qualityGate = Arrays.stream(Level.values()).filter(level -> level.name().equalsIgnoreCase(value)).findFirst() .orElseThrow(() -> new IllegalArgumentException(format("Unknown quality gate status : '%s'", value))); query.setQualityGateStatus(qualityGate); }
private static void processTags(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); Operator operator = criterion.getOperator(); String value = criterion.getValue(); List<String> values = criterion.getValues(); if (value != null && EQ.equals(operator)) { query.setTags(singleton(value)); return; } if (!values.isEmpty() && IN.equals(operator)) { query.setTags(new HashSet<>(values)); return; } throw new IllegalArgumentException("Tags should be set either by using 'tags = java' or 'tags IN (finance, platform)'"); }
static ProjectMeasuresQuery newProjectMeasuresQuery(List<Criterion> criteria, @Nullable Set<String> projectUuids) { ProjectMeasuresQuery query = new ProjectMeasuresQuery(); Optional.ofNullable(projectUuids).ifPresent(query::setProjectUuids); criteria.forEach(criterion -> processCriterion(criterion, query)); return query; }
@Test public void filter_on_projectUuids_if_projectUuid_is_empty_and_criteria_is_empty() { ProjectMeasuresQuery query = newProjectMeasuresQuery(emptyList(), emptySet()); assertThat(query.getProjectUuids()).isPresent(); }
private static void processMetricCriterion(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); checkValue(criterion); query.addMetricCriterion(createMetricCriterion(criterion, criterion.getKey().toLowerCase(ENGLISH), criterion.getOperator())); }
private static void processLanguages(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); Operator operator = criterion.getOperator(); String value = criterion.getValue(); List<String> values = criterion.getValues(); if (value != null && EQ.equals(operator)) { query.setLanguages(singleton(value)); return; } if (!values.isEmpty() && IN.equals(operator)) { query.setLanguages(new HashSet<>(values)); return; } throw new IllegalArgumentException("Languages should be set either by using 'languages = java' or 'languages IN (java, js)'"); }
private static MetricCriterion createMetricCriterion(Criterion criterion, String metricKey, Operator operator) { if (NO_DATA.equalsIgnoreCase(criterion.getValue())) { checkArgument(EQ.equals(operator), "%s can only be used with equals operator", NO_DATA); return MetricCriterion.createNoData(metricKey); } return MetricCriterion.create(metricKey, operator, parseValue(criterion.getValue())); }
@Test public void filter_on_projectUuids_if_projectUuid_is_non_empty_and_criteria_empty() { ProjectMeasuresQuery query = newProjectMeasuresQuery(emptyList(), Collections.singleton("foo")); assertThat(query.getProjectUuids()).isPresent(); }
private static void processQuery(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); Operator operatorValue = criterion.getOperator(); String value = criterion.getValue(); checkArgument(value != null, "Query is invalid"); checkArgument(EQ.equals(operatorValue), "Query should only be used with equals operator"); query.setQueryText(value); }
@Test public void create_query_having_q() { List<Criterion> criteria = singletonList(Criterion.builder().setKey("query").setOperator(EQ).setValue("Sonar Qube").build()); ProjectMeasuresQuery underTest = newProjectMeasuresQuery(criteria, emptySet()); assertThat(underTest.getQueryText().get()).isEqualTo("Sonar Qube"); }
private static void processTags(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); Operator operator = criterion.getOperator(); String value = criterion.getValue(); List<String> values = criterion.getValues(); if (value != null && EQ.equals(operator)) { query.setTags(singleton(value)); return; } if (!values.isEmpty() && IN.equals(operator)) { query.setTags(new HashSet<>(values)); return; } throw new IllegalArgumentException("Tags should be set either by using 'tags = java' or 'tags IN (finance, platform)'"); }
@Test public void create_query_having_q_ignore_case_sensitive() { List<Criterion> criteria = singletonList(Criterion.builder().setKey("query").setOperator(EQ).setValue("Sonar Qube").build()); ProjectMeasuresQuery underTest = newProjectMeasuresQuery(criteria, emptySet()); assertThat(underTest.getQueryText().get()).isEqualTo("Sonar Qube"); }
private static void processLanguages(Criterion criterion, ProjectMeasuresQuery query) { checkOperator(criterion); Operator operator = criterion.getOperator(); String value = criterion.getValue(); List<String> values = criterion.getValues(); if (value != null && EQ.equals(operator)) { query.setLanguages(singleton(value)); return; } if (!values.isEmpty() && IN.equals(operator)) { query.setLanguages(new HashSet<>(values)); return; } throw new IllegalArgumentException("Languages should be set either by using 'languages = java' or 'languages IN (java, js)'"); }
@Test public void create_query_on_quality_gate() { ProjectMeasuresQuery query = newProjectMeasuresQuery(singletonList(Criterion.builder().setKey("alert_status").setOperator(EQ).setValue("OK").build()), emptySet()); assertThat(query.getQualityGateStatus().get().name()).isEqualTo("OK"); }