diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2015-06-11 12:29:08 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2015-06-15 13:07:53 +0200 |
commit | 5ab09f814612b081c31222a2c0ada09673bf96f5 (patch) | |
tree | 8de525f689bef36276c57f2e5e877e4e05f56e43 | |
parent | c668cdbe735d1a10ca698e6fed237101eb576c14 (diff) | |
download | sonarqube-5ab09f814612b081c31222a2c0ada09673bf96f5.tar.gz sonarqube-5ab09f814612b081c31222a2c0ada09673bf96f5.zip |
SONAR-6620 add getId() to Metric interface of the Compute Engine
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); |