/** * Copyright 2014 Yahoo! Inc. Licensed under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. * See accompanying LICENSE file. */ package com.yahoo.sql4d.query; import java.util.LinkedHashMap; import java.util.Map; import org.json.JSONArray; import org.json.JSONObject; /** * GroupBy, TimeSeries, Search, Select etc come under this category. * @author srikalyan */ public class PlainDimQueryMeta extends QueryMeta { public Map<String, String> fetchDimensions = new LinkedHashMap<>();// Normal alias go into this (aggregation based alias go into AggItem) public PlainDimQueryMeta() { } public PlainDimQueryMeta(QueryMeta q) { super(q); if (q instanceof PlainDimQueryMeta) { fetchDimensions = ((PlainDimQueryMeta)q).fetchDimensions; } } @Override public String toString() { return getJson().toString(2); } @Override public JSONObject getJson() { return new JSONObject(getDataMap()); } @Override public Map<String, Object> getDataMap() { Map<String, Object> map = super.getDataMap(); if (fetchDimensions != null) { JSONArray dimensionsArray = new JSONArray(); for (String dim:fetchDimensions.keySet()) { String dimaAlias = fetchDimensions.get(dim); if (dimaAlias == null) { dimensionsArray.put(dim); } else { JSONObject json = new JSONObject(); json.put("type", "default"); json.put("dimension", dim); json.put("outputName", dimaAlias); dimensionsArray.put(json); } } map.put("dimensions", dimensionsArray); } return map; } public static PlainDimQueryMeta promote(QueryMeta qMeta) { return new PlainDimQueryMeta(qMeta); } }