/*
 * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
 *
 * WSO2 Inc. licenses this file to you 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.
 */

package org.wso2.carbon.siddhi.editor.core.util.designview.beans.configs.siddhielements.query;

import org.wso2.carbon.siddhi.editor.core.util.designview.beans.configs.siddhielements.SiddhiElementConfig;
import org.wso2.carbon.siddhi.editor.core.util.designview.beans.configs.siddhielements.query.input.QueryInputConfig;
import org.wso2.carbon.siddhi.editor.core.util.designview.beans.configs.siddhielements.attributesselection.AttributesSelectionConfig;
import org.wso2.carbon.siddhi.editor.core.util.designview.beans.configs.siddhielements.query.output.QueryOutputConfig;

import java.util.List;

/**
 * Represents a Siddhi Query
 */
public class QueryConfig extends SiddhiElementConfig {
    private QueryInputConfig queryInput;
    private AttributesSelectionConfig select;
    private List<String> groupBy;
    private List<QueryOrderByConfig> orderBy;
    private long limit;
    private String having;
    private String outputRateLimit;
    private QueryOutputConfig queryOutput;
    private List<String> annotationList;

    public QueryInputConfig getQueryInput() {
        return queryInput;
    }

    public void setQueryInput(QueryInputConfig queryInput) {
        this.queryInput = queryInput;
    }

    public AttributesSelectionConfig getSelect() {
        return select;
    }

    public void setSelect(AttributesSelectionConfig select) {
        this.select = select;
    }

    public List<String> getGroupBy() {
        return groupBy;
    }

    public void setGroupBy(List<String> groupBy) {
        this.groupBy = groupBy;
    }

    public List<QueryOrderByConfig> getOrderBy() {
        return orderBy;
    }

    public void setOrderBy(List<QueryOrderByConfig> orderBy) {
        this.orderBy = orderBy;
    }

    public long getLimit() {
        return limit;
    }

    public void setLimit(long limit) {
        this.limit = limit;
    }

    public String getHaving() {
        return having;
    }

    public void setHaving(String having) {
        this.having = having;
    }

    public String getOutputRateLimit() {
        return outputRateLimit;
    }

    public void setOutputRateLimit(String outputRateLimit) {
        this.outputRateLimit = outputRateLimit;
    }

    public QueryOutputConfig getQueryOutput() {
        return queryOutput;
    }

    public void setQueryOutput(QueryOutputConfig queryOutput) {
        this.queryOutput = queryOutput;
    }

    public List<String> getAnnotationList() {
        return annotationList;
    }

    public void setAnnotationList(List<String> annotationList) {
        this.annotationList = annotationList;
    }
}

@@ -1260,20 +1260,68 @@
 va.util.
-List
+HashMap;%0Aimport java.util.List;%0Aimport java.util.Map
 ;%0A%0A/**%0A 
@@ -1744,16 +1744,102 @@
 ionList;
+%0A    private String partitionId;%0A    private Map%3CString, String%3E connectorsAndStreams;
 %0A%0A    pu
@@ -3406,11 +3406,768 @@
 t;%0A    %7D
+%0A%0A    public String getPartitionId() %7B%0A        return partitionId;%0A    %7D%0A%0A    public void setPartitionId(String partitionId) %7B%0A        this.partitionId = partitionId;%0A    %7D%0A%0A    public Map%3CString, String%3E getConnectorsAndStreams() %7B%0A        return connectorsAndStreams;%0A    %7D%0A%0A    public void setConnectorsAndStreams(Map%3CString, String%3E connectorsAndStreams) %7B%0A        this.connectorsAndStreams = connectorsAndStreams;%0A    %7D%0A%0A    public String getConnectorIdByStreamName(String streamName) %7B%0A        for (Map.Entry%3CString, String%3E connectorAndStream : connectorsAndStreams.entrySet()) %7B%0A            if (connectorAndStream.getValue().equals(streamName)) %7B%0A                return connectorAndStream.getKey();%0A            %7D%0A        %7D%0A        return null;%0A    %7D
 %0A%7D%0A

Update QueryConfig bean