package com.ycsoft.report.query.cube;
import com.ycsoft.commons.exception.ReportException;
import com.ycsoft.report.query.cube.graph.CubeGraph;
/**
* cube变换中间数据体
*/
public interface CubeDataSet<T> {
/**
* cube基础数据源
* @return
*/
T getDataSet();
/**
* 获得cube变换后的数据源
* @return
*/
T getAssembleDataSet();
/**
* 组装图形数据源
* @param graph
* @throws ReportException
*/
void assembleGraphDataSet(CubeGraph graph) throws ReportException;
/**
* 组装cube数据源
* @throws ReportException
*/
void assembleCubeDataSet() throws ReportException;
/**
* 获得数据源的基础定义头
* @return
*/
CubeHeadCell[] getBaseHeadCells();
/**
* 装载cube
* @param cube
*/
void setCube(CubeExec cube);
CubeExec getCube();
/**
* 执行cube计算
* @throws ReportException
*/
void execute() throws ReportException;
/**
* 验证cube正确与否
* @return
* @throws ReportException
*/
String validate() throws ReportException;
/**
* 执行图形计算
* @param cg
* @return
* @throws ReportException
*/
CubeGraph graph(CubeGraph cg) throws ReportException;
}