public void setMeasureValue(CustomMeasureDto measure, String valueAsString, MetricDto metric) { Metric.ValueType metricType = Metric.ValueType.valueOf(metric.getValueType()); switch (metricType) { case BOOL: checkAndSetBooleanMeasureValue(measure, valueAsString); break; case INT: case MILLISEC: checkAndSetIntegerMeasureValue(measure, valueAsString); break; case WORK_DUR: checkAndSetLongMeasureValue(measure, valueAsString); break; case FLOAT: case PERCENT: case RATING: checkAndSetFloatMeasureValue(measure, valueAsString); break; case LEVEL: checkAndSetLevelMeasureValue(measure, valueAsString); break; case STRING: case DATA: case DISTRIB: measure.setTextValue(valueAsString); break; default: throw new IllegalArgumentException("Unsupported metric type:" + metricType.name()); } }
private static Ordering<ComponentDto> metricValueOrdering(ComponentTreeRequest wsRequest, List<MetricDto> metrics, Table<String, MetricDto, ComponentTreeData.Measure> measuresByComponentUuidAndMetric) { if (wsRequest.getMetricSort() == null) { return componentNameOrdering(wsRequest.getAsc()); } Map<String, MetricDto> metricsByKey = Maps.uniqueIndex(metrics, MetricDto::getKey); MetricDto metric = metricsByKey.get(wsRequest.getMetricSort()); boolean isAscending = wsRequest.getAsc(); ValueType metricValueType = ValueType.valueOf(metric.getValueType()); if (NUMERIC_VALUE_TYPES.contains(metricValueType)) { return numericalMetricOrdering(isAscending, metric, measuresByComponentUuidAndMetric); } else if (TEXTUAL_VALUE_TYPES.contains(metricValueType)) { return stringOrdering(isAscending, new ComponentDtoToTextualMeasureValue(metric, measuresByComponentUuidAndMetric)); } else if (ValueType.LEVEL.equals(ValueType.valueOf(metric.getValueType()))) { return levelMetricOrdering(isAscending, metric, measuresByComponentUuidAndMetric); } throw new IllegalStateException("Unrecognized metric value type: " + metric.getValueType()); }
static String measureValueDescription() { StringBuilder description = new StringBuilder("Measure value. Value type depends on metric type:"); description.append("<ul>"); for (Metric.ValueType metricType : Metric.ValueType.values()) { description.append("<li>"); description.append(String.format("%s - %s", metricType.name(), metricTypeWsDescription(metricType))); description.append("</li>"); } description.append("</ul>"); return description.toString(); }
this.userManaged = userManaged; this.origin = Origin.JAV; if (ValueType.PERCENT.equals(this.type)) { this.bestValue = (direction == DIRECTION_BETTER ? 100.0 : 0.0); this.worstValue = (direction == DIRECTION_BETTER ? 0.0 : 100.0);
private String measureValue(CustomMeasureDto measure, MetricDto metric) { Metric.ValueType metricType = Metric.ValueType.valueOf(metric.getValueType()); Double doubleValue = measure.getValue(); String stringValue = measure.getTextValue(); switch (metricType) { case BOOL: return doubleValue == 1.0d ? "true" : "false"; case INT: case MILLISEC: return String.valueOf(doubleValue.intValue()); case WORK_DUR: return String.valueOf(doubleValue.longValue()); case FLOAT: case PERCENT: case RATING: return String.valueOf(doubleValue); case LEVEL: case STRING: case DATA: case DISTRIB: return stringValue; default: throw new IllegalArgumentException("Unsupported metric type: " + metricType.name()); } }
static String formatNumericalValue(double value, MetricDto metric) { Metric.ValueType metricType = Metric.ValueType.valueOf(metric.getValueType()); switch (metricType) { case BOOL: return formatBoolean(value); case INT: return formatInteger(value); case MILLISEC: case WORK_DUR: return formatLong(value); case FLOAT: case PERCENT: case RATING: return String.valueOf(value); case LEVEL: case STRING: case DATA: case DISTRIB: default: throw new IllegalArgumentException(String.format("Unsupported metric type '%s' for numerical value", metricType.name())); } }
static String formatMeasureValue(double doubleValue, @Nullable String stringValue, MetricDto metric) { Metric.ValueType metricType = Metric.ValueType.valueOf(metric.getValueType()); switch (metricType) { case BOOL: return formatBoolean(doubleValue); case INT: return formatInteger(doubleValue); case MILLISEC: case WORK_DUR: return formatLong(doubleValue); case FLOAT: case PERCENT: case RATING: return String.valueOf(doubleValue); case LEVEL: case STRING: case DATA: case DISTRIB: return stringValue; default: throw new IllegalArgumentException("Unsupported metric type: " + metricType.name()); } }
private void loadFromPaginatedWs(List<Metric> metrics) throws IOException { int page = 1; WsMetricsResponse response; do { GetRequest getRequest = new GetRequest(METRICS_SEARCH_URL + page); try (Reader reader = wsClient.call(getRequest).contentReader()) { response = GsonHelper.create().fromJson(reader, WsMetricsResponse.class); for (WsMetric metric : response.metrics) { metrics.add(new Metric.Builder(metric.getKey(), metric.getName(), ValueType.valueOf(metric.getType())) .create() .setDirection(metric.getDirection()) .setQualitative(metric.isQualitative()) .setUserManaged(metric.isCustom()) .setDescription(metric.getDescription()) .setId(metric.getId())); } } page++; } while (response.getP() < (response.getTotal() / response.getPs() + 1)); }
@Override public Metric apply(@Nonnull MetricDto dto) { Metric<Serializable> metric = new Metric<>(); metric.setId(dto.getId()); metric.setKey(dto.getKey()); metric.setDescription(dto.getDescription()); metric.setName(dto.getShortName()); metric.setBestValue(dto.getBestValue()); metric.setDomain(dto.getDomain()); metric.setEnabled(dto.isEnabled()); metric.setDirection(dto.getDirection()); metric.setHidden(dto.isHidden()); metric.setQualitative(dto.isQualitative()); metric.setType(Metric.ValueType.valueOf(dto.getValueType())); metric.setOptimizedBestValue(dto.isOptimizedBestValue()); metric.setUserManaged(dto.isUserManaged()); metric.setWorstValue(dto.getWorstValue()); return metric; } }
private static Comparable getValueForComparison(Metric metric, String value) { Comparable valueToCompare = null; try { if (isADouble(metric)) { valueToCompare = Double.parseDouble(value); } else if (isAInteger(metric)) { valueToCompare = parseInteger(value); } else if (isAString(metric)) { valueToCompare = value; } else if (isABoolean(metric)) { valueToCompare = Integer.parseInt(value); } else if (isAWorkDuration(metric)) { valueToCompare = Long.parseLong(value); } else { throw new NotImplementedException(metric.getType().toString()); } } catch (NumberFormatException badValueFormat) { throw new IllegalArgumentException(String.format("Quality Gate: Unable to parse value '%s' to compare against %s", value, metric.getName())); } return valueToCompare; }
private static MetricDto newMetricTemplate(Request request) { String key = checkMetricKeyFormat(request.mandatoryParam(PARAM_KEY)); String name = request.mandatoryParam(PARAM_NAME); String type = Metric.ValueType.valueOf(request.mandatoryParam(PARAM_TYPE)).name(); String domain = request.param(PARAM_DOMAIN); String description = request.param(PARAM_DESCRIPTION); MetricDto metricTemplate = new MetricDto() .setKey(key) .setShortName(name) .setValueType(type); if (domain != null) { metricTemplate.setDomain(domain); } if (description != null) { metricTemplate.setDescription(description); } return metricTemplate; }
private String generateSvg(MetricDto metric, LiveMeasureDto measure) { String metricType = metric.getValueType(); switch (ValueType.valueOf(metricType)) { case INT: return generateBadge(metric, formatNumeric(getNonNullValue(measure, LiveMeasureDto::getValue).longValue()), Color.DEFAULT); case PERCENT: return generateBadge(metric, formatPercent(getNonNullValue(measure, LiveMeasureDto::getValue)), Color.DEFAULT); case LEVEL: return generateQualityGate(metric, measure); case WORK_DUR: return generateBadge(metric, formatDuration(getNonNullValue(measure, LiveMeasureDto::getValue).longValue()), Color.DEFAULT); case RATING: return generateRating(metric, measure); default: throw new IllegalStateException(format("Invalid metric type '%s'", metricType)); } }
private static Ordering<ComponentDto> metricValueOrdering(ComponentTreeRequest wsRequest, List<MetricDto> metrics, Table<String, MetricDto, ComponentTreeData.Measure> measuresByComponentUuidAndMetric) { if (wsRequest.getMetricSort() == null) { return componentNameOrdering(wsRequest.getAsc()); } Map<String, MetricDto> metricsByKey = Maps.uniqueIndex(metrics, MetricDto::getKey); MetricDto metric = metricsByKey.get(wsRequest.getMetricSort()); boolean isAscending = wsRequest.getAsc(); ValueType metricValueType = ValueType.valueOf(metric.getValueType()); if (NUMERIC_VALUE_TYPES.contains(metricValueType)) { return numericalMetricOrdering(isAscending, metric, measuresByComponentUuidAndMetric); } else if (TEXTUAL_VALUE_TYPES.contains(metricValueType)) { return stringOrdering(isAscending, new ComponentDtoToTextualMeasureValue(metric, measuresByComponentUuidAndMetric)); } else if (ValueType.LEVEL.equals(ValueType.valueOf(metric.getValueType()))) { return levelMetricOrdering(isAscending, metric, measuresByComponentUuidAndMetric); } throw new IllegalStateException("Unrecognized metric value type: " + metric.getValueType()); }
private static Comparable getMeasureValue(ResolvedCondition condition, Measure measure) { Metric metric = condition.metric(); if (isADouble(metric)) { return getValue(condition, measure); } if (isAInteger(metric)) { return parseInteger(condition, measure); } if (isAWorkDuration(metric)) { return parseLong(condition, measure); } if (condition.period() == null) { return getMeasureValueForStringOrBoolean(metric, measure); } throw new NotImplementedException(metric.getType().toString()); }
public DeprecatedMetricFinder(GlobalRepositories globalReferentials) { for (org.sonar.batch.protocol.input.Metric metric : globalReferentials.metrics()) { Metric hibernateMetric = new org.sonar.api.measures.Metric.Builder(metric.key(), metric.name(), ValueType.valueOf(metric.valueType())) .create() .setDirection(metric.direction()) .setQualitative(metric.isQualitative()) .setUserManaged(metric.isUserManaged()) .setDescription(metric.description()) .setOptimizedBestValue(metric.isOptimizedBestValue()) .setBestValue(metric.bestValue()) .setWorstValue(metric.worstValue()) .setId(metric.id()); metricsByKey.put(metric.key(), hibernateMetric); metricsById.put(metric.id(), new org.sonar.api.measures.Metric.Builder(metric.key(), metric.key(), ValueType.valueOf(metric.valueType())).create().setId(metric.id())); } }
public DeprecatedMetricFinder(GlobalRepositories globalReferentials) { for (org.sonar.batch.protocol.input.Metric metric : globalReferentials.metrics()) { Metric hibernateMetric = new org.sonar.api.measures.Metric.Builder(metric.key(), metric.name(), ValueType.valueOf(metric.valueType())) .create() .setDirection(metric.direction()) .setQualitative(metric.isQualitative()) .setUserManaged(metric.isUserManaged()) .setDescription(metric.description()) .setOptimizedBestValue(metric.isOptimizedBestValue()) .setBestValue(metric.bestValue()) .setWorstValue(metric.worstValue()) .setId(metric.id()); metricsByKey.put(metric.key(), hibernateMetric); metricsById.put(metric.id(), new org.sonar.api.measures.Metric.Builder(metric.key(), metric.key(), ValueType.valueOf(metric.valueType())).create().setId(metric.id())); } }
@Override public void handle(Request request, Response response) throws Exception { JsonWriter json = response.newJsonWriter(); json.beginObject(); json.name("types"); json.beginArray(); for (Metric.ValueType metricType : Metric.ValueType.values()) { json.value(metricType.name()); } json.endArray(); json.endObject(); json.close(); } }
/** * Creates a new metric definition based on the properties set on this metric builder. * * @return a new {@link Metric} object */ public <G extends Serializable> Metric<G> create() { if (ValueType.PERCENT.equals(this.type)) { this.bestValue = (direction == DIRECTION_BETTER ? 100.0 : 0.0); this.worstValue = (direction == DIRECTION_BETTER ? 0.0 : 100.0); } return new Metric<G>(this); } }