aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2015-09-03 17:46:25 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2015-09-07 17:55:47 +0200
commite08d53bde12c408225e4ac5a3702856a98d8af1e (patch)
treee4d1ebaa46d29024064a79a52487f0a1fbca0b03
parent1432899bc3337f3a5f4fbd3e93b867ad5b45481b (diff)
downloadsonarqube-e08d53bde12c408225e4ac5a3702856a98d8af1e.tar.gz
sonarqube-e08d53bde12c408225e4ac5a3702856a98d8af1e.zip
SONAR-6827 MeasureDtoToMeasure supports rule and characteristic measures
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/measure/Measure.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureDtoToMeasure.java18
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureRepositoryImpl.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/measure/MeasureDtoToMeasureTest.java30
4 files changed, 42 insertions, 14 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/Measure.java b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/Measure.java
index 6593c77ef2e..3ec8f67d875 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/Measure.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/Measure.java
@@ -132,7 +132,7 @@ public final class Measure {
/**
* Sets the rule this measure is associated to.
*
- * @throws UnsupportedOperationException if the characteristicId as already been set
+ * @throws UnsupportedOperationException if the characteristicId has already been set
*
* @see #forCharacteristic(int)
*/
@@ -147,7 +147,7 @@ public final class Measure {
/**
* Sets the characteristic this measure is associated to.
*
- * @throws UnsupportedOperationException if the ruleId as already been set
+ * @throws UnsupportedOperationException if the ruleId has already been set
*
* @see #forCharacteristic(int)
*/
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureDtoToMeasure.java b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureDtoToMeasure.java
index b09d14430b4..15806f274f4 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureDtoToMeasure.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureDtoToMeasure.java
@@ -32,12 +32,18 @@ import static org.sonar.server.computation.measure.Measure.Level.toLevel;
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();
@@ -121,6 +127,14 @@ public class MeasureDtoToMeasure {
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;
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureRepositoryImpl.java b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureRepositoryImpl.java
index 640fc5f6de2..d1ccc9f24c6 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureRepositoryImpl.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/measure/MeasureRepositoryImpl.java
@@ -48,7 +48,7 @@ public class MeasureRepositoryImpl implements MeasureRepository {
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) {
@@ -67,7 +67,7 @@ public class MeasureRepositoryImpl implements MeasureRepository {
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);
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/MeasureDtoToMeasureTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/MeasureDtoToMeasureTest.java
index d5f6ffca746..db1e9a87792 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/MeasureDtoToMeasureTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/MeasureDtoToMeasureTest.java
@@ -58,6 +58,20 @@ public class MeasureDtoToMeasureTest {
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);
@@ -303,12 +317,12 @@ public class MeasureDtoToMeasureTest {
@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}
};
}
@@ -331,8 +345,8 @@ public class MeasureDtoToMeasureTest {
@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);