package com.ycsoft.report.query.treequery;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ycsoft.commons.exception.ReportException;
import com.ycsoft.report.bean.RepDimKey;
import com.ycsoft.report.query.key.BaseKey;
import com.ycsoft.report.query.key.Impl.QueryKeyValue;
/**
* 树结构的维度key
* @author new
*
*/
public class DimDataTree extends BaseKey implements DimKey {
private Map<String,QueryKeyValue> valuemap;
public DimDataTree(RepDimKey repDimKey,List<QueryKeyValue> list,DimDataTree pdimkey) throws ReportException{
if(repDimKey==null)
throw new ReportException("key is null");
if(list==null||list.size()==0)
throw new ReportException("List<QueryKeyValue> is null");
super.setKey(repDimKey.getKey());
super.setDesc(repDimKey.getName());
if(pdimkey!=null){
super.setPkey(pdimkey.getKey());
pdimkey.setSkey(repDimKey.getKey());
}
valuemap=new HashMap<String,QueryKeyValue>();
for(QueryKeyValue qkv:list)
valuemap.put(qkv.getId(), qkv);
}
/**
* 获得上一级的对应的值
* @param value
* @return
* @throws ReportException
*/
public String getPid(String id) throws ReportException{
try{
return valuemap.get(id).getPid();
}catch(Exception e){
throw new ReportException(this.getKey()+" is not config id="+id,e);
}
}
/**
* id对应的描述
* @throws ReportException
*/
public String getName(String id) throws ReportException {
try{
return valuemap.get(id).getName();
}catch(Exception e){
throw new ReportException(this.getKey()+" is not config id="+id,e);
}
}
public BaseKey getBaseKey(){
BaseKey baseKey=new BaseKey();
baseKey.setDesc(super.getDesc());
baseKey.setKey(super.getKey());
baseKey.setPkey(super.getPkey());
baseKey.setSkey(super.getSkey());
return baseKey;
}
}