package com.ycsoft.report.query.daq.translate; import java.util.ArrayList; import java.util.List; import com.ycsoft.commons.exception.ReportException; import com.ycsoft.report.query.cube.DimensionRolap; import com.ycsoft.report.query.cube.graph.CubeGraph; import com.ycsoft.report.query.cube.impl.AbstractDataSet; public class GraphAcquisition extends CacheAcquisition { private CubeGraph graph=null; public GraphAcquisition(CubeGraph graph){ this.graph=graph; } /** * 创建虚拟表头 * 增加未被图形使用的维度但cube使用的维度的切片和权限影响 * @throws ReportException */ @Override protected List<CacheHeadCell> createDataCotrolHead(AbstractDataSet dataset) throws ReportException{ List<CacheHeadCell> headlist=super.createDataCotrolHead(dataset); //cube使用的,但是图形未使用的维度 且有切片或权限影响的 List<DimensionRolap> slice_control_Rolaps=new ArrayList<DimensionRolap>(); for(DimensionRolap rolap: dataset.getCube().getDimensionRolaps()){ if(rolap.isUsesign()&&(rolap.getSlices_level()!=null||rolap.getDim().getDimLevelControlMap().size()>0) &&rolap.getDim()!=graph.getCrossDimension()&&rolap.getDim()!=graph.getVertDimension()){ slice_control_Rolaps.add(rolap); } } //组装虚拟头 for(DimensionRolap rolap:slice_control_Rolaps){ CacheHeadCell o=CacheHeadCell.createDummyHead(rolap); headlist.add(o); } return headlist; } /** * 图形计算不考虑内存限制 */ @Override protected boolean isMenoryMax(){ return false; } }