aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2015-06-11 12:29:08 +0200
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2015-06-15 13:07:53 +0200
commit5ab09f814612b081c31222a2c0ada09673bf96f5 (patch)
tree8de525f689bef36276c57f2e5e877e4e05f56e43
parentc668cdbe735d1a10ca698e6fed237101eb576c14 (diff)
downloadsonarqube-5ab09f814612b081c31222a2c0ada09673bf96f5.tar.gz
sonarqube-5ab09f814612b081c31222a2c0ada09673bf96f5.zip
SONAR-6620 add getId() to Metric interface of the Compute Engine
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/metric/Metric.java5
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricImpl.java10
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricRepositoryImpl.java2
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/measure/BatchMeasureToMeasureTest.java12
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/measure/MeasureDtoToMeasureTest.java12
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricImplTest.java28
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricRepositoryImplTest.java3
7 files changed, 44 insertions, 28 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/metric/Metric.java b/server/sonar-server/src/main/java/org/sonar/server/computation/metric/Metric.java
index e96388d1f29..c9db9ee1a3a 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/metric/Metric.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/metric/Metric.java
@@ -23,6 +23,11 @@ import org.sonar.server.computation.measure.Measure;
public interface Metric {
/**
+ * The metric's id (ie. its database identifier)
+ */
+ int getId();
+
+ /**
* The Metric's key is its domain identifier.
*/
String getKey();
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricImpl.java b/server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricImpl.java
index ea593168e16..417dbfa91f7 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricImpl.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricImpl.java
@@ -28,17 +28,24 @@ import static java.util.Objects.requireNonNull;
@Immutable
public final class MetricImpl implements Metric {
+ private final int id;
private final String key;
private final String name;
private final MetricType type;
- public MetricImpl(String key, String name, MetricType type) {
+ public MetricImpl(int id, String key, String name, MetricType type) {
+ this.id = id;
this.key = requireNonNull(key);
this.name = requireNonNull(name);
this.type = requireNonNull(type);
}
@Override
+ public int getId() {
+ return id;
+ }
+
+ @Override
public String getKey() {
return key;
}
@@ -73,6 +80,7 @@ public final class MetricImpl implements Metric {
@Override
public String toString() {
return com.google.common.base.Objects.toStringHelper(this)
+ .add("id", id)
.add("key", key)
.add("name", name)
.add("type", type)
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricRepositoryImpl.java b/server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricRepositoryImpl.java
index 84f572f7e58..4e04de2b2af 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricRepositoryImpl.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricRepositoryImpl.java
@@ -59,7 +59,7 @@ public class MetricRepositoryImpl implements MetricRepository {
}
private static Metric toMetric(MetricDto metricDto) {
- return new MetricImpl(metricDto.getKey(), metricDto.getShortName(), Metric.MetricType.valueOf(metricDto.getValueType()));
+ return new MetricImpl(metricDto.getId(), metricDto.getKey(), metricDto.getShortName(), Metric.MetricType.valueOf(metricDto.getValueType()));
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/BatchMeasureToMeasureTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/BatchMeasureToMeasureTest.java
index a624a2a0fd9..2b621ccc771 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/BatchMeasureToMeasureTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/BatchMeasureToMeasureTest.java
@@ -34,12 +34,12 @@ import static org.assertj.guava.api.Assertions.assertThat;
@RunWith(DataProviderRunner.class)
public class BatchMeasureToMeasureTest {
- private static final Metric SOME_INT_METRIC = new MetricImpl("key", "name", Metric.MetricType.INT);
- private static final Metric SOME_LONG_METRIC = new MetricImpl("key", "name", Metric.MetricType.WORK_DUR);
- private static final Metric SOME_DOUBLE_METRIC = new MetricImpl("key", "name", Metric.MetricType.FLOAT);
- private static final Metric SOME_STRING_METRIC = new MetricImpl("key", "name", Metric.MetricType.STRING);
- private static final Metric SOME_BOOLEAN_METRIC = new MetricImpl("key", "name", Metric.MetricType.BOOL);
- private static final Metric SOME_LEVEL_METRIC = new MetricImpl("key", "name", Metric.MetricType.LEVEL);
+ private static final Metric SOME_INT_METRIC = new MetricImpl(42, "int", "name", Metric.MetricType.INT);
+ private static final Metric SOME_LONG_METRIC = new MetricImpl(42, "long", "name", Metric.MetricType.WORK_DUR);
+ private static final Metric SOME_DOUBLE_METRIC = new MetricImpl(42, "double", "name", Metric.MetricType.FLOAT);
+ private static final Metric SOME_STRING_METRIC = new MetricImpl(42, "string", "name", Metric.MetricType.STRING);
+ private static final Metric SOME_BOOLEAN_METRIC = new MetricImpl(42, "boolean", "name", Metric.MetricType.BOOL);
+ private static final Metric SOME_LEVEL_METRIC = new MetricImpl(42, "level", "name", Metric.MetricType.LEVEL);
private static final String SOME_DATA = "some_data man!";
private static final String SOME_ALERT_TEXT = "some alert text_be_careFul!";
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 2ca9c841ff9..ef14b1e369e 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
@@ -35,12 +35,12 @@ import static org.assertj.guava.api.Assertions.assertThat;
@RunWith(DataProviderRunner.class)
public class MeasureDtoToMeasureTest {
- private static final Metric SOME_INT_METRIC = new MetricImpl("key", "name", Metric.MetricType.INT);
- private static final Metric SOME_LONG_METRIC = new MetricImpl("key", "name", Metric.MetricType.WORK_DUR);
- private static final Metric SOME_DOUBLE_METRIC = new MetricImpl("key", "name", Metric.MetricType.FLOAT);
- private static final Metric SOME_STRING_METRIC = new MetricImpl("key", "name", Metric.MetricType.STRING);
- private static final Metric SOME_BOOLEAN_METRIC = new MetricImpl("key", "name", Metric.MetricType.BOOL);
- private static final Metric SOME_LEVEL_METRIC = new MetricImpl("key", "name", Metric.MetricType.LEVEL);
+ private static final Metric SOME_INT_METRIC = new MetricImpl(42, "int", "name", Metric.MetricType.INT);
+ private static final Metric SOME_LONG_METRIC = new MetricImpl(42, "long", "name", Metric.MetricType.WORK_DUR);
+ private static final Metric SOME_DOUBLE_METRIC = new MetricImpl(42, "double", "name", Metric.MetricType.FLOAT);
+ private static final Metric SOME_STRING_METRIC = new MetricImpl(42, "string", "name", Metric.MetricType.STRING);
+ private static final Metric SOME_BOOLEAN_METRIC = new MetricImpl(42, "boolean", "name", Metric.MetricType.BOOL);
+ private static final Metric SOME_LEVEL_METRIC = new MetricImpl(42, "level", "name", Metric.MetricType.LEVEL);
private static final String SOME_DATA = "some_data man!";
private static final String SOME_ALERT_TEXT = "some alert text_be_careFul!";
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricImplTest.java
index eeba504f15e..32ca202b96e 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricImplTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricImplTest.java
@@ -25,28 +25,30 @@ import static org.assertj.core.api.Assertions.assertThat;
public class MetricImplTest {
+ private static final int SOME_ID = 42;
private static final String SOME_KEY = "key";
private static final String SOME_NAME = "name";
@Test(expected = NullPointerException.class)
public void constructor_throws_NPE_if_key_arg_is_null() {
- new MetricImpl(null, SOME_NAME, Metric.MetricType.BOOL);
+ new MetricImpl(SOME_ID, null, SOME_NAME, Metric.MetricType.BOOL);
}
@Test(expected = NullPointerException.class)
public void constructor_throws_NPE_if_name_arg_is_null() {
- new MetricImpl(SOME_KEY, null, Metric.MetricType.BOOL);
+ new MetricImpl(SOME_ID, SOME_KEY, null, Metric.MetricType.BOOL);
}
@Test(expected = NullPointerException.class)
public void constructor_throws_NPE_if_valueType_arg_is_null() {
- new MetricImpl(SOME_KEY, SOME_NAME, null);
+ new MetricImpl(SOME_ID, SOME_KEY, SOME_NAME, null);
}
@Test
public void verify_getters() {
- MetricImpl metric = new MetricImpl(SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT);
+ MetricImpl metric = new MetricImpl(SOME_ID, SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT);
+ assertThat(metric.getId()).isEqualTo(SOME_ID);
assertThat(metric.getKey()).isEqualTo(SOME_KEY);
assertThat(metric.getName()).isEqualTo(SOME_NAME);
assertThat(metric.getType()).isEqualTo(Metric.MetricType.FLOAT);
@@ -54,25 +56,25 @@ public class MetricImplTest {
@Test
public void equals_uses_only_key() {
- MetricImpl expected = new MetricImpl(SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT);
+ MetricImpl expected = new MetricImpl(SOME_ID, SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT);
- assertThat(new MetricImpl(SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT)).isEqualTo(expected);
- assertThat(new MetricImpl(SOME_KEY, SOME_NAME, Metric.MetricType.STRING)).isEqualTo(expected);
- assertThat(new MetricImpl("some other key", SOME_NAME, Metric.MetricType.FLOAT)).isNotEqualTo(expected);
+ assertThat(new MetricImpl(SOME_ID, SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT)).isEqualTo(expected);
+ assertThat(new MetricImpl(SOME_ID, SOME_KEY, SOME_NAME, Metric.MetricType.STRING)).isEqualTo(expected);
+ assertThat(new MetricImpl(SOME_ID, "some other key", SOME_NAME, Metric.MetricType.FLOAT)).isNotEqualTo(expected);
}
@Test
public void hashcode_uses_only_key() {
- int expected = new MetricImpl(SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT).hashCode();
+ int expected = new MetricImpl(SOME_ID, SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT).hashCode();
- assertThat(new MetricImpl(SOME_KEY, "some other name", Metric.MetricType.FLOAT).hashCode()).isEqualTo(expected);
- assertThat(new MetricImpl(SOME_KEY, "some other name", Metric.MetricType.BOOL).hashCode()).isEqualTo(expected);
+ assertThat(new MetricImpl(SOME_ID, SOME_KEY, "some other name", Metric.MetricType.FLOAT).hashCode()).isEqualTo(expected);
+ assertThat(new MetricImpl(SOME_ID, SOME_KEY, "some other name", Metric.MetricType.BOOL).hashCode()).isEqualTo(expected);
}
@Test
public void all_fields_are_displayed_in_toString() {
- assertThat(new MetricImpl(SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT).toString())
- .isEqualTo("MetricImpl{key=key, name=name, type=FLOAT}");
+ assertThat(new MetricImpl(SOME_ID, SOME_KEY, SOME_NAME, Metric.MetricType.FLOAT).toString())
+ .isEqualTo("MetricImpl{id=42, key=key, name=name, type=FLOAT}");
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricRepositoryImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricRepositoryImplTest.java
index 813d36c7469..e47c5adc2d4 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricRepositoryImplTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/metric/MetricRepositoryImplTest.java
@@ -80,13 +80,14 @@ public class MetricRepositoryImplTest {
}
private void verify_mapping_and_valueType_conversion_from_DB_impl(String valueType, Metric.MetricType expected) {
- MetricDto metricDto = new MetricDto().setKey(SOME_KEY + valueType).setShortName(SOME_NAME).setValueType(valueType);
+ MetricDto metricDto = new MetricDto().setId(SOME_KEY.hashCode()).setKey(SOME_KEY + valueType).setShortName(SOME_NAME).setValueType(valueType);
dbClient.metricDao().insert(dbSession, metricDto);
dbSession.commit();
Metric metric = underTest.getByKey(metricDto.getKey());
+ assertThat(metric.getId()).isEqualTo(metricDto.getId());
assertThat(metric.getKey()).isEqualTo(metricDto.getKey());
assertThat(metric.getName()).isEqualTo(metricDto.getShortName());
assertThat(metric.getType()).isEqualTo(expected);