public class MeasureDtoToMeasure {
public Optional<Measure> toMeasure(@Nullable MeasureDto measureDto, Metric metric) {
+ return toMeasure(measureDto, metric, false);
+ }
+
+ public Optional<Measure> toMeasure(@Nullable MeasureDto measureDto, Metric metric, boolean acceptRuleAndCharacteristicMeasure){
requireNonNull(metric);
if (measureDto == null) {
return Optional.absent();
}
- checkArgument(measureDto.getCharacteristicId() == null, "Measures with characteristicId are not supported");
- checkArgument(measureDto.getRuleId() == null, "Measures with ruleId are not supported");
+ if (!acceptRuleAndCharacteristicMeasure) {
+ checkArgument(measureDto.getCharacteristicId() == null, "Measures with characteristicId are not supported");
+ checkArgument(measureDto.getRuleId() == null, "Measures with ruleId are not supported");
+ }
Double value = measureDto.getValue();
String data = measureDto.getData();
if (hasAnyVariation(measureDto)) {
builder.setVariations(createVariations(measureDto));
}
+ Integer ruleId = measureDto.getRuleId();
+ if (ruleId != null) {
+ builder.forRule(ruleId);
+ }
+ Integer characteristicId = measureDto.getCharacteristicId();
+ if (characteristicId != null) {
+ builder.forCharacteristic(characteristicId);
+ }
return builder;
}
private final MetricRepository metricRepository;
private final ReportMetricValidator reportMetricValidator;
- private final MeasureDtoToMeasure measureDtoToMeasure = new MeasureDtoToMeasure();
+ private MeasureDtoToMeasure underTest = new MeasureDtoToMeasure();
private final Set<Integer> loadedComponents = new HashSet<>();
public MeasureRepositoryImpl(DbClient dbClient, BatchReportReader reportReader, MetricRepository metricRepository, ReportMetricValidator reportMetricValidator) {
try (DbSession dbSession = dbClient.openSession(false)) {
MeasureDto measureDto = dbClient.measureDao().selectByComponentKeyAndMetricKey(dbSession, component.getKey(), metric.getKey());
- return measureDtoToMeasure.toMeasure(measureDto, metric);
+ return underTest.toMeasure(measureDto, metric);
}
}
assertThat(underTest.toMeasure(null, SOME_INT_METRIC)).isAbsent();
}
+ @Test
+ public void toMeasure_returns_rule_measure() {
+ Optional<Measure> measure = underTest.toMeasure(new MeasureDto().setRuleId(10), SOME_INT_METRIC, true);
+ assertThat(measure).isPresent();
+ assertThat(measure.get().getRuleId()).isEqualTo(10);
+ }
+
+ @Test
+ public void toMeasure_returns_characteristic_measure() {
+ Optional<Measure> measure = underTest.toMeasure(new MeasureDto().setCharacteristicId(30), SOME_INT_METRIC, true);
+ assertThat(measure).isPresent();
+ assertThat(measure.get().getCharacteristicId()).isEqualTo(30);
+ }
+
@Test(expected = NullPointerException.class)
public void toMeasure_throws_NPE_if_metric_argument_is_null() {
underTest.toMeasure(EMPTY_MEASURE_DTO, null);
@DataProvider
public static Object[][] all_types_MeasureDtos() {
return new Object[][] {
- {new MeasureDto().setValue(1d), SOME_BOOLEAN_METRIC},
- {new MeasureDto().setValue(1d), SOME_INT_METRIC},
- {new MeasureDto().setValue(1d), SOME_LONG_METRIC},
- {new MeasureDto().setValue(1d), SOME_DOUBLE_METRIC},
- {new MeasureDto().setData("1"), SOME_STRING_METRIC},
- {new MeasureDto().setData(Measure.Level.OK.name()), SOME_LEVEL_METRIC}
+ {new MeasureDto().setValue(1d), SOME_BOOLEAN_METRIC},
+ {new MeasureDto().setValue(1d), SOME_INT_METRIC},
+ {new MeasureDto().setValue(1d), SOME_LONG_METRIC},
+ {new MeasureDto().setValue(1d), SOME_DOUBLE_METRIC},
+ {new MeasureDto().setData("1"), SOME_STRING_METRIC},
+ {new MeasureDto().setData(Measure.Level.OK.name()), SOME_LEVEL_METRIC}
};
}
@Test
public void toMeasure_creates_MeasureVariation_and_maps_the_right_one() {
MeasureDto measureDto = new MeasureDto()
- .setData("1")
- .setVariation(2, 2d).setVariation(3, 3d).setVariation(5, 5d);
+ .setData("1")
+ .setVariation(2, 2d).setVariation(3, 3d).setVariation(5, 5d);
Optional<Measure> measure = underTest.toMeasure(measureDto, SOME_STRING_METRIC);