/*
***************************************************************************************
* 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 java.util.ArrayList;
import java.util.List;
public class AggregationGroupByRollupDesc {
private final AggregationGroupByRollupLevel[] levels;
private final int numLevelsAggregation;
public AggregationGroupByRollupDesc(AggregationGroupByRollupLevel[] levels) {
this.levels = levels;
int count = 0;
for (AggregationGroupByRollupLevel level : levels) {
if (!level.isAggregationTop()) {
count++;
}
}
numLevelsAggregation = count;
}
public static AggregationGroupByRollupDesc make(int[][] indexes) {
List<AggregationGroupByRollupLevel> levels = new ArrayList<AggregationGroupByRollupLevel>();
int countOffset = 0;
int countNumber = -1;
for (int[] mki : indexes) {
countNumber++;
if (mki.length == 0) {
levels.add(new AggregationGroupByRollupLevel(countNumber, -1, null));
} else {
levels.add(new AggregationGroupByRollupLevel(countNumber, countOffset, mki));
countOffset++;
}
}
AggregationGroupByRollupLevel[] levelsarr = levels.toArray(new AggregationGroupByRollupLevel[levels.size()]);
return new AggregationGroupByRollupDesc(levelsarr);
}
public AggregationGroupByRollupLevel[] getLevels() {
return levels;
}
public int getNumLevelsAggregation() {
return numLevelsAggregation;
}
public int getNumLevels() {
return levels.length;
}
}