private Table<String, MetricDto, MeasureDto> searchMeasuresByComponentUuidAndMetric( DbSession dbSession, ComponentDto baseComponent, List<ComponentDto> components, List<MetricDto> metrics, List<WsMeasures.Period> periods, @Nullable Long developerId) { List<String> componentUuids = new ArrayList<>(); componentUuids.add(baseComponent.uuid()); components.stream().forEach(c -> componentUuids.add(c.uuid())); Map<Integer, MetricDto> metricsById = Maps.uniqueIndex(metrics, MetricDtoFunctions.toId()); MeasureQuery measureQuery = MeasureQuery.builder() .setPersonId(developerId) .setComponentUuids(componentUuids) .setMetricIds(metricsById.keySet()) .build(); List<MeasureDto> measureDtos = dbClient.measureDao().selectByQuery(dbSession, measureQuery); Table<String, MetricDto, MeasureDto> measuresByComponentUuidAndMetric = HashBasedTable.create(components.size(), metrics.size()); for (MeasureDto measureDto : measureDtos) { measuresByComponentUuidAndMetric.put( measureDto.getComponentUuid(), metricsById.get(measureDto.getMetricId()), measureDto); } addBestValuesToMeasures(measuresByComponentUuidAndMetric, components, metrics, periods); return measuresByComponentUuidAndMetric; }