package com.linkedin.thirdeye.client.timeseries; import com.google.common.collect.ImmutableList; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; import com.linkedin.thirdeye.client.timeseries.TimeSeriesRow.TimeSeriesMetric; public class TimeSeriesResponse { int numRows; private final Set<String> metrics = new TreeSet<>(); private final Set<List<String>> dimensions = new HashSet<>(); private final List<TimeSeriesRow> rows; public TimeSeriesResponse(List<TimeSeriesRow> rows) { this.rows = rows; for (TimeSeriesRow row : rows) { for (TimeSeriesMetric metric : row.getMetrics()) { metrics.add(metric.getMetricName()); } dimensions.add(row.getDimensionNames()); } numRows = rows.size(); } public int getNumRows() { return numRows; } public Set<String> getMetrics() { return metrics; } public Set<List<String>> getDimensions() { return dimensions; } public TimeSeriesRow getRow(int index) { return rows.get(index); } public List<TimeSeriesRow> getRows() { return ImmutableList.copyOf(rows); } public static class Builder { List<TimeSeriesRow> rows = new ArrayList<>(); public void add(TimeSeriesRow row) { rows.add(row); } TimeSeriesResponse build() { return new TimeSeriesResponse(rows); } } }