/* * Copyright (c) 2016, 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.siddhi.core.query.selector.attribute.processor.executor; import org.wso2.siddhi.core.config.ExecutionPlanContext; import org.wso2.siddhi.core.executor.ExpressionExecutor; import org.wso2.siddhi.core.query.selector.attribute.aggregator.AttributeAggregator; import org.wso2.siddhi.core.util.snapshot.Snapshotable; import org.wso2.siddhi.query.api.definition.Attribute; /** * Abstract class to represent attribute aggregations. */ public abstract class AbstractAggregationAttributeExecutor implements ExpressionExecutor, Snapshotable { protected AttributeAggregator attributeAggregator; protected ExpressionExecutor[] attributeExpressionExecutors; protected ExecutionPlanContext executionPlanContext; protected int size; protected String queryName; private String elementId = null; public AbstractAggregationAttributeExecutor(AttributeAggregator attributeAggregator, ExpressionExecutor[] attributeExpressionExecutors, ExecutionPlanContext executionPlanContext, String queryName) { this.executionPlanContext = executionPlanContext; this.attributeExpressionExecutors = attributeExpressionExecutors; this.attributeAggregator = attributeAggregator; this.size = attributeExpressionExecutors.length; this.queryName = queryName; if (elementId == null) { elementId = "AbstractAggregationAttributeExecutor-" + executionPlanContext.getElementIdGenerator() .createNewId(); } executionPlanContext.getSnapshotService().addSnapshotable(queryName, this); } @Override public Attribute.Type getReturnType() { return attributeAggregator.getReturnType(); } @Override public String getElementId() { return elementId; } }