package com.ycsoft.quiee; import com.runqian.base4.util.ReportError; import com.runqian.report4.dataset.DataSet; import com.runqian.report4.dataset.IDataSetFactory; import com.runqian.report4.dataset.Row; import com.runqian.report4.usermodel.Context; import com.runqian.report4.usermodel.CustomDataSetConfig; import com.runqian.report4.usermodel.DataSetConfig; import com.ycsoft.report.commons.ReportConstants; import com.ycsoft.report.query.treequery.DimKey; import com.ycsoft.report.query.treequery.DimKeyContainer; /** * 维度自定义数据集工厂 */ public class DimKeyDataSet implements IDataSetFactory { /** * 自定义数据集中的参数 */ public DataSet createDataSet(Context ctx, DataSetConfig dsc, boolean retrieve) { String dim_key=null; String query_id=null; String rep_id=null; String test_query_id=null; try { //提取自定义数据集中rep_id,test_query_id CustomDataSetConfig cdsc = (CustomDataSetConfig) dsc; String[] argnames=cdsc.getArgNames(); String[] argvalues=cdsc.getArgValue(); if(argnames!=null){ for(int i=0;i<argnames.length;i++){ if(argnames[i].equals(ReportConstants.DIM_KEY)) dim_key=argvalues[i]; } } rep_id=(String)ctx.getParamValue(ReportConstants.REP_ID); test_query_id=(String)ctx.getParamValue(ReportConstants.TEST_QUERY_ID); //验证rep_id if(rep_id==null||rep_id.equals("")) throw new Exception("rep_id is null:自定义数据集的参数rep_id未定义"); if(dim_key==null||dim_key.equals("")) throw new Exception("dim_key is null:自定义数据集的参数dim_key未定义"); //模板定义的参数query_id query_id=(String) ctx.getParamValue(ReportConstants.QUERY_ID); //query_id为空说明是在测试,使用测试数据 if(query_id==null||query_id.equals("")){ QuieeConstants.initTestDimKey(test_query_id); } DimKey dim=DimKeyContainer.getDimKey(dim_key); if(dim==null) throw new Exception("dim_key:"+dim_key+" is not config."); DataSet ds=new DataSet(dim.getDesc()); ds.addCol("key"); ds.addCol("desc"); if(retrieve){ //取数据集内容 while(dim!=null){ Row row=ds.addRow(); row.setData(1, dim.getKey()); row.setData(2, dim.getDesc()); dim=DimKeyContainer.getDimKey(dim.getPkey()); } } return ds; } catch (Exception e) { throw new ReportError("DimKeyDataSet_Error "+e.getMessage(),e); } } }