aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2016-01-14 18:48:30 +0100
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2016-01-14 18:53:45 +0100
commite385f53491d6bfdcf4f3a44656a93b17dc5e3096 (patch)
treef0139dd9c8f0630a6c2d87b6c92b91c38332639c
parentdbfc8cfb5b9bba4683959e68743957b06db1e399 (diff)
downloadsonarqube-e385f53491d6bfdcf4f3a44656a93b17dc5e3096.tar.gz
sonarqube-e385f53491d6bfdcf4f3a44656a93b17dc5e3096.zip
SONAR-7135 WS api/measures/component_tree baseComponent has measures
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeDataLoader.java12
-rw-r--r--server/sonar-server/src/main/resources/org/sonar/server/measure/ws/component_tree-example.json19
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java15
4 files changed, 42 insertions, 10 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeAction.java b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeAction.java
index e13cc234ffc..77d88aca131 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeAction.java
@@ -173,7 +173,11 @@ public class ComponentTreeAction implements MeasuresWsAction {
.setTotal(paging.total())
.build();
- response.setBaseComponent(componentDtoToWsComponent(data.getBaseComponent()));
+ response.setBaseComponent(
+ componentDtoToWsComponent(
+ data.getBaseComponent(),
+ data.getMeasuresByComponentUuidAndMetric().row(data.getBaseComponent().uuid()),
+ data.getReferenceComponentUuidsById()));
for (ComponentDto componentDto : data.getComponents()) {
response.addComponents(componentDtoToWsComponent(
diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeDataLoader.java b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeDataLoader.java
index 176db2a75b9..e05441ac0ab 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeDataLoader.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeDataLoader.java
@@ -106,7 +106,8 @@ public class ComponentTreeDataLoader {
int componentCount = componentDtosAndTotal.total;
List<MetricDto> metrics = searchMetrics(dbSession, wsRequest);
List<WsMeasures.Period> periods = periodsFromSnapshot(baseSnapshot);
- Table<String, MetricDto, MeasureDto> measuresByComponentUuidAndMetric = searchMeasuresByComponentUuidAndMetric(dbSession, components, metrics, periods);
+ Table<String, MetricDto, MeasureDto> measuresByComponentUuidAndMetric = searchMeasuresByComponentUuidAndMetric(dbSession, baseComponent, baseSnapshot, components, metrics,
+ periods);
components = sortComponents(components, wsRequest, metrics, measuresByComponentUuidAndMetric);
components = paginateComponents(components, componentCount, wsRequest);
@@ -174,9 +175,14 @@ public class ComponentTreeDataLoader {
return metrics;
}
- private Table<String, MetricDto, MeasureDto> searchMeasuresByComponentUuidAndMetric(DbSession dbSession, List<ComponentDtoWithSnapshotId> components, List<MetricDto> metrics,
+ private Table<String, MetricDto, MeasureDto> searchMeasuresByComponentUuidAndMetric(DbSession dbSession, ComponentDto baseComponent, SnapshotDto baseSnapshot,
+ List<ComponentDtoWithSnapshotId> components, List<MetricDto> metrics,
List<WsMeasures.Period> periods) {
- Map<Long, ComponentDtoWithSnapshotId> componentsBySnapshotId = Maps.uniqueIndex(components, ComponentDtoWithSnapshotIdToSnapshotIdFunction.INSTANCE);
+ Map<Long, ComponentDto> componentsBySnapshotId = new HashMap<>();
+ componentsBySnapshotId.put(baseSnapshot.getId(), baseComponent);
+ for (ComponentDtoWithSnapshotId component : components) {
+ componentsBySnapshotId.put(component.getSnapshotId(), component);
+ }
Map<Integer, MetricDto> metricsById = Maps.uniqueIndex(metrics, MetricDtoFunctions.toId());
List<MeasureDto> measureDtos = dbClient.measureDao().selectBySnapshotIdsAndMetricIds(dbSession,
diff --git a/server/sonar-server/src/main/resources/org/sonar/server/measure/ws/component_tree-example.json b/server/sonar-server/src/main/resources/org/sonar/server/measure/ws/component_tree-example.json
index 1db85e0e61d..46d75e0884a 100644
--- a/server/sonar-server/src/main/resources/org/sonar/server/measure/ws/component_tree-example.json
+++ b/server/sonar-server/src/main/resources/org/sonar/server/measure/ws/component_tree-example.json
@@ -8,7 +8,23 @@
"id": "project-id",
"key": "MY_PROJECT",
"name": "My Project",
- "qualifier": "TRK"
+ "qualifier": "TRK",
+ "measures": [
+ {
+ "metric": "new_violations",
+ "variationValueP1": "255",
+ "variationValueP2": "0",
+ "variationValueP3": "255"
+ },
+ {
+ "metric": "ncloc",
+ "value": "1984"
+ },
+ {
+ "metric": "complexity",
+ "value": "42"
+ }
+ ]
},
"components": [
{
@@ -43,7 +59,6 @@
"measures": [
{
"metric": "new_violations",
- "value": "0",
"variationValueP1": "0",
"variationValueP2": "0",
"variationValueP3": "0"
diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java
index a89f3e8a78b..e0ebbe0740b 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java
@@ -405,7 +405,9 @@ public class ComponentTreeActionTest {
.setValue(12.0d),
newMeasureDto(complexity, directorySnapshot.getId())
.setValue(35.0d)
- .setVariation(2, 0.0d));
+ .setVariation(2, 0.0d),
+ newMeasureDto(complexity, projectSnapshot.getId())
+ .setValue(42.0d));
MetricDto ncloc = insertNclocMetric();
dbClient.measureDao().insert(dbSession,
@@ -413,7 +415,9 @@ public class ComponentTreeActionTest {
.setValue(114.0d),
newMeasureDto(ncloc, directorySnapshot.getId())
.setValue(217.0d)
- .setVariation(2, 0.0d));
+ .setVariation(2, 0.0d),
+ newMeasureDto(ncloc, projectSnapshot.getId())
+ .setValue(1984.0d));
MetricDto newViolations = insertNewViolationsMetric();
dbClient.measureDao().insert(dbSession,
@@ -422,14 +426,17 @@ public class ComponentTreeActionTest {
.setVariation(2, 0.0d)
.setVariation(3, 25.0d),
newMeasureDto(newViolations, file2Snapshot.getId())
- .setValue(0.0d)
.setVariation(1, 0.0d)
.setVariation(2, 0.0d)
.setVariation(3, 0.0d),
newMeasureDto(newViolations, directorySnapshot.getId())
.setVariation(1, 25.0d)
.setVariation(2, 0.0d)
- .setVariation(3, 25.0d));
+ .setVariation(3, 25.0d),
+ newMeasureDto(newViolations, projectSnapshot.getId())
+ .setVariation(1, 255.0d)
+ .setVariation(2, 0.0d)
+ .setVariation(3, 255.0d));
db.commit();
}