/** * Create a new result set with an additional final column. * * @param column the column being added * * @return the result set being constructed */ public ResultSetSchema withAddColumn(Column column) { LinkedHashSet<Column> columns = new LinkedHashSet<>(this.getColumns()); columns.add(column); return new ResultSetSchema(this.getGranularity(), columns); } }
/** * Creates new Result object from JsonNode. * * @param serializedResult JsonNode which contains all the serialized details to generate Result object * @param resultSetSchema Schema of the result to generate the Result object * * @return Result object generated from given JsonNode */ private Result getResult(JsonNode serializedResult, ResultSetSchema resultSetSchema) { return new Result( extractDimensionValues( serializedResult.get(DIMENSION_VALUES_KEY), resultSetSchema.getColumns(DimensionColumn.class) ), extractMetricValues( serializedResult.get(METRIC_VALUES_KEY), resultSetSchema.getColumns(MetricColumnWithValueType.class) ), DateTime.parse(serializedResult.get(TIMESTAMP_KEY).asText()) ); }
/** * Builds a set of only those metric columns which correspond to the metrics requested in the API. * * @param apiMetricColumnNames Set of Metric names extracted from the requested api metrics * * @return set of metric columns */ protected LinkedHashSet<MetricColumn> generateApiMetricColumns(Set<String> apiMetricColumnNames) { // Get the metric columns from the schema Map<String, MetricColumn> metricColumnMap = resultSet.getSchema().getColumns(MetricColumn.class).stream() .collect(StreamUtils.toLinkedDictionary(MetricColumn::getName)); // Select only api metrics from resultSet return apiMetricColumnNames.stream() .map(metricColumnMap::get) .collect(Collectors.toCollection(LinkedHashSet::new)); }
/** * Extract schema components from ResultSet schema. * * @param schema Schema object from the ResultSet * * @return Schema components. */ private Map<String, Object> getSchemaComponents(ResultSetSchema schema) { Map<String, Object> schemaComponents = new HashMap<>(); schemaComponents.put(SCHEMA_TIMEZONE, DateTimeUtils.getTimeZone(schema.getGranularity()).getID()); schemaComponents.put(SCHEMA_GRANULARITY, schema.getGranularity().getName()); schemaComponents.put( SCHEMA_DIM_COLUMNS, schema.getColumns(DimensionColumn.class) .stream() .map(Column::getName) .collect(Collectors.toCollection(LinkedHashSet::new)) ); schemaComponents.put( SCHEMA_METRIC_COLUMNS, getMetricColumnNames(schema) ); return schemaComponents; }
responseData.getResultSet().getSchema().getColumns(DimensionColumn.class)) { if (request instanceof DataApiRequest) { DataApiRequest dataApiRequest = (DataApiRequest) request;
Set<DimensionColumn> dimensionColumns = schema.getColumns(DimensionColumn.class); Set<MetricColumn> metricColumns = schema.getColumns(MetricColumn.class);