package com.linkedin.thirdeye.dashboard.views; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class GenericResponse { Info summary; ResponseSchema schema; List<String[]> responseData; Map<String, List<Integer>> keyToRowIdMapping; public Info getSummary() { return summary; } public void setSummary(Info summary) { this.summary = summary; } public ResponseSchema getSchema() { return schema; } public void setSchema(ResponseSchema schema) { this.schema = schema; } public List<String[]> getResponseData() { return responseData; } public void setResponseData(List<String[]> responseData) { this.responseData = responseData; } public Map<String, List<Integer>> getKeyToRowIdMapping() { return keyToRowIdMapping; } public void setKeyToRowIdMapping(Map<String, List<Integer>> keyToRowIdMapping) { this.keyToRowIdMapping = keyToRowIdMapping; } public static class ResponseSchema { Map<String, Integer> columnsToIndexMapping = new LinkedHashMap<>(); public ResponseSchema() { } public ResponseSchema(String[] columns) { for (int i = 0; i < columns.length; i++) { add(columns[i], i); } } public Map<String, Integer> getColumnsToIndexMapping() { return columnsToIndexMapping; } public void add(String columnName, Integer index) { columnsToIndexMapping.put(columnName, index); } } public static class Info { private Map<String, String> simpleFields = new LinkedHashMap<>(); private Map<String, List<String>> listFields = new LinkedHashMap<>(); private Map<String, Map<String, String>> mapFields = new LinkedHashMap<>(); public Map<String, String> getSimpleFields() { return simpleFields; } public Map<String, List<String>> getListFields() { return listFields; } public Map<String, Map<String, String>> getMapFields() { return mapFields; } public void addSimpleField(String name, String value) { simpleFields.put(name, value); } public void setListField(String group, List<String> values) { for (String value : values) { addListField(group, value); } } public void setListField(String group, String[] values) { for (String value : values) { addListField(group, value); } } public void addListField(String group, String value) { if (!listFields.containsKey(group)) { listFields.put(group, new ArrayList<String>()); } listFields.get(group).add(value); } public void addMapField(String group, String name, String value) { if (!mapFields.containsKey(group)) { mapFields.put(group, new LinkedHashMap<String, String>()); } mapFields.get(group).put(name, value); } } public static void main(String[] args) { GenericResponse heatMapResponse = new GenericResponse(); ResponseSchema schema = new ResponseSchema(); String[] columns = new String[] { "dimensionName", "dimValue", "m1.baseline", "m1.current", "m2.baseline", "m2.current" }; for (int i = 0; i < columns.length; i++) { String column = columns[i]; schema.add(column, i); } Info summary = new Info(); summary.addSimpleField("baselineStart", "20160101"); summary.addSimpleField("baselineEnd", "20160107"); summary.addSimpleField("currentStart", "20160108"); summary.addSimpleField("currentEnd", "20160105"); summary.setListField("metrics", new String[] { "m1", "m2" }); summary.setListField("dimensions", new String[] { "d1", "d2", "d3" }); summary.addMapField("m1", "baselineTotal", "1000000"); summary.addMapField("m2", "currentTotal", "1000090"); } }