/*
***************************************************************************************
* Copyright (C) 2006 EsperTech, Inc. All rights reserved. *
* http://www.espertech.com/esper *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
***************************************************************************************
*/
package com.espertech.esper.epl.agg.service;
import com.espertech.esper.epl.expression.baseagg.ExprAggregateNode;
import java.util.ArrayList;
import java.util.List;
public class AggregationServiceAggExpressionDesc {
private ExprAggregateNode aggregationNode;
private AggregationMethodFactory factory;
private List<ExprAggregateNode> equivalentNodes;
private Integer columnNum;
/**
* Ctor.
*
* @param aggregationNode expression
* @param factory method factory
*/
public AggregationServiceAggExpressionDesc(ExprAggregateNode aggregationNode, AggregationMethodFactory factory) {
this.aggregationNode = aggregationNode;
this.factory = factory;
}
/**
* Returns the equivalent aggregation functions.
*
* @return list of agg nodes
*/
public List<ExprAggregateNode> getEquivalentNodes() {
return equivalentNodes;
}
/**
* Returns the method factory.
*
* @return factory
*/
public AggregationMethodFactory getFactory() {
return factory;
}
/**
* Assigns a column number.
*
* @param columnNum column number
*/
public void setColumnNum(Integer columnNum) {
this.columnNum = columnNum;
}
/**
* Add an equivalent aggregation function node
*
* @param aggNodeToAdd node to add
*/
public void addEquivalent(ExprAggregateNode aggNodeToAdd) {
if (equivalentNodes == null) {
equivalentNodes = new ArrayList<ExprAggregateNode>();
}
equivalentNodes.add(aggNodeToAdd);
}
/**
* Returns the expression.
*
* @return expression
*/
public ExprAggregateNode getAggregationNode() {
return aggregationNode;
}
public Integer getColumnNum() {
return columnNum;
}
/**
* Assigns a future to the expression
*
* @param service the future
*/
public void assignFuture(AggregationResultFuture service) {
aggregationNode.setAggregationResultFuture(service, columnNum);
if (equivalentNodes == null) {
return;
}
for (ExprAggregateNode equivalentAggNode : equivalentNodes) {
equivalentAggNode.setAggregationResultFuture(service, columnNum);
}
}
}