Skip to content

Commit

Permalink
SONAR-7135 WS api/measures/component_tree refKey in the response
Browse files Browse the repository at this point in the history
  • Loading branch information
teryk committed Jan 20, 2016
1 parent 49632b1 commit ec96c3e
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 18 deletions.
Expand Up @@ -33,11 +33,13 @@ private ComponentDtoToWsComponent() {
} }


static WsMeasures.Component.Builder componentDtoToWsComponent(ComponentDto component, Map<MetricDto, MeasureDto> measuresByMetric, static WsMeasures.Component.Builder componentDtoToWsComponent(ComponentDto component, Map<MetricDto, MeasureDto> measuresByMetric,
Map<Long, String> referenceComponentUuidsById) { Map<Long, ComponentDto> referenceComponentsById) {
WsMeasures.Component.Builder wsComponent = componentDtoToWsComponent(component); WsMeasures.Component.Builder wsComponent = componentDtoToWsComponent(component);


if (!referenceComponentUuidsById.isEmpty() && referenceComponentUuidsById.get(component.getCopyResourceId()) != null) { ComponentDto referenceComponent = referenceComponentsById.get(component.getCopyResourceId());
wsComponent.setRefId(referenceComponentUuidsById.get(component.getCopyResourceId())); if (!referenceComponentsById.isEmpty() && referenceComponent != null) {
wsComponent.setRefId(referenceComponent.uuid());
wsComponent.setRefKey(referenceComponent.key());
} }


for (Map.Entry<MetricDto, MeasureDto> entry : measuresByMetric.entrySet()) { for (Map.Entry<MetricDto, MeasureDto> entry : measuresByMetric.entrySet()) {
Expand Down
Expand Up @@ -194,13 +194,13 @@ private static ComponentTreeWsResponse buildResponse(ComponentTreeWsRequest requ
componentDtoToWsComponent( componentDtoToWsComponent(
data.getBaseComponent(), data.getBaseComponent(),
data.getMeasuresByComponentUuidAndMetric().row(data.getBaseComponent().uuid()), data.getMeasuresByComponentUuidAndMetric().row(data.getBaseComponent().uuid()),
data.getReferenceComponentUuidsById())); data.getReferenceComponentsById()));


for (ComponentDto componentDto : data.getComponents()) { for (ComponentDto componentDto : data.getComponents()) {
response.addComponents(componentDtoToWsComponent( response.addComponents(componentDtoToWsComponent(
componentDto, componentDto,
data.getMeasuresByComponentUuidAndMetric().row(componentDto.uuid()), data.getMeasuresByComponentUuidAndMetric().row(componentDto.uuid()),
data.getReferenceComponentUuidsById())); data.getReferenceComponentsById()));
} }


if (areMetricsInResponse(request)) { if (areMetricsInResponse(request)) {
Expand Down
Expand Up @@ -35,7 +35,7 @@ class ComponentTreeData {
private final ComponentDto baseComponent; private final ComponentDto baseComponent;
private final List<ComponentDtoWithSnapshotId> components; private final List<ComponentDtoWithSnapshotId> components;
private final int componentCount; private final int componentCount;
private final Map<Long, String> referenceComponentUuidsById; private final Map<Long, ComponentDto> referenceComponentsById;
private final List<MetricDto> metrics; private final List<MetricDto> metrics;
private final List<WsMeasures.Period> periods; private final List<WsMeasures.Period> periods;
private final Table<String, MetricDto, MeasureDto> measuresByComponentUuidAndMetric; private final Table<String, MetricDto, MeasureDto> measuresByComponentUuidAndMetric;
Expand All @@ -44,7 +44,7 @@ private ComponentTreeData(Builder builder) {
this.baseComponent = builder.baseComponent; this.baseComponent = builder.baseComponent;
this.components = builder.componentsFromDb; this.components = builder.componentsFromDb;
this.componentCount = builder.componentCount; this.componentCount = builder.componentCount;
this.referenceComponentUuidsById = builder.referenceComponentUuidsById; this.referenceComponentsById = builder.referenceComponentsById;
this.metrics = builder.metrics; this.metrics = builder.metrics;
this.measuresByComponentUuidAndMetric = builder.measuresByComponentUuidAndMetric; this.measuresByComponentUuidAndMetric = builder.measuresByComponentUuidAndMetric;
this.periods = builder.periods; this.periods = builder.periods;
Expand All @@ -65,8 +65,8 @@ int getComponentCount() {
} }


@CheckForNull @CheckForNull
public Map<Long, String> getReferenceComponentUuidsById() { public Map<Long, ComponentDto> getReferenceComponentsById() {
return referenceComponentUuidsById; return referenceComponentsById;
} }


@CheckForNull @CheckForNull
Expand All @@ -91,7 +91,7 @@ static Builder builder() {
static class Builder { static class Builder {
private ComponentDto baseComponent; private ComponentDto baseComponent;
private List<ComponentDtoWithSnapshotId> componentsFromDb; private List<ComponentDtoWithSnapshotId> componentsFromDb;
private Map<Long, String> referenceComponentUuidsById; private Map<Long, ComponentDto> referenceComponentsById;
private int componentCount; private int componentCount;
private List<MetricDto> metrics; private List<MetricDto> metrics;
private List<WsMeasures.Period> periods; private List<WsMeasures.Period> periods;
Expand Down Expand Up @@ -131,8 +131,8 @@ public Builder setMeasuresByComponentUuidAndMetric(Table<String, MetricDto, Meas
return this; return this;
} }


public Builder setReferenceComponentUuidsById(Map<Long, String> referenceComponentsById) { public Builder setReferenceComponentsById(Map<Long, ComponentDto> referenceComponentsById) {
this.referenceComponentUuidsById = referenceComponentsById; this.referenceComponentsById = referenceComponentsById;
return this; return this;
} }


Expand Down
Expand Up @@ -111,7 +111,7 @@ ComponentTreeData load(ComponentTreeWsRequest wsRequest) {


components = sortComponents(components, wsRequest, metrics, measuresByComponentUuidAndMetric); components = sortComponents(components, wsRequest, metrics, measuresByComponentUuidAndMetric);
components = paginateComponents(components, componentCount, wsRequest); components = paginateComponents(components, componentCount, wsRequest);
Map<Long, String> referenceComponentUuidsById = searchReferenceComponentUuidsById(dbSession, components); Map<Long, ComponentDto> referenceComponentsById = searchReferenceComponentsById(dbSession, components);


return ComponentTreeData.builder() return ComponentTreeData.builder()
.setBaseComponent(baseComponent) .setBaseComponent(baseComponent)
Expand All @@ -120,14 +120,14 @@ ComponentTreeData load(ComponentTreeWsRequest wsRequest) {
.setMeasuresByComponentUuidAndMetric(measuresByComponentUuidAndMetric) .setMeasuresByComponentUuidAndMetric(measuresByComponentUuidAndMetric)
.setMetrics(metrics) .setMetrics(metrics)
.setPeriods(periods) .setPeriods(periods)
.setReferenceComponentUuidsById(referenceComponentUuidsById) .setReferenceComponentsById(referenceComponentsById)
.build(); .build();
} finally { } finally {
dbClient.closeSession(dbSession); dbClient.closeSession(dbSession);
} }
} }


private Map<Long, String> searchReferenceComponentUuidsById(DbSession dbSession, List<ComponentDtoWithSnapshotId> components) { private Map<Long, ComponentDto> searchReferenceComponentsById(DbSession dbSession, List<ComponentDtoWithSnapshotId> components) {
List<Long> referenceComponentIds = from(components) List<Long> referenceComponentIds = from(components)
.transform(ComponentDtoWithSnapshotIdToCopyResourceIdFunction.INSTANCE) .transform(ComponentDtoWithSnapshotIdToCopyResourceIdFunction.INSTANCE)
.filter(Predicates.<Long>notNull()) .filter(Predicates.<Long>notNull())
Expand All @@ -137,9 +137,9 @@ private Map<Long, String> searchReferenceComponentUuidsById(DbSession dbSession,
} }


List<ComponentDto> referenceComponents = dbClient.componentDao().selectByIds(dbSession, referenceComponentIds); List<ComponentDto> referenceComponents = dbClient.componentDao().selectByIds(dbSession, referenceComponentIds);
Map<Long, String> referenceComponentUuidsById = new HashMap<>(); Map<Long, ComponentDto> referenceComponentUuidsById = new HashMap<>();
for (ComponentDto referenceComponent : referenceComponents) { for (ComponentDto referenceComponent : referenceComponents) {
referenceComponentUuidsById.put(referenceComponent.getId(), referenceComponent.uuid()); referenceComponentUuidsById.put(referenceComponent.getId(), referenceComponent);
} }


return referenceComponentUuidsById; return referenceComponentUuidsById;
Expand Down
Expand Up @@ -270,7 +270,7 @@ public void sort_by_metric_key() {
@Test @Test
public void load_developer_descendants() { public void load_developer_descendants() {
ComponentDto developer = newDeveloper("developer").setUuid("developer-uuid"); ComponentDto developer = newDeveloper("developer").setUuid("developer-uuid");
ComponentDto project = newProjectDto("project-uuid"); ComponentDto project = newProjectDto("project-uuid").setKey("project-key");
SnapshotDto developerSnapshot = componentDb.insertDeveloperAndSnapshot(developer); SnapshotDto developerSnapshot = componentDb.insertDeveloperAndSnapshot(developer);
componentDb.insertProjectAndSnapshot(project); componentDb.insertProjectAndSnapshot(project);
componentDb.insertComponentAndSnapshot(newDevProjectCopy("project-uuid-copy", project, developer), developerSnapshot); componentDb.insertComponentAndSnapshot(newDevProjectCopy("project-uuid-copy", project, developer), developerSnapshot);
Expand All @@ -284,6 +284,7 @@ public void load_developer_descendants() {
WsMeasures.Component projectCopy = response.getComponents(0); WsMeasures.Component projectCopy = response.getComponents(0);
assertThat(projectCopy.getId()).isEqualTo("project-uuid-copy"); assertThat(projectCopy.getId()).isEqualTo("project-uuid-copy");
assertThat(projectCopy.getRefId()).isEqualTo("project-uuid"); assertThat(projectCopy.getRefId()).isEqualTo("project-uuid");
assertThat(projectCopy.getRefKey()).isEqualTo("project-key");
} }


@Test @Test
Expand Down

0 comments on commit ec96c3e

Please sign in to comment.